Obsah:

Monitor teploty a vlhkosti: 6 krokov (s obrázkami)
Monitor teploty a vlhkosti: 6 krokov (s obrázkami)

Video: Monitor teploty a vlhkosti: 6 krokov (s obrázkami)

Video: Monitor teploty a vlhkosti: 6 krokov (s obrázkami)
Video: TOP 10 Tajné funkce mobilu o kterých 90% lidí neví 2024, Júl
Anonim
Monitor teploty a vlhkosti
Monitor teploty a vlhkosti
Monitor teploty a vlhkosti
Monitor teploty a vlhkosti

V tomto návode vám ukážem, ako si vytvoriť vlastný monitor teploty a vlhkosti pre svoju obývačku. Zariadenie tiež ponúka možnosti WiFi na účely zaznamenávania údajov na vzdialenom serveri (napr. Raspberry Pi) a neskoršieho prístupu k nim prostredníctvom jednoduchého webového rozhrania.

Hlavnými časťami zariadenia sú mikrokontrolér ESP8266, snímač teploty a vlhkosti DHT11 a 16 -znakový LCD displej. Projekt je úplne otvorený zdrojový kód, takže si môžete stiahnuť schému, rozloženie dosky a návrhové súbory pre prílohu a vykonať akékoľvek zmeny, ktoré sa vám páčia.

Krok 1: Nástroje a diely

Nástroje a diely
Nástroje a diely
Nástroje a diely
Nástroje a diely
Nástroje a diely
Nástroje a diely
Nástroje a diely
Nástroje a diely

Na stavbu monitora budete potrebovať nasledujúce diely:

1 x ESP-12F [2 €]-Pokiaľ viem, ESP-12E a ESP-12F sú v zásade identické, s tým rozdielom, že ESP-12F má lepšiu anténu.

1 x snímač teploty a vlhkosti DHT11 [0,80 EUR] - DHT22 bude tiež fungovať, ale bude potrebné vykonať určité zmeny v 3D modeli krytu, DHT22 je tiež o niečo drahší.

1 x 16x4 znakový LCD 5V [3,30 €] - Áno, budete potrebovať 5V, pretože doska plošných spojov je navrhnutá tak, aby bol LCD napájaný priamo z 5V, a nie z regulátora napätia. To sa uskutočnilo s cieľom znížiť zaťaženie regulátora napätia, ale aj preto, že 5V displeje sú zvyčajne lacnejšie. Ale nebojte sa, aj keď ESP8266 pracuje na 3,3 V, bude stále fungovať dobre.

1 x Regulátor napätia LDD1717V33 SMD, známy tiež ako LD33 (balík SOT223) [0,80 €]

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

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

1 x 10K SMD odpor (balenie 0805)

1 x 10K vyžínač (priechodný otvor)

1 x 47Ω SMD odpor (balenie 0805) - Toto je len na obmedzenie prúdu, ktorý ide do podsvietenia LCD. Nebojte sa experimentovať s rôznymi hodnotami odporu a zvoľte si intenzitu, ktorú preferujete.

1 x SMD Momentary Switch [0,80 EUR] - Použil som konkrétne toto, ale môžete použiť ľubovoľný požadovaný momentálny spínač s rovnakou stopou. Tiež som dokázal nájsť rovnaké prepínače na eBay za menej, pretože som získal viac ako jeden.

1 x 5,5 x 2,1 mm DC konektor (montáž na panel) [0,50 EUR] - Ten, ktorý som použil, má priemer výrezu na panel 8 mm a dĺžku 9 mm. Na eBay sa dá ľahko nájsť vyhľadaním „Panel Mount DC Jack“(pozri priložený obrázok).

1 x 2,54 mm (100 mil.) 40-kolíkový konektor s kolíkovým konektorom (skrz otvor)

1 x 2,54 mm (100 mil.) 40-kolíková strojová hlavička (priechodný otvor)

Prepojka 1 x 2,54 mm (100 mil.) - Je rovnaká ako tie, ktoré sa používajú na základných doskách počítača.

4 x skrutky M3 8 mm

4 x závitové vložky M3 4x4 mm - dajú sa ľahko nájsť vyhľadaním „M3 lisovaných mosadzných medených vložiek“na eBay (pozri priložený obrázok).

4 x skrutky M2 12 mm

4 x matice M2

