Edited at

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


はじめに

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



基本センサー

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

grovePiNode2.PNG


  • アナログセンサー

センサー名
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

image.png

5 Interfacing Options

image.png

P1 Camera

image.png

Would you like the camera interface to be enabled?

はい

設定後、

$sudo reboot

candyred_usbwebcamera.PNG

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



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へ送信するサンプルは以下のフローになります。

tisensor_sample_red.PNG

データをいったんグローバル変数へ格納し、適度なタイミングで取得→送信。

非同期で動かすため、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ライブラリにセンサーの校正機能がついていませんので、気圧と標高の値を使用する場合は相対値を使用するなどの工夫が必要です。