「チラシお断り」って郵便受けに掲示してる家ありますよね。アレ真似してやってみたら意外に効果があったのでお勧めです。
モータ取付
Amazonで買ったギヤードモータ2個をエポキシ接着剤で本体に取り付けます。強度を出すためにどうやって固定しようか結構迷ったんですが、φ2mmの真鍮線で2個連結→瞬間接着剤で仮固定→エポキシ接着剤を盛ってガッチリ貼り付けにしました。車輪を机に叩き付けた時にポロリしても困るので。同時に音量調節用のボリュームも付けてます。


リモコン製作
回路図
豚本体と同様ESP32を中心に作ります。LEDは手持ちを使った関係で消費電流が多めです。ポリスイッチの回路図記号はJISに規定が見当たらず、資料によっても差異がありますけど何が正解なんですかね?

リモコンの機能は以下です。豚本体に対する灯火制御とラジコンカーとしての走行制御を付加したものになります。
- 豚本体との無線通信
- 前尾灯・方向指示器の制御
- 音源の再生・選択
- 走行制御
- リチウムイオンポリマー電池による充電式
- バッテリ電圧監視
- USB Type-C充電
主な機能の解説
【豚本体との無線通信】
Bluetooth (Classic)で通信します。ESP32はBLEも使用可能ですが、消費電力が余り変わらないようなので使い慣れた方で実装します。無線接続表示灯は接続試行中に点滅、接続確立時に点灯させます。
【前尾灯・方向指示器の制御】
押す度に入切します。方向指示器は80回/分のペースで点滅します。
【音源の再生・選択】
豚本体の機能をリモコンでも制御可能にします。音源選択スイッチは豚本体にもありますが、音源再生スイッチを押した方の設定が反映されるようにします。
【走行制御】
ジョイスティックで前後進と左右旋回が出来るようにします。C1, C2の10μは、ジョイスティック内蔵の可変抵抗とRCフィルタを構成し、出力電圧安定化のために付けています。使用するジョイスティック RKJXV122400Rの全抵抗値は10kΩなのでカットオフ周波数は最小1.6Hzです。
【リチウムイオンポリマー電池による充電式・バッテリ電圧監視・USB Type-C充電】
豚本体と同様。
データフォーマット
BluetoothSerialで計9バイトのデータをリモコンから本体に送信します。フォーマットは以下です。
| バイト | 値の範囲 | 情報 | 値の意味 |
| 0 | 0-1 | 再生 | 0:停止 1:再生 |
| 1 | 0-9 | 音源 | 音源選択スイッチの番号と同一 |
| 2 | 0-1 | 前尾灯 | 0:消灯 1:点灯 |
| 3 | 0-1 | 方向指示器右 | 0:消灯 1:点灯 |
| 4 | 0-1 | 方向指示器左 | 0:消灯 1:点灯 |
| 5 | 0-255 | モータ制御右-前進 | 0:停止 255:最高速度 |
| 6 | 0-255 | モータ制御右-後退 | 0:停止 255:最高速度 |
| 7 | 0-255 | モータ制御左-後退 | 0:停止 255:最高速度 |
| 8 | 0-255 | モータ制御左-前進 | 0:停止 255:最高速度 |
外観

部品を全部実装するとこうなります。USB Type-Cシリアル変換モジュール上のLEDは充電中に光って鬱陶しいので絶縁テープで隠しています。中央下部のタクトスイッチにはφ5mmのスチロール棒を切って貼り付け、押しやすくしています。3Dプリンタで作れよって?レジンの処理が面倒なので勘弁してください。「P」「E」のタクトスイッチはESP32への書き込み時に使用します。

UEWの配線が取れにくいようにハックルーも使ってみました。見た目ヘタクソですが固定できていれば良いかなと。でも運悪くハックルーだけ取れてハナクソ混入みたいに思われたら嫌だなァ。モジキは昔ハックルー無しで面実装ICへのUEW配線をしたら、使用時の振動でボロボロ外れてしまった経験があります。半田付けに機械的強度は期待してはいけないということですね。因みにIEC 61010-1(計測,制御及び試験所使用電気機器の安全要求事項-第1部:一般要求事項)で次の内容が記載されているのを知っていますか?ブログでは和訳版のJIS C1010-1から引用します。
6.9 感電に対する保護の構造的要求事項
6.9.1 一般
a) 機械的ストレスを受ける配線接続は,はんだ付けによって保証しない。
ハックルー使用時に気になった点は溶かすときの熱でUEWの被覆が溶けそうだということです。もう一つはこて先クリーナーが金だわしだと拭き取り辛いという点。スポンジの方がずっとマシです。

