狠狠撸

狠狠撸Share a Scribd company logo
Arduino IoT CloudとNode-REDで
RumiCarデータを見える化する
井上 稔(@henjin01_Fab)
【enebular developersコラボ】ビジュアルプログラミング交流会
2021/11/02(火)
自己紹介
名前: 井上 稔(Minoru INOUE)
出没先: コミュニティ“ゆるメカトロ”
Facebook: minoru.inoue.90
Twitter : @henjin01_Fab
最近はIoTなネタで登壇していなかった。
なので既存のメカを無理矢理IoT化します
今日話すこと
Arduino IoT Cloudを有料プランにすると
既存のArduinoメカをIoT化できるかもって話
今回はRumicarと呼ばれる自律走行ラジコンを
Node-REDを介してネットへつなぐ
なにかのサービス
課金パワー!
今回つかうもの
今回使うもの
enebular
Entry Plan
(月$2.99)
サービスとRumiCarの説明
skipシート
Arduino IoT Cloudについて
ESP32などを含め、ネットにつながるArduinoボードを
簡単にネット上から操作できるサービス
上に示すようなダッシュボードで見える化できる
また、課金プランでHTTP(POST/GET)で制御可能
skipシート
RumiCarについて
3基の距離センサの値をもとに車体を制御する
自律走行プログラム開発のためのプラットフォーム
基本形はArduino nanoとToFセンサの組み合わせ
ネットを介した制御は特に無し
https://github.com/RumiCar-group/RumiCar
Arduino nanoと
モータードライバ
ToFセンサ
(左右と正面)
skipシート
今回のNode-REDの取り扱い
enebularを用いてherokuにデプロイして使用 &
Arduino IoT Cloud用外部フローをインストール
rumicar.herokuapp.com/
デプロイ
@arduino/
node-red-contrib-arduino-iot-cloud
skipシート
実装について
skipシート
今回の構成
rumicar.herokuapp.com/
HTTP
wifi
(独自プロトコル)
Arduino IoT Cloudをインターフェースに
RumiCarのToFセンサの値をNode-REDへ渡す
Arduino IoT Cloud(Thing)設定
見える化だけできればいいのでToFセンサ値を定義
今回のRumicar
- ToFセンサ:VL53L0x
- モータードライバ:DRV8833
- 制御ボード:Arduino MKR WIFI 1010
- いけにえ車体:ダイソーの600円ラジコン
- フレーム:MDF/アクリルをレーザーカットして作成
Rumicar本体に書き込むメインコード
Arduino IoT Cloudへの接続コードは自動作成
かつ、コードの中身は通常Rumicarと大差なし
#include "RumiCar.h"
int before_s1;
int s0,s1, s2;
int ibound;
#include "thingProperties.h"
void setup() {
Serial.begin(9600);
delay(1500);
initProperties();
ArduinoCloud.begin(ArduinoIoTPreferredConnectio
n);
RC_setup();
ibound = 250;
before_s1 = 0;
setDebugMessageLevel(2);
ArduinoCloud.printDebugInfo();
}
int sat_value(unsigned intnum){
if(num >= 255){
return 255;
}
return num;
}
void loop() {
ArduinoCloud.update();
s0=sensor0.readRangeSingleMillimeters();
s1=sensor1.readRangeSingleMillimeters();
s2=sensor2.readRangeSingleMillimeters();
Serial.print("Sensor0:");
Serial.print(s0);
vl53L0x_1_measure=s0;
Serial.print(" Sensor1:");
Serial.print(s1);
vl53L0x_2_measure=s1;
Serial.print(" Sensor2:");
Serial.println(s2);
vl53L0x_3_measure=s2;
if(s1<=100){
if(s0 < s2-10 ){
RC_steer(LEFT);
}else if(s0 > s2+10){
RC_steer(RIGHT);
}
RC_drive(REVERSE,sat_value(300-s1));
return;
}else if (s1<=150){
RC_drive(FORWARD,sat_value(s1+50));
}else if(s1<=250){
RC_drive(FORWARD,sat_value(s1*4/5));
}else{
RC_drive(FORWARD,255);
}
if(s0 < s2+10 && s0 > s2-10){
return;
}
if(s0>s2){
RC_steer(LEFT);
}else if(s2>s0){
RC_steer(RIGHT);
}
}
void onVl53L0x3MeasureChange() {}
void onVl53L0x1MeasureChange() {}
void onVl53L0x2MeasureChange() {}
Green Code:自動作成コード
Blue Code :Rumicar追記コード
Red Code :Arduino IoT Cloudに値を渡すコード
Node-REDフロー(つなぐだけ)
サジェストされる!
できあがったもの(肠丑补谤迟)
できあがったもの(驳补耻驳别)
まとめ
既存コードを流用しつつRumicarをネットに繋げられた
- Arduino IoT Cloudは基本クリック操作のみ
- Node-REDフローはサジェストされた設定をそのまま選択するだけ
herokuダッシュボードにそのままつないで終わり
- 自分から加えたArduinoコードは3行だけ
とにかく手軽すぎる。
手軽なのに可用性ヤバい
- APIキー取得後はHTTP経由で別サービスと連携可能
- 既存のArduinoコードはほぼ流用可能
ご清聴ありがとうございました
みんなも課金しよう!

More Related Content

Arduino Cloud IoTとNode-RedでRumiCarを見える化する