2012/07/31

在Raspberry Pi上開發Arduino

要把Raspberry Pi當做開發主機,在上面撰寫Arduino的程式,實在非常簡單,因為Raspberry Pi就是一台Linux機器,而Arduino軟體開發環境原本就支援Linux了。

我在Raspberry Pi在命令列模式下,讓Arduino的LED燈閃爍,步驟記錄如下。

我的環境是Raspbian wheezy,2012-07-15-wheezy-raspbian.img,後來也試過2014-06-20-wheezy-raspbian.img。板子是Arduino Uno Rev 3。

Arduino的軟體開發環境都已經打包好了,直接以apt-get安裝即可。
$ sudo apt-get install arduino arduino-mk

其中arduino-mk是要在命令列模式下以make進行編譯與燒錄動作所需要的套件。

安裝後,執行檔(arduino、avr-g++、avr-gcc、avrdude、等等)位於/usr/bin裡,avrdude的設定檔位於/etc/avrdude.conf,範例程式碼與API參考文件分別位於/usr/share/doc/arduino-core的子目錄examples與reference裡,Arduino核心程式碼位於/usr/share/arduino/hardware/arduino/cores/arduino裡,內建程式庫位於/usr/share/arduino/libraries裡,重要的就這些,請自行瀏覽其他相關目錄。

然後,在家目錄下新增子目錄sketchbook,在裡面新增BlinkByPi專案目錄,我們將需要兩支檔案,BlinkByPi.cpp與Makefile,內容如下。

BlinkByPi.cpp的內容:

#include <Arduino.h>

void setup(){
  pinMode(13, OUTPUT);
}

void loop(){
  digitalWrite(13, HIGH);
  delay(500);
  digitalWrite(13, LOW);
  delay(500);
}

Makefile的內容:

TARGET = BlinkByPi

ARDUINO_DIR = /usr/share/arduino
BOARD_TAG = uno
ARDUINO_PORT =/dev/ttyACM0

include /usr/share/arduino/Arduino.mk


以ARDUINO_DIR指定Arduino軟體開發環境的路徑。若你從Arduino官方網站自行下載、自行解壓縮的話,請修改此路徑。
以TARGET指定最後產生出來的檔案的主檔名,最好跟此專案名相同。(註:有時若出問題,拿掉此項或可解決,那麼TARGET就會預設為當前目錄名。)
以BOARD_TAG指定你使用的板子。
以ARDUINO_PORT指定與板子連接的通訊埠,在Raspberry Pi上為/dev/ttyACM0。
然後使用include匯入內涵基本設定與規則的Arduino.mk。

如果使用內建函式庫的話,須再加入類似於底下的這一行:
ARDUINO_LIBS = Ethernet Ethernet/utility SPI

接下來,在此專案目錄裡以
$ make
即可編譯、連結,將會產生出build-cli子目錄,存放建置過程的中間檔,最後產生出來的.elf與.hex也會放在裡面。

然後以
$ make upload
即可燒錄。

哇,成功囉。

另外可用make clean清除,以make depends更新檔案相依性。

更詳細的用法可參考/usr/share/arduino/Arduino.mk裡的說明,以及底下的參考資料。


參考資料:

10 comments:

  1. 我想要在raspberry pi上開發arduino,
    並且在arduino上使用溫濕度感測器dht11,
    想請問一下函示庫要怎麼新增,
    然後新增函示庫的位子在哪裡。
    拜託葉大了

    ReplyDelete
    Replies
    1. 安裝Arduino IDE比較方便吧。
      從IDE選單 https://www.arduino.cc/en/Guide/Libraries#toc3
      叫出程式庫管理員(Library Manager),
      尋找DHT11,就可找到程式庫,按下Install按鈕即可安裝。

      Delete
    2. 我有安裝在樹莓派上面安裝ide,可是選單Laporte library裡面有add library

      Delete
    3. 版本?
      1.6.2開始才有Library Manager

      Delete
    4. 我是用樹莓派用的2:1.0.5+dfsg2-4

      Delete
    5. 1.0.5版沒有Library Manager。

      需要自己手動安裝程式庫。
      網路上找找,很多介紹文,
      如 http://skybow.pixnet.net/blog/post/106036427-%5Barduino%5D%E5%A6%82%E4%BD%95%E5%AE%89%E8%A3%9D%E7%AC%AC%E4%B8%89%E6%96%B9%E5%87%BD%E5%BC%8F%E5%BA%AB%28library%29

      Delete
    6. 葉大不好意思再請教一下
      我在raduino官網下載最新的1.8.5 64位元
      可是安裝完不能開啟
      是要把舊的移除掉嗎

      Delete
    7. 還是有什麼方法可以安裝新的版本

      Delete
    8. 謝謝葉大我處理好了

      Delete
  2. 葉大 我使用 uno mega2560 可這樣用但使用due 板就不行請問是否要使用其他方法

    ReplyDelete