IoTで室温を可視化(ESP8266)
せっかくIoTサーバーを作ったのでとりあえず何か動かしておこうと思って作り出しました。まず、秋月電子通商さんのESP8266を搭載したESP-WROOM-02開発ボードを使います。
まず、ESP8266のライブラリを一通りインストール。
その後、サンプルプログラムを探すと、BasicHttpClientというものがあります。
ESP8266でWifiに接続してWebにアクセスするのです。
32行目の WiFiMulti.addAP("SSID", "PASSWORD");
に接続するWifiのIISDとパスワードを入力、
47行目の if (http.begin(client, "http://jigsaw.w3.org/HTTP/connection.html")) {
でhttp....の部分にアクセスしたいURLを入力します。
公開したIoTサーバーでメールアドレスを登録してIDを作成したら、URLの所にIDとデータを含めて送ります。
IDとa0=まで書き込んだURLを文字列に入れ、その後に AnalogRead で読み取った数値をセンサに固有の加工して文字列に追記して送ればよいです。
以下の写真の例のように、39,40行で文字列を作って49行目で送ります。

ここでは見えてませんが、下の方でループの待ち時間をdelay(600000)、つまり10分にしています。
回路はこちら、LM61というアナログ温度センサの出力を読み取っているのですが、温度100度で1.6Vの出力となり、ESP8266のアナログ入力は約1Vで飽和してしまうのでそのままでは読み取れず、10kΩの抵抗2本で分圧して半分の電圧にしてESP-WROOM-02開発ボードの18番ピンに与えています。

10分間隔でログを残して、IDでアクセスして可視化した例はこちら。

例として簡単な回路とプログラムで作りましたが、改良すべき点があります。
回路の配線を少なくするためこじんまり配線してますが、マイコンボードは通電すると多少発熱するので、センサとマイコンはできるだけ離すべきです。 プログラムも1度だけセンサを読み取るのでは誤差の要因となります。
Wifiにアクセスするときは数100mAの電流を流すのでWiFiにアクセスするタイミングとセンサ読み取りのタイミングは離す方が良くて、センサの読み取りも1度でなくて数回読んで積算、平均化した方が良いです。
電源強化のためにキャパシタンスも追加した方がいいでしょう。
IoT公開サーバーはこちら
その2
昨日の夕方からログを取り出して、今までのログ。
ノイズ多すぎですね。
ESP8266のアナログ入力のせいか、回路が悪いのか?
IoT公開サーバーはこちら
その3
週末挟んでの研究室の温度ログ。週末は外は冷えてたのですが、温度は10度程度、日中は+3℃位上がってようです。 出勤後今日の9時半頃にエアコン入れました。
やっぱりノイズ多すぎですね。

IoT公開サーバーはこちら
その4
ノイズが異常に大きいので改良しました。まず、プログラムの改良ですが、データを取り込むタイミングをWifiアクセスのタイミングと離して、1分待ってから測定を10回積算して、その後平均を取った値を温度に換算してサーバーに送るようにしました。
プログラムは画像で。

1分おきのデータはほぼ同じ数値ずつ積算されて最後に平均されて送られている様子が分かります。これで値が大きくばらつくことは無くなります。

念のため回路も改良。少し大きな基板に載せ替えて、ESP8266ボードと温度センサを離しました。
電源強化のために電解コンデンサも3.3V電源と並列に入れました。

これでまた一晩動かしてみます。結果が楽しみ。
IoT公開サーバーはこちら
その5
昨日の夕方ソフトとハードを改良して一晩ログを取った結果です。
ずいぶん改善されましたがまだノイズがあります。 温度センサはアナログで電源は直近に大きめのコンデンサが入っているので、マイコン側のアナログ入力の値が安定してないのだと思います。
プログラムでは、意図的に通信してないものの、WifiとESP8266が接続されたままになっているので、通信を維持するために不定期的に通信しててその際のマイコンの電流消費による電源のふらつきかもです。
回路的にはマイコン直近にでっかいコンデンサをいれるか、ソフト的には、Wifiは通信終わったら切断して、通信するときにまた繋ぎなおすようにするかですね。
IoT公開サーバーはこちら
その6、これで終了
今日の研究室の室温。
最初の数日と比べてここ数日はずいぶん安定して、1日のわずかな気温の変化が見えるようになりました。
北側の部屋でエアコン入れない、隣の部屋はエアコン入れて日中は少し温度が上がってる状態で今は11度から14度くらいです。
このデバイスについて書くのはこのくらいにして後は何か別のことに流用するまでは放置。
IoT公開サーバーはこちら
広告

WiFiモジュール - ESP8266
![]() ESP32 Wifi Bluetooth開発ボード |
![]() Arduino Nano Every |
![]() Raspberry Pi pico |
![]() FPGA XILINX Artix-7 |