Tartalomjegyzék:

Hőmérséklet és páratartalom monitor: 6 lépés (képekkel)
Hőmérséklet és páratartalom monitor: 6 lépés (képekkel)

Videó: Hőmérséklet és páratartalom monitor: 6 lépés (képekkel)

Videó: Hőmérséklet és páratartalom monitor: 6 lépés (képekkel)
Videó: Инкубация утиного яйца 2024, November
Anonim
Hőmérséklet és páratartalom monitor
Hőmérséklet és páratartalom monitor
Hőmérséklet és páratartalom monitor
Hőmérséklet és páratartalom monitor

Ebben az utasításban megmutatom, hogyan készíthet saját hőmérséklet- és páratartalom -figyelőt a nappalijához. A készülék WiFi képességekkel is rendelkezik, hogy naplózza az adatokat egy távoli szerveren (pl. Raspberry Pi), és később hozzáférjen egy egyszerű webes felületen keresztül.

A készülék fő részei egy ESP8266 mikrokontroller, egy DHT11 hőmérséklet- és páratartalom -érzékelő és egy 16 x 4 karakteres LCD. A projekt teljesen nyílt forráskódú, ezért bátran töltse le a ház vázlatos, tábla elrendezési és tervezési fájljait, és végezzen tetszés szerinti változtatásokat.

1. lépés: Eszközök és alkatrészek

Eszközök és alkatrészek
Eszközök és alkatrészek
Eszközök és alkatrészek
Eszközök és alkatrészek
Eszközök és alkatrészek
Eszközök és alkatrészek
Eszközök és alkatrészek
Eszközök és alkatrészek

A monitor elkészítéséhez a következő alkatrészekre lesz szüksége:

1 x ESP-12F [2 €]-Amennyire én tudom, az ESP-12E és az ESP-12F alapvetően azonosak, azzal a különbséggel, hogy az ESP-12F jobb antennával rendelkezik.

1 x DHT11 hőmérséklet- és páratartalom -érzékelő [0,80 €] - A DHT22 is működik, de néhány változtatást el kell végezni a ház 3D -s modelljén, a DHT22 is valamivel drágább.

1 x 16x4 karakteres LCD 5V [3,30 €] - Igen, szüksége lesz egy 5 V -osra, mivel a NYÁK -ot úgy tervezték, hogy az LCD -t közvetlenül a feszültségszabályozó helyett 5 V -ról táplálják. Ez azért történt, hogy csökkentse a feszültségszabályozó terhelését, de azért is, mert az 5 V -os kijelzők általában olcsóbbak. De ne aggódjon, annak ellenére, hogy az ESP8266 3.3V -on működik, még mindig jól fog működni.

1 x LD1117V33 SMD feszültségszabályozó, más néven LD33 (SOT223 csomag) [0,80 €]

1 x 100nF kerámia SMD kondenzátor (0603 csomag)

1 x 10uF Tantalum SMD kondenzátor (3528 csomag)

1 x 10K SMD ellenállás (0805 csomag)

1 x 10K vágóedény (átmenő lyuk)

1 x 47Ω SMD ellenállás (0805 csomag) - Ez csak az LCD háttérvilágításának áramának korlátozására szolgál. Bátran kísérletezzen különböző ellenállási értékekkel, és válassza ki a kívánt intenzitást.

1 x SMD pillanatkapcsoló [0,80 €] - Én ezt használtam, de bármilyen pillanatnyi kapcsolót használhat, azonos nyomással. Ugyanazt a kapcsolót olcsóbban is megtaláltam az eBay -en, ha többet szereztem be.

1 x 5,5x2,1 mm DC jack (panelra szerelhető) [0,50 €] - Az általam használt készülék 8 mm -es panelkivágással rendelkezik és 9 mm hosszú. Könnyen megtalálható az eBay -en a "Panel Mount DC Jack" keresésével (lásd a mellékelt képet).

1 x 2.54mm (100mil) 40-tűs dugófej (átmenő lyuk)

