ESP32を使ったサンプリング周波数1kHzの測定器の製作

1kHzサンプリング測定器の製作 センサー

ESP32-WROOM-32E(ESP32)を使ってサンプリング周波数1kHzの測定器を製作する方法の紹介をします。気温の変化などゆっくりした現象ではなく地震などの振動測定などで使用することが出来ると思います。

初心者の方には、かなり難しい内容になってしまいますが、ミリ秒でのサンプリング時間で測定を実現する一つの方法として参考になればと思います。

概要

マイコンボードESP32-WROOM-32E(ESP32)を使って、正確なサンプリング周波数1kHzの測定器を製作する方法の紹介です。

今までRaspberry Piを使って測定していましたが、サンプリング周波数が速くなると正確な時間間隔での測定が厳しくなってきました(OSが複数のタスクを動かしていることが原因だと思います)。
そこで、比較的安価でハードウェアとソフトウェアのどちらも情報を入手しやすく、またWiFi通信も可能ということで、マイコンボードESP32-WROOM-32E(ESP32)を使って測定器を製作しました。

測定に関しては、別途I2C通信のADコンバータを使ってます。内蔵ADコンバータは使ってません。これは、測定性能に疑問を持ったときにADコンバータの仕様の確認が容易になるとう考えです。

測定だけでなく液晶画面でデータの確認やマイクロSDカードへの保存など、測定器っぽい感じの機能も追加しています。画面操作もできるようにスイッチも追加しています。

ソフトウェアの開発は統合開発環境 Arduino IDEを使っています。

外観

ピンソケットをユニバーサル基板にはんだ付けして各モジュールを接続しています。

ESP32-WROOM-32Eを使用した測定器の写真 1
ESP32-WROOM-32Eを使用した測定器の写真 2

製作当初はブレッドボードを使って各モジュールを接続していましたが、回路規模が大きくなるにつれ、信号線が外れたり接触不良を起こしたりと、どんどん作業性が悪くなり最終的にはユニバーサル基板にピンソケットをはんだ付けして信号線を接続しました。

ESP32-WROOM-32Eを使用した測定器の写真 3

ユニバーサル基板へのはんだ付けは、電源とGNDを予めすずメッキ銅線で配線し、そこから各モジュールに電源を供給する感じです。
下の写真の赤と黒の線が各モジュールに接続している電源とGNDで、配線の把握が容易なるだけでなく、電流の流れを管理することができると思います。

ESP32-WROOM-32Eを使用した測定器の写真 4

(30秒)

こんな感じで動作しています。
動作確認として、ESP32から正弦波の電圧をDCコンバータから出力し、それを同じESP32のADコンバータで読み取っています。
(DCコンバータとADコンバータを接続している線を外すと、データがバラついている様子がわかる思います。)

ハードウェア全般

ブロック図

全体ブロック図

回路図

全体回路図

主な回路ブロックと通信方式

ADコンバータ:I2C接続
LCD(液量画面):SPI接続
microSDカードスロット:SPI接続
スイッチ:汎用IO
その他:DAコンバータ出力

各ブロックの詳細

マイコンボード

型名:ESP32-WROOM-32E

秋月電子通商で購入しました。数種類のESP32ボードが販売されていますが価格で選択しました。

ESP32-WROOM-32Eの写真

パソコンからマイコンボードにアクセスするためには、USB-シリアル変換が必要になります。
※私はFT232RQ USBシリアル変換モジュールキット(秋月電子通商)を使用しました。

ADコンバータ

型名:LTC2301IMS

12bit、1チャンネル、I2Cインタフェース、14ksps、逐次比較のADコンバータです。16bit分解能のADCを使いたかったのですが、簡単に入手できるお店でサンプリング周波数1kHz以上の16bit分解能のADCを見つけることが出来ませんでした。

LTC2301IMSの写真

ESP32の信号レベル3.3V、LTC2301MSの信号レベル5Vなのでレベル変換が必要です。

BSS138-01の写真 1
BSS138-01の写真 2

プログラムを含むADコンバータの詳細は、こちらで解説しています。

LCD(液晶画面)

型名:1.3″ カラーIPS LCDディスプレイ
主な仕様:240X240解像度、ドライバーST7789、SPIインタフェース

小型にも関わらずカラーで240×240の解像度です。このLCDを動作させるための情報があったので選択しました。

1.3" IPS カラーLCDの写真

プログラムを含む詳細は、こちらで解説しています。(準備中)

準備中

microSDカードスロット

microSDカードスロットDM3AT-SF-PEJM5をが実装されたモジュールです。microSDカードを押し込むと”カチッ”っとロックされます。再度押し込むとロック解除する機構です。

DMT3AT-SF-PEJM5の写真

プログラムを含む詳細は、こちらで解説しています。(準備中)

準備中

スイッチ

4方向+センタプッシュ付きのSKRHAAE010が実装されたモジュールです。

SKRHAAE010の写真

プログラムを含む詳細は、こちらで解説しています。(準備中)

準備中

その他

拡張機能として複数台のESP32を接続して同期した測定を考えています。その準備としてAD変換開始タイミングを取るための信号とトリガ信号について、それぞれ入出力を設けています。

・DAコンバータ出力
・AD変換開始タイミング信号の入出力
・トリガ信号の入出力

プログラムなどの詳細は、こちらを参照してください。

準備中

まとめ

製作しながら出来ることと出来ないことが明確になり、サンプリング周波数1kHzで測定する場合は、データ保存はメモリ(RAM)のみで、測定と同時にmicoroSDカードへの記録は厳しいことや、LDC画面の更新も厳しいことが分かりました。これらを踏まえ、現在の測定器はドライブレコーダのような動きをするようにしています。

具体的には、1kHzの測定データをリングバッファに保存し続けて、トリガ信号が入力されたらリングバッファとは別のバッファにトリガ後のデータとして保存します。この別のバッファが一杯になったら測定を終了してSDカードにリングバッファのデータとトリガ後のデータを保存します。

これでドライブレコーダー同様に、トリガ前からトリガ後の事象を保存することが可能となります。SDカードへの保存が終了すれば、あとは繰り返しです。

詳しくは、各ブロックの詳細に記載していますので、お手数ですがそちらを参照してください。

いろいろなセンサーの使い方を紹介しています。

コメント