Sisukord:

Temperatuuri ja niiskuse monitor: 6 sammu (piltidega)
Temperatuuri ja niiskuse monitor: 6 sammu (piltidega)

Video: Temperatuuri ja niiskuse monitor: 6 sammu (piltidega)

Video: Temperatuuri ja niiskuse monitor: 6 sammu (piltidega)
Video: Металл больше не нужен! Теперь есть ФИБЕРГЛАСС своими руками в домашних условиях. 2024, Juuli
Anonim
Temperatuuri ja niiskuse monitor
Temperatuuri ja niiskuse monitor
Temperatuuri ja niiskuse monitor
Temperatuuri ja niiskuse monitor

Selles juhendis näitan teile, kuidas oma elutoa jaoks temperatuuri ja niiskuse monitori teha. Seadmel on ka WiFi -võimalused, et logida andmeid kaugserverisse (nt Raspberry Pi) ja pääseda neile hiljem lihtsa veebiliidese kaudu juurde.

Seadme põhiosad on ESP8266 mikrokontroller, DHT11 temperatuuri- ja niiskusandur ning 16x4 tähemärgiline LCD. Projekt on täielikult avatud lähtekoodiga, nii et laadige korpuse skemaatilised, tahvli paigutuse ja kujundusfailid alla ning tehke endale meelepäraseid muudatusi.

Samm: tööriistad ja osad

Tööriistad ja osad
Tööriistad ja osad
Tööriistad ja osad
Tööriistad ja osad
Tööriistad ja osad
Tööriistad ja osad
Tööriistad ja osad
Tööriistad ja osad

Monitori ehitamiseks vajate järgmisi osi:

1 x ESP-12F [2 €]-minu teada on ESP-12E ja ESP-12F põhimõtteliselt identsed, selle erinevusega, et ESP-12F-l on parem antenn.

1 x DHT11 temperatuuri ja niiskuse andur [0,80 €] - DHT22 töötab ka, kuid korpuse 3D -mudelis tuleb teha mõned muudatused, ka DHT22 on natuke kallim.

1 x 16x4 sümboliga LCD 5V [3.30 €] - Jah, teil on vaja 5 V, kuna trükkplaat on konstrueeritud nii, et LCD saab toite otse 5 V pingeregulaatorist. Seda tehti selleks, et vähendada pingeregulaatori koormust, aga ka seetõttu, et 5 V kuvarid kipuvad olema odavamad. Kuid ärge muretsege, kuigi ESP8266 töötab 3,3 V pingel, töötab see endiselt suurepäraselt.

1 x LD1117V33 SMD pingeregulaator, tuntud ka kui LD33 (SOT223 pakett) [0,80 €]

1 x 100nF keraamiline SMD kondensaator (pakend 0603)

1 x 10uF tantaali SMD kondensaator (3528 pakendis)

1 x 10K SMD takisti (pakett 0805)

1 x 10K trimmeripott (läbiv auk)

1 x 47Ω SMD takisti (pakett 0805) - see on mõeldud ainult LCD -ekraani taustvalgustuse voolu piiramiseks. Katsetage julgelt erinevate takistuste väärtustega ja valige soovitud intensiivsus.

1 x SMD hetkeline lüliti [0,80 €] - kasutasin just seda, kuid sama jalajäljega saate kasutada mis tahes soovitud hetkelist lülitit. Samuti suutsin eBayst leida samu lüliteid odavamalt, hankides rohkem kui ühe.

1 x 5,5x2,1 mm alalisvoolu pistik (paneelikinnitus) [0,50 €] - sellel, mida kasutasin, on paneeli väljalõike läbimõõt 8 mm ja pikkus 9 mm. Selle saab hõlpsasti eBayst leida, otsides "Paneelile paigaldatav DC -pistik" (vt lisatud pilti).

1 x 2,54 mm (100 ml) 40-kontaktiline isast tihvti päis (läbiv auk)

1 x 2,54 mm (100 ml) 40-kontaktiline mehaaniliselt töödeldud naissoost otsik (läbiv auk)

1 x 2,54 mm (100mil) hüppaja - see on sama, mida arvutite emaplaatidel kasutatakse.

4 x M3 8mm poldid

4 x M3 4x4mm keermestatud lisad - neid saab hõlpsasti leida, otsides eBays otsingut "M3 Press -In Brass Copper Inserts" (vt lisatud pilti).

4 x M2 12mm poldid

4 x M2 mutrit

