Raspberry PiにArduinoを接続してArduioのD13のLEDをGoでLチカします。

    1. 概要
      Arduino UNOでStandardFirmataを動かしRaspberry Piに接続します。Raspberry PiではGo言語でFirmataプロトコルを使ったArduino UNOのD13-LEDを点滅させるプログラムを書き実行します。
      先行事例:https://github.com/hybridgroup/gobot/tree/master/platforms/firmataをトレースします。
    2.  Arduinioの準備
      1. StandardFirmataを書き込む。
        Arduino IDEを動かしているパソコン(or Raspberry Pi)にArduino UNOを接続しStandardFirmataスケッチを書き込みます。
      2. StandardFirmataを書き込んだArduino UNOをRaspberry Piに接続します。
      3. 念のためにユーザpiをシリアルポートを利用できるグループdialoutに登録します。
        $ sudo usermod -a -G dialout pi
    3. Firmataプラットフォームのインストール
      $  go install gobot.io/x/gobot/platforms/firmata
    4. ソース・ファイル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()
      }
    5. 実行
       $ 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