Obsah:
- Krok 1: Jděte nakupovat
- Krok 2: Nastavení a pozadí
- Krok 3: Část Arduino - ESP12
- Krok 4: Testování ESP jako klienta NTP (Network Time Protocol)
- Krok 5: Testování snímače DHT22
- Krok 6: Dát to dohromady…
- Krok 7: Serverová stránka věcí
Video: Senzor teploty domácí sítě: 7 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:21
Co potřebujete k vytvoření tohoto projektu:
Potřebujete vědět o:- některých znalostech elektroniky (pájení)
- Linux
- Arduino IDE
(budete muset aktualizovat další desky v IDE:
- aktualizace/programování desky ESP prostřednictvím Arduino IDE.
(na webu je k dispozici několik pěkných návodů)
To lze provést pomocí Arduino Uno nebo pomocí FTDI (USB na sériový adaptér).
Použil jsem své Uno, protože jsem na PC neměl žádný sériový port ani FTDI
Krok 1: Jděte nakupovat
Co budete potřebovat, aby se to stalo?
Pro digitální snímač teploty a vlhkosti:
- Buď prkénko, nebo alternativa jako prototyp desky plošných spojů, pájka, páječka…
- Nějaký drát
- dva propojky
- odpor 10 kOhm
- ESP12F (mohou fungovat i jiné modely …)
- DHT22 (o něco dražší než DHT11, ale přesnější)
- 3 dobíjecí baterie AA a držák na baterie
- malá plastová krabička, do které vložíte svůj projekt
- V pozdější fázi plánuji přidat HT7333 se dvěma 10uF kondenzátory mezi baterii a ESP
stabilizovat vstupní napětí (VCC) na doporučených 3,3 V, ale také chránit ESP před přepětím.
Pro část Síť:
- Vaše domácí WiFi síť
Pro serverovou část:
- Jakýkoli systém založený na Linuxu (vždy zapnutý!)
Použil jsem Raspberry Pi (který také používám jako server pro své venkovní IP kamery.)
- kompilátor gcc pro kompilaci kódu vašeho serveru
- balíček rrdtool pro ukládání dat a generování grafů
- Apache (nebo jiný webový server)
Váš oblíbený počítač nebo notebook s Arduino IDE.
Krok 2: Nastavení a pozadí
V této verzi WiFi připojeného - nemluvě o IOT - senzoru teploty a vlhkosti jsem použil ESP12F, DHT22 a držák 3 AA baterií s dobíjecími bateriemi.
ESP každých 20 minut provede měření z DHT22 a odešle ho na server (Raspberry Pi) přes UDP v mé domácí WiFi síti. Po odeslání měření přejde ESP do hlubokého spánku. To znamená, že pouze hodiny reálného času modulu zůstávají napájeny, což má za následek neuvěřitelnou úsporu energie. Po dobu přibližně 5 sekund modul vyžaduje přibližně 100 mA, poté během 20 minut hlubokého spánku pouze 150uA.
Nechtěl jsem používat žádnou internetovou službu, protože mám svůj Raspberry Pi, který je stále zapnutý, a tímto způsobem jsem měl to potěšení napsat také serverovou část.
Na server (Raspberry Pi se systémem Raspbian) jsem napsal jednoduchý UDP posluchač (server), který ukládá hodnoty do jednoduchého RRD. (Round Robin Database using RRDtool by Tobias Oetiker.)
Výhodou RRDtool je, že vytvoříte databázi jednou a velikost zůstane stejná. Jinak nemusíte mít databázový server (jako mySQLd) spuštěný na pozadí. RRDtool vám poskytuje nástroje pro vytváření databáze a generování grafů.
Můj server vytváří grafy pravidelně a zobrazuje vše na velmi jednoduché stránce http. Své údaje mohu konzultovat pomocí jednoduchého prohlížeče připojením k webovému serveru Apache2 na Raspberry Pi!
Nakonec jsem neměl FTDI (USB to Serial), takže jsem použil Arduino UNO. Musíte propojit TX a RX a GND ESP a UNO. (Vím, váš instinkt vám může napovědět, abyste překročil RX a TX … zkusil to také, nefunguje.)
Neprovedl jsem převod úrovně (UNO: High = 5V, ale ESP je v podstatě zařízení 3,3V … Na trhu je několik pěkných FTDI, kde si můžete dokonce vybrat vysokou úroveň na 5 nebo 3,3V.
Můj obvod je napájen 3 dobíjecími bateriemi AA - tedy vlastně 3 X 1,2V. V pozdější fázi mám v úmyslu umístit HT7333 mezi baterii a obvod pro bezpečnost; nově nabité baterie by mohly mít více než 1,2 V a ESP by měl být napájen min. 3V a max. 3,6 V. Také pokud se rozhodnu - ve chvíli slabosti - vložit alkalické baterie (3 X 1,5 V = 4,5 V), moje ESP nebude smažené!
Také jsem zvažoval použití solárního panelu 10 cm x 10 cm, ale nestálo to za to se trápit. Doufám, že provedením 3 měření za hodinu (v zásadě 3x 5 sekund při max. 100mA a po zbytek času při 100uA) napájím svůj obvod 1 rok na stejné dobíjecí baterie.
Krok 3: Část Arduino - ESP12
Tento projekt jsem dělal v různých krocích.
Existuje několik odkazů, které vám pomohou importovat ESP12 (aka. ESP8266) do Arduino IDE. (Musel jsem použít verzi 2.3.0 místo nejnovější kvůli chybě, která mohla být mezitím vyřešena …)
Začal jsem připojením ESP přes Arduino UNO (používá se pouze jako most mezi mým počítačem přes USB k sériovému) k sériovému rozhraní ESP. Vysvětlují to samostatné pokyny.
V mém dokončeném projektu jsem nechal dráty pro připojení k Serial pro případ, že bych někdy potřeboval vyřešit problém. RX
Poté musíte svůj ESP12 zapojit následujícím způsobem:
ESP piny…
GND UNO GND
RX UNO RX
TX UNO TX
EN VCC
GPIO15 GND
Zpočátku jsem zkoušel napájet svůj ESP z 3,3 V na UNO, ale rychle jsem se přesunul k napájení mého ESP pomocí stolního napájecího zdroje, ale můžete použít i baterii.
GPIO0 Ten jsem propojil propojkou na GND, aby bylo možné blikat (= programovat) ESP.
První test: nechte propojku otevřenou a spusťte sériový monitor v Arduino IDE (na 115200 baudů!).
Vypněte a zapněte ESP, měli byste vidět nějaké nesmyslné znaky a poté zprávu jako:
Ai-Thinker Technology Co. Ltd. připravena
V tomto režimu funguje ESP trochu jako staromódní modem. Musíte použít AT příkazy.
Zkuste následující příkazy:
AT+RST
a následující dva příkazy
AT+CWMODE = 3
OK
AT+CWLAP
To by vám mělo poskytnout seznam všech WiFi sítí v této oblasti.
Pokud to funguje, jste připraveni na další krok.
Krok 4: Testování ESP jako klienta NTP (Network Time Protocol)
Do IDE Arduino v části Soubor, Příklady, ESP8266WiFi načtěte NTPClient.
Aby to fungovalo, jsou zapotřebí drobné úpravy; musíte zadat SSID a heslo vaší WiFi sítě.
Nyní umístěte propojku zkratující GPIO0 na GND.
Vypněte a zapněte ESP a nahrajte skicu do ESP.
Po kompilaci by mělo začít nahrávání do ESP. Modrá LED na ESP bude rychle blikat během stahování kódu.
Všiml jsem si, že jsem si musel trochu pohrát s restartováním IDE a restartováním ESP, než bude nahrávání fungovat.
Než začnete kompilovat/nahrávat skicu, nezapomeňte zavřít sériovou konzolu (= sériový monitor), protože to vám zabrání v odeslání.
Jakmile je odeslání úspěšné, můžete znovu otevřít sériový monitor, abyste viděli, jak ESP efektivně získává čas z internetu.
Skvělé, naprogramovali jste ESP, připojili se k WiFi a získali čas z internetu.
V dalším kroku otestujeme DHT22.
Krok 5: Testování snímače DHT22
Nyní je zapotřebí nějaké další zapojení.
Piny DHT… Připojte kolík 1 (vlevo) senzoru k VCC (3,3 V)
Připojte pin 2 ESP GPIO5 (DHTPIN v náčrtu)
Připojte kolík 4 (vpravo) senzoru ke ZEMI
Připojte 10K odpor od pinu 2 (data) ke kolíku 1 (napájení) senzoru.
Podobně jako u testu NTP najděte skicu DHTtester a upravte ji následujícím způsobem:
#define DHTPIN 5 // vybrali jsme GPIO5 pro připojení k senzoru#definujte DHTTYPE DHT22 // protože používáme DHT22, ale tento kód/knihovna je také vhodný pro DHT11
Opět zavřete sériový monitor, vypněte a zapněte ESP a kompilujte a flashujte ESP.
Pokud vše půjde dobře, měli byste vidět měření zobrazená na sériovém monitoru.
Se senzorem si můžete trochu pohrát. Pokud na to dýcháte, uvidíte, jak vlhkost stoupá.
Pokud máte stolní lampu (bez LED), můžete si na senzor posvítit, aby se trochu zahřál.
Skvělý! Dvě velké části senzoru nyní fungují.
V dalším kroku se vyjádřím ke konečnému kódu.
Krok 6: Dát to dohromady…
Opět nějaké další zapojení … to je, aby byl DeepSleep možný.
Nezapomeňte, že DeepSleep je neuvěřitelná funkce pro zařízení IoT.
Pokud je však váš senzor pevně zapojen pro DeepSleep, může být obtížné přeprogramovat ESP, takže se chystáme vytvořit další propojovací spojení mezi
GPIO16-RST.
Ano, MUSÍ to být GPIO16, protože to je GPIO, které je pevně připojeno k probuzení zařízení, když se po DeepSleep vypnou hodiny reálného času!
Během testování se můžete rozhodnout provést 15s DeepSleep.
Když jsem ladil, přemístil jsem propojku na GPIO0, abych mohl flashovat svůj program.
Po dokončení stahování bych přemístil propojku na GPIO16, aby DeepSleep fungoval.
Kód pro ESP se nazývá TnHclient.c
Musíte změnit své SSID, heslo a IP adresu vašeho serveru.
Existují další řádky kódu, které můžete použít k řešení potíží nebo k otestování vašeho nastavení.
Krok 7: Serverová stránka věcí
Je běžným nedorozuměním, že UDP je nespolehlivý a TCP je …
To je stejně hloupé, jako říkat, že kladivo je užitečnější než šroubovák. Jsou to prostě různé velmi užitečné nástroje a oba mají své využití.
Mimochodem, bez UDP by internet nefungoval … DNS je založeno na UDP.
Vybral jsem si proto UDP, protože je velmi lehký, snadný a rychlý.
Mám tendenci si myslet, že moje WiFi je velmi spolehlivá, takže klient pošle maximálně 3 UDP pakety, pokud potvrdí „OK!“není přijat.
C-kód pro TnHserver je v souboru TnHServer.c.
V kódu je vysvětleno několik komentářů.
Na serveru budeme potřebovat nějaké další nástroje: rrdtool, apache a možná tcpdump.
Chcete-li nainstalovat rrdtool na Raspbian, můžete jednoduše nainstalovat balíček takto: apt-get install rrdtool
Pokud potřebujete ladit síťový provoz, přijde vhod tcpdump apt-get install tcpdump
Potřeboval jsem webový server, abych mohl používat prohlížeč k prohlížení grafů: apt-get install apache2
K získání příkazu k vytvoření databáze Round Robin jsem použil tento nástroj: https://rrdwizard.appspot.com/index.php. Stačí to spustit jednou (pokud to správně pochopíte poprvé).
rrdtool create TnHdatabase.rrd --start now-10s
--krok '1200'
'DS: Teplota: GAUGE: 1200: -20,5: 45,5'
'DS: Vlhkost: GAUGE: 1200: 0: 100,0'
'RRA: PRŮMĚR: 0,5: 1: 720'
'RRA: PRŮMĚR: 0,5: 3: 960'
'RRA: PRŮMĚR: 0,5: 18: 1600'
Nakonec pomocí položky crontab restartuji svůj TnHserver každý den o půlnoci. Spouštím TnHserver jako normální uživatel (tj. NE root) jako bezpečnostní opatření.
0 0 * * */usr/bin/pkill TnHserver; /home/user/bin/TnHserver>/dev/null 2> & 1
Můžete zkontrolovat, zda je TnHserver spuštěn
$ ps -elf | grep TnHserver
a můžete ověřit, že naslouchá paketům na portu 7777
$ netstat -anu
Aktivní připojení k internetu (servery a navázané)
Proto Recv-Q Send-Q Místní adresa Stav cizí adresy
udp 0 0 0.0.0.0:7777 0.0.0.0:*
Nakonec CreateTnH_Graphs.sh.txt je ukázkový skript pro generování grafů. (Skripty generuji jako root, možná to nebudete chtít udělat.)
Pomocí velmi jednoduché webové stránky můžete sledovat grafy z libovolného prohlížeče ve vaší domácí síti.
Doporučuje:
Domácí automatizace s dotykovým senzorem NodeMCU LDR Relé pro řízení teploty: 16 kroků
Domácí automatizace s dotykovým senzorem NodeMCU LDR Teplotní relé: V mých předchozích projektech NodeMCU jsem ovládal dva domácí spotřebiče z aplikace Blynk. Obdržel jsem mnoho komentářů a zpráv na upgrade projektu s ručním ovládáním a přidáním dalších funkcí. Navrhl jsem tedy tento rozšiřující box Smart Home. V tomto IoT
Robotický podvozek HUNIE pro domácí domácí práce: 6 kroků
Robotický podvozek HUNIE pro domácí domácí práce: Nahoře je moje první stavba robota. Jsem docela šikovný v elektronice, udělal jsem nějaké počítačové programování před třemi desítkami let a hledal jsem nového koníčka, protože RC letadla už nezapadají do mého životního stylu (příliš daleko do terénu). Stavím
Domácí chladič / lednička Peltier s regulátorem teploty DIY: 6 kroků (s obrázky)
Domácí Peltierův chladič / lednice s regulátorem teploty DIY: Jak vyrobit domácí termoelektrický chladič Peltier / mini lednici DIY s regulátorem teploty W1209. Tento modul TEC1-12706 a Peltierův efekt činí perfektní chladič pro kutily! Tento návod je krok za krokem, který vám ukáže, jak
Monitorování domácí vlhkosti a teploty: 11 kroků
Monitorování domácí vlhkosti a teploty: Ahoj lidi! Abyste mohli začít tím nejlepším způsobem, malý příběh o projektu. Nedávno jsem promoval a přestěhoval se do Rakouska na svou první pozici inženýra. Země je krásná, ale velmi chladná & v zimě vlhké. Rychle jsem začal
WiFi snímač teploty a vlhkosti IoT. Část: 8 IoT, domácí automatizace: 9 kroků
WiFi snímač teploty a vlhkosti IoT. Část: 8 IoT, domácí automatizace: Preamble Tento článek dokumentuje praktickou robustnost a další vývoj dřívějšího Instructable: 'Pimping' vašeho prvního IoT WiFi zařízení. Část 4: IoT, domácí automatizace včetně všech potřebných softwarových funkcí, které umožní úspěšné