Taula de continguts:

Estació meteorològica WiFi ESP32 amb sensor BME280: 7 passos (amb imatges)
Estació meteorològica WiFi ESP32 amb sensor BME280: 7 passos (amb imatges)

Vídeo: Estació meteorològica WiFi ESP32 amb sensor BME280: 7 passos (amb imatges)

Vídeo: Estació meteorològica WiFi ESP32 amb sensor BME280: 7 passos (amb imatges)
Vídeo: ESP32 DHT Web Server Project 2024, De novembre
Anonim
Image
Image
Estació meteorològica WiFi ESP32 amb sensor BME280
Estació meteorològica WiFi ESP32 amb sensor BME280
Estació meteorològica WiFi ESP32 amb sensor BME280
Estació meteorològica WiFi ESP32 amb sensor BME280

Benvolguts amics, benvinguts a un altre tutorial. En aquest tutorial crearem un projecte d'estació meteorològica habilitada per a Wi-Fi. Utilitzarem el nou i impressionant xip ESP32 per primera vegada juntament amb una pantalla Nextion.

En aquest vídeo, farem això. És un altre projecte d’estació meteorològica que conec, però aquesta vegada fem servir el nou xip ESP32. També fem servir el nou sensor BME280 que mesura la temperatura, la humitat i la pressió baromètrica. Quan engegem el projecte, es connecta a la xarxa WiFi i recuperarà la previsió meteorològica per a la meva ubicació des del lloc web openweathermap. A continuació, mostrarà la previsió en aquesta pantalla tàctil Nextion de 3,2”juntament amb les lectures del sensor. Les lectures s’actualitzen cada dos segons i les previsions meteorològiques cada hora. Com podeu veure, en aquest projecte fem servir les últimes tecnologies disponibles per a un fabricant avui en dia! Si sou un veterà del bricolatge, podeu construir aquest projecte en cinc minuts.

Si sou principiant, heu de veure un parell de vídeos abans d’intentar aquest projecte. Podeu trobar enllaços a aquest vídeo en aquest manual instructiu, no us preocupeu.

Comencem!

Pas 1: Obteniu totes les parts

Obteniu totes les peces
Obteniu totes les peces

Per construir aquest projecte necessitem les següents parts:

  • Un tauler ESP32 ▶
  • Un sensor BME280 I2C ▶
  • Una pantalla Nextion de 3,2”▶
  • Un tauler de pa petit ▶
  • Alguns cables ▶

El cost del projecte ronda els 30 $.

En lloc de l’ESP32, podríem utilitzar el xip ESP8266 més barat, però vaig decidir utilitzar l’ESP32 per adquirir una mica d’experiència i veure què funciona i què no.

Pas 2: l'ESP32

Image
Image
L’ESP32
L’ESP32

Aquest és el primer projecte que he construït amb el nou xip ESP32.

Si no el coneixeu, el xip ESP32 és el successor del popular xip ESP8266 que hem utilitzat moltes vegades en el passat. L’ESP32 és una bèstia! Ofereix dos nuclis de processament de 32 que funcionen a 160 MHz, una gran quantitat de memòria, WiFi, Bluetooth i moltes altres funcions amb un cost d’uns 7 $. Coses increïbles!

Mireu la revisió detallada que he preparat per a aquest fòrum. He adjuntat el vídeo en aquest instructiu. Ajudarà a entendre per què aquest xip canviarà la nostra manera de fer les coses per sempre.

Pas 3: pantalla Nextion

Image
Image
Sensor BME280
Sensor BME280

A més, aquest és el primer projecte que construeixo amb una pantalla tàctil Nextion.

Les pantalles Nextion són un tipus nou de pantalles. Tenen el seu propi processador ARM a la part posterior que s’encarrega de conduir la pantalla i crear la interfície gràfica d’usuari. Per tant, els podem utilitzar amb qualsevol microcontrolador i aconseguir resultats espectaculars.

He preparat una instrucció detallada sobre aquesta pantalla Nextion que explica en profunditat el seu funcionament, com utilitzar-los i els seus inconvenients. El podeu llegir fent clic aquí:

Pas 4: sensor BME280

Sensor BME280
Sensor BME280

El BME280 en un nou gran sensor de Bosch.

Fins ara utilitzava el sensor BMP180 que permet mesurar la temperatura i la pressió baromètrica. El sensor BME280 pot mesurar la temperatura, la humitat i la pressió baromètrica. Que guai! Només necessitem un sensor per construir una estació meteorològica completa.

A més, el sensor té una mida molt petita i és molt fàcil d’utilitzar. El mòdul que utilitzarem avui fa servir la interfície I2C, de manera que facilita la comunicació amb Arduino. Només hem de connectar l'alimentació i dos cables més perquè funcioni.

Ja hi ha moltes biblioteques desenvolupades per a aquest sensor, de manera que podem utilitzar-lo en els nostres projectes molt fàcilment. El cost del sensor és d’uns 5 dòlars. Podeu obtenir-lo aquí ▶

NOTA: Necessitem el sensor BME280. També hi ha un sensor BMP280 que no ofereix mesurament d’humitat. Aneu amb compte per ordenar el sensor que necessiteu.

Pas 5: Connexió de les peces

Connexió de les peces
Connexió de les peces
Connexió de les peces
Connexió de les peces
Connexió de les peces
Connexió de les peces

La connexió de les peces és senzilla, tal com es pot veure al diagrama esquemàtic.

