Groveセンサー/アクチュエーター使い方集 〜CANDYRED〜


はじめに

新潟IoTハッカソン CANDYRED向けのGroveセンサー/アクチュエータ使い方集です。


基本センサー

以下の2つのノードをインストールしておくと、基本的なデジタル/アナログセンサーは使用できます。

  • アナログセンサー
センサー名 Wiki URL Sensor Type 備考
光センサー http://wiki.seeedstudio.com/Grove-Light_Sensor/ Light
スライドボリューム http://wiki.seeedstudio.com/Grove-Slide_Potentiometer/
水分センサー http://wiki.seeedstudio.com/Grove-Moisture_Sensor/
音センサー http://wiki.seeedstudio.com/Grove-Sound_Sensor/ Sound
ラウドネスセンサー http://wiki.seeedstudio.com/Grove-Loudness_Sensor/ Sound
  • デジタルセンサー
センサー名 Wiki URL Sensor Type 備考
温湿度センサー http://wiki.seeedstudio.com/Grove-Temperature_and_Humidity_Sensor_Pro/ Temperature / Humidity DHT11
超音波センサー http://wiki.seeedstudio.com/Grove-Ultrasonic_Ranger/ Ultrasonic Range
傾きセンサー http://wiki.seeedstudio.com/Grove-Tilt_Switch/ Button 振ったraTrue
マイクロスイッチ https://www.seeedstudio.com/Grove-Micro-Switch-p-3033.html Button
スイッチ http://wiki.seeedstudio.com/Grove-Switch-P/ Button
ボタン http://wiki.seeedstudio.com/Grove-Button/ Button
水センサー http://wiki.seeedstudio.com/Grove-Water_Sensor/ Button
プッシュボタン http://wiki.seeedstudio.com/Grove-Button/ Button
磁気センサー http://wiki.seeedstudio.com/Grove-Magnetic_Switch/ Button
ラインファインダー http://wiki.seeedstudio.com/Grove-Line_Finder/ Button 0が白
PIRモーションセンサー http://wiki.seeedstudio.com/Grove-PIR_Motion_Sensor/ 何かが通り過ぎるとfalse
衝突センサー http://wiki.seeedstudio.com/Grove-Collision_Sensor/ Button 当たったら0
  • デジタルアクチュエーター
アクチュエーター名 Wiki URL Sensor Type 備考
ブザー http://wiki.seeedstudio.com/Grove-Buzzer/ Buzzer
LED赤 http://wiki.seeedstudio.com/Grove-LED_Socket_Kit/ msg.payload = 0; 0-255を設定

USBカメラ

インストールするノード:node-red-contrib-usbcamera
インストールするコマンド:
$sudo apt install fswebcam
$sudo raspi-config

5 Interfacing Options

P1 Camera

Would you like the camera interface to be enabled?
はい
設定後、
$sudo reboot

注意点:毎回ファイル上書き保存になるので、都度クラウドなりどこかへ送信してください。


TIセンサー

インストールするノード:node-red-node-sensortag
※@ppatierno/node-red-node-sensortagではないので注意が必要!
インストールするコマンド:
$sudo apt-get install libbluetooth-dev libudev-dev pi-bluetooth
$sudo setcap cap_net_raw+eip $(eval readlink -f `which node`)
$cd /opt/candy-red/.node-red/node_modules/node-red-node-sensortag/
$sudo cp 79-sensorTag.html 79-sensorTag.html.bkp
$sudo cp 79-sensorTag.js 79-sensorTag.js.bkp
$sudo wget https://raw.githubusercontent.com/kuronekomaron/node-red-node-sensortag/master/79-sensorTag.html -O 79-sensorTag.html
$sudo wget https://raw.githubusercontent.com/kuronekomaron/node-red-node-sensortag/master/79-sensorTag_20190214.js -O 79-sensorTag.js
$sudo systemctl restart candy-red

sensorTag設定
- UUID: MACアドレス(ハッカソン時はセンサーに貼ってあります)

TIセンサーから温度データを取得し、5秒おきにenebularへ送信するサンプルは以下のフローになります。

データをいったんグローバル変数へ格納し、適度なタイミングで取得→送信。
非同期で動かすため、2つのフローが必要。

グローバル変数設定function.js
if(msg.payload.temperature)
    global.set("global_temperature",msg.payload.temperature);

return msg;
グローバル変数取得function.js
var ti_sensor={};
ti_sensor.temperature = global.get("global_temperature");
msg.payload = ti_sensor;

return msg;

温湿度・気圧センサ(BME280)

インストールするノード:node-red-contrib-bme280

接続ポート:I2C

BME280ノードの設定:

プロパティ 設定値
Bus # 1
I2C Address 0x76
Topic bme280

補足:
BME280ライブラリにセンサーの校正機能がついていませんので、気圧と標高の値を使用する場合は相対値を使用するなどの工夫が必要です。