部品が揃ったらブレッドボードを使ってタッチミニパネルを試作して行きましょう。
私のアマゾンリンクからマイコンボードを買っていただいた方はESP32にLEDと抵抗が付属していますので、初めてマイコンボードを使った電子工作をされる方は簡単なLEDを点滅させるプログラムで練習してみましょう。
マイコンボードを使った電子工作に慣れている方やLEDと抵抗をお持ちではない場合は「2.ブレッドボードを使ってタッチミニパネルを試作」からスタートしてください。
目次(クリックで展開)
1.LEDを点滅させるプログラムで練習してみよう。
Arduino Uno等は最初からマイコンボード上にLEDと抵抗が搭載されていますので、LEDを点滅させるプログラムはArduino IDEにも付属しています。ESP32はオンボードのLEDが搭載済みの製品と搭載していない製品があります。私のアマゾンリンクのESP32はオンボードLEDは搭載されていないので、LEDと抵抗が付属されている商品です。マイクロテクニカさんの商品情報WEBサイトにLED点滅プログラムとLEDの接続方法がありますのでそちらを参考にしてください。(日本語で丁寧に書かれていますので本当に助かります。)
- ESP32をブレッドボードに差し込む。※1
- LEDと抵抗をブレッドボードに追加 ※2
- USBケーブルを差し込みArduino IDEでCOMポートの確認を行います。(製作準備編が設定済であることが前提条件です。)※3
- マイクロテクニカさんの製品情報WEBにアクセスしてLED点滅プログラムをコピー&ペーストします。※4
- プログラムをコンパイルしてESP32に転送して動作を確認します。
※1 通常よく見かけるブレッドボード(列がJ列まで)にESP32を差し込むと片側に1列しか空きがありません。(左写真)LEDの点滅プログラムのテストだけなら1枚でも可能ですがタッチミニパネルのテストをする場合はブレッドボード2枚を連結することをお勧めします。なお、少々お高いですが、製作準備編で紹介しているサンハヤト製のブレッドボードはL列までありますのでちょうど差し込めます。(右写真)
※2 ブレッドボードは図のように内部で配線されています。
携帯で撮影したブレッドボードなので少々歪んでいます。
※3 「ツール」→「シリアルポート」→「comxx」を選択します。多趣味おじさんのPCは色々な機器をたくさん接続しておりますのでスクリーンショットはCOM11になっていますが、一般の方のPCの方は1桁だと思います。
※4 マイクロテクニカさんの製品情報には32番ピンにLEDを接続するように書いています。このままでも良いのですが、次項のタッチミニパネルが動作しなかった時にLEDを使って原因を探れますので2番ピンに接続するように書き換えてください。
一番上の行を「int LED=2;」に変更します。
マイクロテクニカさんのサンプルプログラムでは200ミリ秒(0.2秒)ごとの点滅でしたが、写真撮影のため1000ミリ秒(1秒)ごとの点滅に修正しています。
2. ブレッドボードを使ってタッチミニパネルを試作
タッチミニパネルのテストを行うためには右側にタッチパネルの接続、左側に5Vの電源端子がありますのでJ列までのブレッドボードは2枚連結して使用することをおすすめします。なお1枚でもロータリーエンコーダーを接続しない動作テストなら可能です。ただし左側にコンデンサーが付けらないのでうまく動作しない可能性もあります。(私はコンデンサーの取付を忘れていたため、正しく動作せず気づくまでかなり時間がかかりました。)
ESP32にT.M.Pシステムのインストール
- ブレッドボードにESP32を差し込みます。
- 10μFコンデンサーをENピンに+GNDピンにGND(電解コンデンサーなら印が入っている方。写真ではグレーの印)を接続します。
- COMポートの確認を行います。前項1-3(※3)を確認してください。
- まずは、タッチパネルは接続せずにT.M.Pシステムのコンパイルとプログラムの転送を行います。(製作準備編が設定済であることが前提条件です。)
・製作準備編で設定した「arduino-sketch」フォルダ内の「T.M.P.1.09.14フォルダ」→「T.M.P.2フォルダ」→「T.M.P.2.ino」をダブルクリックして起動。
・コンパイルは設定準備編で出来ていますのでツールバーの〇に→の「マイコンボードに書き込む」を押します。
最終行に赤字でLeaving… Hard resetting via RTS pin…と出たら転送は完了しています。
エラーが出ることは少ないとは思いますが、Timeoutなどのエラーが出たらCOMポートを確認してください。
- NEXTION(タッチパネル液晶)に画像とファームウェア転送プログラム転送が終わったら一旦USBケーブルを抜いて、次に液晶パネルに画像とファームウェアを転送します。まず、マイコンボードのTXピンにタッチパネル液晶の青色コードを接続し、RXピンに黄色コードを接続します。なお、タッチパネル液晶に付属しているケーブルはメスですのでオス・オスのジャンパケーブルか、無ければピンヘッダのオスをブレッドボードに差し込みます。
- 赤色と黒色コードはタッチパネル液晶に付属している電源変換モジュールを使用してMicroUSBケーブルに接続してください。この電源変換モジュールを使用するとブレッドボードから電源を取ることも出来ますが、この液晶パネルのメーカーは別電源を準備することを推奨しています。(この写真ではケースに取り付けた液晶タッチパネルを取り外すのが面倒でしたので、非推奨ですがブレッドボードから液晶用の電源を取っています。)
- 注意 この接続は液晶パネルに画像とファームウェアを転送するためだけの接続です。この接続のままではT.M.Pシステムは動作いたしません。
- USBケーブルをPC等に接続すると初回は液晶タッチパネルのデモ画面が出ると思います。製作準備編で決めたT.M.Pシステムの保存フォルダから「T.M.P.1.09.14」フォルダ内の「Nextion」フォルダ→「T.M.P.2.HMI」をダブルクリックしてNextion Editorを起動します。
- T.M.Pシステムのパネル画像が表示されます。ツールバーの「Compile」ボタンをボタンを押します。「Compile Successful」と出ればOKです。
- 次に「UPLOAD」ボタンを押します。再コンパイル後、「Upload to Nextion Device」という画面が出ます。そのまま「Go」を押してください。接続が成功すると液晶画面に転送進捗のバーが出ます。2分弱お待ちください。
- 最後にジェット機が飛んでいる画像に変われば完了です。
※Timeout等のエラーになった場合。
・ESP32のTXピンが青線。RXピンが黄線に接続されていることを確認してください。
・Nextion Editorが二重起動している。
・Arduiono IDEのシリアルモニタが起動していると接続に失敗します。
・Uploadの途中で中断したか失敗した。この場合USBケーブル抜き差しして再度UPLOAD。
ロータリーエンコーダーを接続せずにテスト
- 一旦USBケーブルを抜いてESP32の電源を切ります。
- 液晶パネルの黄色線を17番ピンに接続してください。
- 液晶パネルの青色線を16番ピンに接続してください。
- USBケーブルをPCに接続してください。
- オートパイロットの画面が出れば成功です。※5
- 左横のカテゴリーボタンをタップすると画面が色々切り替わると思います。
- 一度USBケーブルを抜いでマイコンボードの電源を切ります。
※5 もしWaiting For MCUで止まって動かなかったら
・黄色線17番ピン・青色線16番ピンの確認
・ENピンにコンデンサーが正しく接続しているか確認。
(私はこれが原因で動作せず長時間悩みました。)
・マイコンボード上のENボタンを押してみる。
(USBコネクタの左側に小さいボタンがあります。)
・USBケーブルを抜き差しする。
これらを試しても改善出来なかった場合、ESP32と液晶タッチパネルが正しく通信出来ていない可能性があります。作者のDiscman777さんは、こんな人のためにチェックブログラムを準備していただいています。
(もしかしたら困っていた私のために準備していただいたのかもしれません。感謝です。)
「Documentations」フォルダ内の「PanelDiag」フォルダのHow to Use.pdfをご覧になって、チェックプログラムをインストールしてください。これの使い方がわからない場合は問い合わせメールで問い合わせしてください。(ここに書くとややこしいので省略させていただきました。)
ロータリーエンコーダーを接続してみる。
Autopilotの画面が出れば、ロータリーエンコーダーの接続を間違わない限りほぼ確実に動作すると思います。
一旦USBケーブルを抜き、ロータリーエンコーダーを1つでも付けてから起動してみましょう。ここでは2番のロータリーエンコーダを接続してみます。
(詳しい接続方法は「Documentations」フォルダ内のSchematic_38pin.jpgをご覧ください。)
・CLKを19番ピンに接続(この図では青線)
・DTを18番ピンに接続(この図では紫線)
・SWを5番ピンに接続(この図では灰色線)
・+を電源ライン(赤ライン)に接続(この図では白線)
・GNDをGNDライン(黒ライン)に接続(この図では黒線)
USBケーブルを接続してマイコンを起動します。
2番のロータリーエンコーダーはAUTOPILOTの画面では「HDG」(ヘディング)に相当しますので回せば方向角が変わると思います。(写真はHDGを160度に設定したところ)
これでほっと一息。
このまま4つローターリーエンコーダーを接続して、X-plane11やFS2020の接続インターフェースを準備すれば、動作はすると思いますが、とりあえずロータリーエンコーダーを固定しないと配線ぐちゃぐちゃで、どれを回せば良いかわかりません。少し時間はかかりますが出来ればきちんとしたケースに収めるとモチベーションが上がります。
簡単に済ませて早く遊んでみたいのなら、ブレッドボードに装着したままDiscman777さんのようにMDF合板に固定するもの良し、お菓子の缶などに入れるもよし、多趣味おじさんのように本格的にアルミケースに入れるのもアリです。
次回ではアルミケースに入れるための説明をしますが、実はケースに入れるような工作をしたのは久しぶりなのでおそらく他の電子工作を極めた方のケースの収め方を見ていただいた方が参考になると思います。