カバーを付けました。トグルスイッチのノブの出し方と、カバーと基板を完全に分離してメンテナンスしやすくした点にこだわっています。また良く使うボタンは指の動きを考慮して押しやすい位置に配置しました。文字は手書きでお粗末なんですが、テプラだと後から剥がれてしまい見た目が悪くなるので敢えてこうしています。

スイッチのノブの出っ張りが最小限に抑えられてて良い。ナットでケースに固定すると飛び出し過ぎて邪魔ですし何となく無骨じゃないですか。別にそんなことない?そうか……
要はより洗練された見た目にしたいなあという趣味でこうしました。昔何かのブログで見掛けてやってみたかったんですよね。但しこれはSWの端子に機械的な負荷が掛かるので、固定用の端子が両脇に生えたシールド付きをお勧めします(画像引用元:秋月)。


電池が減ると赤LEDが点灯します。電源灯と無線接続表示灯は同じ緑色なので、間隔を開けて見分けやすくしています。ジョイスティック左右押込みでランプテスト機能も付いてるんですよ~。

充電中は黄色LED点灯です。
試験走行
できる範囲で走らせてみました。オォ~……
教訓
失敗から得たものを。
電源回路は低損失にする
モジキは電池駆動の電子工作はあまりやったことが無くて、トライアンドエラーを繰り返しながら落ち着いた回路図が上に載せたやつなんですが、電池持ちを良くするために考慮した点は以下です。
- ポリスイッチのトリップ電流と抵抗分による損失はトレードオフ
- 充電端子に繋がる逆流防止用ダイオード(D1)は逆方向電流が小さい物とする
- リポに繋がる逆流防止用ダイオード(D2)は順電圧が低い物とする
リポの公称電圧3.7Vに対してESP32の駆動電圧3.3Vというのは余り余裕がなくて、最初にこれら3点を無視して舐めた設計をした結果電源回路の損失が大きすぎ、満充電から15分位で電池切れになってしまいました。

最初の部品選定時、ポリスイッチは電池の定格でトリップする物(RXEF017)を、逆流防止用のショットキはとりあえず手持ちの物(1S3)を使ったのですが失敗でした。普通に使ってるだけで電池の3.7Vが2.6Vに下がってしまうのでそりゃダメだよなぁと。満充電で4.2Vにしても3.1Vに落ちてしまいます。
そこでポリスイッチのトリップ電流を上げてMF-RX030に変更し、ショットキを順電圧の低いCHUS20S30に変更します。すると3.7Vの電池を接続した時VO=3.3Vで、即ち損失を1.1V→0.4Vに抑えることができます。
実測してみると、VB=3.83V、 VO=3.46Vで損失は0.37Vとなり、上の計算通り約0.4V落ちていることが分かります。こうやって計算通りに動いてくれるのは面白い。


一方で逆方向電流も考慮する必要があり、余り大きいと電源切でもバッテリが消費されてしまうので良くないです。充電端子に何も付いていなければ良いのですが、今回はシリアル変換モジュールやLED等が接続されているので、そこに電流が流れてしまいLEDの場合はうっすら点灯してしまう事さえあります。

上は充電端子側のショットキ(D1)を、逆方向電流の大きな(170μA)CHUS20S30にした時の写真です。暗がりでUSB Type-Cシリアル変換モジュール上の赤LEDが点灯しているのが見えますか?電源切なのにキモいですよね。電池の容量が300mAhなので、満充電から概ね2ヶ月半で電池切れを起こしてしまいます💩
一応電源スイッチの位置を工夫するとか、或いは双極双投に替えれば電流を完全にゼロにはできます。しかしその結果充電中に電源が入ってしまったり、再び部品を買いに行ったりするのも手間なので、逆方向電流の低いショットキにしました(CHUS20S30から1S3に戻しました)。これなら電源切でも逆方向電流が15μA程度に抑えられ、2~3年は持ちます。上で点いていたLEDも無事消えてくれました。
ジョイスティックは傾き過ぎないようにする
アルプスアルパインのRKJXV1224005のデータシートを読むと、スティックは23度以上傾けるなと書いてあります。実際に大きく傾けると、ある程度の所でばね指みたいにカクンとなり、手を放しても戻らなくなります。従ってカバーの穴は23度以上傾かないような大きさにする必要があります。ケース加工時は穴を広げ過ぎると修正が面倒になるので何度も削ってはカバーを閉じて確認を繰り返しました。
次回は豚本体に前尾灯を取り付けてプログラムを書きます。

