gobotとは、次世代ロボット/IoT frameworkで25のプラットフォームをサポートしている。
ArduinoやRaspberry piなどあり、単体として使うというよりIoTとして相互接続するのに便利。
ホストPCから各マイコンを制御するためのプラットフォーム。
なお、ここで試したホストPCはFedora 23。
概要
firmata : ホストPCと接続するためのプロトコル、マイコン用ソフトウェア、および制御ライブラリ
gort : マイコンをスキャンしたりfirmwareをアップロードするコマンドラインツール
gobot : ホストPCで動作し、firmata経由でマイコンを制御するプラットフォーム
インストール
gobot.io のGetting Startedにも書いてある。
1
$ go get -d -u gobot.io/x/gobot/... && go install gobot.io/x/gobot/platforms/firmata
gort.io から取得して適当な場所にインストールする。
1
2
3
$ gort arduino install
Attempting to install avrdude with apt-get.
sudo: apt-get: コマンドが見つかりません
fedoraなのでapt-getなんて入ってない。
仕方ないので、GitHub > gort からソースコードを取得し、
commands/arduino.goを確認。
1
2
3
4
5
6
7
8
9
10
11
switch c . Args (). First () {
case "install" :
switch runtime . GOOS {
case "linux" :
fmt . Println ( "Attempting to install avrdude with apt-get." )
cmd := exec . Command ( "sudo" , "apt-get" , "-y" , "install" , "avrdude" )
cmd . Stdout = os . Stdout
cmd . Stderr = os . Stderr
if err := cmd . Run (); err != nil {
log . Fatal ( err )
}
avrdudeをインストールすればいいことが分かるので、
コマンドをdnfに置き換えてインストールする。
1
$ sudo dnf install -y avrdude
Lチカ
firmataをArduino unoにuploadする。
1
$ gort arduino upload firmata /dev/ttyACM0
FedoraからArduino unoを制御するソースコードは以下。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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 ( "arduino" , "/dev/ttyACM0" )
led := gpio . NewLedDriver ( firmataAdaptor , "9" )
work := func () {
gobot . Every ( 1 * time . Second , func () {
led . Toggle ()
})
}
var robot = gobot . NewRobot ( "bot" ,
[] gobot . Connection { firmataAdaptor },
[] gobot . Device { led },
work ,
)
robot . Start ()
}
これを動かせば1秒ごとにLEDが点滅する。
シリアルのデバイスとGPIOのピンは環境ごとに変えたほうがいいかもしれない。