Com que el sensor BME280 utilitza la interfície I2C, només necessitem connectar dos cables per comunicar-nos amb ESP32. He connectat el sensor als pins 26 i 27. En teoria, tots els pins digitals de la placa ESP32 es poden utilitzar amb perifèrics I2C. A la pràctica, però, vaig descobrir que alguns pins no funcionaven perquè estan reservats per a altres usos. Els pins 26 i 27 funcionen molt bé.

Per enviar dades a la pantalla, només necessitem connectar un cable al pin TX0 de l’ESP32. Vaig haver de doblegar el passador d'aquesta manera per connectar el cable femella de la pantalla, ja que la placa ESP32 és massa gran per a aquesta placa.

Després de connectar les parts, hem de carregar el codi a l’ESP32 i hem de carregar la GUI a la pantalla Nextion. Si teniu problemes per carregar el programa a la placa ESP32, manteniu premut el botó BOOT després de prémer el botó de càrrega de l'IDE Arduino.

Per carregar la GUI a la pantalla Nextion, copieu el fitxer WeatherStation.tft que compartiré amb vosaltres a una targeta SD buida. Introduïu la targeta SD a la ranura de la targeta SD a la part posterior de la pantalla. A continuació, engegueu la pantalla i es carregarà la GUI. A continuació, traieu la targeta SD i torneu a connectar l’alimentació.

Després de carregar correctament el codi, el projecte es connectarà a la xarxa WiFi, obtindrà la previsió del temps al lloc web openweathermap.org i mostrarà les lectures del sensor. Vegem ara la part del programari del projecte.

Pas 6: el codi del projecte

El Codi del Projecte
El Codi del Projecte
El Codi del Projecte
El Codi del Projecte
El Codi del Projecte
El Codi del Projecte

Per analitzar les dades meteorològiques, necessitem l’excel·lent biblioteca JSON d’Arduino. També necessitem una biblioteca per al sensor.

? ESP32 BME280: https://github.com/Takatsuki0204/BME280-I2C-ESP32? Arduino JSON:

Vegem el codi ara.

Al principi, hem d’establir l’SSID i la contrasenya de la nostra xarxa WiFi. A continuació, hem d’entrar a l’APIKEY gratuït des del lloc web operweathermap.org. Per crear la vostra pròpia clau API, us heu de registrar al lloc web. Obtenir dades meteorològiques i previsions actuals és gratuït, però el lloc web ofereix més opcions si esteu disposat a pagar una mica de diners. A continuació, hem de trobar l’identificador de la nostra ubicació. Cerqueu la vostra ubicació i copieu l'identificador que es pot trobar a l'URL de la vostra ubicació.

A continuació, introduïu l'identificador de la vostra ciutat a la variable CityID. A més, introduïu l'altitud de la vostra ciutat en aquesta variable. Aquest valor és necessari per a lectures de pressió baromètrica precises del sensor.

const char * ssid = "yourSSID"; const char * password = "yourPassword"; String CityID = "253394"; // Sparta, Grècia String APIKEY = "yourAPIkey"; #define ALTITUDE 216.0 // Altitud a Esparta, Grècia

Ara estem preparats per seguir endavant.

Al principi, inicialitzem el sensor i ens connectem a la xarxa WiFi. A continuació, sol·licitem dades meteorològiques al servidor.

Rebem una resposta amb les dades meteorològiques en format JSON. Abans d’enviar les dades a la biblioteca JSON, he suprimit manualment alguns caràcters que em causaven problemes. A continuació, la biblioteca JSON pren el relleu i podem desar fàcilment les dades que necessitem a les variables. Després d’haver conservat les dades en variables, tot el que hem de fer és mostrar-les a la pantalla i esperar una hora abans de sol·licitar dades noves al servidor. L'única informació que presento és la previsió meteorològica, però podeu mostrar més informació si ho desitgeu. Aquí tot es guarda en variables. A continuació, llegim la temperatura, la humitat i la pressió baromètrica del sensor i enviem les dades a la pantalla Nextion.

Per actualitzar la pantalla, simplement enviem algunes ordres al port sèrie com aquest:

void showConnectingIcon () {Serial.println (); String command = "weatherIcon.pic = 3"; Serial.print (ordre); endNextionCommand (); }

La interfície gràfica d’expressió de Nextion consta d’un fons, algunes caixes de text i una imatge que canvia en funció de la previsió meteorològica. Mireu el tutorial de visualització de Nextion per obtenir més informació. Podeu dissenyar ràpidament la vostra pròpia GUI si ho desitgeu i mostrar-hi més coses.

Com sempre, podeu trobar el codi del projecte adjunt a aquest instructiu

Pas 7: Pensaments finals i millores

Pensaments finals i millores
Pensaments finals i millores

Com podeu veure, un fabricant experimentat avui en dia pot construir projectes emocionants en poques hores amb poques línies de codi i només tres parts. Un projecte com aquest hauria estat impossible de fer fins i tot fa dos anys!

Per descomptat, aquest és només el començament del projecte. M'agradaria afegir-hi moltes funcions, com ara gràfics, funcionalitats tàctils que ara falten, potser una pantalla més gran i, per descomptat, un bonic recinte imprès en 3D. També dissenyaré una interfície gràfica d’usuari i icones de millor aspecte. Tinc algunes idees molt noves per implementar.

M’encantaria escoltar la vostra opinió sobre el projecte d’avui. Quin tipus de funcions voleu que afegeixi al projecte? T'agrada com queda? Com vols que evolucioni? Envieu les vostres idees a la secció de comentaris següent; M'encanta llegir els teus pensaments!

Concurs sense fils
Concurs sense fils
Concurs sense fils
Concurs sense fils

Accèssit al concurs sense fils

Recomanat: