Kazalo:

Nadzor temperature in vlažnosti: 6 korakov (s slikami)
Nadzor temperature in vlažnosti: 6 korakov (s slikami)

Video: Nadzor temperature in vlažnosti: 6 korakov (s slikami)

Video: Nadzor temperature in vlažnosti: 6 korakov (s slikami)
Video: Два посола рыбы. Форель. Быстрый маринад. Сухой посол. Сельдь. 2024, Julij
Anonim
Nadzor temperature in vlažnosti
Nadzor temperature in vlažnosti
Nadzor temperature in vlažnosti
Nadzor temperature in vlažnosti

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

Orodja in deli
Orodja in deli
Orodja in deli
Orodja in deli
Orodja in deli
Orodja in deli
Orodja in deli
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

Izdelava tiskanega vezja
Izdelava tiskanega vezja
Izdelava tiskanega vezja
Izdelava tiskanega vezja
Izdelava tiskanega vezja
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

Izdelava ohišja
Izdelava ohišja
Izdelava ohišja
Izdelava ohišja
Izdelava ohišja
Izdelava ohišja
Izdelava ohišja
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.

Slika
Slika

Nato postavite tiskano vezje nanj, senzor pa je že pritrjen na glavo zatiča.

Slika
Slika

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.

Slika
Slika

Nato vstavite vtičnico, nanjo pritrdite nekaj žic in druge konce spajkajte na tiskano vezje. Dobra ideja bi bila tudi uporaba nekaterih hladilnih cevi.

Slika
Slika

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.

Slika
Slika

5. korak: Nastavitev strežnika

Nastavitev strežnika
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

Programiranje ESP8266
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: