狠狠撸
Submit Search
円滑なRumicar開発をするためのtips Rumicar Conference
?
Download as PPTX, PDF
?
0 likes
?
144 views
M
MinoruInoue2
Follow
2021/12/12 Rumicar会議資料
Read less
Read more
1 of 33
Download now
Download to read offline
More Related Content
円滑なRumicar開発をするためのtips Rumicar Conference
1.
円滑なRumicar開発をするためのtips 井上 稔(@henjin01_Fab) RumiCar 会議(conference) 2021/12/12
2.
自己紹介 名前: 井上 稔(Minoru
INOUE) 出没先: コミュニティ“ゆるメカトロ” Facebook: minoru.inoue.90 Twitter : @henjin01_Fab Rumicarしょしんしゃです。 I’m beginner. 今回は、Rumicarを作る際に実施した工夫をまとめました
3.
ざっくりとしたアジェンダ 1. ハードウェアな工夫 2. ソフトウェアな工夫
4.
ハードウェアな工夫
5.
大まかな概要 メカは一発で作ろうとするとほぼ確で失敗する 「試行錯誤」するためにおこなった工夫を話します。
6.
試行錯誤するには 試行錯誤する≒可変にする 今回のRumicarでは下記の要素を可変にした センサー 位置 ラジコンカー 配線
7.
配線について1 センサー、マイコン、車体の結線はあえて基板化しない →走らせた結果次第で仕様が変わる可能性がある ToFセンサーの交換やマイコンの変更は頻繁に発生したが おおよそ2分足らずで対応できた センサ用自作ケーブル 先端をジャンパっぽくした ピンヘッダそのまま
8.
配線について2 モータードライバはこちらを使用した 安価&小型、薄い 燃やしてもうまい棒5本程度の出費
9.
センサー位置について1 LEGOテクニック部品に互換させた センサーの角度?高さ調節が即座にできた。 かつ、センサー数を増やすなどの新しい取り組みが容易になった https://github.com/henjin0/GeekBaggy こちらで自作する方法もアリ:https://github.com/henjin0/HolePlateMaker
10.
センサー位置について2 組付けの自由度を増やすべくフラットベッド化した レーザーカッターで3mmのアクリル or MDFをカットして作成 https://github.com/henjin0/DAISO-radio-control-racing-car-plate
11.
車体について1 今回はダイソーラジコン(600円)を使用した ただ、フリーマーケットではもっと安く手に入ることも タイミングを狙えばmerucariだと送料込みで400円前後でゲットしやすい アフターコロナであれば、大井競馬場フリマなどもオススメ (下手すると100円切ることも。。。) https://trx.jp/hallDetail.xhtml?hallId=1
12.
車体について2 いっそのこと3Dプリンタで作ってしまえ! そんな方にKari-Kurumaはオススメです。 ステアやフレーム部品は3Dプリンタで作ればいいだけ 3Dプリンタさえ稼働していれば壊しても無問題 https://github.com/henjin0/Kari-Kuruma
13.
ハードウェアの工夫に関するまとめ 長く話したけども、結局コレに尽きる 容易なスクラップ&ビルド 低コスト 素早く失敗&即座に再挑戦できる状態をつくる
14.
ソフトウェアな工夫
15.
大まかな概要 Arduino IoT Cloudを有料プランにして Node-REDでデータを扱えるようにした 今回はRumicarと呼ばれる自律走行ラジコンを Node-REDを介してネットへつなぐ ToF1:123 ToF2:456 ToF3:789 ToF1:123 ToF2:456 ToF3:789
16.
大まかな概要(補足) Q. なんでNode-REDを使う必要があるの? A. 受信データの操作?保存ができない Arduino
IoT Cloudは基本的にデータの仲介と表示のみ 受信データのロギングやフィルタリングなどは現状不可能 →別のサービス(Node-RED)に頼る必要あり。
17.
今回つかうもの 今回使うもの enebular Entry Plan (年$23.88) ※2021/12/11(土)確認
18.
サービスと搁耻尘颈颁补谤の説明
19.
Arduino IoT Cloudについて ESP32などを含め、ネットにつながるArduinoボードを 簡単にネット上から操作できるサービス 上に示すようなダッシュボードで見える化できる また、課金プランでHTTP(POST/GET)で制御可能
20.
Node-REDとenebularついて ? Node-REDはノードという部品を結線して構成するビジュアルプログラミング言語 ? enebularはUhuru㈱が提供しているNode-REDプラットフォーム メアドの登録だけでクラウド上でNode-RED環境を使わせてくれる 一部制限はあるが、基本無料。超太っ腹!
21.
Herokuについて ? アプリケーションを動かすためのクラウド環境(PaaS)。基本機能は無料 ? AWSやAzureよりも非常に抽象的。中身よりも機能にフォーカスされている感じ。 一部制限はあるが、基本無料。超太っ腹!(2回目) https://jp.heroku.com/home
22.
RumiCarについて 3基の距離センサの値をもとに車体を制御する 自律走行プログラム開発のためのプラットフォーム 基本形はArduino nanoとToFセンサの組み合わせ ネットを介した制御は特に無し https://github.com/RumiCar-group/RumiCar Arduino nanoと モータードライバ ToFセンサ (左右と正面)
23.
今回のNode-REDの取り扱い enebularを用いてherokuにデプロイして使用 & Arduino IoT
Cloud用外部フローをインストール rumicar.herokuapp.com/ デプロイ @arduino/ node-red-contrib-arduino-iot-cloud skipシート
24.
実装について skipシート
25.
今回の構成 rumicar.herokuapp.com/ HTTP (GET/POST) HTTP (GET/POST) Arduino IoT
Cloudをインターフェースに RumiCarのToFセンサの値をNode-REDへ渡す
26.
Arduino IoT Cloud(Thing)設定 見える化だけできればいいのでToFセンサ値を定義
27.
今回のRumicar - ToFセンサ:VL53L0x - モータードライバ:DRV8833 -
制御ボード:Arduino MKR WIFI 1010 - いけにえ車体:ダイソーの600円ラジコン - フレーム:MDF/アクリルをレーザーカットして作成
28.
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 int num){ 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に値を渡すコード
29.
Node-REDフロー(つなぐだけ) サジェストされる!
30.
できあがったもの(肠丑补谤迟)
31.
できあがったもの(驳补耻驳别)
32.
まとめ 既存コードを流用しつつRumicarをネットに繋げられた - Arduino IoT
Cloudは基本クリック操作のみ - Node-REDフローはサジェストされた設定をそのまま選択するだけ herokuダッシュボードにそのままつないで終わり - 自分から加えたArduinoコードは3行だけ とにかく手軽すぎる。 手軽なのに可用性ヤバい - APIキー取得後はHTTP経由で別サービスと連携可能 - 既存のArduinoコードはほぼ流用可能 できたら嬉しいなぁと思っていること - Websocketなどで通信を確立できたらリアルタイム性上がりそう - WebRTCで映像とか送れたらいいなぁ
33.
ご清聴ありがとうございました
Download