1 x 2,54 mm (100mil) 40 tűs megmunkált női tűfej (átmenő lyuk)

1 x 2,54 mm (100mil) jumper - Ugyanaz, mint a számítógépes alaplapokon.

4 x M3 8 mm -es csavar

4 x M3 4x4 mm -es menetes betétek - Ezek könnyen megtalálhatók az "M3 préselt sárgaréz rézbetétek" keresésével az eBay -en (lásd a mellékelt képet).

4 x M2 12 mm -es csavar

4 x M2 anya

1 db A típusú USB - 5,5x2,1 mm -es egyenáramú dugaszkábel [1,5 €] - Ez lehetővé teszi a készülék tápellátását akár szabványos telefon töltőjéről, akár nagyjából minden USB -porttal rendelkező számítógépről. A készülék csak 300mA legrosszabb esetet és 250mA -t vesz fel átlagosan, így még egy USB 2.0 port is megteszi.

1 x NYÁK - A lemez vastagsága nem kritikus, ezért csak 1,6 mm -t válasszon, ami általában a legolcsóbb megoldás a legtöbb NYÁK -gyártónál.

3 db sodrott huzal (kb. 60 mm)

3 db darab hőre zsugorodó cső (egyenként kb. 10 mm)

És a következő eszközök:

Forrasztópáka

USB -soros átalakító - Erre szüksége lesz az ESP8266 programozásához a táblán.

Phillips csavarhúzó és/vagy hatlapfejű kulcs - A használt csavarok típusától függően.

3D nyomtató - Ha nincs hozzáférése 3D nyomtatóhoz, akkor mindig használhat általános műanyag projektdobozt, és saját maga készítheti el a kivágásokat egy Dremel készülékkel. Az ilyen doboz minimális belső mérete 24 mm magas, 94 mm hosszú és 66 mm széles. Ezenkívül 8 mm-es M2 állványokat kell használnia az LCD felszerelésére.

Dremel - Csak akkor szükséges, ha nem a 3D nyomtatott házat választja.

2. lépés: A NYÁK elkészítése

A NYÁK elkészítése
A NYÁK elkészítése
A NYÁK elkészítése
A NYÁK elkészítése
A NYÁK elkészítése
A NYÁK elkészítése

Az első lépés a NYÁK elkészítése. Ezt megteheti úgy, hogy saját maga maratja, vagy csak felkeresi kedvenc PCB -gyártójának webhelyét, és megrendel. Ha nem tervez változtatásokat a tábla elrendezésén, akkor egyszerűen megragadhatja az ebben a lépésben csatolt gerber fájlokat tartalmazó ZIP -fájlt, és közvetlenül elküldheti a gyártónak. Ha változtatni szeretne, a KiCAD sematikus és táblázatos elrendezési fájljai itt találhatók.

Miután kézbe vette a táblákat, ideje forrasztani az alkatrészeket. Ennek nagyjából egyszerűnek kell lennie, de néhány dolgot meg kell jegyezni. Először is, ne folytassa a forrasztást a nyomtatott áramkörön az LCD fejlécen, ezt a burkolat tervezése miatt a végső összeszerelés során kell elvégezni. Ha saját burkolatot készít, nyugodtan hagyja figyelmen kívül ezt a tanácsot.

Az U3 csatlakozó a DHT11 érzékelő csatlakoztatásának helye. Ideális esetben erre a célra 90 ° -os szögben megmunkált női csapszeget kell használni. De ha kedvelsz engem, akkor nem találsz egyet, csak szerezz egyenest és hajlítsd meg magad. Ha később teszi, a DHT11 vezetékei is rövidek lesznek, ezért néhány bővítményt be kell forrasztani. A tűcsatlakozó és a csatlakoztatott érzékelő közötti távolságnak körülbelül 5 mm -nek kell lennie.