1 x kábel USB typu A až 5,5 x 2,1 mm DC [1,5 EUR] - umožní vám to napájať zariadenie buď zo štandardnej nabíjačky telefónu, alebo z takmer akéhokoľvek počítača s portom USB. Zariadenie v najhoršom prípade čerpá iba 300mA a 250mA, takže si vystačí aj s portom USB 2.0.

1 x PCB - hrúbka dosky nie je rozhodujúca, preto stačí 1,6 mm, čo je väčšinou najlacnejšia možnosť u väčšiny výrobcov plošných spojov.

3 x kusy pleteného drôtu (každý asi 60 mm)

3 x kusy rúrky chladiča (asi 10 mm)

A nasledujúce nástroje:

Spájkovačka

Prevodník USB na sériový - Budete to potrebovať na programovanie ESP8266 na doske.

Skrutkovač Phillips a/alebo šesťhranný kľúč - podľa typu skrutiek, ktoré použijete.

3D tlačiareň - Ak nemáte prístup k 3D tlačiarni, môžete vždy použiť všeobecný plastový box na projektovanie a výrezy si urobiť sami pomocou Dremel. Minimálne vnútorné rozmery takejto škatule musia byť 24 mm na výšku, 94 mm na dĺžku a 66 mm na šírku. Na montáž LCD budete tiež musieť použiť 8 mm stojky M2.

Dremel - Potrebné iba vtedy, ak nechodíte po kryte s 3D tlačou.

Krok 2: Výroba DPS

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

Prvým krokom je výroba DPS. Môžete to urobiť tak, že ho vyleptáte sami, alebo jednoducho prejdete na webovú stránku svojho obľúbeného výrobcu plošných spojov a zadáte objednávku. Ak neplánujete vykonávať žiadne zmeny v rozložení dosky, môžete jednoducho chytiť súbor ZIP obsahujúci súbory gerber pripojené v tomto kroku a odoslať ho priamo výrobcovi. Ak však chcete vykonať zmeny, súbory schémy KiCAD a rozloženie dosky nájdete tu.

Potom, čo sa vám dosky dostanú do rúk, je čas spájkovať komponenty. Malo by to byť celkom jednoduché, ale je potrebné poznamenať niekoľko vecí. Po prvé, zatiaľ nepokračujte v spájkovaní DPS na záhlaví LCD, bude to potrebné vykonať počas konečnej montáže vzhľadom na spôsob, akým bol kryt navrhnutý. Ak si však vytvárate vlastnú prílohu, túto radu môžete ignorovať.

Konektor U3 je miesto, kde sa chystá pripojiť snímač DHT11. V ideálnom prípade by ste na tento účel mali použiť 90 ° uhlovú opracovanú zásuvku kolíka. Ale ak sa vám páčim, nemôžete ho nájsť, urobte si rovný kus a ohnite ho sami. Ak to urobíte neskôr, zvody DHT11 budú tiež trochu krátke, takže budete musieť spájkovať niektoré rozšírenia. Po pripojení musí byť vzdialenosť medzi kolíkovým konektorom a snímačom zhruba 5 mm.

Dôvod, prečo chcete použiť opracovanú hlavičku kolíka, je ten, že otvory sú menšie v porovnaní s bežnými hlavičkami. Vodiče senzora tam teda môžu pevne sedieť a vytvárať pevné spojenie. Môžete však tiež skúsiť spájkovať DHT11 na kus konektora mužského kolíka a pripojiť ho tak k pravidelnému uhlovému konektoru samice, ktorý by mal fungovať rovnako dobre.

Krok 3: Vytvorenie prílohy

Výroba prílohy
Výroba prílohy
Výroba prílohy
Výroba prílohy
Výroba prílohy
Výroba prílohy
Výroba prílohy
Výroba prílohy

Teraz, keď je doska plošných spojov spájkovaná, je načase vytvoriť kryt. Existujú dve rôzne časti, ktoré je potrebné vytlačiť, hlavné telo krytu a veko. Veko má tiež montážne otvory na pripevnenie na stenu.

Obe časti je možné vytlačiť štandardnou 0,4 mm tryskou vo výške vrstvy 0,2 mm, v mojom prípade bol čas tlače pre obe časti dohromady asi 4 hodiny. Veko nevyžaduje žiadne podpery, ale hlavná časť krytu to vyžaduje, hlavne pre časť pod skrutkovými objímkami. Potom, čo som bol s tlačou veľmi opatrný pri odstraňovaní podpier, sa mi pri tom podarilo prelomiť jeden z výčnelkov pre LCD a musel som ho opäť prilepiť lepidlom.

Kryt je navrhnutý pre FreeCAD, takže ak chcete vykonať akékoľvek zmeny, malo by to byť celkom jednoduché. Súbory STL na tlač krytu a súbory návrhov FreeCAD nájdete na stránke Thingiverse.

Krok 4: Zostavenie monitora

Keď je príloha vytlačená, je čas dať všetko dohromady. Najprv umiestnite LCD displej do puzdra a posuňte ho doľava, aby medzi ním a otvorom pre senzor bola medzera.

Obrázok
Obrázok

Ďalej na ňu umiestnite dosku plošných spojov so senzorom, ktorý je už pripevnený na záhlaví pinov.

Obrázok
Obrázok

Potom zatlačte snímač do otvoru, posuňte LCD displej späť do polohy a zasuňte DPS na kolíkový konektor. Teraz zaistite LCD displej na mieste pomocou matíc a skrutiek M2 a spájkujte dosku plošných spojov s kolíkovým konektorom.

Obrázok
Obrázok

Potom zapojte napájací konektor, pripevnite k nemu niekoľko vodičov a ich ostatné konce spájkujte s plošnými spojmi. Tiež by bolo dobré použiť tu nejaké teplom zmrštiteľné hadičky.

Obrázok
Obrázok

Posledným krokom je inštalácia vložiek s kovovým závitom, aby bolo možné veko priskrutkovať na miesto pomocou skrutiek M3. Na tento účel budete musieť použiť spájkovačku na ich zahriatie, aby sa dali zatlačiť do otvorov. Tento návod si môžete pozrieť, ak potrebujete viac informácií o pridávaní kovových nití do vašich 3D výtlačkov.

Obrázok
Obrázok

Krok 5: Nastavenie servera

Nastavenie servera
Nastavenie servera

Pred nahraním firmvéru do ESP8266 je potrebné urobiť ešte jednu vec, ktorou je nastavenie servera na zaznamenávanie údajov prijatých zariadením. Na tento účel môžete použiť takmer ľubovoľný počítač so systémom Linux, od Raspberry Pi vo vašej súkromnej sieti až po kvapôčku DigitalOcean. Išiel som s neskorším, ale postup je takmer rovnaký bez ohľadu na to, čo si vyberiete.

Inštalácia Apache, MySQL (MariaDB) a PHP

Najprv musíme nastaviť LAMP, alebo inými slovami nainštalovať Apache, MySQL (MariaDB) a PHP na server. Na to budete musieť použiť správcu balíkov vášho distra, kvôli príkladu použijem apt, čo je správca balíkov, ktorý používa takmer každý distribútor založený na Debiane, vrátane Raspbian.

sudo apt aktualizácia

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

Potom, čo urobíte, ak zadáte IP adresu vášho servera do panela s adresou vášho prehliadača, mala by sa vám zobraziť predvolená stránka Apache.

Nastavenie databázy

Teraz potrebujeme databázu na zaznamenávanie údajov. Najprv sa pripojte k MySQL ako root spustením, sudo mysql

Vytvorte databázu a používateľa s prístupom k nej takto, VYTVORIŤ DATABÁZU `senzorov`

POUŽIJTE `senzory`; VYTVORIŤ TABUĽKU `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; VYTVORIŤ TABUĽKU `vlhkosť` (` 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; VYTVORIŤ UŽÍVATEĽA '[užívateľské meno]'@'localhost' IDENTIFIKOVANÉ '' [heslo] '; UDELTE VŠETKY VÝHODY NA „senzory“.* NA „senzory“@„localhost“; VÝCHOD

Nezabudnite nahradiť [používateľské meno] a [heslo] skutočným používateľským menom a heslom pre používateľa MySQL, ktorý sa vám páči. Poznačte si ich tiež, pretože ich budete potrebovať v ďalšom kroku.

Konfigurácia protokolov a skriptov webového rozhrania

Prejdite do adresára/var/www/html, ktorý je koreňom dokumentu predvoleného virtuálneho hostiteľa Apache, odstráňte súbor HTML, ktorý obsahuje predvolenú webovú stránku, a stiahnite si protokoly a protokoly webového rozhrania do nej.

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

Teraz upravte protokolovací skript pomocou nano, sudo nano log.php

Budete musieť nahradiť [používateľské meno] a [heslo] používateľským menom a heslom pre používateľa MySQL, ktorého ste vytvorili v predchádzajúcom kroku. Tiež nahraďte [klientsky kľúč] jedinečným reťazcom a poznamenajte si to. Toto sa použije ako heslo, aby sa monitor mohol autentifikovať na serveri.

Nakoniec upravte index.php pomocou nano, sudo nano index.php

a nahraďte [používateľské meno] a [heslo] používateľským menom a heslom pre používateľa MySQL, ako ste to urobili pri protokolovacom skripte.

Nastavenie HTTPS (voliteľné)

Toto môže byť voliteľné, ale ak je spojenie medzi ESP8266 a serverom cez internet, dôrazne sa odporúča použiť určité šifrovanie.

Na získanie certifikátu bohužiaľ nemôžete pokračovať a použiť niečo ako Let’s Encrypt. Dôvodom je, že prinajmenšom v čase písania tohto dokumentu klientská knižnica HTTP pre ESP8266 stále požaduje, aby bol odtlačok prsta certifikátu poskytnutý ako druhý argument pri volaní http.begin (). To znamená, že ak používate niečo ako Let’s Encrypt, budete musieť firmvér aktualizovať na čipe každé 3 mesiace, aby ste po každom obnovení mohli aktualizovať odtlačok certifikátu.

Riešením by bolo vygenerovať certifikát s vlastným podpisom, ktorého platnosť vyprší po veľmi dlhom čase (napr. 10 rokov), a ponechať protokolovací skript na vlastnom virtuálnom hostiteľovi s vlastnou subdoménou. Tak budete môcť mať webové rozhranie na prístup k údajom na samostatnej subdoméne, ktorá bude používať správny certifikát od dôveryhodného orgánu. Použitie certifikátu s vlastným podpisom v tomto prípade nie je problémom zabezpečenia, pretože odtlačok prsta certifikátu, ktorý ho jednoznačne identifikuje, bude pevne zakódovaný vo firmvéri a certifikát bude používať iba ESP8266.

Predtým, ako začneme, budem predpokladať, že už vlastníte názov domény a môžete na ňom vytvárať subdomény. Na vygenerovanie certifikátu, ktorého platnosť vyprší po 10 rokoch, spustite nasledujúci príkaz a odpovedzte 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

Pretože sa jedná o certifikát podpísaný vlastníkom, na tom, čo odpoviete vo väčšine otázok, príliš nezáleží, okrem otázky, ktorá vyžaduje zadanie bežného názvu. Tu budete musieť poskytnúť úplnú subdoménu, ktorá sa bude používať pre tohto virtuálneho hostiteľa. Subdoména, ktorú tu zadáte, bude musieť byť rovnaká s názvom servera, aké nastavíte neskôr v konfigurácii virtuálneho hostiteľa.

Ďalej vytvorte novú konfiguráciu virtuálneho hostiteľa, sudo nano /etc/apache2/sites-available/sensors-ssl.conf

