Taula de continguts:

Monitor de temperatura i humitat: 6 passos (amb imatges)
Monitor de temperatura i humitat: 6 passos (amb imatges)

Vídeo: Monitor de temperatura i humitat: 6 passos (amb imatges)

Vídeo: Monitor de temperatura i humitat: 6 passos (amb imatges)
Vídeo: Маленький лисенок вышел к людям за помощью 2024, Desembre
Anonim
Monitor de temperatura i humitat
Monitor de temperatura i humitat
Monitor de temperatura i humitat
Monitor de temperatura i humitat

En aquest instructiu us mostraré com fer el vostre propi monitor de temperatura i humitat per a la vostra sala d’estar. El dispositiu també disposa de funcions WiFi, amb el propòsit d’enregistrar les dades en un servidor remot (per exemple, un Raspberry Pi) i accedir-hi més endavant mitjançant una senzilla interfície web.

Les parts principals del dispositiu són un microcontrolador ESP8266, un sensor de temperatura i humitat DHT11 i un LCD de 16x4 caràcters. El projecte és completament de codi obert, així que no dubteu a descarregar els esquemes, la disposició de la placa i els fitxers de disseny del recinte i fer els canvis que vulgueu.

Pas 1: eines i peces

Eines i peces
Eines i peces
Eines i peces
Eines i peces
Eines i peces
Eines i peces
Eines i peces
Eines i peces

Per construir el monitor, necessitareu les parts següents:

1 x ESP-12F [2 €]: pel que sé ESP-12E i ESP-12F són bàsicament idèntics, amb la diferència que ESP-12F té una antena millor.

1 x Sensor de temperatura i humitat DHT11 [0,80 €]: el DHT22 també funcionarà, però caldrà fer alguns canvis al model 3D de la carcassa; el DHT22 també és una mica més car.

1 x 16x4 LCD de caràcters 5V [3,30 €]: sí, en necessitareu un de 5V, ja que la placa està dissenyada de manera que la pantalla LCD s'alimentarà directament de 5V en lloc del regulador de voltatge. Això es va fer per reduir la càrrega del regulador de tensió, però també perquè les pantalles de 5V solen ser més econòmiques. Però no us preocupeu, tot i que l’ESP8266 funciona a 3,3 V, encara funcionarà bé.

1 regulador de voltatge SMD LD1117V33, també conegut com LD33 (paquet SOT223) [0,80 €]

1 x condensador de ceràmica 100nF SMD (paquet 0603)

1 condensador SMD de tantal de 10 uF (paquet 3528)

1 resistència SMD de 10 k (paquet 0805)

1 testera de 10 K (forat passant)

1 x 47Ω Resistència SMD (paquet 0805): només serveix per limitar el corrent que va a la llum de fons de la pantalla LCD. No dubteu a experimentar amb diferents valors de resistència i trieu la intensitat que preferiu.

1 commutador momentani SMD [0,80 €]: el que he fet servir és aquest, però podeu utilitzar qualsevol commutador momentani que vulgueu amb la mateixa petjada. També vaig poder trobar els mateixos interruptors a eBay per obtenir menys d’un.

1 x Jack DC de 5,5x2,1 mm (muntatge al tauler) [0,50 €]: el que he utilitzat té un diàmetre de tall de panell de 8 mm i una longitud de 9 mm. Es pot trobar fàcilment a eBay si cerqueu "Connector DC Mount Mount" (vegeu la imatge adjunta).

1 x 2,54 mm (100 mil) capçal de pin masculí de 40 pins (forat passant)

1 x 2,54 mm (100 mil) capçal de pin femella mecanitzat de 40 pins (forat passant)

1 x 2.54mm (100mil) Jumper: és el mateix que els que s'utilitzen a les plaques base de l'ordinador.

4 x perns M3 de 8 mm

4 insercions roscades M3 4x4mm: es poden trobar fàcilment cercant "Insercions de coure de coure premsades M3" a eBay (vegeu la imatge adjunta).

4 x perns M2 de 12 mm

4 x femelles M2

1 x Cable d'endoll USB de tipus A a 5,5x2,1mm DC [1,5 €]: permetrà alimentar el dispositiu des d'un carregador de telèfon estàndard o gairebé qualsevol ordinador amb port USB. El dispositiu només atrau 300 mA en els pitjors casos i 250 mA de mitjana, de manera que fins i tot un port USB 2.0 ho farà.

1 x PCB: el gruix del tauler no és crític, de manera que cal fer 1,6 mm, que sol ser l’opció més barata amb la majoria de fabricants de PCB.

3 peces de filferro varat (aproximadament 60 mm cadascuna)

3 x peces de tubs termorretractables (uns 10 mm cadascun)

I les eines següents:

Soldador

Convertidor USB a sèrie: ho necessitareu per programar l’ESP8266 a la placa.

Tornavís Phillips i / o clau hexagonal: depèn del tipus de cargols que utilitzeu.

Impressora 3D: si no teniu accés a una impressora 3D, sempre podeu utilitzar una caixa genèrica de projecte de plàstic i fer els retalls vosaltres mateixos amb un Dremel. Les dimensions interiors mínimes per a aquesta caixa hauran de ser de 24 mm d’alçada, 94 mm de longitud i 66 mm d’amplada. També haureu d’utilitzar separadors M2 de 8 mm per muntar la pantalla LCD.

Dremel: només cal si no preferiu el recinte imprès en 3D.

Pas 2: fabricació del PCB

Fabricació del PCB
Fabricació del PCB
Fabricació del PCB
Fabricació del PCB
Fabricació del PCB
Fabricació del PCB

El primer pas és fabricar el PCB. Podeu fer-ho gravant-lo vosaltres mateixos o simplement accedint al lloc web del vostre fabricant de PCB preferit i realitzant una comanda. Si no teniu previst fer cap canvi al disseny del tauler, podeu agafar el fitxer ZIP que conté els fitxers gerber adjunts en aquest pas i enviar-lo directament al fabricant. En cas que vulgueu fer canvis, podeu trobar aquí els fitxers esquemàtics i de disseny del tauler KiCAD.

Després de posar les mans a les taules, és hora de soldar els components. Això hauria de ser pràcticament senzill, però cal destacar algunes coses. En primer lloc, no procediu a soldar el PCB de la capçalera LCD encara, sinó que s’haurà de fer durant el muntatge final a causa de la forma en què es va dissenyar el recinte. Si esteu creant el vostre propi recinte, no dubteu a ignorar aquest consell.

El connector U3 és on es connectarà el sensor DHT11. Idealment, hauríeu d’utilitzar una capçalera de pin femella mecanitzada en angle de 90 ° per a aquest propòsit. Però si us agrada, no en podeu trobar cap, n'heu d'aconseguir una de recta i doblegueu-la vosaltres mateixos. Si ho feu més endavant, els cables del DHT11 també seran curts, de manera que haureu de soldar algunes extensions. La distància entre el capçal del pin i el sensor un cop connectat ha de ser aproximadament de 5 mm.

La raó per la qual voleu utilitzar un capçal de passador mecanitzat és perquè els forats són més petits en comparació amb els capçals de passador femella normals. Per tant, els cables del sensor poden asseure’s fermament creant una connexió sòlida. Però també podeu provar de soldar el DHT11 en un tros de capçal de pin masculí i connectar-lo d’aquesta manera a un capçal de pin femella en angle normal, que hauria de funcionar igual de bé.

Pas 3: fer el recinte

Realització del recinte
Realització del recinte
Realització del recinte
Realització del recinte
Realització del recinte
Realització del recinte
Realització del recinte
Realització del recinte

Ara que el PCB està soldat, és hora de fer el recinte. Hi ha dues parts diferents que cal imprimir, el cos principal del recinte i la tapa. La tapa també inclou forats de muntatge per fixar-la a la paret.

Les dues parts es poden imprimir amb un broquet estàndard de 0,4 mm a 0,2 mm d’alçada de la capa, per al meu cas, el temps d’impressió va ser d’unes 4 hores per a les dues parts combinades. La tapa no requereix cap suport a la part principal del recinte, però sí, principalment per a la part de sota dels endolls de cargol. Després d’imprimir, heu tingut molt de compte en treure els suports, he aconseguit trencar una de les diferències de la pantalla LCD mentre feia això i he hagut d’enganxar-la amb superglue.

El recinte està dissenyat a FreeCAD, de manera que si voleu fer canvis, hauria de ser pràcticament senzill. Els fitxers STL per imprimir el recinte, així com els fitxers de disseny FreeCAD, es poden trobar a Thingiverse.

