ESP8266 + DS18B20のWi-Fi温度計はわずか4ドル





最近、ESP8266に基づくWi-Fiモジュールの人気が高まっています。 また、HTTP経由でデータを送信する温度計を実装することを考えて、美しく参加することにしました。 行きましょう。



ハードウェア



ESP8266

プロジェクトでは、ESP-01からESP-11までのモジュールのいずれかが使用されます。ESP-03がありました(コスト〜3ドル):







特に気に入った:

ESP-01-プロトタイピングには便利です(ブレッドボード用のコネクタがあります)が、出力されるGPIOは1つだけです。

ESP-03-多くの結論とセラミックアンテナ。

ESP-07-ESP-03 +スクリーンおよび外部アンテナ用コネクタと同じ。



DS18B20





オプションとして、ワイヤー付きで密封されたエンクロージャーで購入できます。



3.3V電源

少なくとも200mAの電源が必要です。



USB UART

ファームウェアおよびデバッグ用。 CP2102ベースのコンバーターを使用しました



接続



電源をESP8266に接続します。 徒歩でCH_PDもプラスになります。

注意! ESP-01モジュールを持っていない人は、GPIO15-GNDを適用する必要があります。 GPIO2 -3.3V。 ESP-01はすでにこれを行っます。 RXとTXをUSB-UARTコンバーターに接続して、コードのフラッシュとデバッグを行います。







DS18B20をESP8266に接続します。 マーキングを見ると:左-接地、中-信号(ESP-03のGPIO12)、ESP-01がある場合はGPIO0に接続し、右-電源(3.3V)。 電源と信号線の間に4.7kΩの抵抗を接続することをお勧めします(私にとっては10 kOhmで動作します):







thingspeak.com



thingspeak.comに登録し、チャンネルを作成し、そこから16文字のキーをコピーします。 温度データをクラウドに送信するのに役立ちます。



NodeMCUファームウェア



NodeMCUは、 ESP8266でLuaスクリプトを実行できるようにするファームウェアです。 最新のNodeMCUフラッシャーをダウンロードして実行します。

GPIO0をグランドに接続します。 目的のCOMポートを選択し、速度は74880または115200です(理解したとおり、ブートローダーはESP8266の一部のバージョンで74880で動作します)。 Flashを押して、ESP8266で食べ物をゆがめます。 ファームウェアが起動しない場合は、74880の速度でPuTTYを起動して、RX、TX接続の正確性を確認します。電源投入時に、「 ets Jan 8 2013、rst cause:1、boot mode:(1,0) 」のような行がコンソールに落ちます。 正しいファームウェアの後で、地面からGPIO0を無効にします。







Luaスクリプトを注いで起動する



LuaLoaderをダウンロードして実行します 。 COMポートと速度9600を選択します。接続がない場合、ESP8266モジュールの電力を歪めようとします。 ChipIDボタンをクリックして接続を確認します。 チップの識別子がコンソールに表示されるはずです。



= node.chipid() 10371968
      
      





必要なファイルを入力します(UploadFileボタン):



1. ds18b20.lua -DS18B20と対話するためのライブラリ。

2. httpsender.lua-温度データを読み取り、thingspeak.comに送信するスクリプト。 YOURAPIKEYをキーに置き換えることを忘れないでください。

gpio = 6-センサーをGPIO12に接続する場合、GPIO0の場合-gpio = 3( ):



 gpio = 6 require('ds18b20') ds18b20.setup(gpio) function sendData() t=ds18b20.read() print("Temp:"..t.." C\n") -- conection to thingspeak.com print("Sending data to thingspeak.com") conn=net.createConnection(net.TCP, 0) conn:on("receive", function(conn, payload) print(payload) end) -- api.thingspeak.com 184.106.153.149 conn:connect(80,'184.106.153.149') conn:send("GET /update?key=YOURAPIKEY&field1="..t.." HTTP/1.1\r\n") conn:send("Host: api.thingspeak.com\r\n") conn:send("Accept: */*\r\n") conn:send("User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n") conn:send("\r\n") conn:on("sent",function(conn) print("Closing connection") conn:close() end) conn:on("disconnection", function(conn) print("Got disconnection...") end) end -- send data every 60000 ms to thing speak tmr.alarm(0, 60000, 1, function() sendData() end )
      
      







3. init.lua-WiFiを初期化し、httpsender.luaを起動するスクリプト。 WiFiのSSIDとパスワードを登録することを忘れないでください:



 print("Setting up WIFI...") wifi.setmode(wifi.STATION) --modify according your wireless router settings wifi.sta.config("SSID","SSIDPASSWD") wifi.sta.connect() tmr.alarm(1, 1000, 1, function() if wifi.sta.getip()== nil then print("IP unavaiable, Waiting...") else tmr.stop(1) print("Config done, IP is "..wifi.sta.getip()) dofile("httpsender.lua") end
      
      





結果:







計画



これはESP8266の最初の経験です。 次のことを試みる計画:



1. thingspeakの代わりを探します。 チャートは移動およびスケーリングしたい。 たぶん誰かがアナログを知っていますか?

2.湿度センサー(おそらくDHT22)。 すでに標準ライブラリにあるようです。

3. K-30センサーに基づくCO2センサー。

4.追加コントローラーなしの制御された夜明け、ESP8266による制御。 出版物「人工夜明け」に触発されました。



使用材料



「thingspeak.comへの接続を備えたESP8266に基づく低コストWIFI温度(DS18B20)データロガー」に基づいています。 何らかの理由で、DS18B20のコードが機能しなくなり、標準ライブラリds18b20.luaに切り替える必要がありました



All Articles