NodeMCU (ESP8266, ESP-12) + SHT75 + TMEP.CZ = Arduino meteostanice
- June 10 2016
- ESP32, ESP8266, NodeMCU , Wemos, RTLDuino...
- 9253x Přečteno
Dostal jsem za úkol sehnat venkovní teploměr. Samozřejmě jako bastlíř pohrdám nějakým venkovním teploměrem a tak jsem začal bastlit.
Nechtěl jsem strávit spoustu času vývojem nějakého sofistikovaného zařízení. Moje požadavky na něj nebyli nějak složité - prostě to má měřit teplotu a vlhkost a použít přitom SHT75, protože jsem ho dostal jako vzorek od http://www.soselectronic.cz/ (díky moc :-) ).
Přemýšlel jsem o NRF24L01 s nějakým low power STM32, ale tenhle nápad měl několik složitostí, které bych musel řešit. Potřeboval bych nějaký bridge mezi NRF24L01 a světem internetu (když už meteostanice, tak chci logovat) - nějaký SBC (Raspberry Pi, Cubieboard a podobný).
A nakonec padla volba na NodeMCU (ESP8266. ESP-12). Jako programovací jazyk jsem mohl zvolit Lua, microPython nebo wiring v Arduino IDE. Našel jsem knihovnu pro SHT75 a Wi-Fi komunikaci (GET request) a tak jsem zvolil Arduino IDE (Všichni, kdo mě alespoň trochu znáte, že obliba Arduino se limitně blíží k nule, ale abych mohl kritizovat, musím to vyzkoušet).
Knihovnu pro SHT75 (a také pro SHT71, SHT10, SHT11 a SHT15) jsem použil z https://github.com/practicalarduino/SHT1x
Použití knihovny bylo velmi jednoduché, jenom musíte dávat pozor na definici GPIO pro NodeMCU, nedefinuje se takto xx (číslo, např. 10), ale Dx (Dčíslo např. D2).
Část kódu ovládající Wi-Fi část čipu byla vykopírovaná z example kódu pro ESP8266 v Arduino IDE. Jenom musíte přidat ESP8266 do Arduino IDE - https://github.com/esp8266/Arduino#installing-with-boards-manager
Přemýšlel jsem, že meteostanice (já vím, obsahuje to jenom teplotní senzor a senzor vlhkosti, ALE budu měřit!) budu napájet z USB nabíječky, ale to by přineslo spoustu problémů. Spotřeba energie, dlouhé napájecí kabely, umístění senzoru a tak jsem si řekl,že to chci napájet z baterii. Ale NodeMCU zrovna nepatří mezi low power zařízení.
Použil jsem samozřejmě deep sleep mod. Nebylo to zrovna jednoduché. Musel jsem použít funkci ESP.deepSleep a propojit D0 pin (Nesmíte použít červenou LED na NodeMCU!) s RST pinem.
Četl jsem, že pro nižší odběr NodeMCU je potřeba udělat několik kroků - odpájet LDO, přerušit jeden vodič na DPS a bla bla bla... https://tinker.yeoman.com.au/2016/05/29/running-nodemcu-on-a-battery-esp8266-low-power-consumption-revisited/
Proto jsem se rozhodl pro druhou verzi meteostanice - ESP-07 s SHT75 a další deskou, která bude obsahovat LDO a další drobnobnosti (počkejte si na to, i když je to hudba budoucnosti :-) )
Ale zpátky k projektu. Rezignoval jsem na snížení spotřeby, dokud nevytvořím ten druhý prototyp (nezapomeňte!).
Další problém nastal při uvažování, kam umístit tuhle malou meteostanici, aby bylo měření co nejméně ovlivněno.
Kam to teda umístit? Pár rad pro vás.
Nedávejte ho k ...
... parapetu a fasádu (horký parapet nebo fasáda hodně ovlivní měření)
... blízko k oknu (během větrání může být sensor ohříván - v zimě, nebo ochlazován - v létě)
... na přímé slunce
A co je TMEP.CZ?
To je výborná webová aplikace, která slouží k uchování naměřených dat a vizualizuje je. Aplikaci vytvořil Michal Ševčík.
Možná taky znáte konkurenční projekt https://thingspeak.com/
Proč jsem použil SHT75???
Jak jsem zmínil výše, protože to byl vzorek od http://www.soselectronic.com/.
Chápu, že je velmi drahý, ale jenom proto, protože SHT75 je kalibrovaný.
Levnější řešení je použití SHT21 nebo SHT25 - knihovna zde.
Prosím, o DHT11 či DHT22 a podobných nebudeme nijak diskutovat :-) .
A nakonec "schéma" zapojení a program pro NodeMCU. DOWNLOAD