Pas 4: Muntatge del monitor

Amb el recinte imprès, és hora de muntar-ho tot. Primer, col·loqueu la pantalla LCD a l'interior de la caixa i feu-la lliscar cap a l'esquerra, de manera que hi haurà un buit entre aquesta i el forat del sensor.

Imatge
Imatge

A continuació, col·loqueu la PCB a sobre, amb el sensor ja connectat a la capçalera del pin.

Imatge
Imatge

Després, empenyeu el sensor cap al forat, feu lliscar la pantalla LCD cap enrere fins a la seva posició i introduïu el PCB a la capçalera del pin. Ara fixeu la pantalla LCD al seu lloc mitjançant cargols i femelles M2 i soldeu el PCB a la capçalera del pin.

Imatge
Imatge

A continuació, poseu la presa de corrent al seu lloc, poseu-hi uns cables i soldeu els altres extrems a la placa. L’ús d’alguns tubs termoretràctils aquí també seria una bona idea.

Imatge
Imatge

El darrer pas és instal·lar les insercions roscades de metall perquè es pugui cargolar la tapa amb els cargols M3. Amb aquest propòsit, haureu d’utilitzar el soldador per escalfar-los, de manera que es puguin empènyer als forats. Podeu fer una ullada a aquesta informació si necessiteu més informació sobre com afegir fils metàl·lics a les impressions 3D.

Imatge
Imatge

Pas 5: Configuració del servidor

Configuració del servidor
Configuració del servidor

Abans de carregar el firmware a l’ESP8266, cal fer una cosa més: configurar un servidor per registrar les dades rebudes pel dispositiu. Amb aquest propòsit, podeu utilitzar gairebé qualsevol màquina Linux que vulgueu, des d'un Raspberry Pi a la vostra xarxa privada fins a una goteta DigitalOcean. Vaig anar amb la versió posterior, però el procés és pràcticament el mateix, independentment del que trieu.

Instal·lació d’Apache, MySQL (MariaDB) i PHP

Primer hem de configurar LAMP, o dit d’una altra manera, instal·lar Apache, MySQL (MariaDB) i PHP al servidor. Per a això, haureu d’utilitzar el gestor de paquets de la vostra distribució, per exemple, utilitzaré apt, que és el gestor de paquets utilitzat per gairebé qualsevol distribució basada en Debian, inclòs Raspbian.

actualització sudo apt

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

Un cop fet això, si col·loqueu l'adreça IP del servidor a la barra d'adreces del navegador, hauríeu de poder veure la pàgina predeterminada d'Apache.

Configuració de la base de dades

Ara necessitem una base de dades per registrar les dades. Primer, connecteu-vos a MySQL com a root executant, sudo mysql

I creeu la base de dades i un usuari amb accés a ella de la manera següent, CREA "sensors" DE LA BASE DE DADES

USAR "sensors"; CREA TAULA `temperature` (` 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 KEY (` id`)) MOTOR = InnoDB; CREA TAULA `humitat` (` 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 KEY (` id`)) MOTOR = InnoDB; CREA USUARI '[nom d'usuari]' @ 'localhost' IDENTIFICAT PER '[contrasenya]'; CONCEDIU TOTS ELS PRIVILEGIS A "sensors". * A "sensors" @ "localhost"; SORTIR

Assegureu-vos de substituir [nom d’usuari] i [contrasenya] pel nom d’usuari i la contrasenya reals per a l’usuari de MySQL que us agradi. A més, tingueu-ne nota perquè els necessitareu per al següent pas.

Configuració dels scripts de registre i interfície web

Canvieu al directori / var / www / html que és l'arrel del document de l'amfitrió virtual per defecte d'Apache, suprimiu el fitxer HTML que conté la pàgina web predeterminada i descarregueu-hi els scripts de registre i interfície web.

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

Ara editeu l'script de registre amb nano, sudo nano log.php

