究極なリモートコントローラー?(Part-1)
みなさん、こんにちは!
早くも6月月末ですね。まだ梅雨の真ん中ぐらいですが、みなさんはいかがお過ごしでしょうか?
暑い日も増えて、夏バテに負けないように毎日楽しみましょう!
さて、今日のnoteは、最近取り込んでいるプロジェクトの進捗をご報告したいと思います。
(300円の値段設定しましたが、最後まで全部読めます。)
私のTwitterやInstagramをフォローしてくださった方なら、すでにご存じかもしれませんが、実は、最近ずっとESP32を使ったリモートコントローラーを作っています。
今回のプロジェクトは、今まで一番内容の多いプロジェクトで、本業をやりながらやっていると、思ったより時間が掛かっています。
プロジェクトが完全に終わって、すべての内容をまとめて書くととても多い内容になるし、さらに1っか月後になるかもしれませんから、完成を待たずに、進捗を何回かに分けて書こうと思いました。
今回のnoteはまずそれの第一部ということで始めたいと思います。
始まり
ESP32をご存じの方は、きっと知っていますが、WiFiやBluetoothも使えてとても安いパワフルなMCUです。
さらにESP-NOWというプロトコルを使えば、簡単なリモートコントローラーを作れますね。(以前、こういうのを作りました!まだ動画が雑な時期ですみません。)
今まで、ESP32でたくさんのものを作ってきましたが、そろそろ「究極な」リモートコントローラーを作ってみたいなと考えていました。
「究極」ってなに?
究極なリモートコントローラーについてはすこし説明します。
まぁ、あくまでも私が考えている「てんこ盛り」のリモートコントローラーのことです!笑。
つまり、私が「これがあると、面白い/便利」と考えているものはなるべく入れたいと考えていました。
下のは、一番最初に考えた構成です。(BEFORE)
あと、一か月ぐらいデザインと回路に専念して、PCB製造を出すときのPCBのデザインは下のものです。(AFTER)
搭載している機能
「究極な」リモートコントローラーにいろいろ機能が載っているけど、どんなことができるのか(何を載せているのか)をご説明します!
無線で制御する機能
ESP32を使っているので、もちろん無線でターゲットを制御できます。
プログラミングによって、WiFiや、Bluetooth、ESP-NOWなど使って、遠隔でターゲットと通信して、ターゲット制御することができます。制御側のESP32側にソフトウェアサーバーを立ててば、ブラウザのあるPCやスマホ、タブレット画面からもターケットを操作できますね。
ジョイスティック(大きい)
よくある、大き目のジョイスティックを二っつを使っています。それぞれX,Y軸はポテンシオメーターになっています。あと、垂直で押せるスイッチも一つ搭載しています。おもちゃの車を前後、左右に動かくためにつかえるかなと考えています。
ジョイスティック(小さい)
大きいジョイスティックのとなりに、小さい表面実装のジョイスティックも二つ用意しました。
これは構造上、上下左右四つのボタンになっています。真ん中も一つボタンになっていて、全部で5つのボタンに構成されています。
トグルスイッチ二つ
上のほうにトグルスイッチを左右一個ずつ用意しました。
これは、機能の切り替えなど使えたらなと考えています。
ポテンシオメーター二つ
ログるスイッチの隣に、ポテンシオメーターを左右一個ずつ用意しました。何かのパラメーターの微調整などに、使えるかなと考えました。
ロータリエンコーダ二つ
ロータリーエンコーダも左右一つずつ用意しました。
回転するような制御に使えそうですね。
また、メニューの切り替えや制御などにも使えそうですね!アイディア次第で、いろいろ組み合わせていろんなことができそうです。
ディスプレー二つ
情報の表示のために、ディスプレーが二つが使えるようにしました。
SPIプロトコルで接続して、lovyanGFXを使って動かす予定です。二つもあるので、応用によって、表示したい情報をグループ化して、別々のディスプレーに表示することが可能です。たとえば、ひとつは操作情報を表示します。もう一つは、コントロールするターゲットの様々な状態データを表示するようにできるはずです。
また、ジョイスティックもありますから、リモートコントローラーにせずに、これだけで、プログラミングによれば簡単なゲーム機にできそうですね。
マイク
マイク(MAX9814)の接続が可能にしました。
マイクがあれば、プログラミングによって、音声でターゲットを制御することもできる?
夢が膨らみますね!(笑)
I2Sの出力
ESP32にはI2S出力のピンがあります。そのピンはPCM5102とアンプも載せました!スピーカーもふたつ搭載しています。もちろんサイズが小さいため、音は出ますが、音質はあんまり期待できないかもしれません!笑
これだけで、インタネットラジオができますよ!
ジャイロ
今回は実験のためにジャイロも二種類搭載するようにしました!(半田づけが面倒になってきたので、一種類だけはんだ付けして、動作することが確認できました。)
ジャイロがあれば、リモートコントローラーを傾けたりするだけで、ターゲットを制御することができそうですね。
バッテリ駆動とバッテリ充電
リモートコントローラーなので、いつも線で繋いていると不便なので、バッテリ駆動が理想かと思いました。
別の開発ボードでTP5400というチップを発見して、18650のバッテリを充電したり、そのバッテリから5Vを出して給電することができるとても便利なチップです。
しかし、このチップは充電モードとCD/CDコンバーターの機能が同時に動作することができないため、ちょっと工夫が必要です。それはまた別途話します。
その他拡張
PCBサイズの制約と、今はまだ考えつかないものもあるかもしれませんから、ほかの機能はある程度拡張できるようにしたいと考えました。
そのために、4種類の拡張を用意しました。
1)I2C:PCBの上でもいくつかI2Cを利用した回路がありました。市場にたくさんのI2Cのセンサーなどが存在していて、それを全部使えるようになると便利ですね。
I2Cの拡張ポートは全部GROVEソケットにしました。ここで一つ工夫しているのは、3V3だけではなく5VのGROVEソケットも用意しました。そうすると、M5StackのI2Cのモジュールが全部使えるようになります。
2)UART
I2Cのほかに、UARTポートも用意しました。
完成したあと、まずHuskyLensをUART接続して、いろいろ実験してみたいですね。
3) USB Hostポート
PCBの上に搭載しているジョイスティックなど、使いたくないときは、外部のUSB接続のジョイスティックなど使えたらいいなと思って、M5StackのUSB HOSTの回路を参考してMAX3421Eを使った回路も追加しました。
(この部分はちょっと苦労しています。まだUSBのデバイスを検出できていません。)
ほぼ設計通り
以上が今回のプロジェクトの機能の構成となります。
いろいろ盛り込んでいましたが、大体うまくいきました。
うまくいかないところもありました。
次回のnoteでは、うまくいかないところとその部分の対応も紹介したいと思います。
あと、来月になれば、ソフトの部分もある程度できるかと思いますので、プログラムの紹介もできたらなと考えています!
では、また来月のnoteで会いましょう!
ここから先は
¥ 300
株式会社虹賢舎 CEO 著書:https://amzn.to/39KwlE4 技術ブログ:https://kokensha.xyz 機械学習 深層学習 Python /JS IoT Raspberry Pi ロボット TOEIC950 https://gosen.world