2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GobotとRaspberryPiでLチカに挑戦

Posted at

久々の投稿です。

GoBotをつかってLチカをやってみたので備忘録。

準備

  • Raspberrypi3 model b+

Gobotについて

gobot-home.png

Gobotは、Go言語で書かれたオープンソースのロボット/IoTフレームワークです。Gobotを使用すると、Go言語を使用して、Arduino、Raspberry Piなどのマイコン、センサーなどのデバイスを制御できます。

詳しくは、以下の公式ページから確認してください。

Gobot - https://gobot.io/

Gobotは、多くのプラットフォームやデバイスに対応しており、豊富なドキュメントや例題が提供されているため、簡単に使い始めることができます。Gobotは、オープンソースのライブラリやAPIを提供しており、開発者は独自のアプリケーションやプロジェクトを簡単に作成することができます。

RaspberrypiにGolangをインストールする

Golangの公式ドキュメントから、ラズパイ向けのあアーキテクチャを選択し、ダウンロードします。この記事を作成した時点での、Golangのバージョンは、

参考: Gobotの公式ページ:Go, Robot, Go!

$ 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をインストールする

参考:https://gobot.io/

$ go get -d -u gobot.io/x/gobot

配線図

raspberrypiとLEDの配線図は、念のため掲載しておきます。

LEDのプラス側を、7番ピン(port4)に差し込みます。抵抗1kΩの抵抗を付け、マイナス側は6番ピンに接続します。

led_layout.jpg

ソースコード

main.goを以下のように変更します。

参考:https://gobot.io/documentation/platforms/raspi/

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を使って楽しいラズパイライフを送ろうと思います。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?