Obsah:

Monitor teploty a vlhkosti: 6 kroků (s obrázky)
Monitor teploty a vlhkosti: 6 kroků (s obrázky)

Video: Monitor teploty a vlhkosti: 6 kroků (s obrázky)

Video: Monitor teploty a vlhkosti: 6 kroků (s obrázky)
Video: Arduino návody | Senzor teploty a vlhkosti HTU21D I2C 2024, Listopad
Anonim
Monitor teploty a vlhkosti
Monitor teploty a vlhkosti
Monitor teploty a vlhkosti
Monitor teploty a vlhkosti

V tomto pokynu vám ukážu, jak si vyrobit vlastní monitor teploty a vlhkosti pro váš obývací pokoj. Zařízení také nabízí možnosti WiFi pro účely protokolování dat na vzdálený server (např. Raspberry Pi) a pozdější přístup k nim prostřednictvím jednoduchého webového rozhraní.

Hlavními částmi zařízení jsou mikrokontrolér ESP8266, snímač teploty a vlhkosti DHT11 a 16x4 znakový LCD displej. Projekt je plně otevřený zdrojový kód, takže si můžete stáhnout schematický soubor, rozvržení desky a návrhové soubory pro přílohu a provést jakékoli požadované změny.

Krok 1: Nástroje a součásti

Nástroje a díly
Nástroje a díly
Nástroje a díly
Nástroje a díly
Nástroje a díly
Nástroje a díly
Nástroje a díly
Nástroje a díly

K sestavení monitoru budete potřebovat následující součásti:

1 x ESP-12F [2 €]-Pokud vím, ESP-12E a ESP-12F jsou v zásadě totožné, s tím rozdílem, že ESP-12F má lepší anténu.

1 x snímač teploty a vlhkosti DHT11 [0,80 EUR] - DHT22 bude také fungovat, ale na 3D modelu skříně bude třeba provést určité změny, DHT22 je také o něco dražší.

1 x 16x4 znakový LCD 5V [3,30 EUR] - Ano, budete potřebovat 5V, protože PCB je navržen tak, aby byl LCD napájen přímo z 5V, nikoli z regulátoru napětí. To bylo provedeno za účelem snížení zátěže na regulátoru napětí, ale také proto, že 5V displeje bývají levnější. Ale nebojte se, i když ESP8266 pracuje na 3,3 V, bude stále fungovat dobře.

1 x regulátor napětí SMD LD1117V33, známý také jako LD33 (balíček SOT223) [0,80 EUR]

1 x 100nF keramický SMD kondenzátor (balení 0603)

1 x 10uF tantalový SMD kondenzátor (balení 3528)

1 x 10K SMD odpor (balení 0805)

1 x 10K vyžínač (průchozí otvor)

1 x 47Ω SMD odpor (balíček 0805) - Toto je pouze pro omezení proudu, který jde do podsvícení LCD. Nebojte se experimentovat s různými hodnotami odporu a vyberte si intenzitu, které dáváte přednost.

1 x SMD Momentary Switch [0,80 EUR] - Použil jsem zejména toto, ale můžete použít libovolný momentální přepínač se stejnou stopou. Také jsem byl schopen najít stejné přepínače na eBay za méně, když jsem získal více než jeden.

1 x 5,5 x 2,1 mm DC konektor (montáž na panel) [0,50 EUR] - Ten, který jsem použil, má průměr výřezu panelu 8 mm a délku 9 mm. Lze jej snadno najít na eBay hledáním „Panel Mount DC Jack“(viz přiložený obrázek).

1 x 2,54 mm (100 mil) 40pinový konektor s kolíkem (průchozí otvor)

1 x 2,54 mm (100 mil) 40pinový obráběný konektor se zásuvkou (průchozí otvor)

Propojka 1 x 2,54 mm (100 mil) - je stejná jako na základních deskách počítačů.

4 x šrouby M3 8 mm

4 x závitové vložky M3 4x4 mm - lze je snadno najít hledáním „Mosazné mosazné vložky M3 na lisu“na eBay (viz přiložený obrázek).

4 x šrouby M2 12 mm

4 x matice M2

1 x kabel USB typu A na 5,5 x 2,1 mm DC zástrčka [1,5 EUR] - To vám umožní napájet vaše zařízení buď ze standardní nabíječky telefonu, nebo z téměř jakéhokoli počítače s portem USB. Zařízení čerpá pouze 300mA v nejhorším případě a 250mA v průměru, takže i USB 2.0 port bude stačit.

