ESPマイコン活用

2021年技術ブログ集

ESPマイコン活用その1
ESP32のピン配置とADC評価

2ch/4msecのサンプリングプログラム

4ch/8msecのサンプリングプログラム

ESPマイコン活用その2
WEMOSによるFFT処理

WEMOSはピン配置がArduino互換配置のESP32基板

マイコンでのFFT処理ポログラム WEMOSFFT39fast.ino

WEMOSのFFTデータの処理

スペクトラム表示プログラム WEMOS32FFT20KHZ.ipynb

ESPマイコン活用その3
ESP32の温湿度測定ウェブサーバ

ESP32のWiFiを利用した応用として、小野さん(75歳)ブログから情報を得て追試を行いました。

WiFiMeasurement.ino

(感想)TCP/IP設定がめんどくさく汎用性がいまひとつの感がありました。

ESPマイコン活用その4
ESP32,ESP8266のUDP通信実験

UDPはTCPのような通信確立は必要なく、今回はエッジからデータを一方的に送り付けることを前提にRaspberryPiからの返信は行わないことにしました。
(データ値を監視してIOピンを動作させるようなことは可能ですが)
システム開発の背景には以前開発した“多対一のLoRa通信システム”のイメージが
ありバックエンドのソフトウェアを有効活用したいためでもあります。
各送信機には識別子をデータの先頭に着けます。下記ADC1は“A01”、ADC2は”A02”、FFTは“F01”のように設定しました。

UDP通信により通信手続きは簡略化されるものの物理的にWiFiルーターを介するため専用ルーターを設置するなど使い勝手がよくないと思います。

UDP送信機1,2(PORT:7000,6000)の多対一通信

AnalogPIN(35,34,36,39)の信号を出力: 12bitx4ch_ADCサンプリング間隔:約0.1秒程度バファサイズは128でもOKでした。

マイコンプログラムコード ESP_UDPOK.ino

UDP送信機3(PORT:6500)との通信

AnalogPIN(39)の信号をFFT処理:サンプリング周波数:20KHz、周波数分解能76Hz
(1回にコンマ区切りで128データを送信)

マイコンプログラムコード WEMOS_UDP_FFTOK.ino

UDP通信システムの課題

WiFiルーターを介してESP32,ESP8266とのUDP通信に試験を行いました。本システム
開発の背景には以前開発した“多対一のLoRa通信システム”のイメージがありますが、
現時点ではルータを介さないといけないこととサーバ通信負荷が問題だと思います。

(感想)
ESP32をAP+WEBサーバとして活用する例題は多数発見できましたがWEBサーバと
しての能力に限界があり、スマホからエッジに1バイトデータを送り照明機器やロボットを操作
する程度も用途は多数確認されましたが、ArduinoライブラリでAP+データ受信の例は発見できませんでした。挑戦してみます。

追加情報:ESP8266(ESP32の姉妹機)

ESP8266はESP32より歴史が古く機能が限定的であるものの20KHzのFFT処理は可能です。
アナログピンは実質1つなのでFFT処理こそが最有効な活用方法の一つであると考えられます。クロックは80MHzで同じですが、RAMが36KBでESP32の1/15、またフラッシュメモリは最大でも16MBでESP32の1/4です。ADCは10bitx1chでESP32が12bitx4chに比べ劣っています。

ESP8266では、A0ピンしかないのでAnalogRead(0);のみです。内部処理がESP32より遅いので、FFTコードのdelay(15);をコメントアウトして使用します。ESP8266は\1000以下で入手できます。20KHzのFFT処理(100msec間隔)はESP8266の最有用アプリケーションだと思います。

ESPマイコン活用その5
UDP通信改良システム

2019年作成のLoRaシステムは、受信機をPCのUSBに接続しシリアル通信を行い、送信機からのデータをNode-REDでリアルタイム表示したりタイムスタンプを加えてcsvファイルに保存するものでした。複数の送信機からのデータはデータヘッドの識別子により分離するものでした。今回はESP32のWiFi機能を使い同様なシステムを作成しました。

IoTデータリアルタイム表示とデータ蓄積システムは、LoRa用に開発したNode-REDのプログラムをそのまま活用します。

送信機側のArduinoコード  ESP_APUDPcompact.ino

受信機側のArduinoコード  ESP_ADC_UDPAP.ino

改良型UDP通信システム(実験機)

PCに接続した受信機の状態をArduinoシリアルモニタで動作確認

ESPマイコン活用その6
MicroPython環境(ESP32,ESP8266)設定方法

ESP32,ESP8266,ラズパイPicoはArduinoIDEでコマンドコードを入力しコンパイルする他にインタープリタであるMicroPythgonを使用することができます。
ESPマイコンでMicroPythonを使用する方法は以下2つの方法があります。
①DOWNLOADツールを使用してESP本体にFirwareを書込→シリアル通信で 
 pythonコードを書き込む(古い)
②uPyCraft(Firmware書込~コードデバック~書込の統合ツール)を使用する(断然便利です)

上記2つの方法で最初に行う共通作業は、Firmwareのbinファイルを準備することが必要です。最新安定板をダウンロードします。

MicroPython - Python for microcontrollers
MicroPython is a lean and efficient implementation of the Python 3 programming language that includes a small subset of ...

①のダウンロードツールは下記HPから入手します

タイトルとURLをコピーしました