s nasledujúcim obsahom, ServerName [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 kombinované

Opäť platí, že [subdoménu] nahraďte rovnakou subdoménou, akú ste použili s certifikátom. V tomto mieste budete musieť vypnúť predvoleného virtuálneho hostiteľa Apache, sudo a2dissite 000-predvolené

zmeniť názov koreňového adresára dokumentu, sudo mv/var/www/html/var/www/senzory

a nakoniec povoliť nového virtuálneho hostiteľa a reštartovať Apache, sudo a2ensite senzory-ssl

sudo systemctl reštartujte apache2

Posledná vec, ktorú musíte urobiť, je získať odtlačok prsta certifikátu, pretože ho budete musieť použiť v kóde firmvéru.

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

Odkaz http.begin () očakáva, že oddeľovače medzi bajtami odtlačku prsta budú medzery, takže pred použitím v kóde budete musieť dvojbodky nahradiť medzerami.

Ak teraz nechcete používať certifikát s vlastným podpisom na nastavenie webového rozhrania, novú subdoménu a vytvorenie novej konfigurácie virtuálneho hostiteľa, sudo nano /etc/apache2/sites-available/sensors-web-ssl.conf

s nasledujúcim obsahom, Názov servera [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 Options +FollowSymlinks -Indexes AllowOverride All ErrorLog $ {APACHE_LOG_DIR} /sensors-web-error-ssl.log CustomLog $ {APACHE_LOG_DIR} /sensors-web-access-ss

Nezabudnite nahradiť [subdoménu] subdoménou, ktorú ste nastavili pre webové rozhranie. Potom povoľte nového virtuálneho hostiteľa, reštartujte Apache, nainštalujte certbot a získajte certifikát pre novú subdoménu od 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ískaní certifikátu znova upravte konfiguráciu virtuálneho hostiteľa a odkomentujte riadky SSLEngine, SSLCertificateFile, SSLCertificateKeyFile a SSLCertificateChainFile a reštartujte Apache.

A teraz môžete použiť prvú subdoménu, ktorá používa certifikát s vlastným podpisom na odosielanie údajov z ESP8266 na server, zatiaľ čo druhú použijete na prístup k webovému rozhraniu z vášho prehliadača. Certbot sa tiež postará o automatické obnovenie vášho certifikátu Let's Encrypt každé 3 mesiace pomocou časovača systemd, ktorý by mal byť predvolene povolený.

Krok 6: Programovanie ESP8266

Programovanie ESP8266
Programovanie ESP8266

Nakoniec jediné, čo musíte urobiť, je načítať firmvér do mikrokontroléra. Ak to chcete urobiť, stiahnite si zdrojový kód firmvéru odtiaľto a otvorte ho pomocou Arduino IDE. [SSID] a [Heslo] budete musieť nahradiť skutočným SSID a heslom vašej siete WiFi. Pri volaní funkcie sprintf budete tiež musieť nahradiť [Client ID] a [Client Key] tým, ktoré ste použili v skripte PHP na serveri. Nakoniec budete musieť [Host] nahradiť názvom domény alebo IP adresou servera. Ak používate HTTPS, budete tiež musieť zadať odtlačok svojho certifikátu ako druhý argument pri volaní funkcie http.begin (). V predchádzajúcom kroku som vysvetlil, ako získať odtlačok prsta certifikátu, v časti „Nastavenie

Ďalej, ak ste to ešte neurobili, budete musieť nainštalovať hlavný balík komunity ESP8266 pomocou správcu dosky Arduino IDE. Akonáhle to urobíte, vyberte z ponuky panelov NodeMCU 1.0 (modul ESP-12E). Ďalej budete musieť nainštalovať knižnicu SimpleDHT pomocou Správcu knižníc. Nakoniec kliknite na tlačidlo Overiť v ľavom hornom rohu okna IDE a uistite sa, že sa kód kompiluje bez chýb.

A teraz je konečne načase napáliť firmvér na mikrokontrolér. Za týmto účelom posuňte prepojku JP1 doprava, takže GPIO0 ESP8266 bude pripojený k zemi, čo umožní režim programovania. Potom pomocou prepojovacích káblov pripojte kábel USB k sériovému prevodníku k programovacej hlavičke označenej ako P1. Pin 1 programovacej hlavičky je uzemnený, pin 2 je prijímací kolík ESP8266 a pin 3 vysielací. Prijímač ESP8266 potrebujete na prenos z vášho prevodníka USB na sériový prenos, na príjem a samozrejme zo zeme na zem.

Nakoniec napájajte zariadenie 5 V pomocou kábla konektora USB na DC a k počítaču pripojte prevodník USB na sériový port. Teraz by ste mali vidieť virtuálny sériový port, ku ktorému je pripojený ESP8266, hneď ako v IDE otvoríte ponuku nástrojov. Teraz stačí kliknúť na tlačidlo Odovzdať a je to! Ak všetko prebehlo podľa očakávania, mali by ste vidieť hodnoty teploty a vlhkosti na LCD displeji zariadenia. Keď sa ESP8266 pripojí k vašej sieti a začne komunikovať so serverom, na displeji by sa mal objaviť aj aktuálny dátum a čas.

Po niekoľkých hodinách, keď server zhromaždí dostatočné množstvo údajov, by ste mali vidieť grafy teploty a vlhkosti na adrese http (s): // [host] /index.php?client_id= [id klienta]. Kde [host] je buď adresa IP vášho servera, alebo subdoména, ktorú používate pre webové rozhranie, a [client id] identifikátor klienta zariadenia, ktorý ak ponecháte na predvolenú hodnotu, mal by byť 1.

Odporúča: