golangでRaspberry Piに繋いだセンサーの値を取得する
流行りに乗ってgolangの勉強を始めたんですが、クロスコンパイルが簡単にできてarmでも動くというので、家で埃を被っていたRaspberry Piで遊んでみました。
センサー購入
Raspberry Piはアナログ入力が無いので、デジタル入力が可能なセンサーを探すとI2Cという規格があることが分かりました。適当にググるとRaspberry Pi + 温度センサーで部屋の温度を測る こちらのサイトを見つけたのでとりあえずスイッチサイエンスでポチります。
接続
つなぎ方もよく分からんので、またぐぐると図付きで説明がありました
Raspberry Piの設定
さきほどのサイトを参考にさせて頂きました。 ちなみにRaspberry PiにはRaspbianがインストールしてあります。
/etc/modulesの編集
i2c-bcm2708
i2c
必要なライブラリのインストール
$ sudo apt-get install python-smbus
$ sudo apt-get install i2c-tools
/etc/modprobe.d/raspi-blacklist.confの編集
#blacklist i2c-bcm2708
golangを書く(書いてない)
良さげなライブラリないかな〜と探しているとこれを発見
EMBD
しかもサンプルコードを見るとbmp180.go?
結果的に1行も書かずに取得できました。
macでの作業 最初にRaspberry Pi用にコンパイルできるよう設定します
$ cd $GOROOT/src
$ GOOS=linux GOARCH=arm ./make.bash
サンプルコードをRaspberry Pi用にコンパイルします
$ cd $GOPATH/src
$ go get github.com/kidoman/embd
$ cd github.com/kidoman/embd/samples
$ GOOS=linux GOARCH=arm go build bmp180.go
wifiで繋がったRaspberry PiにSCPで転送します
$ scp bmp180 pi@raspberrypi.local:/home/pi
Raspberry Piにログインして実行します
$ ssh pi@raspberrypi.local
$ ./bmp180
Temp is ~~~
Pressure is ~~~
Altitude is ~~~
取れた!