Az oka annak, hogy megmunkált csapszeget szeretne használni, az az oka, hogy a lyukak kisebbek, mint a szokásos hüvelyi csapok. Tehát az érzékelő vezetékei szorosan ott ülhetnek, és szilárd kapcsolatot hoznak létre. De megpróbálhatja forrasztani a DHT11 -et egy darab hüvelyes fejfejre, és így csatlakoztathatja egy szokásos, szögletes női tűfejhez, amelynek ugyanúgy működnie kell.

3. lépés: A burkolat elkészítése

A burkolat elkészítése
A burkolat elkészítése
A burkolat elkészítése
A burkolat elkészítése
A burkolat elkészítése
A burkolat elkészítése
A burkolat elkészítése
A burkolat elkészítése

Most, hogy a NYÁK forrasztott, ideje elkészíteni a házat. Két különböző alkatrészt kell kinyomtatni, a ház fő testét és a fedelet. A fedél rögzítőfuratokkal is rendelkezik a falra való rögzítéshez.

Mindkét alkatrészt szabványos 0,4 mm -es fúvókával lehet kinyomtatni 0,2 mm rétegmagasságban, az én esetemben a nyomtatási idő körülbelül 4 óra volt mindkét résznél együtt. A fedél nem igényel támasztást a ház fő részéhez, de főleg a csavaros foglalatok alatti részhez. Nyomtatás után legyen nagyon óvatos a támaszok eltávolításával, miközben sikerült megtörnöm az LCD-k egyik állványát, és szuperragasztóval vissza kellett ragasztanom.

A burkolatot FreeCAD -re tervezték, így ha bármilyen változtatást szeretne végrehajtani, annak nagyjából egyszerűnek kell lennie. A ház nyomtatásához használt STL fájlok, valamint a FreeCAD tervezési fájlok megtalálhatók a Thingiverse webhelyen.

4. lépés: A monitor összeszerelése

A burkolat kinyomtatásával ideje mindent összeszedni. Először helyezze az LCD -t a tokba, és csúsztassa balra, így rés lesz közte és az érzékelő nyílása között.

Kép
Kép

Ezután helyezze rá a NYÁK -ot, az érzékelőt pedig már a csapfejre rögzítve.

Kép
Kép

Ezt követően nyomja be az érzékelőt a lyukba, csúsztassa vissza az LCD -t a helyére, és helyezze be a NYÁK -ot a csapfejbe. Most rögzítse a helyére az LCD -t M2 anyákkal és csavarokkal, és forrasztja a NYÁK -t a csapfejre.

Kép
Kép

Ezután helyezze a hálózati csatlakozót a helyére, csatlakoztasson hozzá néhány vezetéket, és forrasztja a másik végét a NYÁK -ra. Néhány heatshrink cső használata itt is jó ötlet lenne.

Kép
Kép

Az utolsó lépés a fém menetes betétek felszerelése, hogy a fedél M3 csavarokkal a helyére csavarható legyen. Ebből a célból a forrasztópáka segítségével fel kell melegíteni őket, így a lyukakba tolhatók. Megtekintheti ezt az oktatóanyagot, ha további információra van szüksége a fémszálak hozzáadásával a 3D nyomatokhoz.

Kép
Kép

5. lépés: A kiszolgáló beállítása

A szerver beállítása
A szerver beállítása

Mielőtt feltöltené a firmware -t az ESP8266 készülékre, még egy dolgot el kell végeznie, azaz szervert kell beállítania az eszköz által fogadott adatok naplózásához. Erre a célra nagyjából bármilyen Linux gépet használhat, a Raspberry Pi -től a magánhálózatán keresztül a DigitalOcean cseppig. Később mentem, de a folyamat nagyjából ugyanaz, függetlenül attól, hogy mit választ.

Az Apache, a MySQL (MariaDB) és a PHP telepítése

Először be kell állítanunk a LAMP -ot, vagy más szóval telepítenünk kell az Apache -t, a MySQL -t (MariaDB) és a PHP -t a szerverre. Ehhez a disztribúció csomagkezelőjét kell használnia, a példa kedvéért az apt -t fogom használni, amely a csomagkezelő, amelyet szinte minden Debian -alapú disztribúció használ, beleértve a Raspbian -t is.

