プログラミング初心者が作るIoTRCカー　1-1 ESC、サーボのハック 準備編

![IMAG2718.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/933473/ebb88f92-56db-c9af-b862-590d7a9377c8.jpeg)
##〇筆者について
・楽器設計の仕事をしていたので筐体とかは何とか（電子楽器の筐体設計もしたことがあります）
・マイコンやプログラミングはArduinoをほんの少しだけ触れたことがあるだけ
・実質初心者！よろしく！

Arduinoで電子楽器の内部設計担当の人に色々教わって、振動メトロノームとかMIDIコントローラーとか作った記憶があります。今も自営で楽器屋なので、マイコンで音楽関係の何かを作りたいです。

##〇いきさつ
以前[FPV RCカーというのを作りました](https://sinclair.jp/info/%e3%82%b3%e3%83%9f%e3%82%ab%e3%83%ab%e3%82%a2%e3%83%90%e3%83%b3%e3%83%86%e3%81%a7fpvrc%e3%82%ab%e3%83%bc/)。


これは2020年10月に開催された「[NT鯖江](http://wiki.nicotech.jp/nico_tech/index.php?NT%E9%AF%96%E6%B1%9F2020)」で出品したものなのですが、簡単な内容は以下の通りです。

- 基本は1/10のRCカー
- 使用モデルはタミヤ コミカルアバンテ（GF-01CBシャーシ）
- キャノピー内部に2.4GHzのFPVカメラを搭載
- 4chスティックプロポで動作、3ch目でジンバルのヨー方向を動かしてカメラ向きを変えるようにした

意外と、というのも変ですけど、思っていた最低限のことは出来たなーといった印象でした。なお上の写真ではカメラは外しています。
ただ、出品していた時からもう少し突っ込んだものを作りたいと思っていました。その中でマイコンを導入してセンサー類を取り付けるといったものがあります。
GPSを内蔵してログを取るとか、発見用ブザーを入れるとか、距離センサーを入れて衝突回避をするとか、そういうことが出来たらと考えていました。
とは言え自分はプログラミングについては素人ですし、まずは勉強ということでマイコン導入、というのが今回のいきさつです。

##〇IoTでラジコンを動かす
マイコンでRCカーを動かすというのは、調べれば作例が色々出てきます。動かし方にも色々あるのですが、今回は

- マシン側の操作を担うESCとサーボをマイコンでハックする
- PCなどでESCとサーボを制御し、プロポレスのRCカーを作る

というのを第一目標にします。

その前にちょっとした用語解説を。

###・プロポ
マシン側へ指令を伝えるコントローラー、送信機のことです。本来は「プロポーショナル式」とかの略だそうで、入力した量だけ出力が決まるアナログコントローラーみたいな感じです。今はwifiと同じ2.4GHzで電波を飛ばすものが主流で、カー用だと右手ホイール＆左手トリガーのホイラー式が一般的です。受信機とセットになりますが、受信機とのセットで「プロポセット」と呼ぶことが多いですね。

###・受信機
プロポ＝送信機の電波を受け取る電子機器で、通常はマシンの中に取り付けられます。この受信機にESC、サーボの配線が入ります。

###・ESC
Electric Speed Controllerの略で、モーターの回転スピードを制御するのが第一目的の電子機器です。
他にもBECと呼ばれる各部品への電源供給＆レギュレーターの役割を持っていたり、内部で機能変更が出来るものもあります。ブラシモーター用とブラシレスモーター用があり、稀に両用式というものもあります。

###・サーボ
サーボモーターという、ある一定の範囲の角度だけ動くモーターの一種です（最近は360度サーボというのもあります）。これとシャーシのステアリング機構とを繋げて、左右に旋回出来るようにしています。電子工作でもおなじみですけど少しサイズが大きいです。


使用するマイコンはObniz。これはクラウド上でプログラムを動かしてwifi経由で操作するというものですが、

- 1Aまでならモーターやサーボを直付け可能
- wifiを通じて遠隔操作が出来る
- ブロックプログラミング対応

というのが利点になると思います。マイコンなのでカメラを付ければPCのモニターを見ながら目視外のマシン走行が出来るわけですが、wifiなので電波が通っていれば例えば家の中にいて庭にあるマシンを動かすことが出来るわけです。IoTRCカー、というわけですね。
そんな訳でObnizと本を注文して、明日届く予定です。実践編はその後で……。

![IMAG2721.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/933473/daba8149-1142-215a-89ac-a2050e271075.jpeg)


ちなみに動かそうとしているESCとサーポはこちら。

- TAMIYA TEU-105BK
- TAMIYA TSU-03

どちらもビギナーセットみたいなものに標準で付いてくるもので、大体はすぐに別のパーツに変わってしまうのでRCカーをやってる人なら手元にいくつかあると思います。ヤフオクでも安く買えますね。

![IMAG2723.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/933473/bfd44ad7-c4bf-9d9b-201f-f623036e697d.jpeg)

- [HOBBYWING QuicRUN-WP-CRAWLER-Brushed](https://sekido-rc.com/?pid=110028667)
- [SAVOX SW-0231MG](https://sekido-rc.com/?pid=73954093)

出来ればこのメカが動けば嬉しいです。特にESCが使えるとドラッグブレーキ（レバーニュートラル時にブレーキが掛かる）の設定がESCへのアクセスで出来るので助かります。
ちなみにサーボのスペックに パルス幅：800 ～ 2200 μsecと書かれていました。

##〇課題

- 実際のハックの方法
- コントロール側のインターフェイスをどうするか
- プログラミング
- 遅延（主に回線由来）

一般にESC、サーボともPWMでのコントロールだそうですが、数値を割り出す必要があります。また、コントロールのプロポが無くなることで代わりのコントロール方法を作らないといけません。どの位の遅延が発生するのかも問題ですけど、これは自分ではどうしようもありません。
これらを慣れないプログラミングで何とか解決しようというのが今回の課題です。がんばれ！

##〇応用できそうなもの
もしマイコンでESC、サーボといった操作系を制御出来れば、今後いろんなことが出来そうです。

- カメラを付けて非目視操作、いわゆるFPV
- センサー類を付けて自動運転
- 自動運転にカメラ画像を保存or転送して移動カメラ（巡回ロボット）
- 更に学習機能を付けてAIでの自動運転
- ディスプレイを付けてホームロボットとか

逆に言えばこの操作系のハックが一番の土台になるというわけです。AIカーでのレースとかもあるらしいですし、この分野も面白いもので溢れていそうです。

##〇開発のゴール
当初のFPVRCカーでやろうと思っていたことをそのままIoTRCカーで出来るようにしたいです。

- 最低限のプログラミング技術習得
- PC＆wifiでRCカーの目視外走行
- GPSなどセンサー類の装着＆運用

という所まで出来れば100点満点です。自動運転とかはもう少し後でしょうか？

次はObnizの到着後、本当に操作系をハック出来るかの実験結果です。次回を待って！！