ESP8266 でIoT その5 MQTT(3) 低価格を追求

日本で電波を出すには技適の印があるものを使う

 ESP8266を搭載して技適が通っているのはESP-WROOM-02 Wi-Fiモジュールです。価格も一番安価です。

 ただし、単独では実験に使うには不便な端子の形状をしています。ブレッドボードなどで接続しやすいように補助基板が用意されています。最初の1個は、スイッチサイエンスや秋月電子通商で販売されている補助基板を利用し、確実に動作が確認できた後は、モジュール単独にセンサ類をつないで利用するのがよいと思います。アマゾンで入手できるマイクロテクニカの製品は、TOUTがピンに出ていないので、アナログ・ポートは使えません。

Arduino IDEで開発する準備

 Arduino IDEでシリアル・インターフェースからプログラムをマイコンに書き込むとき、端子は、「GPIO15=Low、GPIO0=Low、GPIO2=High、EN=High」という条件に設定します。プログラムを書き込んだ直後にIDEはリセットをかけ、プログラムが実行されます。

Arduino IDEでプログラムを書き込む

 Arduinoボードには、マイコン以外にUSB-シリアル変換ICが搭載されています。マイコンはTxDとRxDというUARTという古くからある非同期シリアル通信機能をサポートしています。本来のRS-232Cという規格は±3~±15Vの信号レベルを使っていましたが、最近では0、5Vのロジック・レベルもしくは3.3Vが一般的になっています。CPUの動作電圧に合わせます。

 USB-シリアル変換ICにはいろいろなものが発売されています。Windows10やMacOSの最新版で利用できるものを選びます。

 電源には5Vと3.3Vが選択できる製品があります。ESP-WROOM-02は3.3Vで動作するので、3.3Vの電源をつなぎます。TxDとRxD端子はクロスさせて接続します。


温度センサMCP9700-E/TOをつなぐ

 LM35DZと同様に3端子の温度センサMCP9700-E/TOを利用します。電源電圧3.3Vで利用できます。0℃のとき500mVで、1℃あたり10mV変化します。25℃付近の確度は悪くありません。

 LM35DZと比べて500mV余計に電圧が出るので、プログラムでは、下記のように0.5Vを引きます。ほかは、前回と同じプログラムです。

    temp0 = 100.0*((analogRead(A0)/1024.0)*1.0-0.5);

 ここではGPIO0をGNDに接続しているので、USB-シリアル変換ボードを接続して電源が入ったとき、プログラムの書き込みモードになります。一度書き込むとリセットがかかり、プログラムの実行モードになります。したがって、そのままの状態でプログラムを修正して書き込むとエラーになります。面倒ですが、USBハブからUSB-シリアル変換ボード一度抜き、再度挿し込みます。

 書き込むとCOMxポートが使えないとエラー・メッセージが出ます(IDE 1.8.0)が、COMxポートを確認して、再度書き込みを実行します。

 Windows10環境下で動作したUSB-シリアル変換ボードのICは、CP2101FT232RL、動作しなかったのはCH340、PL2303HX ワイヤ・アダプタ変換ケーブルでした。CH340は書き込み終了後にうまくリセットがかからなかったようです。PL2303は、ドライバを認識しないので通信できませんでした。

 ここで利用したMCP9700-E/TOは50℃を超えると、ESP8266のTOUTポートの最大入力電圧1.0Vを超えます。実際にストーブの前にもっていったら、読み出しデータ1024を表示したまま止まってしまいました。壊れなかったようですが、利用する温度範囲は、常温から氷点下付近をメインに利用するのがよいでしょう。

 今回のように、USB-シリアル変換ボードを利用すれば、プログラムのデバッグが完了したら、ESP8266ボード単独で動作させられます。しかし、3.3V電源を新たに用意するなど、実用にするには、手間がかかります。

 スイッチサイエンスのESPr Developer(ESP-WROOM-02開発ボード)などが小型で使いやすいでしょう。FCCだけのマークの入っているUSB-シリアル変換付きESP-WROOM-02ボードは千円以下で入手できますが、日本では電波を出せません。