1 x PCB - tloušťka desky není rozhodující, takže stačí 1,6 mm, což je u většiny výrobců desek plošných spojů obvykle nejlevnější varianta.

3 x kusy pleteného drátu (každý o průměru 60 mm)

3 x kusy trubek s teplem smršťovacího potrubí (každý o průměru 10 mm)

A následující nástroje:

Páječka

Převodník USB na sériový - Budete to potřebovat k programování ESP8266 na desce.

Šroubovák Phillips a/nebo šestihranný klíč - podle typu šroubů, které použijete.

3D tiskárna - Pokud nemáte přístup k 3D tiskárně, můžete vždy použít obecný plastový projektový box a provést výřezy sami pomocí Dremel. Minimální vnitřní rozměry takového boxu budou muset být 24 mm na výšku, 94 mm na délku a 66 mm na šířku. K montáži LCD budete také muset použít 8mm distanční sloupky M2.

Dremel - Potřebné pouze v případě, že nechodíte do skříně s 3D tiskem.

Krok 2: Výroba DPS

Výroba DPS
Výroba DPS
Výroba DPS
Výroba DPS
Výroba DPS
Výroba DPS

Prvním krokem je výroba DPS. Můžete to udělat leptáním sami, nebo jednoduše přejít na web svého oblíbeného výrobce DPS a zadat objednávku. Pokud neplánujete provádět žádné změny v rozložení desky, můžete jednoduše uchopit soubor ZIP obsahující soubory gerber připojené v tomto kroku a odeslat jej přímo výrobci. Pokud však chcete provést změny, soubory schématu KiCAD a rozvržení desky najdete zde.

Poté, co se vám desky dostanou do rukou, je čas pájet součástky. To by mělo být celkem jednoduché, ale je třeba poznamenat několik věcí. Za prvé, nepokračujte v pájení desky plošných spojů na záhlaví LCD, to bude nutné provést během konečné montáže kvůli způsobu, jakým byla skříň navržena. Pokud si vytváříte vlastní přílohu, klidně tuto radu ignorujte.

Konektor U3 je místo, kde bude připojen snímač DHT11. V ideálním případě byste k tomuto účelu měli použít 90 ° úhlovou obráběnou zásuvku s kolíkem. Ale pokud se vám líbí mě, nemůžete ji najít, prostě si ji vezměte rovnou a ohněte ji sami. Pokud to uděláte později, přívody DHT11 budou také trochu krátké, takže budete muset pájet některá rozšíření. Vzdálenost mezi záhlavím kolíku a snímačem po připojení musí být zhruba 5 mm.

Důvod, proč chcete použít obrobený kolíkový konektor, je ten, že otvory jsou menší ve srovnání s běžnými hlavičkami. Vodiče senzoru tak mohou pevně sedět a vytvářet pevné spojení. Můžete ale také zkusit pájet DHT11 na kus zástrčky samčího kolíku a připojit ho tak k pravidelnému úhlovému hlavičkovému kolíkovému kolíku, který by měl fungovat stejně dobře.

Krok 3: Vytvoření přílohy

Výroba přílohy
Výroba přílohy
Výroba přílohy
Výroba přílohy
Výroba přílohy
Výroba přílohy
Výroba přílohy
Výroba přílohy

Nyní, když je deska plošných spojů pájena, je čas vyrobit skříň. Existují dvě různé části, které je třeba vytisknout, hlavní tělo skříně a víko. Víko má také montážní otvory pro připevnění na zeď.

Oba díly lze potisknout standardní 0,4 mm tryskou na výšku vrstvy 0,2 mm, v mém případě byla doba tisku pro obě části dohromady asi 4 hodiny. Víko nevyžaduje žádné podpěry hlavní části krytu, ale ano, hlavně pro část pod šroubovacími zásuvkami. Poté, co byl tisk velmi opatrný při odstraňování podpěr, se mi při tom podařilo rozbít jednu z distancí pro LCD a musel jsem ji přilepit zpět lepidlem.

Kryt je navržen na FreeCADu, takže pokud chcete provést nějaké změny, mělo by to být docela jednoduché. Soubory STL pro tisk skříně a soubory návrhů FreeCAD najdete na Thingiverse.

Krok 4: Sestavení monitoru

S vytištěnou přílohou je čas dát vše dohromady. Nejprve umístěte LCD do pouzdra a posuňte jej doleva, takže mezi ním a otvorem pro senzor bude mezera.

obraz
obraz

