Taula de continguts:

Sensor de temperatura de la xarxa domèstica: 7 passos
Sensor de temperatura de la xarxa domèstica: 7 passos

Vídeo: Sensor de temperatura de la xarxa domèstica: 7 passos

Vídeo: Sensor de temperatura de la xarxa domèstica: 7 passos
Vídeo: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Desembre
Anonim
Sensor de temperatura de la xarxa domèstica
Sensor de temperatura de la xarxa domèstica

Què cal saber per fer aquest projecte:

Heu de conèixer: - Algunes habilitats electròniques (soldadura)

- Linux

- ID Arduino

(haureu d'actualitzar taules addicionals a l'IDE:

- Actualització / programació d'una placa ESP mitjançant l'IDE Arduino.

(hi ha alguns bons tutorials disponibles al web)

Això es pot fer amb un Arduino Uno o mitjançant un FTDI (adaptador USB a sèrie).

Vaig utilitzar el meu Uno perquè no tenia cap port sèrie al meu PC ni tenia un FTDI

Pas 1: aneu a comprar

Anar de compres
Anar de compres

Què necessitaràs perquè això passi?

Per al sensor digital de temperatura i humitat:

- Ja sigui una taula de tall o una alternativa com a prototip de PCB, soldadura, soldador …

- Una mica de filferro

- dos saltadors

- una resistència de 10 k Ohm

- un ESP12F (també poden funcionar altres models …)

- un DHT22 (una mica més car que el DHT11 però més precís)

- 3 bateries recarregables AA i un suport per a bateries

- una petita caixa de plàstic per posar-hi el projecte

- En una etapa posterior, planejo afegir un HT7333 amb dos condensadors de 10uF entre la bateria i l’ESP

per estabilitzar la tensió d’entrada (VCC) al 3.3V recomanat, però també per protegir l’ESP de sobretensions.

Per a la part Xarxa:

- La vostra xarxa WiFi a casa

Per a la part del servidor:

- Qualsevol sistema basat en Linux (sempre activat!)

He utilitzat un Raspberry Pi (que també faig servir com a servidor per a les meves càmeres IP exteriors).

- compilador gcc per compilar el vostre codi de servidor

- paquet rrdtool per emmagatzemar les dades i generar gràfics

- apache (o un altre servidor web)

El vostre ordinador o portàtil preferit amb IDE Arduino.

Pas 2: Configuració i fons

Configuració i antecedents
Configuració i antecedents

En aquesta versió d’un sensor de temperatura i humitat connectat per WiFi (per no dir IOT), he utilitzat un ESP12F, un DHT22 i un suport de bateria de 3 AA amb bateries recarregables.

Cada 20 minuts, l'ESP pren una mesura del DHT22 i l'envia a un servidor (un Raspberry Pi) mitjançant UDP a la meva xarxa WiFi de casa. Un cop enviats els mesuraments, l’ESP s’endormeix. Això vol dir que només el rellotge en temps real del mòdul es manté alimentat, cosa que suposa un estalvi d’energia increïble. Durant uns 5 segons, el mòdul requereix uns 100 mA, i durant els 20 minuts de profunditat només 150 uA.

No volia utilitzar cap servei basat en Internet perquè tinc el meu Raspberry Pi que sempre està activat i d'aquesta manera vaig tenir el plaer d'escriure també la part del servidor.

Al servidor (un Raspberry Pi que executa Raspbian) he escrit un simple oient UDP (servidor) que emmagatzema els valors en un RRD simple. (Base de dades Round Robin mitjançant RRDtool de Tobias Oetiker.)

L’avantatge de RRDtool és que creeu la base de dades una vegada i la mida continua sent la mateixa. Tanmateix, no cal que tingueu un servidor de base de dades (com mySQLd) en segon pla. RRDtool us proporciona les eines per crear la base de dades i generar gràfics.

El meu servidor crea els gràfics periòdicament i ho mostra tot en una pàgina http molt senzilla. Puc consultar les meves lectures amb un simple navegador connectant-me al servidor web Apache2 al Raspberry Pi.

Finalment, no tenia un FTDI (USB a sèrie), així que vaig utilitzar el meu Arduino UNO. Cal connectar els TX i els RX i el GND de l’ESP i l’UNO. (Ja ho sé, el vostre instint pot dir-vos que creueu RX i TX … també ho heu provat, no funciona.)

No he fet una conversió de nivell (UNO: High = 5V, però ESP és bàsicament un dispositiu de 3,3V … Hi ha alguns FTDI agradables al mercat on fins i tot podeu seleccionar el vostre nivell alt per ser de 5 o 3,3V.

El meu circuit funciona amb 3 bateries recarregables AA, de manera que de fet 3 X 1,2V. En una fase posterior, tinc la intenció de posar un HT7333 entre la bateria i el circuit per seguretat; les bateries acabades de carregar podrien tenir més d’1,2 V i l’ESP s’hauria d’alimentar amb mín. 3V i màx. 3,6V. També si decideixo, en un moment de debilitat, posar bateries alcalines (3 X 1,5V = 4,5V), el meu ESP no es fregirà.

També vaig pensar en fer servir un panell solar de 10 cm x 10 cm, però no valia la pena. Fent 3 mesures per hora (bàsicament 3x 5 segons @ 100mA com a màxim i la resta del temps @ 100uA), espero alimentar el meu circuit durant 1 any amb les mateixes bateries recarregables.

Pas 3: la part Arduino - ESP12

L'Arduino - ESP12 Part
L'Arduino - ESP12 Part
L'Arduino - ESP12 Part
L'Arduino - ESP12 Part

Vaig fer aquest projecte en diferents passos.

Hi ha diversos enllaços que us ajuden a importar l’ESP12 (també conegut com ESP8266) a l’IDE Arduino. (Vaig haver d'utilitzar la versió 2.3.0 en lloc de l'última a causa d'un error que podria haver estat resolt mentrestant …)

Vaig començar connectant l'ESP, a través del meu Arduino UNO (només s'utilitzava com a pont entre el meu PC mitjançant USB a la sèrie) a la interfície sèrie ESP. Hi ha instruccions separades que ho expliquen.

Al meu projecte acabat, vaig deixar els cables per connectar-me a la sèrie en cas que mai hagués de solucionar problemes. RX

A continuació, heu de connectar el vostre ESP12 de la següent manera:

Espinetes ESP …

GND UNO GND

RX UNO RX

TX UNO TX

EN VCC

GPIO15 GND

Inicialment, vaig intentar alimentar el meu ESP des del 3.3V a l’ONU, però ràpidament vaig passar a alimentar el meu ESP amb una font d’alimentació de banc, però també podeu utilitzar la bateria.

GPIO0 El vaig connectar amb un pont a GND per permetre intermitent (= programar) l'ESP.

Primera prova: deixeu el pont obert i engegueu un monitor sèrie a l'IDE Arduino (a 115200 baud!).

Cicle de potència de l’ESP, hauríeu de veure alguns personatges d’escombraries i després un missatge com:

Llest Ai-Thinker Technology Co. Ltd

En aquest mode, l'ESP actua una mica com un mòdem passat de moda. Cal utilitzar comandes AT.

Proveu les ordres següents:

AT + RST

i les dues ordres següents

AT + CWMODE = 3

D'acord

AT + CWLAP

Això us proporcionaria una llista de totes les xarxes WiFi de la zona.

Si això funciona, esteu llest per al següent pas.

Pas 4: provar l'ESP com a client de protocol de temps de xarxa (NTP)

Prova de l'ESP com a client de protocol de temps de xarxa (NTP)
Prova de l'ESP com a client de protocol de temps de xarxa (NTP)
Prova de l'ESP com a client de protocol de temps de xarxa (NTP)
Prova de l'ESP com a client de protocol de temps de xarxa (NTP)

A l'IDE Arduino, a Fitxer, Exemples, ESP8266WiFi, carregueu NTPClient.

Es necessiten retocs menors perquè funcioni; heu d'introduir el vostre SSID i la contrasenya de la vostra xarxa WiFi.

Ara col·loqueu el pont, en curt de GPIO0 a GND.

Potencieu el cicle de l'ESP i pengeu l'esbós a l'ESP.

Després de la compilació, s'hauria de començar la càrrega a l'ESP. El LED blau de l'ESP parpellejarà ràpidament mentre es descarrega el codi.

Vaig notar que havia de jugar una mica amb reiniciar l'IDE i reiniciar l'ESP abans que la càrrega funcionés.

Abans de començar a compilar / penjar l'esbós, assegureu-vos de tancar la consola sèrie (= monitor sèrie) perquè això us impedirà fer la càrrega.

Un cop realitzada la pujada, podeu tornar a obrir el monitor sèrie per veure l'ESP amb eficàcia i obtenir el temps d'Internet.

Genial, heu programat el vostre ESP, heu connectat al vostre WiFi i heu obtingut el temps d’Internet.

El següent pas provarem el DHT22.

Pas 5: provar el sensor DHT22

Prova del sensor DHT22
Prova del sensor DHT22

Ara cal un cablejat addicional.

Pins DHT … Connecteu el pin 1 (a l'esquerra) del sensor a VCC (3,3 V)

Connecteu el pin 2 ESP GPIO5 (DHTPIN a l'esbós)

Connecteu el pin 4 (a la dreta) del sensor a TERRA

Connecteu una resistència de 10K des del pin 2 (dades) al pin 1 (potència) del sensor.

De manera similar a la prova NTP, aneu a buscar l'esbós DHTtester i modifiqueu-lo de la següent manera:

#define DHTPIN 5 // hem seleccionat GPIO5 per connectar-nos al sensor # define DHTTYPE DHT22 // ja que estem utilitzant un DHT22 però aquest codi / biblioteca també és adequat per a DHT11

Una vegada més, tanqueu el monitor sèrie, engegueu el cicle de l’ESP i compileu i feu flash l’ESP.

Si tot va bé, hauríeu de veure com apareixen les mesures al monitor sèrie.

Podeu jugar una mica amb el sensor. Si hi respireu, veureu com augmenta la humitat.

Si teniu un llum d’escriptori (sense LED), podeu brillar al sensor per escalfar-lo una mica.

Genial! Ara dues grans parts del sensor funcionen.

Al següent pas comentaré el codi final.

Pas 6: ajuntar-ho …

Unint-ho …
Unint-ho …

De nou alguns cables addicionals … això és per fer possible el DeepSleep.

Recordeu, DeepSleep és una funció increïble per als dispositius IoT.

Tanmateix, si el sensor està connectat per DeepSleep, pot ser que sigui difícil reprogramar l'ESP, de manera que farem una altra connexió de pont entre

GPIO16-RST.

Sí, ha de ser GPIO16, perquè aquest és el GPIO que està connectat per activar el dispositiu quan el rellotge en temps real s'apaga després del DeepSleep.

Mentre proveu, podeu decidir fer un DeepSleep de 15 segons.

Quan estava depurant, passava el pont a GPIO0 per poder fer flash el meu programa.

En acabar la descàrrega, mouria el pont a GPIO16 perquè DeepSleep funcionés.

El codi de l’ESP s’anomena TnHclient.c

Heu de canviar el SSID, la contrasenya i l'adreça IP del servidor.

Hi ha línies de codi addicionals que podeu utilitzar per solucionar problemes o provar la vostra configuració.

Pas 7: la cara del servidor

El costat del servidor de les coses
El costat del servidor de les coses
El costat del servidor de les coses
El costat del servidor de les coses

És un malentès comú que UDP no és fiable i TCP és …

Això és tan ximple com dir que un martell és més útil que un tornavís. Simplement són diferents eines molt útils i tots dos tenen el seu ús.

Per cert, sense UDP Internet no funcionaria … DNS es basa en UDP.

Per tant, vaig triar UDP perquè és molt lleuger, fàcil i ràpid.

Acostumo a pensar que la meva connexió WiFi és molt fiable, de manera que el client enviarà com a màxim 3 paquets UDP si el reconeixement "D'acord". no es rep.

El codi C del servidor TnHser es troba al fitxer TnHServer.c.

Hi ha diversos comentaris al codi que ho expliquen.

Necessitarem algunes eines addicionals al servidor: rrdtool, apache i potser tcpdump.

Per instal·lar rrdtool a Raspbian, podeu instal·lar el paquet així: apt-get install rrdtool

Si necessiteu depurar el trànsit de la xarxa, tcpdump és útil per a apt-get install tcpdump

Necessitava un servidor web per poder utilitzar un navegador per consultar els gràfics: apt-get install apache2

He utilitzat aquesta eina: https://rrdwizard.appspot.com/index.php per obtenir l'ordre per crear la base de dades Round Robin. Només heu d’executar-ho una vegada (si ho aconseguiu bé la primera vegada).

rrdtool create TnHdatabase.rrd --start now-10s

--pas "1200"

'DS: Temperatura: CALIBRE: 1200: -20,5: 45,5'

'DS: Humitat: CALIBRE: 1200: 0: 100.0'

'RRA: MITJÀ: 0,5: 1: 720'

'RRA: MITJÀ: 0,5: 3: 960'

"RRA: MITJÀ: 0,5: 18: 1600"

Finalment, faig servir una entrada crontab per reiniciar el TnHserver cada dia a mitjanit. Executo el TnHserver com a usuari normal (és a dir, NO root) com a precaució de seguretat.

0 0 * * * / usr / bin / pkill TnHserver; / home / usuari / bin / TnHserver> / dev / null 2> & 1

Podeu comprovar que el TnHserver s’executa fent això

$ ps -elf | grep TnHserver

i podeu comprovar que està escoltant paquets al port 7777 fent-ho

$ netstat -anu

Connexions actives a Internet (servidors i establerts)

Proto Recv-Q Send-Q Adreça local Estat de l'adreça estrangera

udp 0 0 0.0.0.0:7777 0.0.0.0:*

Finalment CreateTnH_Graphs.sh.txt és un exemple de script per generar els gràfics. (Genero els scripts com a root, potser no voldreu fer això.)

Mitjançant una pàgina web molt senzilla podeu veure els gràfics des de qualsevol navegador de la vostra xarxa domèstica.

Recomanat: