ESP32-DevKitC と OLED を使ったコンパクトな SINAD 測定器の製作
前回の記事では、オールインワン型のマイコン「M5Stack Core2」を使って、アマチュア無線機の受信感度を定量的に測定するためのツール、いわゆる「SINAD 計」の試作を行いました。M5Stack Core2 はタッチ付きの LCD 画面、物理ボタン、バッテリー、スピーカー、拡張ポートなどが標準装備されており、初めてのプロトタイピングにも非常に扱いやすいデバイスです。
その反面、価格面ではやや高価であり、複数台の製作や、部品の入手性を考えると、もう少しコストを抑えた構成で製作してみたくなります。そこで今回は、同じく ESP32 を心臓部に持つ「ESP32-DevKitC」という開発・評価ボードを使って、よりコンパクトかつ安価に構成できる SINAD 測定器の製作に取り組んでみました。
ESP32-DevKitC
ESP32-DevKitC を選んだ理由
当初は ESP-WROOM-32 モジュール単体を基板に実装する形で SINAD 計を作ることを考えていました。ところが、プログラムを書き込むための USB シリアル変換回路や、ブートモードに入るためのタクトスイッチ、安定した電源回路など、周辺回路を自分で用意する必要があり、かなりの手間がかかります。
特に、今回のように試作とデバッグを繰り返すプロジェクトでは、頻繁なファームウェア書き換えが発生します。そのたびに外付けの USB シリアルを繋ぎ直したり、リセットスイッチを押したりするのは効率が悪くなります。そこで、USB 経由で簡単に書き込みができ、ブートやリセットもワンタッチで行える「ESP32-DevKitC」を採用することにしました。このボードは、ESP-WROOM-32 を搭載しながらも、USB コネクタ、電源回路、各種ピンヘッダを備えた使い勝手の良い開発ボードです。
今回の製作では、この ESP-WROOM-32 モジュール単体の使用は止めました。ESP32-DevKitC での試作が上手くいったら、将来的にはこの単品モジュールを使って1枚基板にするかもしれません。
表示部には 1.3 インチ OLED を採用
M5Stack Core2 のような液晶ディスプレイは搭載していないため、表示装置としては小型の 1.3 インチ OLED(I2C 接続)を使用することにしました。OLED は非常にコントラストが高く、バックライトが不要なため消費電力も抑えられ、コンパクトな機器にはぴったりです。反面、表示領域は限られているので、SINAD の数値や信号状態を見やすく整理して表示させるために、計測値をバー表示にするなど工夫を凝らしました。
今回の開発で最も時間を要したのは、この OLED 表示に関する部分でした。限られた解像度の中でどのように情報を可視化するか、何度も試行錯誤を繰り返しました。
OLED IIC 128X64(1.3インチ)
なぜ Raspberry Pi Pico 2 ではなく ESP32 にしたのか
今回の製作にあたり、Raspberry Pi Pico 2 も候補に上がっていました。コストパフォーマンスは非常に高く、必要十分な性能も備えています。ただ、Pico 系では主に MicroPython での開発が中心となるため、前回製作した ESP32 ベースのプログラムをそのまま活用することができません。そのため、再度すべてのコードを一から書き直す必要があり、今回は見送りとしました。
ESP32 を使えば、前回の M5Stack Core2 で書いた C++ ベースのコードがそのまま利用できるため、移植の手間が大きく軽減されます。結果として、今回の製作では表示部の違いによるプログラム修正は必要でしたが、心臓部の処理に関しては大きな変更なく済ませることができました。
この pico2 も性能面から見ても捨てがたかったのですが、前回製作からのプログラムの移植の容易さを優先しました。いつかは、RasPi Pico2 の MicroPython を使って製作をしてみたいです。
製作
受信機のイヤホン出力を取り込むための入力信号処理回路には、前回 M5Stack Core2 で使用したブレッドボードをそのまま流用しました。
ESP32-DevKitC と OLED(I2C 接続)、および入力信号処理回路のブレッドボードとの接続は、ジャンパーワイヤを約6本接続するだけで完了します。
ESP32-DevKitC 38pin タイプを使用しました。
USB 電源供給時、信号未入力時の初期画面です。
計測値の表示はデジタルバーにしてみました。
実際の測定
アルインコのハンディ無線機「DJ-G7」の受信感度(145.0MHz)を測定してみました。
12dB SINAD を基準にした測定結果は、M5Stack Core2 を使用した前回の測定器と同じ結果が得られ、データの整合性にも問題はありませんでした。このことから、測定ロジックの移植が正しく行えており、構成を変えても同等の性能を実現できていることが確認できました。
実測中の様子です。
今後の作業
今後の作業としては、ESP32-DevKitC とブレッドボード上で組んでいる入力信号処理回路を一枚の基板にまとめて、ケースに収める予定です。
以上、今回はコストを抑えつつ、機能面でも妥協しない SINAD 計の製作記録をご紹介しました。