Dále na něj položte desku plošných spojů se senzorem již připojeným k záhlaví kolíku.

obraz
obraz

Poté zatlačte snímač do otvoru, posuňte LCD zpět do polohy a zasuňte desku plošných spojů na konektor. Nyní upevněte LCD na místo pomocí matic a šroubů M2 a pájte desku plošných spojů na kolíkovou lištu.

obraz
obraz

Poté vložte napájecí konektor na místo, připojte k němu několik vodičů a pájte jejich ostatní konce k desce plošných spojů. Také by zde bylo vhodné použít nějaké hadičky se smršťovací trubkou.

obraz
obraz

Posledním krokem je instalace kovových závitových vložek, aby bylo možné víko našroubovat na místo pomocí šroubů M3. Za tímto účelem budete muset použít páječku k jejich zahřátí, aby je bylo možné zasunout do otvorů. Pokud potřebujete další informace o přidávání kovových vláken do vašich 3D tisků, můžete se na tento návod podívat.

obraz
obraz

Krok 5: Nastavení serveru

Nastavení serveru
Nastavení serveru

Před nahráním firmwaru do ESP8266 je třeba udělat ještě jednu věc, a to nastavení serveru pro protokolování dat přijatých zařízením. Za tímto účelem můžete použít téměř jakýkoli počítač Linux, který chcete, od Raspberry Pi ve vaší soukromé síti až po kapku DigitalOcean. Šel jsem s tím později, ale proces je téměř stejný bez ohledu na to, co si vyberete.

Instalace Apache, MySQL (MariaDB) a PHP

Nejprve musíme nastavit LAMP, nebo jinými slovy nainstalovat Apache, MySQL (MariaDB) a PHP na server. K tomu budete muset použít správce balíčků vašeho distra, kvůli příkladu použiji apt, což je správce balíčků, který používá téměř každé distro založené na Debianu, včetně Raspbian.

sudo apt aktualizace

sudo apt install apache2 mysql-server mysql-client php libapache2-mod-php php-mysql

Poté, co vložíte IP adresu vašeho serveru do adresního řádku vašeho prohlížeče, měli byste vidět výchozí stránku Apache.

Nastavení databáze

Nyní potřebujeme databázi pro protokolování dat. Nejprve se připojte k MySQL jako root spuštěním, sudo mysql

A vytvořte databázi a uživatele s přístupem k ní následovně, VYTVOŘIT DATABÁZI `senzory`

POUŽIJTE `senzory`; VYTVOŘIT TABULKU `teplota` (` id` bigint (20) NOT NULL AUTO_INCREMENT, `client_id` smallint (6) NOT NULL,` value` smallint (6) NOT NULL, `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (` id`)) ENGINE = InnoDB; VYTVOŘIT TABULKU `vlhkost` (` id` bigint (20) NOT NULL AUTO_INCREMENT, `client_id` smallint (6) NOT NULL,` value` smallint (6) NOT NULL, `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (` id`)) ENGINE = InnoDB; VYTVOŘIT UŽIVATELE '[uživatelské jméno]'@'localhost' IDENTIFIKOVÁNO PODLE '[heslo]'; UDĚLEJTE VŠECHNY PRIVILEGY NA „senzory“.* NA „senzory“@„localhost“; VÝSTUP

Nezapomeňte nahradit [uživatelské jméno] a [heslo] skutečným uživatelským jménem a heslem pro uživatele MySQL, který se vám líbí. Také si je poznamenejte, protože je budete potřebovat pro další krok.

Konfigurace protokolování a skriptů webového rozhraní

Přejděte do adresáře/var/www/html, který je kořenem dokumentu výchozího virtuálního hostitele Apache, odstraňte soubor HTML, který obsahuje výchozí webovou stránku, a stáhněte do ní skripty pro protokolování a webové rozhraní.

cd/var/www/html

sudo rm index.html sudo wget https://raw.githubusercontent.com/magkopian/esp-arduino-temp-monitor/master/server/log.php sudo wget https://raw.githubusercontent.com/magkopian/esp- arduino-temp-monitor/master/server/index.php

Nyní upravte protokolovací skript pomocí nano, sudo nano log.php

Budete muset nahradit [uživatelské jméno] a [heslo] uživatelským jménem a heslem pro uživatele MySQL, kterého jste vytvořili v předchozím kroku. Nahraďte také [klíč klienta] jedinečným řetězcem a poznamenejte si to. Toto bude použito jako heslo, aby se monitor mohl sám ověřit na serveru.

