INHOUDSOPGAWE:

Temperatuur- en humiditeitsmonitor: 6 stappe (met foto's)
Temperatuur- en humiditeitsmonitor: 6 stappe (met foto's)

Video: Temperatuur- en humiditeitsmonitor: 6 stappe (met foto's)

Video: Temperatuur- en humiditeitsmonitor: 6 stappe (met foto's)
Video: Wacht tot je Ziet hoe de Mooiste Tweeling ter Wereld er NU Uitziet! 2024, Julie
Anonim
Temperatuur- en humiditeitsmonitor
Temperatuur- en humiditeitsmonitor
Temperatuur- en humiditeitsmonitor
Temperatuur- en humiditeitsmonitor

In hierdie instruksies gaan ek jou wys hoe om jou eie temperatuur- en humiditeitsmonitor vir jou sitkamer te maak. Die toestel beskik ook oor WiFi -vermoëns om die data op 'n afstandbediener (byvoorbeeld 'n Raspberry Pi) aan te meld en later via 'n eenvoudige webkoppelvlak toegang daartoe te kry.

Die belangrikste dele van die toestel is 'n ESP8266 -mikrobeheerder, 'n DHT11 -temperatuur- en humiditeitsensor en 'n LCD van 16x4. Die projek is ten volle open source, laai dus gerus die skematiese, borduitleg en ontwerp lêers vir die omhulsel af en maak enige veranderinge wat u wil.

Stap 1: Gereedskap en onderdele

Gereedskap en onderdele
Gereedskap en onderdele
Gereedskap en onderdele
Gereedskap en onderdele
Gereedskap en onderdele
Gereedskap en onderdele
Gereedskap en onderdele
Gereedskap en onderdele

Om die monitor te bou, benodig u die volgende dele:

1 x ESP-12F [2 €]-Sover ek weet is ESP-12E en ESP-12F basies identies, met die verskil dat ESP-12F 'n beter antenna het.

1 x DHT11 temperatuur- en humiditeitsensor [0,80 €] - Die DHT22 gaan ook werk, maar daar moet 'n paar veranderinge aangebring word aan die 3D -model van die omhulsel, DHT22 is ook 'n bietjie duurder.

1 x 16x4 karakter LCD 5V [3,30 €] - Ja, u benodig 'n 5V, aangesien die PCB ontwerp is, sodat die LCD direk van 5V aangedryf word eerder as van die spanningsreguleerder. Dit is gedoen om die las op die spanningsreguleerder te verminder, maar ook omdat 5V -skerms geneig is om goedkoper te wees. Maar moenie bekommerd wees nie, alhoewel die ESP8266 op 3.3V werk, sal dit steeds goed werk.

1 x LD1117V33 SMD -spanningsreguleerder, ook bekend as LD33 (SOT223 -pakket) [0,80 €]

1 x 100nF keramiek SMD -kondensator (pakket 0603)

1 x 10uF Tantalum SMD -kondensator (3528 pakket)

1 x 10K SMD -weerstand (0805 -pakket)

1 x 10K Trimmer Pot (Deurgat)

1 x 47Ω SMD -weerstand (pakket 0805) - Dit is slegs om die stroom wat na die agtergrond van die LCD gaan, te beperk. Eksperimenteer gerus met verskillende weerstandswaardes en kies die intensiteit wat u verkies.

1 x SMD Momentary Switch [0,80 €] - Die spesifieke een wat ek gebruik het, is hierdie, maar u kan enige oombliklike skakelaar wat u wil, met dieselfde voetafdruk gebruik. Ek kon ook minder skakelaars op eBay vind deur meer as een te kry.

1 x 5,5 x 2,1 mm DC -aansluiting (paneelhouer) [0,50 €] - Die een wat ek gebruik het, het 'n deursnee van 8 mm en 'n lengte van 9 mm. Dit kan maklik op eBay gevind word deur te soek na 'Panel Mount DC Jack' (sien aangehegte prentjie).

1 x 2,54 mm (100mil) 40-pins penpenkop (deurgat)

1 x 2,54 mm (100mil) 40-pen gemasjineerde vroulike penkop (deurgat)

1 x 2,54 mm (100mil) trui - Dit is dieselfde as dié wat op rekenaar moederborde gebruik word.

4 x M3 8 mm boute

4 x M3 4x4mm skroefdraad -insetsels - dit kan maklik gevind word deur te soek na "M3 Press -In Brass Copper Inserts" op eBay (sien aangehegte prentjie).

4 x M2 12 mm boute

4 x M2 Neute

1 x USB -tipe A tot 5,5 x 2,1 mm DC -aansluitkabel [1,5 €] - Dit stel u toestel in staat om van 'n standaard telefoonlaaier of byna elke rekenaar met 'n USB -poort te werk. Die toestel trek slegs 300mA in die ergste geval en gemiddeld 250mA, so selfs 'n USB 2.0 -poort sal dit doen.

1 x PCB - Die dikte van die bord is nie krities nie, dus kies 1,6 mm, wat gewoonlik die goedkoopste opsie is by die meeste PCB -vervaardigers.

3 x stukke gestrande draad (ongeveer 60 mm elk)

3 x stukke hitte -krimpslang (ongeveer 10 mm elk)

En die volgende gereedskap:

Soldeerbout

USB na Serial Converter - U benodig dit vir die programmering van die ESP8266 op die bord.

Phillips -skroewedraaier en/of heksleutel - Afhangende van die tipe skroewe wat u sal gebruik.

3D -drukker - As u nie toegang tot 'n 3D -drukker het nie, kan u altyd 'n generiese plastiekprojekkas gebruik en self die snitte met 'n Dremel maak. Die minimum binne -afmetings vir so 'n boks moet 24 mm hoog, 94 mm lank en 66 mm breed wees. U moet ook 8 mm M2-afstandpunte gebruik vir die montering van die LCD.

Dremel - slegs nodig as u nie die 3D -gedrukte omhulsel gebruik nie.

Stap 2: Maak die PCB

Die maak van die PCB
Die maak van die PCB
Die maak van die PCB
Die maak van die PCB
Die maak van die PCB
Die maak van die PCB

Die eerste stap is om die PCB te maak. U kan dit doen deur dit self te ets, of deur na die webwerf van u gunsteling PCB -vervaardiger te gaan en 'n bestelling te plaas. As u nie van plan is om die borduitleg te verander nie, kan u eenvoudig die zip -lêer met die gerber -lêers wat by hierdie stap aangeheg is, gryp en dit direk na die vervaardiger stuur. As u egter veranderinge wil aanbring, kan u die KiCAD -skematiese lêers en borduitleglêers hier vind.

Nadat u die planke in die hande gekry het, is dit tyd om die komponente te soldeer. Dit behoort redelik eenvoudig te wees, maar daar is 'n paar dinge wat in ag geneem moet word. Eerstens, moet u nog nie die PCB op die LCD -kop soldeer nie; dit moet tydens die finale vergadering gedoen word weens die manier waarop die omhulsel ontwerp is. As u u eie omhulsel maak, moet u die advies egter nie ignoreer nie.

Die U3 -aansluiting is waar die DHT11 -sensor gekoppel gaan word. Ideaal gesproke moet u 'n 90 ° hoekige, gemasjineerde pin -kopstuk vir hierdie doel gebruik. Maar as jy soos ek nie een kan vind nie, kry net 'n reguit een en buig dit self. As u dit later doen, is die leidrade van die DHT11 ook kort, dus u moet 'n paar uitbreidings soldeer. Die afstand tussen die penkop en die sensor wat een keer gekoppel is, moet ongeveer 5 mm wees.

Die rede waarom u 'n bewerkte penkop wil gebruik, is omdat die gate kleiner is as die gewone penkop. Die leidings van die sensor kan dus styf sit en 'n stewige verbinding skep. Maar u kan ook probeer om die DHT11 op 'n stuk manlike speldkop te soldeer en dit so aan te sluit op 'n gewone hoekige penkop, wat net so goed moet werk.

Stap 3: Maak die omhulsel

Maak die omhulsel
Maak die omhulsel
Maak die omhulsel
Maak die omhulsel
Maak die omhulsel
Maak die omhulsel
Maak die omhulsel
Maak die omhulsel

Noudat die PCB gesoldeer is, is dit tyd om die omhulsel te maak. Daar is twee verskillende dele wat gedruk moet word, die omhulsel en die deksel. Die deksel bevat ook bevestigingsgate om dit aan u muur vas te maak.

Beide dele kan met 'n standaard spuitkop van 0,4 mm op laaghoogte van 0,2 mm gedruk word, vir my geval was die druktyd ongeveer 4 uur vir beide dele saam. Die deksel benodig egter geen ondersteunings nie, maar die hoofdeel van die omhulsel benodig dit, veral vir die deel onder die skroewe. Nadat ek gedruk het, moet u baie versigtig wees met die verwydering van die stutte, maar ek het daarin geslaag om een van die afstandpunte vir die LCD te breek terwyl ek dit gedoen het, en ek moes dit weer met kleefstof plak.

Die omhulsel is ontwerp op FreeCAD, so as u veranderinge wil aanbring, behoort dit redelik eenvoudig te wees. Die STL -lêers vir die druk van die omhulsel sowel as die FreeCAD -ontwerplêers kan op Thingiverse gevind word.

Stap 4: Monteer die monitor

Met die omhulsel gedruk, tyd om alles aanmekaar te sit. Plaas eers die LCD in die omhulsel en skuif dit na links, sodat daar 'n gaping tussen dit en die gat vir die sensor is.

Beeld
Beeld

Plaas die printplaat bo -op, met die sensor reeds op die penkop vasgemaak.

Beeld
Beeld

Druk daarna die sensor in die gat, skuif die LCD terug na sy posisie en plaas die printplaat op die penkop. Maak nou die LCD vas met behulp van M2 moere en boute, en soldeer die PCB op die penkop.

Beeld
Beeld

Plaas dan die kragaansluiting, plaas 'n paar drade daaraan en soldeer die ander ente daarvan aan die printplaat. Die gebruik van 'n paar krimpbuise hier is ook 'n goeie idee.

Beeld
Beeld

Die laaste stap is om die metaaldraad -insetsels te installeer sodat die deksel met M3 -boute vasgeskroef kan word. Om dit op te warm, moet u u soldeerbout gebruik om dit in die gate te druk. U kan hierdie instruksies bekyk as u meer inligting benodig oor die toevoeging van metaaldrade by u 3D -afdrukke.

Beeld
Beeld

Stap 5: Die opstel van die bediener

Die opstel van die bediener
Die opstel van die bediener

Voordat u die firmware na die ESP8266 oplaai, moet u nog iets doen: die opstel van 'n bediener om die data wat deur die toestel ontvang is, te registreer. Vir hierdie doel kan u feitlik enige Linux -masjien gebruik, van 'n Raspberry Pi op u privaat netwerk tot 'n DigitalOcean -druppel. Ek het later gegaan, maar die proses is byna dieselfde, ongeag wat u kies.

Installeer Apache, MySQL (MariaDB) en PHP

Eerstens moet ons LAMP opstel, of met ander woorde Apache, MySQL (MariaDB) en PHP op die bediener installeer. Hiervoor moet u die pakketbestuurder van u distro gebruik, ter wille van die voorbeeld sal ek apt gebruik, wat die pakketbestuurder is wat bykans enige Debian -gebaseerde distro gebruik, insluitend Raspbian.

sudo apt -opdatering

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

As dit klaar is, moet u die standaardbladsy van Apache sien as u die IP -adres van u bediener in die adresbalk van u blaaier plaas.

Die opstel van die databasis

Nou benodig ons 'n databasis om die data aan te meld. Koppel eers aan MySQL as root deur te hardloop, sudo mysql

En skep die databasis en 'n gebruiker met toegang tot dit soos volg, SKEP DATABASIS `sensors`

GEBRUIK `sensors`; CREATE TABLE `temperature` (` id` bigint (20) NOT NULL AUTO_INCREMENT, `client_id` smallint (6) NOT NULL,` value` smallint (6) NOT NULL, `created_at` time stamp NOT NULL STANDAULT CURRENT_TIMESTAMP, PRIMARY KEY (` id`)) ENGINE = InnoDB; SKEP TABEL `humiditeit` (` 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 SLEUTEL (` id`)) ENGINE = InnoDB; SKEP GEBRUIKER '[gebruikersnaam]'@'localhost' IDENTIFIED BY '[password]'; GEEN ALLE VOORREGTE AAN 'sensors'.* AAN 'sensors'@'localhost'; UITGANG

Maak seker dat u [gebruikersnaam] en [wagwoord] vervang met die werklike gebruikersnaam en wagwoord vir die MySQL -gebruiker waarvan u hou. Let ook daarop dat u dit nodig het vir die volgende stap.

Konfigureer die aanteken- en webinterface -skrifte

Verander na die/var/www/html -gids, wat die dokumentwortel van die standaard virtuele gasheer van Apache is, verwyder die HTML -lêer wat die standaardwebblad bevat en laai die aanteken- en webinterface -skrifte daarin af.

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

Wysig nou die aantekenskrip met behulp van nano, sudo nano log.php

U moet die [gebruikersnaam] en [wagwoord] vervang met die gebruikersnaam en wagwoord vir die MySQL -gebruiker wat u in die vorige stap geskep het. Vervang ook die [klientsleutel] met 'n unieke string en let daarop. Dit word as 'n wagwoord gebruik, sodat die monitor homself kan verifieer vir die bediener.

Wysig uiteindelik die index.php met nano, sudo nano index.php

en vervang die [gebruikersnaam] en [wagwoord] met die gebruikersnaam en wagwoord vir die MySQL -gebruiker, net soos u met die aantekenskrif gedoen het.

Stel HTTPS op (opsioneel)

Dit kan opsioneel wees, maar as die verbinding tussen die ESP8266 en die bediener via die internet is, word dit sterk aanbeveel om 'n bietjie kodering te gebruik.

Ongelukkig kan u nie net iets soos Let's Encrypt gebruik om 'n sertifikaat te verkry nie. Dit is omdat die HTTP -kliëntbiblioteek vir die ESP8266 ten minste ten tyde van die skryf nog vereis dat die vingerafdruk van die sertifikaat as 'n tweede argument verskaf moet word wanneer die http.begin () gebel word. Dit beteken dat as u iets soos Let's Encrypt gebruik, u die firmware elke 3 maande na die chip moet herlaai om die vingerafdruk van die sertifikaat na elke hernuwing by te werk.

Om dit te vermy, is om 'n selfondertekende sertifikaat te genereer wat na 'n baie lang tyd (byvoorbeeld 10 jaar) verstryk en die aantekeningskrip op sy eie virtuele gasheer met sy eie subdomein te hou. Op hierdie manier kan u die webkoppelvlak vir toegang tot die data op 'n aparte subdomein hê, wat die regte sertifikaat van 'n betroubare owerheid sal gebruik. Die gebruik van 'n selfondertekende sertifikaat in hierdie geval is nie 'n veiligheidskwessie nie, aangesien die vingerafdruk van die sertifikaat wat dit uniek identifiseer, in die firmware vasgemaak sal word en die sertifikaat slegs deur die ESP8266 gebruik sal word.

Voordat ons begin, neem ek aan dat u reeds 'n domeinnaam besit en dat u daarin subdomeine kan skep. Om die sertifikaat wat na 10 jaar verstryk, te genereer, voer die volgende opdrag uit en beantwoord die vrae.

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

Aangesien dit 'n selfondertekende sertifikaat is, maak dit wat u in die meeste vrae beantwoord nie veel saak nie, behalwe die vraag wat die algemene naam vra. Dit is waar u die volledige subdomein moet verskaf wat vir hierdie virtuele gasheer gebruik gaan word. Die subdomein wat u hier gee, moet dieselfde wees met die bedienernaam wat u later in u virtuele gasheeropset sal stel.

Skep vervolgens 'n nuwe konfigurasie vir virtuele gasheer, sudo nano /etc/apache2/sites-available/sensors-ssl.conf

met die volgende inhoud, Servernaam [subdomein] DocumentRoot/var/www/sensors SSLEngine ON SSLCertificateKeyFile /etc/ssl/private/sensors.key SSLCertificateFile /etc/ssl/certs/sensors.crt Options +FollowSymlinks -Indexes AllowOverride All ErrorLog $ {APACHE_LOG error-ssl.log CustomLog $ {APACHE_LOG_DIR} /sensors-access-ssl.log gekombineer

Weereens, vervang die [subdomein] met dieselfde subdomein as wat u met die sertifikaat gebruik het. Op hierdie stadium moet u die standaard virtuele gasheer van Apache deaktiveer, sudo a2dissite 000-standaard

verander die naam van die dokument wortel gids, sudo mv/var/www/html/var/www/sensors

en uiteindelik die nuwe virtuele gasheer in staat stel en Apache weer begin, sudo a2ensite sensors-ssl

sudo systemctl herbegin apache2

Die laaste ding wat u moet doen, is om die vingerafdruk van die sertifikaat te verkry, want u moet dit in die firmware -kode gebruik.

openssl x509 -geenout -vingerafdruk -sha1 -inform pem -in /etc/ssl/certs/sensors.crt

Die http.begin () verwag dat die skeidingstekens tussen die grepe van die vingerafdruk spasies sal wees, dus moet u die dubbelpunte met spasies vervang voordat u dit in u kode gebruik.

As u nie 'n selfondertekende sertifikaat wil gebruik vir die opstel van 'n nuwe subdomein vir die webkoppelvlak nie en 'n nuwe virtuele gasheer-opset wil skep, sudo nano /etc/apache2/sites-available/sensors-web-ssl.conf

met die volgende inhoud, Servernaam [subdomein] DocumentRoot/var/www/sensors #SSLEngine ON #SSLCertificateFile /etc/letsencrypt/live/[subdomain]/cert.pem #SSLCertificateKeyFile /etc/letsencrypt/live/[subdomain]/privkey.pem #Child /letsencrypt/live/[subdomain]/chain.pem Opsies +FollowSymlinks -Indekses AllowOverride All ErrorLog $ {APACHE_LOG_DIR} /sensors-web-error-ssl.log CustomLog $ {APACHE_LOG_DIR} /sensors-web-access-ssl.log gekombineer

Maak seker dat u die [subdomein] vervang met die subdomein wat u vir die webkoppelvlak opgestel het. Aktiveer dan die nuwe virtuele gasheer, herlaai Apache, installeer certbot en verkry 'n sertifikaat vir die nuwe subdomein van Let's Encrypt, sudo a2ensite sensors-web-ssl

sudo systemctl herlaai apache2 sudo apt update sudo apt installeer certbot sudo certbot certonly --apache -d [subdomein]

Nadat u die sertifikaat gekry het, wysig u die virtuele gasheer -opset weer om die SSLEngine-, SSLCertificateFile-, SSLCertificateKeyFile- en SSLCertificateChainFile -reëls te ontmerk, en begin Apache weer.

En nou kan u die eerste subdomein gebruik wat die selfondertekende sertifikaat gebruik om die data van die ESP8266 na die bediener te stuur, terwyl u die tweede gebruik om toegang tot die webkoppelvlak vanaf u blaaier te verkry. Certbot sal ook sorg dat u ons Let's Encrypt -sertifikaat outomaties elke 3 maande hernu, met behulp van 'n systemtimer wat standaard ingeskakel moet word.

Stap 6: Programmering van die ESP8266

Die programmering van die ESP8266
Die programmering van die ESP8266

Uiteindelik moet u slegs die firmware op die mikrobeheerder laai. Laai die bronkode vir die firmware hier af en maak dit oop met die Arduino IDE. U moet [SSID] en [wagwoord] vervang met die werklike SSID en wagwoord van u WiFi -netwerk. U moet ook [Client ID] en [Client Key] op die sprintf -funksie -oproep vervang met die wat u op die PHP -script op die bediener gebruik het. Uiteindelik moet u die [Host] vervang met die domeinnaam of die IP -adres van die bediener. As u HTTPS gebruik, moet u ook die vingerafdruk van u sertifikaat as 'n tweede argument op die funksie -oproep van http.begin () verskaf. Ek het verduidelik hoe u die vingerafdruk van die sertifikaat kan kry in die gedeelte "HTTPS opstel" op die vorige stap.

As u dit nog nie gedoen het nie, moet u die ESP8266 -gemeenskapspakketpakket installeer met die bestuurder van die Arduino IDE. Sodra dit gedoen is, kies die NodeMCU 1.0 (ESP-12E Module) in die spyskaarte. Vervolgens moet u die SimpleDHT -biblioteek installeer met die biblioteekbestuurder. Laastens, druk die Verify -knoppie in die linker boonste hoek van u IDE -venster om seker te maak dat die kode sonder foute saamgestel word.

En nou is dit uiteindelik tyd om die firmware na die mikrobeheerder te verbrand. Beweeg hiervoor die jumper JP1 aan die regterkant, sodat GPIO0 van die ESP8266 aan die grond gekoppel sal word, wat die programmeermodus moontlik maak. Koppel dan u USB aan die seriële omskakelaar met behulp van jumperdrade aan die programmeerkop wat gemerk is as P1. Die pen 1 van die programmeerkop word gemaal, pen 2 is die ontvangpen van die ESP8266 en pen 3 die sender. U het die ontvangs van die ESP8266 nodig om na die uitsending van u USB na reeksomskakelaar te gaan, na die ontvangs na die ontvang en natuurlik van grond tot grond.

Laastens, skakel die toestel met 5V aan met u USB -na -DC -aansluitkabel en koppel die USB -reeksomskakelaar aan op u rekenaar. U moet nou die virtuele seriële poort waar die ESP8266 gekoppel is, kan sien sodra u die gereedskapskieslys op u IDE oopmaak. Klik nou op die oplaai -knoppie en dit is dit! As alles verloop soos verwag, moet u die temperatuur- en humiditeitsmetings op die LCD van die toestel kan sien. Nadat die ESP8266 met u netwerk verbind is en met die bediener begin kommunikeer, moet die huidige datum en tyd ook op die skerm verskyn.

Na 'n paar uur wanneer die bediener 'n goeie hoeveelheid data versamel het, sou u die temperatuur- en humiditeitskaarte kan sien deur http (s): // [host] /index.php?client_id= [client id] te besoek. Waar [host] óf die IP -adres van u bediener is, óf die subdomein wat u vir die webkoppelvlak gebruik, en [kliënt -ID] die kliënt -ID van die toestel, moet dit 1 wees.

Aanbeveel: