ESP32でラジコンカーを作る
概要
ESP32でラジコンカーを作成した.
Bluetooth通信でスマホからコントロールできるようにした.
超音波センサーで壁際に近づいたら止まるようにもした.
基本的には,基本的に『ESP32&Arduino 電子工作 プログラミング入門』のロボットカーの章を参考にしている.サーボモータの機構などは,再現できなかったので,2つのモーターで左右の制御を実現できるようにはした.
結論
簡単にラジコンカーができた.すごい.
ラジコンカー作った.ぬいぐるみを乗せてたらとても強い. pic.twitter.com/gWZ2k2edkQ
— ギオン (@gioooon63) 2020年5月31日
上手く止まらなくて悲劇がよく起きる. pic.twitter.com/u19CsJbcdf
— ギオン (@gioooon63) 2020年5月31日
実行したこと
実行環境
【ホストPC】
【ターゲットボード】
- ESP32-WROOM-32 開発ボード
【センサ類】
- TB6612FNG
http://akizukidenshi.com/catalog/g/gK-11219/
- HY-SRF05
【ハード】
- ユニバーサルプレート
- トラック&ホイールセット
- M3スペーサー
http://akizukidenshi.com/catalog/g/gP-01864/
- ダブルギヤボックス
- モバイルバッテリー
- 電池ボックス
- 単三電池
手順
ハードウェア準備
ラジコンカーはユニバーサルプレートとトラックホイールセットを使って組み上げる.
ブレッドボードを乗せるために,ユニバーサルプレートの上に更に,ユニバーサルプレートを乗せる.今回は,ユニバーサルプレートを2枚組み合わせて広くしている.
ブレッドボードにはESP32をベースに,モータードライバと超音波センサを載せている.超音波センサはラジコンカーの進行方向に向くようにしている.
一段上のユニバーサルプレートにブレッドボードとモバイルバッテリーを載せられるように,センサの配置は少し工夫が必要だった.
モータードライバ用の電池ボックスは偶然上と下のユニバーサルプレートの間の空間に入ったので良かった.
用意したスペーサーでギリギリ上段のユニバーサルプレートを用意できたが,もう少し長めのユニバーサルプレートを用意すればよかった.
ソフトウェア準備
プログラムは『ESP32&Arduino 電子工作 プログラミング入門』のロボットカーの章をベースにしている.
本ではサーボモータに超音波センサーをつけているが,今回は超音波センサーを固定しているので,現在はただ単に壁際に近づいてるかを判断する機能のみの役割となっている.
Bluetooth通信には本にも紹介のある『Arduino bluetooth controller』アプリを使った.
play.google.com/store/apps/details?id=com.giumig.apps.bluetoothserialmonitor&hl=ja
構成
あとがき
ぬいぐるみをラジコンカーに乗せると楽しい.
コントローラーがないと上手く制御できないので,壁を認識したら,自動で回転したり,しばらく,動物のようにウロウロ動くようにしてルンバみたいにしてみたい.
ぬいぐるみを乗せるには椅子とかいい感じに改良していきたい.
また,残念なことにこのプログラムに加えてOTA機能をつけてみたら,Flash容量が104%になってしまい,つけられなかった.ラジコンカーの改良はわざわざパソコンに持っていってシリアルケーブルにつなぐのが面倒なので,こういうときにこそOTAで離れたところでもプログラムアップデートをと思ったのだが...
実現するには,Flash容量の多いマイコンにするしかないみたいだ.ラズベリーパイでもできると思ったが,ラズベリーパイは普段のパソコンを弄りながら,開発できないから面倒なのだ.
参考
- ESP32&Arduino 電子工作 プログラミング入門