Nakonec upravte index.php pomocí nano, sudo nano index.php

a nahraďte [uživatelské jméno] a [heslo] uživatelským jménem a heslem pro uživatele MySQL, jako jste to udělali s logovacím skriptem.

Nastavení HTTPS (volitelně)

Může to být volitelné, ale pokud je připojení mezi ESP8266 a serverem přes internet, důrazně doporučujeme použít nějaké šifrování.

Bohužel pro získání certifikátu nemůžete jen tak pokračovat a použít něco jako Let’s Encrypt. Důvodem je, že přinejmenším v době psaní klientská knihovna HTTP pro ESP8266 stále vyžaduje poskytnutí otisku prstu certifikátu jako druhý argument při volání http.begin (). To znamená, že pokud používáte něco jako Let’s Encrypt, budete muset každé 3 měsíce aktualizovat firmware na čip, abyste po každém obnovení mohli aktualizovat otisk certifikátu.

Důvodem by bylo vygenerovat certifikát podepsaný svým držitelem, jehož platnost vyprší po velmi dlouhé době (např. 10 let), a ponechat protokolovací skript na vlastním virtuálním hostiteli s vlastní subdoménou. Tímto způsobem můžete mít webové rozhraní pro přístup k datům na samostatné subdoméně, která bude používat správný certifikát od důvěryhodného orgánu. Použití certifikátu podepsaného svým držitelem v tomto případě nepředstavuje bezpečnostní problém, protože otisk prstu certifikátu, který jej jednoznačně identifikuje, bude pevně zakódován ve firmwaru a certifikát bude použit pouze v ESP8266.

Než začneme, budu předpokládat, že již vlastníte název domény a můžete na něm vytvářet subdomény. Chcete -li vygenerovat certifikát, jehož platnost vyprší po 10 letech, spusťte následující příkaz a odpovězte na otázky.

sudo openssl req -x509 -nodes -days 3650 -newkey rsa: 2048 -keyout /etc/ssl/private/sensors.key -out /etc/ssl/certs/sensors.crt

Jelikož se jedná o certifikát podepsaný svým držitelem, na tom, na co odpovíte ve většině otázek, příliš nezáleží, kromě otázky, která vyžaduje obecný název. Zde budete muset zadat úplnou subdoménu, která bude pro tohoto virtuálního hostitele použita. Subdoména, kterou zde zadáte, bude muset být stejná s názvem serveru, které nastavíte později v konfiguraci virtuálního hostitele.

Dále vytvořte novou konfiguraci virtuálního hostitele, sudo nano /etc/apache2/sites-available/sensors-ssl.conf

