アームクローラー ラジコン制作

概要

ESP32モータドライバボードを利用した応用例としてラジコンを作ってみることにしました。ラジコンのハードウェア自体はタミヤの模型キットを使用して、ESP32モータドライバボードからモータを制御する構成としました。リモコン側はスマホを使います。簡単なAndroid Appを作り、ESP32とAndroid間はBluetoothで通信させています。仕組み的にはスマホからモータをコントロールするだけのシンプル構成になります。タミヤの模型キットラジコン化だけではなく、モータで動作するおもちゃならすぐに無線化してスマホと繋ぐことができますので、色々と応用できるかと思います。

完成品

今回、タミヤのアームクローラとツインギヤボックスの組み合わせで、キャタピラを左右独立にコントロールできるハードを準備しました。

完成品の写真や動画を以下に貼っておきます。

ハードウェア

下図は全体の配線図となります。配線図という大それたレベルではありませんが・・、電池とモータを繋ぐだけです。モータはマブチ130を接続しています。電池は1.5Vx4=6Vを使用しますが、マブチ130モータ の適正電圧範囲は1.5~3Vになりますので、PWMで実効電圧がモータの適正電圧範囲内に収まるように制御する必要があります。まぁ実際は子供のおもちゃなので、子供に渡すと思いっきりPWM値を上げて(電圧を上げて)スピードアップしたりと、モータとドライバをいじめまくってはいますが、、今のところ問題は出ていないようです。また、マブチ130モータは初期電流が大きく流れるようで、PWM周波数を高めにしないとモータドライバの方で電流制限されてしまうため、初期トルクが立ち上がらずにスタートできませんでした。つまり、回転しません。そのため、電流制限がかからないよう、PWM周波数は400kHz程度まで高めて動作させていています。余談ですが、一般的にモータにブラシノイズ除去を目的として0.1uF程度のセラコンをパラることが多いですが、400kHzまでPWM周波数を上げていますので0.1uFとかではそのインピーダンスで電流制限がかかってしまうため、接続する場合には容量値に注意する必要があります。現状、ブラシノイズによるマイコンの誤動作などが出ていないため、容量はパラっていません。ちなみに、充電電池1.2Vx4=4.8Vを使用する場合には電源に直列に接続されているダイオード(D1)をショートしてやらないと電圧が低すぎて動かないことがあります。

以下は、モータドライバボードの回路図になります。

ソフトウェア

Android AppとESP32はBluetooth Classic UARTを使用して通信しています。通信プロトコルは以下のようにエイヤで決めたユルイ仕様ですが、おもちゃなので激しく妥協しています。ヘッダを含む5byteのパケットをひたすら垂れ流しているだけです。

// 0xff + speedL + speedR + directionL + directionR
// header           0xFF
// speed left       0~100% (PWM)
// speed right      0~100% (PWM)
// direction left   0,1:forward,2:back
// direction right  0,1:forward,2:back

Arduino ESP32用

GitHub - gproducts/arduino_sample_rc_car_ota
Contribute to gproducts/arduino_sample_rc_car_ota development by creating an account on GitHub.

出荷時点でこのF/Wが書き込まれています。OTAコードを含んだF/Wになっていますので、F/WをWiFi経由で書き換えできるようになっています。電源を入れると以下のAPがPCから見えるようになります。APに以下のssid/passを使ってLoginした後、ArduinoのGUIから192.168.10.1のリモートポートを選択すればF/Wの書き換えが可能です。

// WiFi Setting for OTA
const char *ssid = "OTA_AP";
const char *pass = "password";
const IPAddress ip(192, 168, 10, 1);
OTAのPortを選択する。

Android 用

GitHub - gproducts/android_sample_rc_car
Contribute to gproducts/android_sample_rc_car development by creating an account on GitHub.

Android StudioでBuildして実行してください。操作系としてはボタンと加速度センサの2種類インプリしてあります。雛形程度のコードになっていますので、適宜改造したり機能追加をしていただければと思います。(ご要望があれば更新するかもしれません。)

コメント

タイトルとURLをコピーしました