sudo apt frissítés

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

Ha ez megtörtént, ha a szerver IP -címét a böngésző címsorába helyezi, akkor látnia kell az Apache alapértelmezett oldalát.

Az adatbázis beállítása

Most szükségünk van egy adatbázisra az adatok naplózásához. Először csatlakozzon a MySQL -hez rootként futtatva, sudo mysql

Az alábbi módon hozza létre az adatbázist és egy hozzáféréssel rendelkező felhasználót:

CREATE DATABASE `érzékelők`

USE "érzékelők"; CREATE TABLE "hőmérséklet" ("id" bigint (20) NOT NULL AUTO_INCREMENT, "client_id" smallint (6) NOT NULL, "value" smallint (6) NOT NULL, "created_at" időbélyeg NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (" id`)) MOTOR = InnoDB; CREATE TABLE "páratartalom" ("id" bigint (20) NOT NULL AUTO_INCREMENT, "client_id" smallint (6) NOT NULL, "value" smallint (6) NOT NULL, "created_at" időbélyeg NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (" id`)) MOTOR = InnoDB; FELHASZNÁLÓ LÉTREHOZÁSA '[felhasználónév]'@'localhost' AZONOSÍTVA: „[jelszó]”; MINDEN KIVÁLASZT TARTALMAZZON AZ „érzékelőkön”.* AZ „érzékelőkre”@„localhost”; KIJÁRAT

Győződjön meg arról, hogy a [felhasználónév] és a [jelszó] helyére a kívánt felhasználónév és jelszó tartozik. Ezenkívül jegyezze fel őket, mert szüksége lesz rájuk a következő lépésben.

A naplózási és webes felület parancsfájlok konfigurálása

Váltson a/var/www/html könyvtárba, amely az Apache alapértelmezett virtuális gazdagépének gyökere, törölje az alapértelmezett weboldalt tartalmazó HTML -fájlt, és töltse le a naplózási és webes felület parancsfájljait.

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

Most szerkessze a naplózási szkriptet nano használatával, sudo nano log.php

A [felhasználónév] és a [jelszó] helyére le kell cserélnie az előző lépésben létrehozott MySQL felhasználó felhasználónevét és jelszavát. Ezenkívül cserélje le az [ügyfélkulcsot] egyedi karakterlánccal, és jegyezze fel. Ezt jelszóként fogják használni, hogy a monitor hitelesíteni tudja magát a szerverre.

Végül szerkessze az index.php -t nano -val, sudo nano index.php

és cserélje ki a [felhasználónév] és a [jelszó] nevét a MySQL felhasználó felhasználónevére és jelszavára, ahogy azt a naplózási parancsfájlnál tette.

A HTTPS beállítása (opcionális)

Ez opcionális, de ha az ESP8266 és a szerver közötti kapcsolat az interneten keresztül van, erősen ajánlott valamilyen titkosítást használni.

Sajnos nem mehet csak tovább, és használhat valamit, például a Let's Encrypt -et a tanúsítvány megszerzéséhez. Ennek oka az, hogy legalább az írás idején az ESP8266 HTTP klienskönyvtára továbbra is megköveteli a tanúsítvány ujjlenyomatának megadását második argumentumként a http.begin () meghívásakor. Ez azt jelenti, hogy ha valamit a Let's Encrypt -hez hasonlóan használ, akkor a firmware -t 3 havonta vissza kell állítania a chipre, hogy minden megújítás után frissítse a tanúsítvány ujjlenyomatát.

Ennek egyik módja egy önaláírt tanúsítvány létrehozása, amely nagyon hosszú idő után (például 10 év) lejár, és a naplózási szkriptet saját virtuális gazdagépén tartja, saját aldomainjével. Ily módon külön aldomainnel rendelkezhet a webes interfésszel az adatok eléréséhez, amely megbízható tanúsítványt használ egy megbízható hatóságtól. Az önaláírt tanúsítvány használata ebben az esetben nem jelent biztonsági problémát, mivel a tanúsítvány ujjlenyomata, amely egyedileg azonosítja, keményen be lesz kódolva a firmware-be, és a tanúsítványt csak az ESP8266 fogja használni.

Mielőtt elkezdenénk, feltételezem, hogy már rendelkezik domain névvel, és aldomaint hozhat létre rajta. Tehát egy 10 év után lejáró tanúsítvány létrehozásához futtassa a következő parancsot, és válaszoljon a kérdésekre.

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

Mivel ez egy önaláírt tanúsítvány, a legtöbb kérdésre adott válasz nem számít túl sokat, kivéve a közös nevet kérő kérdést. Itt kell megadnia a teljes aldomaint, amelyet ehhez a virtuális gazdagéphez fog használni. Az itt megadott aldomainnek meg kell egyeznie a szervernévvel, amelyet később állít be a virtuális gép konfigurációjában.

Ezután hozzon létre egy új virtuális gazdagép -konfigurációt, sudo nano /etc/apache2/sites-available/sensors-ssl.conf

a következő tartalommal, ServerName [aldomain] DocumentRoot/var/www/sensors SSLEngine ON SSLCertificateKeyFile /etc/ssl/private/sensors.key SSLCertificateFile /etc/ssl/certs/sensors.crt Beállítások +FollowSymlinks -Indexes AllowOverride All ErrorLog $ {APIRACHLOG error-ssl.log CustomLog $ {APACHE_LOG_DIR} /sensors-access-ssl.log együtt

Ismét győződjön meg arról, hogy lecseréli az [aldomaint] ugyanarra az altartományra, amelyet a tanúsítvánnyal használt. Ezen a ponton le kell tiltania az Apache alapértelmezett virtuális gazdagépét, sudo a2dissite 000-default

módosítsa a dokumentum gyökérkönyvtárának nevét, sudo mv/var/www/html/var/www/sensors

és végül engedélyezze az új virtuális gazdagépet, és indítsa újra az Apache -t, sudo a2ensite sensors-ssl

sudo systemctl indítsa újra az apache2 programot

Az utolsó dolog, amit meg kell tenni, a tanúsítvány ujjlenyomatának beszerzése, mert azt a firmware -kódban kell használni.

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

A http.begin () elvárja, hogy az ujjlenyomat bájtjai közötti elválasztók szóközök legyenek, ezért a kettőspontot szóközre kell cserélnie, mielőtt a kódban használja.

Ha most nem szeretne önaláírt tanúsítványt használni a webes felület beállításához, és hozzon létre egy új altartományt, és hozzon létre egy új virtuális gazdagép-konfigurációt, sudo nano /etc/apache2/sites-available/sensors-web-ssl.conf

a következő tartalommal, ServerName [aldomain] DocumentRoot/var/www/sensors #SSLEngine ON #SSLCertificateFile /etc/letsencrypt/live/[subdomain]/cert.pem #SSLCertificateKeyFile /etc/letsencrypt/live/[subdomain]/privkey.pemateSSLLC /letsencrypt/live/[subdomain]/chain.pem Beállítások +FollowSymlinks -Indexes AllowOverride All ErrorLog $ {APACHE_LOG_DIR} /sensors-web-error-ssl.log CustomLog $ {APACHE_LOG_DIR} /sensors-web-access-ssl.

Feltétlenül cserélje ki az [aldomaint] arra az aldomainre, amelyet a webes felülethez beállított. Ezután engedélyezze az új virtuális gazdagépet, indítsa újra az Apache -t, telepítse a certbot programot, és szerezzen be egy tanúsítványt az új altartományhoz a Let's Encrypt webhelyről.

sudo a2ensite sensor-web-ssl

sudo systemctl restart apache2 sudo apt frissítés sudo apt install certbot sudo certbot certonly --apache -d [aldomain]

A tanúsítvány beszerzése után szerkessze újra a virtuális gép konfigurációját az SSLEngine, SSLCertificateFile, SSLCertificateKeyFile és SSLCertificateChainFile sorok megjegyzésének megszüntetéséhez, és indítsa újra az Apache programot.

Most pedig használhatja az első aldomaint, amely az önaláírt tanúsítványt használja az adatok elküldésére az ESP8266-ról a szerverre, míg a másodikat a böngészőből a webes felület eléréséhez. A Certbot gondoskodik arról is, hogy háromhavonta automatikusan megújítsuk a Titkosítsuk a titkosítást tanúsítványt, rendszerezett időzítő használatával, amelyet alapértelmezés szerint engedélyezni kell.

6. lépés: Az ESP8266 programozása

Az ESP8266 programozása
Az ESP8266 programozása

Végül már csak a firmware -t kell betölteni a mikrokontrollerre. Ehhez töltse le innen a firmware forráskódját, és nyissa meg az Arduino IDE használatával. Az [SSID] és a [Password] jelszót le kell cserélnie a WiFi hálózat tényleges SSID -jére és jelszavára. Ezenkívül le kell cserélnie az [Ügyfél -azonosítót] és az [Ügyfélkulcsot] a sprintf függvényhívásban azokra, amelyeket a kiszolgáló PHP -parancsfájljában használt. Végezetül le kell cserélnie a [gazdagépet] a szerver tartománynevére vagy IP -címére. Ha HTTPS -t használ, akkor a http.begin () függvényhívás második argumentumaként meg kell adnia a tanúsítvány ujjlenyomatát is. Az előző lépés "HTTPS beállítása" szakaszában elmagyaráztam, hogyan szerezheti be a tanúsítvány ujjlenyomatát.

Ezt követően, ha még nem tette meg, telepítenie kell az ESP8266 Community alapcsomagot az Arduino IDE Board Manager segítségével. Ha ez megtörtént, válassza ki a NodeMCU 1.0 (ESP-12E modul) elemet a táblák menüjéből. Ezután telepítenie kell a SimpleDHT könyvtárat a Library Manager használatával. Végül nyomja meg az IDE ablak bal felső sarkában található Verify gombot, hogy megbizonyosodjon arról, hogy a kód hibátlanul áll össze.

És most végre elérkezett az idő, hogy a firmware -t a mikrokontrollerre írjuk. Ehhez mozgassa a JP1 jumpert a jobb oldalon, így az ESP8266 GPIO0 csatlakozik a földhöz, amely lehetővé teszi a programozási módot. Ezután csatlakoztassa az USB -t a soros átalakítóhoz jumper vezetékek segítségével a P1 címkével ellátott programozási fejléchez. A programozási fejléc 1. csapja földelt, a 2. tüske az ESP8266 vevőcsapja, a 3. tű pedig az adás. Szüksége van az ESP8266 vételére az USB -soros átalakító átviteléhez, az átvitelhez a vevőhöz és természetesen a földhöz.

Végezetül, tápellátás 5V -ról az USB -DC jack kábel segítségével, és csatlakoztassa az USB -t a soros átalakítóhoz a számítógéphez. Most láthatja a virtuális soros portot, amelyhez az ESP8266 csatlakozik, amint megnyitja az Eszközök menüt az IDE -n. Most nyomja meg a Feltöltés gombot, és kész! Ha minden a várakozások szerint ment, akkor látnia kell a hőmérséklet és páratartalom értékét az eszköz LCD -jén. Miután az ESP8266 csatlakozik a hálózathoz, és kommunikálni kezd a szerverrel, az aktuális dátum és idő is megjelenik a kijelzőn.

Néhány óra elteltével, amikor a szerver jó mennyiségű adatot gyűjtött össze, láthatja a hőmérséklet- és páratartalom -diagramokat a http (s): // [host] /index.php?client_id= [ügyfél -azonosító] címen. Ahol a [gazdagép] vagy a szerver IP -címe, vagy az aldomain, amelyet a webes felülethez használ, és [ügyfél -azonosító] az eszköz ügyfél -azonosítója, amely ha az alapértelmezett értéket hagyja, akkor 1 -nek kell lennie.

Ajánlott: