Kazalo:
- Korak: Orodja in deli
- 2. korak: Izdelava tiskanega vezja
- 3. korak: izdelava ohišja
- 4. korak: Sestavljanje monitorja
- 5. korak: Nastavitev strežnika
- 6. korak: Programiranje ESP8266
Video: Nadzor temperature in vlažnosti: 6 korakov (s slikami)
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:07
V tem navodilu vam bom pokazal, kako sami sestavite merilnik temperature in vlažnosti v dnevni sobi. Naprava ima tudi zmožnosti WiFi za beleženje podatkov na oddaljenem strežniku (npr. Raspberry Pi) in poznejši dostop do njih prek preprostega spletnega vmesnika.
Glavni deli naprave so mikrokrmilnik ESP8266, senzor temperature in vlažnosti DHT11 ter LCD z 16 x 4 znaki. Projekt je v celoti odprtokoden, zato prosimo, da prenesete sheme, postavitev plošče in datoteke za oblikovanje ohišja ter vnesete vse potrebne spremembe.
Korak: Orodja in deli
Za izdelavo monitorja boste potrebovali naslednje dele:
1 x ESP-12F [2 €]-Kolikor vem, sta ESP-12E in ESP-12F v bistvu enaka, s to razliko, da ima ESP-12F boljšo anteno.
1 x senzor temperature in vlažnosti DHT11 [0,80 €] - DHT22 bo prav tako deloval, vendar bo treba na 3D -modelu ohišja narediti nekaj sprememb, tudi DHT22 je nekoliko dražji.
1 x 16 -palčni znakovni LCD 5V [3,30 €] - Da, potrebovali boste 5 -voltnega, saj je tiskano vezje zasnovano tako, da se bo LCD napajal neposredno iz 5 V in ne iz regulatorja napetosti. To je bilo storjeno zato, da bi zmanjšali obremenitev regulatorja napetosti, pa tudi zato, ker so 5V zasloni ponavadi cenejši. Ampak ne skrbite, čeprav ESP8266 deluje pri 3.3V, bo še vedno v redu.
1 x SMD regulator napetosti LD1117V33, znan tudi kot LD33 (paket SOT223) [0,80 €]
1 x 100nF keramični SMD kondenzator (paket 0603)
1 x 10uF tantalov SMD kondenzator (paket 3528)
1 x 10K SMD upor (paket 0805)
1 x 10K trimer lonec (skozi luknjo)
1 x 47Ω SMD upor (paket 0805) - To je samo za omejitev toka, ki gre na osvetlitev ozadja LCD -ja. Eksperimentirajte z različnimi vrednostmi upora in izberite želeno intenzivnost.
1 x SMD trenutno stikalo [0,80 €] - To sem uporabil predvsem, vendar lahko uporabite katero koli trenutno stikalo, ki ga želite z enakim odtisom. Ista stikala sem na eBayu lahko našel tudi manj, saj sem dobil več kot eno.
1 x 5,5x2,1 mm DC vtič (nosilec za ploščo) [0,50 €] - Ta, ki sem ga uporabil, ima premer izreza 8 mm in dolžino 9 mm. Na eBayu ga lahko preprosto najdete tako, da poiščete "Panel Mount DC Jack" (glej sliko v prilogi).
1 x 2,54 mm (100mil) 40-polni moški zatiči (skozi luknjo)
1 x 2,54 mm (100mil) 40-pinski strojno obdelani ženski zatič (skozi luknjo)
1 x 2,54 mm (100mil) mostiček - je enak tistim, ki se uporabljajo na računalniških matičnih ploščah.
4 x M3 8 mm vijaki
4 x vložki z navojem M3 4x4 mm - zlahka jih najdete tako, da na eBayu poiščete "Vstavki iz medenine iz medenine za pritisk M3" (glej sliko v prilogi).
4 x 12 mm vijaki M2
4 x M2 matice
1 x USB kabel tipa A do 5,5x2,1 mm DC [1,5 €] - To bo omogočilo napajanje vaše naprave iz standardnega polnilnika telefona ali skoraj vsakega računalnika z vrati USB. Naprava črpa le 300mA najslabši primer in 250mA v povprečju, zato bodo ustrezna tudi vrata USB 2.0.
1 x PCB - Debelina plošče ni kritična, zato se odločite za 1,6 mm, kar je običajno najcenejša možnost pri večini proizvajalcev PCB.
3 x kosi navezane žice (vsak približno 60 mm)
3 x kosi toplotne cevi (približno 10 mm vsak)
In naslednja orodja:
Spajkalnik
Pretvornik USB v zaporedni - to boste potrebovali za programiranje ESP8266 na plošči.
Phillips izvijač in/ali šestkotni ključ - odvisno od vrste vijakov, ki jih boste uporabili.
3D -tiskalnik - Če nimate dostopa do 3D -tiskalnika, lahko vedno uporabite generično plastično škatlo za projekt in izreze naredite sami z Dremelom. Najmanjše notranje mere take škatle morajo biti 24 mm višine, 94 mm dolžine in 66 mm širine. Za montažo LCD-ja boste morali uporabiti tudi 8 mm nastavke M2.
Dremel - potreben samo, če se ne odločite za ohišje s 3D tiskanjem.
2. korak: Izdelava tiskanega vezja
Prvi korak je izdelava tiskanega vezja. To lahko storite tako, da ga sami jedkate ali pa obiščete spletno stran svojega najljubšega proizvajalca tiskanih vezij in oddate naročilo. Če ne nameravate spreminjati postavitve plošče, lahko preprosto vzamete datoteko ZIP, ki vsebuje datoteke gerber, priložene na tem koraku, in jo pošljete neposredno proizvajalcu. Če želite spremeniti, lahko sheme in datoteke sheme KiCAD najdete tukaj.
Ko ste dobili v roke roke, je čas za spajkanje komponent. To bi moralo biti precej preprosto, vendar je treba upoštevati nekaj stvari. Najprej še ne spajajte tiskanega vezja na glavi LCD -ja, to bo treba storiti med končno montažo zaradi načina zasnove ohišja. Če sami izdelujete ograjeno ohišje, pa nasvet zanemarite.
Priključek U3 je tam, kjer bo priključen senzor DHT11. Idealno bi bilo, če bi v ta namen uporabili 90 ° kotno obdelano glavo zatiča. Če pa ti je všeč, pa je ne najdeš, si privošči ravno in jo upogni sam. Če to storite pozneje, bodo tudi vodi DHT11 nekoliko kratki, zato boste morali spajkati nekaj razširitev. Razdalja med glavo zatiča in senzorjem po priključitvi mora biti približno 5 mm.
Razlog, zakaj želite uporabiti obdelano glavo zatiča, je, ker so luknje manjše v primerjavi z običajnimi glavo zatiča. Tako lahko vodi senzorja tesno sedijo in ustvarijo trdno povezavo. Lahko pa poskusite tudi spajkati DHT11 na kos glave moškega zatiča in ga na ta način priključiti na navadno kotno glavo zatiča, ki bi morala delovati enako dobro.
3. korak: izdelava ohišja
Zdaj, ko je tiskano vezje spajkano, je čas za izdelavo ohišja. Natisniti je treba dva različna dela: glavno ohišje ohišja in pokrov. Pokrov ima tudi pritrdilne luknje za pritrditev na steno.
Oba dela je mogoče natisniti s standardno 0,4 mm šobo na višini plasti 0,2 mm, v mojem primeru je bil čas tiskanja približno 4 ure za oba dela skupaj. Pokrov ne potrebuje nobenih nosilcev za glavni del ohišja, predvsem pa za del pod vtičnicami. Po tiskanju bodite zelo previdni pri odstranjevanju nosilcev, vendar mi je pri tem uspelo prekiniti eno od stojnic za LCD in sem jo moral lepiti nazaj s superlepilom.
Ohišje je zasnovano na FreeCAD -u, zato bi moralo biti, če želite kaj spremeniti, precej preprosto. Datoteke STL za tiskanje ohišja in oblikovalske datoteke FreeCAD najdete na Thingiverse.
4. korak: Sestavljanje monitorja
Ko je ohišje natisnjeno, je čas, da vse sestavite. Najprej postavite LCD v ohišje in ga potisnite v levo, da bo med njim in luknjo za senzor nastala vrzel.
Nato postavite tiskano vezje nanj, senzor pa je že pritrjen na glavo zatiča.
Nato potisnite senzor v luknjo, potisnite LCD nazaj v položaj in vstavite tiskano vezje na glavo zatiča. Zdaj pritrdite LCD z maticami in vijaki M2 ter spajkajte tiskano vezje na glavo zatiča.
Nato vstavite vtičnico, nanjo pritrdite nekaj žic in druge konce spajkajte na tiskano vezje. Dobra ideja bi bila tudi uporaba nekaterih hladilnih cevi.
Zadnji korak je namestitev kovinskih navojnih vložkov, da se pokrov lahko privije z vijaki M3. V ta namen jih morate spajkati, da jih segrejete, da jih lahko potisnete v luknje. Če potrebujete več informacij o dodajanju kovinskih niti v 3D -odtise, si lahko ogledate ta navodila.
5. korak: Nastavitev strežnika
Preden naložite vdelano programsko opremo na ESP8266, morate narediti še eno stvar, in sicer nastavitev strežnika za beleženje podatkov, ki jih naprava prejme. V ta namen lahko uporabite skoraj kateri koli računalnik Linux, ki ga želite, od Raspberry Pi v zasebnem omrežju do kapljice DigitalOcean. Šel sem s poznejšim, vendar je postopek skoraj enak, ne glede na to, kaj izberete.
Namestitev Apache, MySQL (MariaDB) in PHP
Najprej moramo nastaviti LAMP ali z drugimi besedami namestiti Apache, MySQL (MariaDB) in PHP na strežnik. Za to boste morali uporabiti upravitelja paketov svojega distribucijskega sistema. Za primer bom uporabil apt, ki je upravitelj paketov, ki ga uporablja skoraj vsaka distrikt, ki temelji na Debianu, tudi Raspbian.
sudo apt posodobitev
sudo apt namestite apache2 mysql-strežnik mysql-odjemalec php libapache2-mod-php php-mysql
Po tem, če v naslovno vrstico brskalnika vnesete naslov IP vašega strežnika, bi morali videti privzeto stran Apache.
Nastavitev baze podatkov
Zdaj potrebujemo bazo podatkov za beleženje podatkov. Najprej se povežite z MySQL kot root z zagonom, sudo mysql
Ustvarite bazo podatkov in uporabnika z dostopom do nje, kot sledi, Ustvari "senzorje"
UPORABITE `senzorje`; CREATE TABLE `temperature` (` id` bigint (20) NOT NULL AUTO_INCREMENT, `client_id` smallint (6) NOT NULL,` value` smallint (6) NOT NULL, `created_at` časovni žig NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (` id`)) MOTOR = InnoDB; Ustvari tabelo `vlažnost` (` id` bigint (20) NOT NULL AUTO_INCREMENT, `client_id` smallint (6) NOT NULL,` value` smallint (6) NOT NULL, `created_at` časovni žig NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (` id`)) MOTOR = InnoDB; CREATE USER '[username]'@'localhost' IDENTIFICED BY '[password]'; ODDELI VSE PRIVILEGIJE NA "senzorje".* NA "senzorje"@"localhost"; IZHOD
Zamenjajte [uporabniško ime] in [geslo] z dejanskim uporabniškim imenom in geslom za uporabnika MySQL, ki vam je všeč. Zabeležite si jih tudi, ker jih boste potrebovali za naslednji korak.
Konfiguriranje skriptov za beleženje in spletni vmesnik
Preklopite v imenik/var/www/html, ki je koren dokumenta privzetega virtualnega gostitelja Apache, izbrišite datoteko HTML, ki vsebuje privzeto spletno stran, in v njej naložite skripte za beleženje in spletni vmesnik.
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
Zdaj uredite skript za beleženje z nano, sudo nano log.php
[Uporabniško ime] in [geslo] boste morali zamenjati z uporabniškim imenom in geslom za uporabnika MySQL, ki ste ga ustvarili v prejšnjem koraku. Prav tako zamenjajte [odjemalski ključ] z edinstvenim nizom in si ga zapišite. To bo uporabljeno kot geslo, da se bo monitor lahko preveril na strežniku.
Končno uredite index.php z nano, sudo nano index.php
in zamenjajte [uporabniško ime] in [geslo] z uporabniškim imenom in geslom za uporabnika MySQL, kot ste to storili s skriptom za beleženje.
Nastavitev HTTPS (izbirno)
To je lahko neobvezno, če pa je povezava med ESP8266 in strežnikom prek interneta, je zelo priporočljivo uporabiti nekaj šifriranja.
Na žalost ne morete samo nadaljevati in uporabiti nekaj takega, kot je Let's Encrypt, za pridobitev certifikata. To je zato, ker vsaj v času pisanja odjemalska knjižnica HTTP za ESP8266 še vedno zahteva, da je kot drugi argument pri klicu http.begin () naveden prstni odtis potrdila. To pomeni, da boste morali, če uporabljate nekaj na primer Let’s Encrypt, vdelano programsko opremo na čip vsake 3 mesece znova namestiti, da po vsaki obnovi posodobite prstni odtis certifikata.
Pot do tega bi bila ustvariti samopodpisano potrdilo, ki poteče po zelo dolgem času (npr. 10 letih), in shraniti skript za beleženje na svojem virtualnem gostitelju s svojo poddomeno. Tako imate lahko spletni vmesnik za dostop do podatkov na ločeni poddomeni, ki bo uporabljala ustrezno potrdilo zaupanja vrednega organa. Uporaba samopodpisanega potrdila v tem primeru ni varnostna težava, saj bo prstni odtis potrdila, ki ga edinstveno identificira, trdo kodiran v vdelani programski opremi, certifikat pa bo uporabljal le ESP8266.
Preden začnemo, bom domneval, da že imate ime domene in da lahko na njem ustvarite poddomene. Če želite ustvariti potrdilo, ki poteče po 10 letih, zaženite naslednji ukaz in odgovorite na vprašanja.
sudo openssl req -x509 -nodes -days 3650 -wkey rsa: 2048 -keyout /etc/ssl/private/sensors.key -out /etc/ssl/certs/sensors.crt
Ker gre za samopodpisano potrdilo, na večino vprašanj odgovorite preveč, razen pri vprašanju, ki zahteva skupno ime. Tukaj boste morali navesti celotno poddomeno, ki bo uporabljena za to virtualno gostiteljsko enoto. Poddomena, ki jo boste dali tukaj, bo morala biti enaka imenu strežnika, ki ga boste nastavili pozneje v konfiguraciji navideznega gostitelja.
Nato ustvarite novo konfiguracijo navideznega gostitelja, sudo nano /etc/apache2/sites-available/sensors-ssl.conf
z naslednjo vsebino, Ime strežnika [poddomena] DocumentRoot/var/www/senzorji SSLEngine ON SSLCertificateKeyFile /etc/ssl/private/sensors.key SSLCertificateFile /etc/ssl/certs/sensors.crt Možnosti +FollowSymlinks -Indexes AllowOverride All ErrorDog $ error-ssl.log CustomLog $ {APACHE_LOG_DIR} /sensors-access-ssl.log skupaj
Ponovno zamenjajte [poddomeno] z isto poddomeno, ki ste jo uporabili s potrdilom. Na tej točki boste morali onemogočiti privzetega virtualnega gostitelja Apache, sudo a2dissite 000-privzeto
spremenite ime korenskega imenika dokumenta, sudo mv/var/www/html/var/www/senzorji
in nazadnje omogočite novega navideznega gostitelja in znova zaženite Apache, sudo a2ensite senzorji-ssl
sudo systemctl znova zaženite apache2
Zadnja stvar, ki jo morate storiti, je pridobitev prstnega odtisa potrdila, ker ga boste morali uporabiti v kodi vdelane programske opreme.
openssl x509 -noout -prstni odtis -sha1 -inform pem -in /etc/ssl/certs/sensors.crt
Http.begin () pričakuje, da bodo ločila med bajti prstnega odtisa presledki, zato boste morali dvopičja zamenjati s presledki, preden jih uporabite v kodi.
Zdaj, če ne želite uporabiti samopodpisanega potrdila za nastavitev spletnega vmesnika, novo poddomeno in ustvarjanje nove konfiguracije navideznega gostitelja, sudo nano /etc/apache2/sites-available/sensors-web-ssl.conf
z naslednjo vsebino, Ime strežnika [poddomena] DocumentRoot/var/www/senzorji #SSLEngine ON #SSLCertificateFile /etc/letsencrypt/live/[subdomain]/cert.pem #SSLCertificateKeyFile /etc/letsencrypt/live/[Subdomain] etc /letsencrypt/live/[subdomain]/chain.pem Možnosti +FollowSymlinks -Indeksi AllowOverride All ErrorLog $ {APACHE_LOG_DIR} /sensors-web-error-ssl.log CustomLog $ {APACHE_LOG_DIR} /sensors-web-access
Zamenjajte [poddomeno] s poddomeno, ki ste jo nastavili za spletni vmesnik. Nato omogočite novega navideznega gostitelja, znova zaženite Apache, namestite certbot in pridobite potrdilo za novo poddomeno iz Let's Encrypt, sudo a2ensite senzorji-web-ssl
sudo systemctl znova zaženite apache2 sudo apt posodobitev sudo apt namestite certbot sudo certbot certonly --apache -d [poddomena]
Po pridobitvi potrdila znova uredite konfiguracijo navideznega gostitelja, da odkomentirate vrstice SSLEngine, SSLCertificateFile, SSLCertificateKeyFile in SSLCertificateChainFile ter znova zaženete Apache.
Zdaj lahko uporabite prvo poddomeno, ki uporablja samopodpisano potrdilo za pošiljanje podatkov iz ESP8266 na strežnik, drugo pa za dostop do spletnega vmesnika iz vašega brskalnika. Certbot bo poskrbel tudi za samodejno obnavljanje certifikata Let's Encrypt vsake 3 mesece z uporabo sistemskega časovnika, ki bi moral biti privzeto omogočen.
6. korak: Programiranje ESP8266
Nazadnje, edino, kar preostane, je, da naložite vdelano programsko opremo na mikrokrmilnik. Če želite to narediti, od tu prenesite izvorno kodo vdelane programske opreme in jo odprite z uporabo Arduino IDE. [SSID] in [Geslo] boste morali zamenjati z dejanskim SSID in geslom vašega omrežja WiFi. [Client ID] in [Client Key] v klicu funkcije sprintf boste morali zamenjati s tistimi, ki ste jih uporabili v skriptu PHP na strežniku. Nazadnje boste morali zamenjati [Host] z imenom domene ali naslovom IP strežnika. Če uporabljate HTTPS, boste morali kot drugi argument pri klicu funkcije http.begin () vnesti tudi prstni odtis vašega potrdila. Kako pridobiti prstni odtis potrdila, sem razložil v razdelku »Nastavitev HTTPS« v prejšnjem koraku.
Nato, če tega še niste storili, boste morali namestiti osnovni paket skupnosti ESP8266 z upraviteljem plošč Arduino IDE. Ko to storite, v meniju plošč izberite NodeMCU 1.0 (modul ESP-12E). Nato boste morali z upraviteljem knjižnic namestiti knjižnico SimpleDHT. Nazadnje pritisnite gumb Preveri v zgornjem levem kotu okna IDE in se prepričajte, da se koda sestavi brez napak.
In zdaj je končno čas, da vdelano programsko opremo zapišete na mikrokrmilnik. Če želite to narediti, premaknite mostiček JP1 na desni, tako da bo GPIO0 ESP8266 povezan z maso, kar bo omogočilo način programiranja. Nato priključite USB v serijski pretvornik z uporabo mostičnih žic na programsko glavo, označeno kot P1. Zatič 1 glave za programiranje je ozemljen, zatič 2 je sprejemni zatič ESP8266, zatič 3 pa oddajnika. Potrebujete sprejem ESP8266 za prenos vašega pretvornika USB v serijski pretvornik, prenos na sprejemnik in seveda zemlja na zemljo.
Nazadnje, napajajte napravo s 5 V s kablom USB v DC in priključite pretvornik USB v serijski pretvornik v računalnik. Zdaj bi morali videti virtualna serijska vrata, na katera je priključen ESP8266, takoj ko odprete meni z orodji v svojem IDE. Zdaj, samo pritisnite gumb Naloži in to je to! Če je vse potekalo po pričakovanjih, bi morali na LCD -prikazovalniku naprave videti odčitke temperature in vlažnosti. Ko se ESP8266 poveže z vašim omrežjem in začne komunicirati s strežnikom, se morata na zaslonu prikazati tudi trenutni datum in ura.
Po nekaj urah, ko bo strežnik zbral dobro količino podatkov, si boste lahko ogledali grafikone temperature in vlažnosti, tako da obiščete http (s): // [host] /index.php?client_id= [id odjemalca]. Kjer je [gostitelj] naslov IP vašega strežnika ali poddomena, ki ga uporabljate za spletni vmesnik, in [ID odjemalca] ID odjemalca naprave, ki bi moral biti, če ga pustite privzeti, 1.
Priporočena:
Nadzor temperature, vlažnosti - Arduino Mega + Ethernet W5100: 5 korakov
Nadzor temperature, vlažnosti - Arduino Mega + Ethernet W5100: Modul 1 - FLAT - strojna oprema: Arduino Mega 2560 Wiznet W5100 Ethernetni ščit 8x DS18B20 temperaturni senzor na vodilu OneWire - razdeljen na 4 vodila OneWire (2,4,1,1) 2x digitalna temperatura in senzor vlažnosti DHT22 (AM2302) 1x temperatura in vlaga
Enostaven BLE z zelo nizko porabo energije v Arduinu, 2. del - Nadzor temperature/vlažnosti - Rev 3: 7 korakov
Enostaven BLE z zelo nizko porabo energije v Arduinu, 2. del - Nadzor temperature/vlažnosti - Rev 3: Posodobitev: 23. november 2020 - Prva zamenjava 2 x AAA baterij od 15. januarja 2019, tj. 22 mesecev za 2xAAA alkalno Posodobitev: 7. april 2019 - Rev 3 od lp_BLE_TempHumidity, doda datumske/časovne ploskve z uporabo pfodApp V3.0.362+in samodejno dušenje
Nadzor temperature in vlažnosti z NODE MCU IN BLYNK: 5 korakov
Nadzor temperature in vlažnosti z uporabo NODE MCU IN BLYNK: Pozdravljeni, fantje, v tem navodilu se naučimo, kako doseči temperaturo in vlažnost ozračja z uporabo DHT11-senzorja temperature in vlažnosti z uporabo Node MCU in aplikacije BLYNK
Sistem za nadzor vlažnosti in temperature za terarij: 11 korakov (s slikami)
Sistem za nadzor vlažnosti in temperature za terarij: UVOD: Ta navodila so namenjena razvoju modularnega sistema za nadzor vlažnosti in temperature z uporabo Arduino Uno. Ta sistem uporablja vodotesno sondo za vlažnost in temperaturo za spremljanje okoljskih parametrov in priključek Arduino Uno
Nadzor temperature in vlažnosti z uporabo Raspberry Pi: 6 korakov (s slikami)
Nadzor temperature in vlažnosti z uporabo Raspberry Pi: Prihaja poletje in tisti brez klimatske naprave bi morali biti pripravljeni ročno nadzorovati ozračje v zaprtih prostorih. V tem prispevku opisujem sodoben način merjenja najpomembnejših parametrov za človeško udobje: temperature in vlažnosti. T