見出し画像

究極なリモートコントローラー?(Part-2)

(7月月末noteを公開したと思い込んで、公開が遅くなってしまいました。大変もうしわけございません!)

みなさん、こんにちは!
早くも7月月末ですね。梅雨も明けて、毎日暑いですが
なさんはいかがお過ごしでしょうか?

さて、今日のnoteは、前回の続きを書きたいと思います。


(300円の値段設定しましたが、最後まで全部読めます。)


前回も書いておりますが、最近ずっとESP32のリモートコントローラーを作っています。

半田付けをしながら、機能ブロックを確認していこうという方式でやっていこうと決めました。

半田付けと機能テスト

半田をつけながら、機能をテストしていきます。

74HC4501


ジョイスティックが二つのポテンシオメーターをつかっているので、アナログピンを拡張するために、今回は74HC4501を使いました。
今回のジョイスティック二つポテンシオメーター二つで、合わせて、アナログ入力のために、GPIOが6本必要ですが、74HC4501を使うと4本で足ります。

しかし、見事にミスりました。一番大事なピンがつながっていなかったです。一番大事な共通出力ピンが未接続にしています。あと、アドレスとして使っているS0、S1、 S2のS2を間違ってGNDにしてしまいました。幸いなことに、なんとか直すことができました。

GPIO Expender:MCP23008

今回、大量のスイッチを使っているので、デジタル入力のIOピンも足りないので、GPIOピンの数を拡張するMCP23008を使いました。MCP23017もあり、16チャネルまで増やせるのですが、今回初めてなので、まずMCP23008を使ってみようと考えてMCP23008にしました。結果としてMCP23008を三つ載せることにしました。

同じI2Cを使うコネクターも実際にM5StackのI2Cモジュールを繋いて、確認したら問題なく操作しています。M5StackのI2Cモジュールは電源が5Vの入力が必要です。中で3Vを使う場合はそのモジュールの中で5Vから3Vへの変換回路がよくつかわれているので、今回のPCBでは二つのI2Cコネクターに電源を5Vにして、M5StackのI2Cモジュールも問題なく使えるようにデザインしました。ほかに3Vを使うI2Cコネクターも二つ用意しました。
今回動作確認につかったのは、QMP6988を使うMini BPS Unitです。

半田付けが進むにつれていくつかバグが発覚しましたが
全体がとてもいい感じに仕上がってきました。
当初予想した機能の八割は正常に動作しているので、実験基板としては、成功と考えてもよいかなと思います!

液晶ディスプレーも刺して、ロータリーエンコーダやジョイスティック、トグルスイッチなどの半田付けが終わると、だいぶ見栄えがよくなり楽しくなってきますね。

ほかの仕事もしながら進めるプロジェクトなので、半田付けだけでも断続でやって、一週間ぐらいもかかりました。

I2Sでインタネットラジオ

そして、スピーカーもI2S周りの半田付けも終わり、以前作ったインタネットラジオのソースコードをほぼ修正なしで、そのまま実行したら、インタネットラジオの音楽も流れてきました!
I2Sとその後続のアンプ回路、スピーカーまで搭載しているので、インタネットラジオは簡単に実現できました。
以前蓄積した回路に感謝です。
あと、リモートコントローラーとしてプログラミングする際に、操作の種類によって音を出すこともできそうですね。

ジャイロ:KXTJ3

今回のPCBのデザインでは、二つのジャイロを載せてみましたが、実際に一つしか半田付けしませんでした。
一つが、KXTJ3-1057です。もう一つはQMA7981です。QMA7981のほうはそれ用のライブラリを見つからなかったので、今回は見送りしようと思いました。KXTJ3-1057はライブラリも用意されているので、手間をかからずにすぐ試せるかなと思って、今回はKXTJ3-1057にしました。

ところが、KXTJ3-1057がとても小さくて、はんだ付けをしたあと、なかなかI2Cで検出できず、だいぶ長く悩みました。
KXTJ3-1057の回路はシンプルなもので、周辺もパスコンだけで、新品の部品なので、部品不良も考えにくいので、はんだ付け不良かなと考えました。外して確認したら、やはり、半田がついていないピンが四か所もありました。通りにこれは検出できませんね!
フラックスを直接につけて、チップのほうのピンにまず半田をつけて
再度基板にマウントしたら、うまくいきました!

一部の機能をテストするために、もう一枚もつくってみました。関係の回路の影響を除外できるから、デバッグするときはシンプルになり、分析する箇所も減ります。


半田付け完了


半田付けもだいぶ完了して、ノブなどもつけると、完成に近づきます。見栄えもそれっぽくなりましたね!

プログラミング


ハードウェアがほぼ用意できたので、次はプログラミングのほうですね。まずディスプレーをテストします。lovyanGFXを使います。ESP32が使うグラフィックのライブラリの中では一番パフォーマが早いです。
また、ディスプレーを二つ以上動かすこともできます。

GUI


今回はGUIのプログラミングは結構時間が掛かりました。こんなにちゃんとGUIを作ったのは初めてかもしれません。
色々大変ですが、でも作ったものは今後のプロジェクトにも応用できるから、無駄にはなりません。

ジョイスティックの動きも可視化して、動きが「見える」のはとても楽しいですね。

次はGyroセンサーの動きを可視化します。
左右、前後の傾きで、円の位置が変わって、とても分かりやすいです。また上下するときに、円の大きさが変わるようにしていて、高さの変化も表現されています。


ジョイスティックやロータリーエンコーダなどの可視化ができました。あとはスイッチの部分が残っています。

3Dパネル


プログラミングの時も結構基板を触ったり、ものに当たったりするから、部品を保護するために、簡単なパネルを3Dプリンターで作って、つけました。将来余裕があれば、きれいなエンクロージャーを作りたいですね。
背面はこんな感じです。

表面はこんな感じです。

スイッチのビジュアル効果も加えて、だいぶ完成に近づきました。

ここまで、なかなか時間が掛かりましたが、半田付けもプログラミングも大変お勉強になりました。
回路の間違いや不備もいくつか分かって、貴重な経験になって次のプロジェクトに生かせることができます。

8月中、頑張ってYouTubeの動画を完成させたいと思います。出来たら、またnoteで共有します!

また次回のnoteで会いましょう!

ここから先は

0字

¥ 300

株式会社虹賢舎 CEO 著書:https://amzn.to/39KwlE4 技術ブログ:https://kokensha.xyz 機械学習 深層学習 Python /JS IoT Raspberry Pi ロボット TOEIC950 https://gosen.world