Haureu de substituir el [nom d'usuari] i la [contrasenya] pel nom d'usuari i la contrasenya de l'usuari MySQL que heu creat al pas anterior. A més, substituïu la [clau del client] per una cadena única i preneu-ne nota. S'utilitzarà com a contrasenya perquè el monitor es pugui autenticar al servidor.

Finalment, editeu index.php amb nano, sudo nano index.php

i substituïu el [nom d'usuari] i [contrasenya] pel nom d'usuari i la contrasenya per a l'usuari de MySQL tal com vau fer amb l'script de registre.

Configuració de HTTPS (opcional)

Pot ser que sigui opcional, però si la connexió entre l'ESP8266 i el servidor es realitza a través d'Internet, es recomana utilitzar un xifratge.

Malauradament, no podeu seguir endavant i fer servir alguna cosa com Let’s Encrypt per obtenir un certificat. Això es deu al fet que, com a mínim, en el moment de l'escriptura, la biblioteca client HTTP de l'ESP8266 encara requereix que es proporcioni l'empremta digital del certificat com a segon argument quan es crida a http.begin (). Això vol dir que si utilitzeu alguna cosa com Let’s Encrypt, haureu de tornar a mostrar el microprogramari al xip cada 3 mesos per actualitzar l’empremta digital del certificat després de cada renovació.

Una manera d’evitar-ho seria generar un certificat autosignat que caduqui al cap de molt de temps (per exemple, 10 anys) i mantenir l’escript de registre al seu propi amfitrió virtual amb el seu propi subdomini. D’aquesta manera, podeu tenir la interfície web per accedir a les dades en un subdomini diferent, que utilitzarà un certificat adequat d’una autoritat de confiança. L’ús d’un certificat autofirmat en aquest cas no és un problema de seguretat, ja que l’empremta digital del certificat que l’identifica de manera única es codificarà al firmware i el certificat només l’utilitzarà l’ESP8266.

Abans de començar, assumiré que ja teniu un nom de domini i podeu crear-hi subdominis. Per tant, per generar un certificat que caduqui al cap de 10 anys, executeu l'ordre següent i responeu a les preguntes.

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

Com que es tracta d'un certificat autofirmat, el que responeu a la majoria de preguntes no importa massa, tret de la pregunta que fa el nom comú. Aquí és on haureu de proporcionar el subdomini complet que s’utilitzarà per a aquest amfitrió virtual. El subdomini que donareu aquí haurà de ser el mateix amb el ServerName que definireu més endavant a la configuració de l’amfitrió virtual.

A continuació, creeu una nova configuració d'amfitrió virtual, sudo nano /etc/apache2/sites-available/sensors-ssl.conf

amb els continguts següents, ServerName [subdomini] DocumentRoot / var / www / sensors SSLEngine ON SSLCertificateKeyFile /etc/ssl/private/sensors.key SSLCertificateFile /etc/ssl/certs/sensors.crt Opcions + FollowSymlinks -Indexes AllowOverride All ErrorLog $ {APACHE_LOG_ error-ssl.log CustomLog $ {APACHE_LOG_DIR} /sensors-access-ssl.log combinat

Una vegada més, assegureu-vos de substituir el [subdomini] pel mateix subdomini que heu utilitzat amb el certificat. En aquest moment, haureu de desactivar l'amfitrió virtual per defecte d'Apache, sudo a2dissite 000-default

canvieu el nom del directori arrel del document, sudo mv / var / www / html / var / www / sensors

i finalment habiliteu el nou host virtual i reinicieu Apache, sudo a2ensite sensors-ssl

sudo systemctl reinicia apache2

L’últim que cal fer és obtenir l’empremta digital del certificat, perquè l’haureu d’utilitzar al codi de firmware.

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

Http.begin () espera que els delimitadors entre els bytes de l'empremta digital siguin espais, de manera que haureu de substituir els dos punts per espais abans d'utilitzar-los al codi.

Ara, si no voleu utilitzar un certificat autosignat per a la configuració de la interfície web, configureu un subdomini nou i creeu una nova configuració d'amfitrió virtual, sudo nano /etc/apache2/sites-available/sensors-web-ssl.conf

amb els continguts següents, ServerName [subdomini] DocumentRoot / var / www / sensors #SSLEngine ON #SSLCertificateFile /etc/letsencrypt/live/[subdomain]/cert.pem #SSLCertificateKeyFile /etc/letsencrypt/live/[subdomain[/privkey.pem #SSLCertificate /letsencrypt/live/[subdomain]/chain.pem Opcions + FollowSymlinks -Indexes AllowOverride All ErrorLog $ {APACHE_LOG_DIR} /sensors-web-error-ssl.log CustomLog $ {APACHE_LOG_DIR} /sensors-web-access-ssl

Assegureu-vos de substituir el [subdomini] pel subdomini que heu configurat per a la interfície web. A continuació, activeu el nou host virtual, reinicieu Apache, instal·leu certbot i obteniu un certificat per al nou subdomini de Let's Encrypt, sudo a2ensite sensors-web-ssl

sudo systemctl reinicieu apache2 sudo apt actualització sudo apt install certbot sudo certbot certonly --apache -d [subdomini]

Després d'obtenir el certificat, torneu a editar la configuració de l'amfitrió virtual per descomentar les línies SSLEngine, SSLCertificateFile, SSLCertificateKeyFile i SSLCertificateChainFile i reinicieu l'Apache.

I ara podeu utilitzar el primer subdomini que utilitza el certificat autofirmat per enviar les dades des de l’ESP8266 al servidor, mentre que el segon per accedir a la interfície web des del navegador. Certbot també s'encarregarà de renovar automàticament el certificat Let's Crypt cada 3 mesos, mitjançant un temporitzador systemd que hauria d'estar habilitat per defecte.

Pas 6: Programació de l'ESP8266

Programació de l’ESP8266
Programació de l’ESP8266

Finalment, l’únic que queda per fer és carregar el microprogramari al microcontrolador. Per fer-ho, descarregueu el codi font del firmware des d’aquí i obriu-lo amb l’IDE Arduino. Haureu de substituir [SSID] i [Contrasenya] pel SSID i la contrasenya reals de la vostra xarxa WiFi. També haureu de substituir [Identificador de client] i [Clau de client] a la trucada de funció sprintf per les que heu utilitzat a l'script PHP al servidor. Finalment, haureu de substituir el [Host] pel nom de domini o l'adreça IP del servidor. Si utilitzeu HTTPS, també haureu de proporcionar l'empremta digital del certificat com a segon argument a la funció de trucada de http.begin (). He explicat com obtenir l'empremta digital del certificat a la secció "Configuració HTTPS" del pas anterior.

A continuació, si encara no ho heu fet, haureu d'instal·lar el paquet bàsic de la comunitat ESP8266 mitjançant el gestor de la placa de l'IDE Arduino. Un cop fet això, seleccioneu el NodeMCU 1.0 (mòdul ESP-12E) al menú de les taules. A continuació, haureu d’instal·lar la biblioteca SimpleDHT mitjançant el gestor de biblioteques. Finalment, premeu el botó Verifica a l'extrem superior esquerre de la finestra IDE per assegurar-vos que el codi es compila sense errors.

I ara, per fi, és hora de gravar el microprogramari al microcontrolador. Per fer-ho, moveu el pont JP1 a la dreta, de manera que el GPIO0 de l’ESP8266 estarà connectat a terra que permetrà el mode de programació. A continuació, connecteu el vostre USB al convertidor de sèrie mitjançant cables de pont a la capçalera de programació etiquetada com a P1. El pin 1 de la capçalera de programació està mòlt, el pin 2 és el pin de recepció de l’ESP8266 i el pin 3 el transmissor. Necessiteu la recepció de l’ESP8266 per anar a la transmissió del vostre convertidor USB a sèrie, la transmissió a la recepció i, per descomptat, la terra a terra.

Finalment, alimenteu el dispositiu amb 5V mitjançant el cable de la presa USB a DC i connecteu el convertidor USB a sèrie a l’ordinador. Ara hauríeu de poder veure el port sèrie virtual on està connectat l’ESP8266 tan bon punt obriu el menú d’eines del vostre IDE. Ara, només cal que premeu el botó Puja i ja està. Si tot ha anat com s’esperava, hauríeu de poder veure les lectures de temperatura i humitat a la pantalla LCD del dispositiu. Després que l'ESP8266 es connecti a la vostra xarxa i comenci a comunicar-se amb el servidor, la data i l'hora actuals també haurien d'aparèixer a la pantalla.

Després d'unes hores, quan el servidor hagi recopilat una bona quantitat de dades, hauríeu de poder veure els gràfics de temperatura i humitat visitant http (s): // [host] /index.php?client_id= [client id]. On [host] és l'adreça IP del servidor o el subdomini que utilitzeu per a la interfície web i [client id] l'identificador de client del dispositiu que, si el deixeu al seu valor per defecte, hauria de ser 1.

Recomanat: