アクチュエータは駆動部にサーボ2個、スマホホルダ部にサーボ二個(同軸)
なのでそれらをPS3コントローラから操作できるようにします。
KONDOの同じサーボのみ使用しているのでかなり単純にできます。
・回路
KONDOのICS通信は一線式、マイコンはTxとRxの二線式なので
回路上で対応が必要です。今回はKONDO純正のICS変換基盤を使用
しました。純正なので簡単&安心ですが、値段がちょっと高いので
次回は自作したいところです。
回路も基盤の取説に乗っていたものをそのまま使います。
下記の通りに接続します。
ESP32 ICS変換基盤
Vin------------------------- Vout
3.3V------------------------IOREF
GND------------------------GND
RX2(GPIO 16)--------------TX
TX2(GPIO 17)--------------RX
GPIO 2----------------------EN_IN
シリアルポート2を使用しましたが、たぶん他のポートでも大丈夫です。
一点、ICS変換基盤のピンヘッダは逆接続ができるようになっているのでサーボ
を接続するときは注意が必要です。電源側が信号線になります。
・ソフト
開発環境はArduinoIDEのESP32ライブラリを使用します。
追加が必要なライブラリはPs3ControllerとICS_Classの二つです。
Ps3Controllerはライブラリマネージャから、ICS_ClassはKONDOの
サイトからダウンロードできます。
ICSクラスは公式に詳しく説明があるのでそちらを参照のこと。
Ps3Controllerの使い方はExsampleを見れば大体わかりますが
Ps3.begin(PS3のMACアドレス);
をsetup関数で唱えてると接続待ち状態になります。
Ps3.isConnected()
で接続状態を監視し、接続されていたらPs3.dataクラスにデータが
入っていますので
int rx = Ps3.data.analog.stick.rx;
のようにしてボタンの状態を取得します。あとはボタン状態によって
処理を書くだけです。ESP32+PS3コントローラで簡単にラジコンロボット
を作れますね。
ちょっとつまずいたのは駆動の部分です。アナログスティックのx軸値、y軸値
から車輪二つの回転数に変換するのですが、より直感的に操作できるように
するにはどうするか悩みました。
最終的にtan^-1で極座標変換して角度を出し、角度によって
左右の回転数を変える処理にしました。これではその場で回転できま
せんのでL2とR2を超信知旋回に割り当てています。
私はこれが操作しやすいと思いますが、ボタンはたくさんありますので
自分に合わせた操作方法を作っていくのも楽しいと思います。
今回使用したプログラム
今回はスマホをそのまま搭載できるラジコンを作ったらいろいろ使えるんじゃないか?
というアイデアでサクサク製作しました。簡単ハードで特に目新しい部分は
なかったですが、ESP32+サーボ+PS3コントローラの組み合わせはボタン
の割り当てと制御部分の作り方次第で二足歩行ロボットやアームロボットにも
使えるのでかなり応用性が高いと思います。
動作の様子
0 件のコメント:
コメントを投稿