s následujícím obsahem, Název_serveru [subdoména] DocumentRoot/var/www/senzory SSLEngine ON SSLCertificateKeyFile /etc/ssl/private/sensors.key SSLCertificateFile /etc/ssl/certs/sensors.crt Možnosti +FollowSymlinks -Indexes AllowOverride All ErrorLog $ {APACHE_LOG_ error-ssl.log CustomLog $ {APACHE_LOG_DIR} /sensors-access-ssl.log kombinováno

Opět nezapomeňte nahradit [subdoménu] stejnou subdoménou, kterou jste použili s certifikátem. V tomto okamžiku budete muset deaktivovat výchozího virtuálního hostitele Apache, sudo a2dissite 000-výchozí

změnit název kořenového adresáře dokumentu, sudo mv/var/www/html/var/www/senzory

a nakonec povolit nového virtuálního hostitele a restartovat Apache, sudo a2ensite senzory-ssl

sudo systemctl restart apache2

Poslední věc, kterou je třeba udělat, je získat otisk certifikátu, protože jej budete muset použít v kódu firmwaru.

openssl x509 -noout -fingerprint -sha1 -inform pem -in /etc/ssl/certs/sensors.crt

Odkaz http.begin () očekává, že oddělovače mezi bajty otisku prstu budou mezery, takže před použitím v kódu budete muset dvojtečky nahradit mezerami.

Pokud nyní nechcete použít certifikát podepsaný svým držitelem pro nastavení webového rozhraní, novou subdoménu a vytvoření nové konfigurace virtuálního hostitele, sudo nano /etc/apache2/sites-available/sensors-web-ssl.conf

s následujícím obsahem, Název_serveru [subdoména] DocumentRoot/var/www/senzory #SSLEngine ON #SSLCertificateFile /etc/letsencrypt/live/[subdomain]/cert.pem #SSLCertificateKeyFile /etc/letsencrypt/live/[subdomain]/privkey.pem #SSLC /letsencrypt/live/[subdomain]/chain.pem Možnosti +FollowSymlinks -Indexes AllowOverride All ErrorLog $ {APACHE_LOG_DIR} /sensors-web-error-ssl.log CustomLog $ {APACHE_LOG_DIR} /sensors-web-access-ss

Nezapomeňte nahradit [subdoménu] subdoménou, kterou jste nastavili pro webové rozhraní. Dále povolte nového virtuálního hostitele, restartujte Apache, nainstalujte certbot a získejte certifikát pro novou subdoménu z Let's Encrypt, sudo a2ensite senzory-web-ssl

sudo systemctl restart apache2 sudo apt update sudo apt install certbot sudo certbot certonly --apache -d [subdomain]

Po získání certifikátu znovu upravte konfiguraci virtuálního hostitele a odkomentujte řádky SSLEngine, SSLCertificateFile, SSLCertificateKeyFile a SSLCertificateChainFile a restartujte Apache.

A nyní můžete použít první subdoménu, která používá certifikát podepsaný svým držitelem pro odesílání dat z ESP8266 na server, zatímco druhou použít pro přístup k webovému rozhraní z vašeho prohlížeče. Certbot se také postará o automatické obnovení vašeho certifikátu Let's Encrypt každé 3 měsíce pomocí časovače systemd, který by měl být ve výchozím nastavení povolen.

Krok 6: Programování ESP8266

Programování ESP8266
Programování ESP8266

Nakonec zbývá už jen načíst firmware do mikrokontroléru. Chcete -li to provést, stáhněte si zde zdrojový kód firmwaru a otevřete jej pomocí Arduino IDE. Budete muset nahradit [SSID] a [Heslo] skutečným SSID a heslem vaší WiFi sítě. Při volání funkce sprintf budete také muset nahradit [Client ID] a [Client Key] těmi, které jste použili ve skriptu PHP na serveru. Nakonec budete muset [Host] nahradit názvem domény nebo IP adresou serveru. Pokud používáte HTTPS, budete také muset zadat otisk svého certifikátu jako druhý argument při volání funkce http.begin (). Jak získat otisk prstu certifikátu, jsem vysvětlil v části „Nastavení HTTPS“v předchozím kroku.

Dále, pokud jste to ještě neudělali, budete muset nainstalovat základní balíček komunity ESP8266 pomocí Správce desek Arduino IDE. Jakmile to bude hotové, vyberte z nabídky desek NodeMCU 1.0 (modul ESP-12E). Dále budete muset nainstalovat knihovnu SimpleDHT pomocí Správce knihoven. Nakonec stiskněte tlačítko Ověřit v levém horním rohu okna IDE, abyste se ujistili, že se kód kompiluje bez chyb.

A teď je konečně čas vypálit firmware na mikrokontrolér. Chcete -li to provést, přesuňte propojku JP1 vpravo, takže GPIO0 ESP8266 bude připojen k zemi, což umožní režim programování. Poté připojte převodník USB na sériový kabel pomocí propojovacích vodičů k programovací hlavičce, která je označena jako P1. Pin 1 programovací hlavičky je uzemněn, pin 2 je přijímací pin ESP8266 a pin 3 vysílač. Potřebujete přijímač ESP8266, abyste mohli vysílat z USB na sériový převodník, vysílat na příjem a samozřejmě ze země na zem.

Nakonec napájejte zařízení 5V pomocí kabelu konektoru USB na DC a připojte převodník USB na sériový port k počítači. Nyní byste měli vidět virtuální sériový port, ke kterému je připojen ESP8266, jakmile otevřete nabídku nástrojů ve vašem IDE. Nyní stačí stisknout tlačítko Nahrát a je to! Pokud vše proběhlo podle očekávání, měli byste na LCD zařízení vidět hodnoty teploty a vlhkosti. Jakmile se ESP8266 připojí k vaší síti a začne komunikovat se serverem, mělo by se na displeji také zobrazit aktuální datum a čas.

Po několika hodinách, kdy server shromáždí velké množství dat, byste měli vidět grafy teploty a vlhkosti na adrese http (s): // [host] /index.php?client_id= [id klienta]. Kde [host] je buď IP adresa vašeho serveru, nebo subdoména, kterou používáte pro webové rozhraní, a [client id] ID klienta zařízení, které, pokud jste jej nechali na výchozí hodnotě, by mělo být 1.

Doporučuje: