Raspberry PiにArduinoを接続してArduioのD13のLEDをGoでLチカします。
-
- 概要
Arduino UNOでStandardFirmataを動かしRaspberry Piに接続します。Raspberry PiではGo言語でFirmataプロトコルを使ったArduino UNOのD13-LEDを点滅させるプログラムを書き実行します。
先行事例:https://github.com/hybridgroup/gobot/tree/master/platforms/firmataをトレースします。 - Arduinioの準備
- StandardFirmataを書き込む。
Arduino IDEを動かしているパソコン(or Raspberry Pi)にArduino UNOを接続しStandardFirmataスケッチを書き込みます。 - StandardFirmataを書き込んだArduino UNOをRaspberry Piに接続します。
- 念のためにユーザpiをシリアルポートを利用できるグループdialoutに登録します。
$ sudo usermod -a -G dialout pi
- StandardFirmataを書き込む。
- Firmataプラットフォームのインストール
$ go install gobot.io/x/gobot/platforms/firmata
- ソース・ファイルarduino_blink.goを作成します。
package main import ( "time" "gobot.io/x/gobot" "gobot.io/x/gobot/drivers/gpio" "gobot.io/x/gobot/platforms/firmata" ) func main() { firmataAdaptor := firmata.NewAdaptor("/dev/ttyACM0") led := gpio.NewLedDriver(firmataAdaptor, "13") work := func() { gobot.Every(1*time.Second, func() { led.Toggle() }) } robot := gobot.NewRobot("bot", []gobot.Connection{firmataAdaptor}, []gobot.Device{led}, work, ) robot.Start() }
- 実行
$ go run arduino_blink.go
- 概要
- 参考
Raspberry Piに接続したArduinoなどにスケッチのHEXファイルのアップロードなどを行うユーティリティ gort のインストール。
GORTのWebページ→ http://gort.io/documentation/getting_started/downloads/(最新版は0.9.0 2018.01.21)
$ wget https://s3.amazonaws.com/gort-io/0.8.1/gort_0.8.1_armhf.deb $ sudo dpkg -i gort_0.8.1_armhf.deb $ gort --help
シリアルポートの様子を見る
$ gort scan serial 1 serial port(s) found. 1. [/dev/ttyACM0] - [usb-Arduino__www.arduino.cc__0043_6413138333135141F0D0-if00] USB device: Bus 001 Device 005: ID 2341:0043 Arduino SA Uno R3 (CDC ACM)
アンインストール
$ sudo dpkg -r gort