久々の投稿です。
GoBotをつかってLチカをやってみたので備忘録。
準備
- Raspberrypi3 model b+
Gobotについて
Gobotは、Go言語で書かれたオープンソースのロボット/IoTフレームワークです。Gobotを使用すると、Go言語を使用して、Arduino、Raspberry Piなどのマイコン、センサーなどのデバイスを制御できます。
詳しくは、以下の公式ページから確認してください。
Gobot - https://gobot.io/
Gobotは、多くのプラットフォームやデバイスに対応しており、豊富なドキュメントや例題が提供されているため、簡単に使い始めることができます。Gobotは、オープンソースのライブラリやAPIを提供しており、開発者は独自のアプリケーションやプロジェクトを簡単に作成することができます。
RaspberrypiにGolangをインストールする
Golangの公式ドキュメントから、ラズパイ向けのあアーキテクチャを選択し、ダウンロードします。この記事を作成した時点での、Golangのバージョンは、
$ wget https://go.dev/dl/go1.20.3.linux-armv6l.tar.gz
インストールしたら展開する。
sudo tar -C https://go.dev/dl/go1.20.3.linux-armv6l.tar.gz
ダウンロードが完了したら、PATHを通します。
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
source ~/.bashrc
PATHが通っているか確認してみます。
$ go version
>> go version go1.20.3 linux/arm
バージョンが表示されていれば無事インストール完了です。
サンプルプログラムを実行してみる
任意のディレクトリを作成して、プロジェクトを作成します。
mkdir sample-go-prj
cd sample-go-prj
go mod init github/<githubのユーザー名>/sample-go-prj
main.go
を作成して、以下のコードを記述します。
package main
import "fmt"
func main() {
fmt.Println("Hello world")
}
まずは、ビルド・コンパイルしてプログラムを実行してみます。
$ go build -o main
$ ls
>>> go.mod main main.go
$ ./main
>>> Hello World
$ go run main.go
>>> Hello World
早速Lチカを試してみる
Gobotをインストールする
$ go get -d -u gobot.io/x/gobot
配線図
raspberrypiとLEDの配線図は、念のため掲載しておきます。
LEDのプラス側を、7番ピン(port4)に差し込みます。抵抗1kΩの抵抗を付け、マイナス側は6番ピンに接続します。
ソースコード
main.go
を以下のように変更します。
package main
import (
"time"
"gobot.io/x/gobot"
"gobot.io/x/gobot/drivers/gpio"
"gobot.io/x/gobot/platforms/raspi"
)
func main() {
raspberry := raspi.NewAdaptor()
led := gpio.NewLedDriver(raspberry, "7")
work := func() {
gobot.Every(2*time.Second, func() {
led.Toggle()
})
}
robot := gobot.NewRobot("blinkLED",
[]gobot.Connection{raspberry},
[]gobot.Device{led},
work,
)
robot.Start()
}
GobotのAdapter
は、Golangで様々なハードウェアと通信するための方法です。ラズパイ用のAdapterを作成します。gobot.Everyで2秒ごとに、LEDを点灯させるように定義します。
動作
それでは、Lチカさせてみましょう。
$ go run main.go
>>>2023/04/23 17:30:22 Initializing connections...
>>>2023/04/23 17:30:22 Initializing connection RaspberryPi-7CB1B568 ...
>>>2023/04/23 17:30:22 Initializing devices...
>>>2023/04/23 17:30:22 Initializing device LED-1B094640 ...
>>>2023/04/23 17:30:22 Robot blinkLED initialized.
>>>2023/04/23 17:30:22 Starting Robot blinkLED ...
>>>2023/04/23 17:30:22 Starting connections...
>>>2023/04/23 17:30:22 Starting connection RaspberryPi-7CB1B568...
>>>2023/04/23 17:30:22 Starting devices...
>>>2023/04/23 17:30:22 Starting device LED-1B094640 on pin 7...
>>>2023/04/23 17:30:22 Starting work...
LEDが2秒間隔で点滅するかと思います。
おわりに
Gobotを使って楽しいラズパイライフを送ろうと思います。