1 x USB tüüp A kuni 5,5x2,1 mm alalisvoolu pistikupesa [1,5 €] - see võimaldab teie seadet toita kas tavalisest telefonilaadijast või peaaegu igast USB -pordiga arvutist. Seade tõmbab ainult 300mA halvimal juhul ja keskmiselt 250mA, nii et isegi USB 2.0 port teeb seda.

1 x trükkplaat - plaadi paksus ei ole kriitiline, seega valige lihtsalt 1,6 mm, mis on tavaliselt enamiku trükkplaatide tootjate jaoks kõige odavam variant.

3 x keermejuhtme tükki (igaüks umbes 60 mm)

3 x kuumtöötlustoru (igaüks umbes 10 mm)

Ja järgmised tööriistad:

Jootekolb

USB -jadamuundur - seda vajate ESP8266 programmeerimiseks tahvlil.

Phillipsi kruvikeeraja ja/või kuuskantvõti - sõltuvalt kasutatavate kruvide tüübist.

3D -printer - kui teil pole 3D -printerile juurdepääsu, saate alati kasutada üldist plastikust projektikarpi ja teha Dremeli abil väljalõiked ise. Sellise kasti minimaalsed sisemõõdud peavad olema 24 mm kõrgused, 94 mm pikad ja 66 mm laiad. Samuti peate LCD-ekraani paigaldamiseks kasutama 8 mm M2 eraldusvõimalusi.

Dremel - vajalik ainult siis, kui te ei vali 3D -prinditud korpust.

2. samm: trükkplaadi valmistamine

PCB valmistamine
PCB valmistamine
PCB valmistamine
PCB valmistamine
PCB valmistamine
PCB valmistamine

Esimene samm on PCB valmistamine. Seda saate teha, söövitades selle ise või minnes lihtsalt oma lemmikplaatide tootja veebisaidile ja esitades tellimuse. Kui te ei plaani plaadi paigutuses muudatusi teha, võite lihtsalt haarata ZIP -faili, mis sisaldab sellel etapil lisatud gerberi faile, ja saata see otse tootjale. Kui soovite siiski muudatusi teha, leiate siit KiCAD -i skemaatilised ja tahvli paigutuse failid.

Pärast seda, kui olete laudadele käed külge pannud, on aeg komponendid jootma hakata. See peaks olema üsna lihtne, kuid tuleb märkida mõningaid asju. Esiteks ärge jätkake trükkplaadi jootmist LCD -päises, seda tuleb korpuse kavandamise tõttu teha lõpliku kokkupaneku ajal. Kui teete oma ümbrise, siis ignoreerige seda nõu.

U3 pistik on koht, kuhu DHT11 andur ühendatakse. Ideaalis peaksite selleks kasutama 90 ° nurga all töödeldud naissoost tihvtipead. Aga kui mulle meeldib, ei suuda te seda leida, hankige lihtsalt sirge ja painutage seda ise. Kui teete seda hiljem, on ka DHT11 juhtmed natuke lühikesed, nii et peate mõned laiendused jootma. Tihvtipea ja anduri vaheline kaugus pärast ühendamist peab olema umbes 5 mm.

Põhjus, miks soovite kasutada masintöödeldud tihvtipead, on see, et augud on väiksemad kui tavalised naastpistikute otsikud. Niisiis võivad anduri juhtmed seal tihedalt istuda, luues kindla ühenduse. Kuid võite proovida ka DHT11 jootmist isase tihvti päise tüki külge ja ühendada see sel viisil tavalise nurga all oleva naistepistikuga, mis peaks sama hästi toimima.

3. samm: korpuse valmistamine

Korpuse tegemine
Korpuse tegemine
Korpuse tegemine
Korpuse tegemine
Korpuse tegemine
Korpuse tegemine
Korpuse tegemine
Korpuse tegemine

Nüüd, kui trükkplaat on joodetud, on aeg ümbris valmistada. Trükkida tuleb kaks erinevat osa, korpuse põhiosa ja kaas. Kaanel on ka kinnitusavad seinale kinnitamiseks.

Mõlemaid osi saab printida tavalise 0,4 mm otsikuga 0,2 mm kihi kõrgusel, minu puhul oli trükiaeg mõlema osa jaoks kokku umbes 4 tundi. Kaanel ei ole vaja toestada korpuse põhiosa, peamiselt kruvipesade all oleva osa jaoks. Pärast printimist olge tugede eemaldamisega väga ettevaatlik, õnnestus mul seda tehes üks LCD-ekraanist lahti saada ja pidin selle superliimiga tagasi kleepima.

Korpus on kavandatud FreeCAD -ile, nii et kui soovite muudatusi teha, peaks see olema üsna lihtne. Korpuse printimiseks mõeldud STL -failid ja FreeCAD -disainifailid leiate veebisaidilt Thingiverse.

4. samm: monitori kokkupanek

Kui korpus on trükitud, on aeg kõik kokku panna. Kõigepealt asetage LCD korpusesse ja libistage seda vasakule, nii et selle ja anduri ava vahele jääb tühimik.

Pilt
Pilt

Seejärel asetage trükkplaat selle peale, andur on juba kinnitatud tihvti päisele.

Pilt
Pilt

Pärast seda lükake andur auku, libistage LCD tagasi asendisse ja sisestage trükkplaat tihvti päisele. Kinnitage nüüd LCD ekraan M2 mutrite ja poltidega ning jootke trükkplaat tihvti päisele.

Pilt
Pilt

Seejärel pange toitepistik oma kohale, kinnitage sellele mõned juhtmed ja jootke nende teised otsad trükkplaadile. Mõne soojuskaitsetoru kasutamine siin oleks samuti hea mõte.

Pilt
Pilt

Viimane samm on metallist keermestatud vahetükkide paigaldamine, nii et kaant saab M3 poltidega oma kohale keerata. Sel eesmärgil peate nende kuumutamiseks kasutama jootekolvi, nii et neid saab aukudesse suruda. Seda juhendit saate vaadata, kui vajate lisateavet metallniitide lisamise kohta oma 3D -väljatrükkidele.

Pilt
Pilt

Samm: serveri seadistamine

Serveri seadistamine
Serveri seadistamine

Enne püsivara ESP8266 -sse üleslaadimist tuleb veel üks asi ära teha, milleks on serveri seadistamine seadme vastuvõetud andmete logimiseks. Sel eesmärgil saate kasutada peaaegu kõiki soovitud Linuxi masinaid, alates eravõrgu Raspberry Pi -st kuni DigitalOceeni tilgani. Ma läksin hiljem, kuid protsess on peaaegu sama, olenemata sellest, mida valite.

Apache, MySQL (MariaDB) ja PHP installimine

Kõigepealt peame seadistama LAMPi või teisisõnu installima serverisse Apache, MySQL (MariaDB) ja PHP. Selleks peate kasutama oma distributsiooni paketihaldurit, näite huvides kasutan apt, mis on paketihaldur, mida kasutab peaaegu iga Debianil põhinev distributsioon, sealhulgas Raspbian.

sudo apt värskendus

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

Kui olete pärast seda teinud oma serveri IP -aadressi brauseri aadressiribale, peaksite nägema Apache vaikelehte.

Andmebaasi seadistamine

Nüüd vajame andmete registreerimiseks andmebaasi. Esmalt looge MySQL -iga root, käivitades

sudo mysql

Ja looge andmebaas ja sellele juurdepääsetav kasutaja järgmiselt:

CREATE DATABASE `andurid`

KASUTA andureid; CREATE TABLE "temperatuur" ("id" bigint (20) NOT NULL AUTO_INCREMENT, "client_id" smallint (6) NOT NULL, "value" smallint (6) NOT NULL, "created_at" ajatempel NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (" id`)) MOOTOR = InnoDB; CREATE TABLE "niiskus" ("id" bigint (20) NOT NULL AUTO_INCREMENT, "client_id" smallint (6) NOT NULL, "value" smallint (6) NOT NULL, "created_at" ajatempel NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (" id`)) MOOTOR = InnoDB; CREATE USER '[kasutajanimi]'@'localhost' TUNNISTAJA '[parool]'; ANNE KÕIK PRIVILEGEED "anduritele".* "Sensoritele"@"localhost"; VÄLJU

Asendage kindlasti [kasutajanimi] ja [parool] MySQL -i kasutaja tegeliku kasutajanime ja parooliga, mis teile meeldib. Samuti pidage neid märkmeid, sest vajate neid järgmiseks sammuks.

Logimise ja veebiliidese skriptide konfigureerimine

Muutke kataloogi/var/www/html, mis on Apache vaikimisi virtuaalse hosti dokumendi juur, kustutage vaikimisi veebilehte sisaldav HTML -fail ja laadige selle sisse logimis- ja veebiliidese skriptid.

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

Nüüd muutke logimisskripti nano abil, sudo nano log.php

Peate asendama [kasutajanimi] ja [parool] MySQL -i kasutajanime ja parooliga, mille lõite eelmisel etapil. Samuti asendage [kliendi võti] kordumatu stringiga ja märkige see üles. Seda kasutatakse paroolina, et monitor saaks ennast serverisse autentida.

Lõpuks redigeerige index.php nano abil, sudo nano index.php

ja asendage [kasutajanimi] ja [parool] MySQL -i kasutajanime ja parooliga, nagu tegite logimisskriptiga.

HTTPS -i seadistamine (valikuline)

See võib olla valikuline, kuid kui ühendus ESP8266 ja serveri vahel on Interneti kaudu, on tungivalt soovitatav kasutada mõnda krüptimist.

Kahjuks ei saa te lihtsalt sertifikaadi saamiseks midagi sellist kasutada nagu Let's Encrypt. Selle põhjuseks on asjaolu, et vähemalt kirjutamise ajal nõuab ESP8266 HTTP -klienditeek endiselt sertifikaadi sõrmejälje lisamist teise argumendina http.begin () kutsumisel. See tähendab, et kui kasutate midagi Let's Encrypt sarnast, peate püsivara kiibile iga 3 kuu tagant uuesti edastama, et pärast iga uuendamist sertifikaadi sõrmejälge värskendada.

Üks võimalus sellest oleks luua ise allkirjastatud sertifikaat, mis aegub väga pika aja pärast (nt 10 aastat), ja hoida logimisskripti oma virtuaalsel hostil koos oma alamdomeeniga. Nii saate veebiliidese andmetele juurde pääsemiseks eraldi alamdomeenil, mis kasutab usaldusväärse asutuse nõuetekohast sertifikaati. Sel juhul ei ole ise allkirjastatud sertifikaadi kasutamine turvaprobleem, kuna selle kordumatult identifitseeriva sertifikaadi sõrmejälg kodeeritakse püsivarasse ja sertifikaati hakkab kasutama ainult ESP8266.

Enne alustamist eeldan, et teil on juba domeeninimi ja teil on võimalik sellele alamdomeene luua. Niisiis, 10 aasta pärast aeguva sertifikaadi loomiseks käivitage järgmine käsk ja vastake küsimustele.

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

Kuna see on ise allkirjastatud sertifikaat, pole enamikul küsimustel vastamine liiga oluline, välja arvatud küsimus, mis küsib üldnime. Siin peate esitama täieliku alamdomeeni, mida selle virtuaalse hosti jaoks kasutatakse. Siin antud alamdomeen peab olema sama serverinimega, mille määrate hiljem oma virtuaalse hosti konfiguratsioonis.

Seejärel looge uus virtuaalse hosti konfiguratsioon, sudo nano /etc/apache2/sites-available/sensors-ssl.conf

järgmise sisuga, Serverinimi [alamdomeen] DocumentRoot/var/www/sensorid SSLEngine ON SSLCertificateKeyFile /etc/ssl/private/sensors.key SSLCertificateFile /etc/ssl/certs/sensors.crt Valikud +FollowSymlinks -Indexes AllowOverride All ErrorLog $ {APIRE_LOG error-ssl.log CustomLog $ {APACHE_LOG_DIR} /sensors-access-ssl.log kombineeritud

Jällegi asendage kindlasti [alamdomeen] sama alamdomeeniga, mida kasutasite sertifikaadiga. Siinkohal peate keelama Apache vaikimisi virtuaalse hosti, sudo a2dissite 000-vaikimisi

muutke dokumendi juurkataloogi nime, sudo mv/var/www/html/var/www/sensorid

ja lõpuks lubage uus virtuaalne hosti ja taaskäivitage Apache, sudo a2ensite sensorid-ssl

sudo systemctl taaskäivitage apache2

Viimane asi, mida tuleb teha, on hankida sertifikaadi sõrmejälg, sest peate seda kasutama püsivara koodis.

openssl x509 -noout -sõrmejälg -sha1 -inform pem -in /etc/ssl/certs/sensors.crt

Http.begin () eeldab, et sõrmejälje baitide vahelised eraldajad on tühikud, nii et enne koodis kasutamist peate koolonid tühikutega asendama.

Kui te ei soovi veebiliidese seadistamiseks ise allkirjastatud sertifikaati uue alamdomeeni seadistamiseks ja uue virtuaalse hosti konfiguratsiooni loomiseks, sudo nano /etc/apache2/sites-available/sensors-web-ssl.conf

järgmise sisuga, Serverinimi [alamdomeen] DocumentRoot/var/www/sensorid #SSLEngine ON #SSLCertificateFile /etc/letsencrypt/live/[subdomain]/cert.pem #SSLCertificateKeyFile /etc/letsencrypt/live/[subdomeeni]/privkey.pem #SSLC /letsencrypt/live/[subdomain]/chain.pem Valikud +FollowSymlinks -Indexes AllowOverride All ErrorLog $ {APACHE_LOG_DIR} /sensors-web-error-ssl.log CustomLog $ {APACHE_LOG_DIR} /sensors-web-access-ssl.

Asendage kindlasti [alamdomeen] alamdomeeniga, mille olete veebiliidese jaoks seadistanud. Seejärel lubage uus virtuaalne hosti, taaskäivitage Apache, installige certbot ja hankige uue alamdomeeni sertifikaat saidilt Let's Encrypt, sudo a2ensite andurid-web-ssl

sudo systemctl taaskäivitage apache2 sudo apt värskendus sudo apt install certbot sudo certbot certonly --apache -d [alamdomeen]

Pärast sertifikaadi saamist muutke virtuaalse hosti konfiguratsiooni uuesti, et tühistada read SSLEngine, SSLCertificateFile, SSLCertificateKeyFile ja SSLCertificateChainFile ning taaskäivitage Apache.

Ja nüüd saate kasutada esimest alamdomeeni, mis kasutab ise allkirjastatud sertifikaati andmete saatmiseks ESP8266-st serverisse, teist aga oma brauserist veebiliidesele pääsemiseks. Certbot hoolitseb ka selle eest, et teie sertifikaat uuendatakse automaatselt iga 3 kuu tagant, kasutades süsteemitaimerit, mis peaks olema vaikimisi lubatud.

Samm: ESP8266 programmeerimine

ESP8266 programmeerimine
ESP8266 programmeerimine

Lõpuks jääb üle vaid laadida püsivara mikrokontrollerile. Selleks laadige siit alla püsivara lähtekood ja avage see Arduino IDE abil. Peate asendama [SSID] ja [Password] oma WiFi -võrgu tegeliku SSID ja parooliga. Samuti peate sprintf -funktsiooni kõnes asendama [kliendi ID] ja [kliendivõtme] nendega, mida kasutasite serveri PHP -skriptis. Lõpuks peate asendama [Host] domeeninime või serveri IP -aadressiga. Kui kasutate HTTPS -i, peate http:begin () funktsioonikõne teise argumendina esitama ka oma sertifikaadi sõrmejälje. Sertifikaadi sõrmejälje hankimise kohta selgitasin eelmise sammu jaotises „HTTPS -i seadistamine”.

Järgmisena, kui te pole seda veel teinud, peate Arduino IDE juhatusehalduri abil installima kogukonna tuumapaketi ESP8266. Kui see on tehtud, valige tahvlite menüüst NodeMCU 1.0 (ESP-12E moodul). Järgmisena peate raamatukoguhalduri abil installima SimpleDHT -kogu. Lõpuks klõpsake IDE akna vasakus ülanurgas nuppu Kinnita, et veenduda, et kood kompileerib ilma vigadeta.

Ja nüüd on lõpuks aeg põletada püsivara mikrokontrollerile. Selleks liigutage hüppaja JP1 paremal, nii et ESP8266 GPIO0 ühendatakse maaga, mis võimaldab programmeerimisrežiimi. Seejärel ühendage oma USB jadamuutmete abil jadamuunduritega programmeerimispäisele, mis on tähistatud kui P1. Programmeerimispäise tihvt 1 on maandatud, tihvt 2 on ESP8266 vastuvõtutihvt ja tihvt 3 edastus. ESP8266 vastuvõtmist on vaja USB -jadajada muunduri edastamiseks, edastamiseks vastuvõtjale ja loomulikult maapinnale.

Lõpuks lülitage seade toiteallikaga sisse 5 V, kasutades USB -alalisvoolu pesakaablit ja ühendage USB jadamuundur arvutiga. Nüüd, kui avate IDE tööriistade menüü, peaksite nüüd nägema virtuaalset jadaporti, kuhu ESP8266 on ühendatud. Vajutage lihtsalt nuppu Laadi üles ja ongi kõik! Kui kõik läks ootuspäraselt, peaksite seadme LCD -ekraanilt nägema temperatuuri ja niiskuse näitu. Pärast seda, kui ESP8266 on teie võrguga ühenduse loonud ja serveriga suhtlema hakanud, peaks ekraanil ilmuma ka praegune kuupäev ja kellaaeg.

Mõne tunni pärast, kui server on kogunud palju andmeid, peaksite temperatuuri ja niiskuse graafikuid nägema, külastades aadressi http (s): // [host] /index.php?client_id= [kliendi ID]. Kus [host] on kas teie serveri IP -aadress või veebiliidese jaoks kasutatav alamdomeen ja [kliendi ID] seadme kliendi -ID, mis peaks olema 1, kui jätaksite selle vaikeväärtusele.

Soovitan: