前回の「Intel Edisonで超音波距離センサを使ってみる」では
「GROVE - 超音波距離センサ」が使えなかったので、今回は Raspberry Pi 3 で試してみます。
GrovePi+ 取り付け
Raspberry Pi 3 に対応しているって書いていないけど、GrovePi+ を取り付けてみます。
GrovePi+の裏側は、USBポートに触れる部分に絶縁テープを貼りました。
GrovePi の設定
まずは、もろもろ最新に。
$ sudo apt-get update
$ sudo apt-get upgrade
GrovePi ソフトウェアをインストール
公式サイト通りにソフトウェアを取得してインストールする。
$ cd /home/pi/Desktop
$ sudo git clone https://github.com/DexterInd/GrovePi.git
$ cd GrovePi/Script/
$ sudo chmod +x install.sh
$ sudo ./install.sh
インストールが終わると勝手に reboot する。
ファームウェアの Update
ファームウェアを Update しろと公式サイトに書いてあるので、続けて実施します。
まずは、Update 前にバージョンを確認。
$ python grove_firmware_version_check.py
GrovePi has firmware version: 255.255.255
なんか変な値になっている。
ファームウェアを Update する。
$ cd /home/pi/Desktop/GrovePi/Firmware
$ sudo chmod +x firmware_update.sh
$ sudo ./firmware_update.sh
正常に終わったら、ファームウェアのバージョンを確認する。
$ cd /home/pi/Desktop/GrovePi/Software/Python/
$ python grove_firmware_version_check.py
GrovePi has firmware version: 1.2.2
バージョン 1.2.2 になったけど、これでいいのかな?
GrovePi+ の確認
公式サイトにしたがって Raspberry Pi が GrovePi を検出できることを確認する。
$ sudo i2cdetect -y 1
Lチカでも確認する。(Python スクリプトがインストールされていました。)
$ cd /home/pi/Desktop/GrovePi/Software/Python
$ python grove_led_blink.py
上手くいったみたい。
超音波距離センサ用の Python スクリプトもあったので確認する。
$ python grove_ultrasonic.py
Python だったら超簡単!!!
Node.js でもやってみる
前回の「Intel Edisonで超音波距離センサを使ってみる」は Node.js でやったので、
Raspberry Pi 3 でも Node.js でやってみます。
Node.js をインストール
# Node.js のバージョン確認
$ node -v
v0.10.29
# 古いのでバージョンアップする
# まずは削除
$ sudo apt-get --purge remove nodejs
# nodebrew をインストールする
$ curl -L git.io/nodebrew | perl - setup
# nodebrew を PATH に通す
$ vi ~/.bashrc
# この行を追加
export PATH=$HOME/.nodebrew/current/bin:$PATH
# PATH を追加したので
$ source ~/.bashrc
# Node.js の安定版をインストール
$ nodebrew install-binary stable
# インストールされているバージョンを確認
$ nodebrew ls
v6.3.1
# このバージョンを設定
$ nodebrew use stable
use v6.3.1
# Node.js のバージョン確認
$ node -v
v6.3.1
$ npm -v
3.10.3
GrovePi for Node.js
Node.js 用のパッケージをインストールします。
$ mkdir ultrasonic
$ cd ultrasonic
$ npm install node-grovepi
Node.js で確認
コードはこんな感じです。
var GrovePi = require('node-grovepi').GrovePi
var Board = GrovePi.board
var UltrasonicDigitalSensor = GrovePi.sensors.UltrasonicDigital
var board
function start() {
console.log('starting')
board = new Board({
debug: true,
onError: function(err) {
console.log('ERROR')
console.log(err)
},
onInit: function(res) {
if (res) {
// Ultrasonic Ranger
var ultrasonicSensor = new UltrasonicDigitalSensor(4)
ultrasonicSensor.stream(100, function(res) {
console.log(res)
})
}
else {
console.log('TEST CANNOT START')
}
}
})
board.init()
}
function onExit(err) {
console.log('ending')
board.close()
process.removeAllListeners()
process.exit()
if (typeof err != 'undefined') {
console.log(err)
}
}
// starts the test
start()
// catches ctrl+c event
process.on('SIGINT', onExit)
まとめ
Intel Edison で苦労したことが、Raspberry Pi 3 では簡単にできました。
Raspberry Pi 3 は Pi 2 より高性能になってますし、Wi-Fi や Bluetooth 4.1 も標準搭載されています。
そのせいで消費電力が高くなっているようですが。。。
ただ、扱いやすさや情報量の多さでは Intel Edison より Raspberry Pi 3 のほうがいいなと思いました。
あと、価格も安いしね。
Wi-Fi や Bluetooth 等で簡単にネットワークや他デバイスに接続できるので、
これから色々やってみたいと思います。