Taula de continguts:

Estació meteorològica amb Arduino UNO: 7 passos
Estació meteorològica amb Arduino UNO: 7 passos

Vídeo: Estació meteorològica amb Arduino UNO: 7 passos

Vídeo: Estació meteorològica amb Arduino UNO: 7 passos
Vídeo: ¿Qué puede pasar? #shorts 2024, De novembre
Anonim
Estació meteorològica amb Arduino UNO
Estació meteorològica amb Arduino UNO

Creat per: Hazel Yang

Aquest projecte és una estació meteorològica que utilitza una placa Arduino UNO per controlar el flux de dades, un sensor DHT22 per recopilar les dades i una pantalla OLED per mostrar les dades.

Pas 1: llista d'elements

Llista d'elements
Llista d'elements

1. Pantalla: OLED, pantalla 1,3 SH1106, color blanc I2C ---- PID: 18283

2. Sensor: sensor digital d’humitat i temperatura DHT22 ---- PID: 7375

3. Connecta: cables de pont ---- PID: 10316 o 10318 o 10312 (depèn de la longitud) o podeu utilitzar filferro sòlid de 22 AWG ---- PID: 22490

Tauler de pa ---- PID: 10686 o 10698 o 103142 (depèn de la mida)

4. Alimentació: aquest cable només es pot connectar amb un port USB de l'ordinador i el cable també s'utilitza per a la transferència de dades entre l'IDE i la placa Arduino. CABLE USB, A A B, M / M, 0,5 M (1,5 peus) ---- PID: 29862

O podeu utilitzar-lo per alimentar la placa: adaptador de CA / CC de 5V 2A ---- PID: 10817.

Pas 2: Introducció relativa

Introducció relativa
Introducció relativa
Introducció relativa
Introducció relativa

Introducció de la pantalla: pantalla OLED de 1,3 de color blanc

1. Podeu trobar el document que mostra la configuració i les descripcions bàsiques:

Introducció del sensor: sensor d'humitat i temperatura DHT22 1. Podeu trobar el document que mostra les descripcions:

Pas 3: Connecteu el circuit

Connecteu el circuit
Connecteu el circuit

El sensor DHT22 envia dades de sèrie al pin 2. Per tant, connecteu el segon pin de l'esquerra, el pin "SDA" hauria d'estar connectat al pin 2.

Per a la pantalla SSH1106, utilitza el pin analògic per transmetre. El circuit de la pantalla serà el pin "SCL" al "A5" d'Arduino i el pin "SDA" al "A4" d'Arduino. Mentre que les dades de posició de píxels es transmeten contínuament, la funció de visualització del programa només activa l'ordre una vegada que llegeix les dades del sensor.

Tant el sensor com la pantalla poden utilitzar el 3,3 V per encendre Arduino com a entrada de corrent continu. Per alimentar-nos, hem de connectar els dos pins "VCC" al "3.3V" d'Arduino. I els pins "GND" es poden connectar simplement al pin "GND" de la placa Arduino.

Utilitzeu el cable USB A a B i connecteu l'Arudino a l'ordinador.

Pas 4: prepareu-vos per compilar

"u8glib" per a la pantalla SSH1106 d'Olikraus.

"Biblioteca de sensors DHT" per al sensor DHT22 d'Adafruit. Heu de descarregar les dues biblioteques: biblioteca de sensors DHT22:

U8glib:

I utilitzeu "gestiona la biblioteca" a IDE per fer-los descomprimir. Instruccions en línia de gestió de biblioteques:

Pas 5: Codi de prova del port sèrie del sensor DHT22

Prova de coe per al port sèrie del sensor DHT22 (que es troba a la biblioteca DHT22 >> exemples):

(Podeu ometre aquesta part.)

Només per provar que el sensor DHT22 llegeix les dades normalment

#incloure

#incloure

#incloure

#incloure

#incloure

#defineix DHTPIN 2

#define DHTTYPE DHT22

DHT dht (DHTPIN, DHTTYPE);

configuració nul·la () {

Serial.begin (9600);

Serial.println (F ("prova DHT22!"));

dht.begin ();

}

bucle buit () {

// Espereu uns segons entre les mesures.

endarreriment (2000);

// La temperatura o la humitat de la lectura triguen uns 250 mil·lisegons!

// Les lectures del sensor també poden tenir una antiguitat de fins a 2 segons (és un sensor molt lent)

flotador h = dht.readHumidity ();

// Llegiu la temperatura com Celsius (per defecte)

flotador t = dht.readTemperature ();

// Llegiu la temperatura com a Fahrenheit (isFahrenheit = true)

float f = dht.readTemperature (true);

// Comproveu si alguna lectura ha fallat i sortiu aviat (per tornar-ho a provar).

if (isnan (h) || isnan (t) || isnan (f)) {

Serial.println (F ("No s'ha pogut llegir del sensor DHT!"));

tornar;

}

// Calculeu l'índex de calor en Fahrenheit (per defecte)

float hif = dht.computeHeatIndex (f, h);

// Calculeu l'índex de calor en centígrads (isFahreheit = false)

float hic = dht.computeHeatIndex (t, h, false);

Serial.print (F ("Humitat:"));

Serial.print (h);

Serial.print (F ("% Temperatura:"));

Serial.print (t);

Serial.print (F ("° C"));

Serial.print (f);

Serial.print (F ("° F Índex de calor:"));

Serial.print (hic);

Serial.print (F ("° C"));

Serial.print (hif);

Serial.println (F ("° F"));

}

// Després de compilar el programa, feu clic a EINES >> MONITOR SERIAL per comprovar les dades.

// Fi del programa de proves.

Pas 6: Codi del projecte

#incloure

#incloure

#incloure

#incloure

#incloure

#defineix DHTPIN 2

#define DHTTYPE DHT22

#include "U8glib.h"

U8GLIB_SH1106_128X64 u8g (U8G_I2C_OPT_NONE);

Sensor DHT (DHTPIN, DHTTYPE);

sorteig buit (buit) {

u8g.setFont (u8g_font_unifont);

flotador h = sensor.readHumidity ();

// Llegiu la temperatura com Celsius (per defecte)

flotador t = sensor.readTemperature ();

// Comproveu si alguna lectura ha fallat i sortiu aviat (per tornar-ho a provar).

if (isnan (h) || isnan (t)) {

u8g.print ("Error");

per (;;);

tornar;

}

u8g.setPrintPos (4, 10);

u8g.print ("Temperatura (C):");

u8g.setPrintPos (4, 25);

u8g.print (t);

u8g.setPrintPos (4, 40);

u8g.print ("Humitat (%):");

u8g.setPrintPos (4, 55);

u8g.print (h);

}

configuració nul·la (nul·la) {

u8g.setRot180 ();

Serial.begin (9600);

sensor.begin ();

}

bucle buit (buit) {

// bucle d'imatge

u8g.firstPage ();

fer {

dibuixar ();

} while (u8g.nextPage ());

// reconstrueix la imatge després d'un cert retard (2000);

}

// Final del programa principal.

Pas 7: descripció

Descripció
Descripció

A continuació, inicialitzeu el circuit de pins per a la placa Arduino. Com que la biblioteca de sensors requereix les dades per declarar l'objecte.

I podeu provar les dades del sensor monitoritzant les dades de sortida mitjançant el pin digital 2 mitjançant la funció anomenada "Serial.print ()". Com que la freqüència de transmissió de dades és aproximadament 1 lectura cada 2 segons (que és de 0,5 Hz), quan es programa a Arduino IDE, hem d’establir el retard dins de la funció de bucle a més de 2 segons. Per tant, hi ha un "delay (2000)" dins de la funció de bucle. Això garanteix que les dades s’actualitzin amb freqüència. A la funció "dibuixar", obteniu les dades del port de dades sèrie i poseu-les en números flotants mitjançant les funcions "readHumidity" i "readTemperature".

Imprimiu la humitat i la temperatura mitjançant la funció d'impressió del fitxer "u8glib". Podeu ajustar la posició canviant el número a la funció "setPrintPos". La funció d'impressió pot mostrar directament el text i els números.

Per configurar el maquinari, doneu al port sèrie un retard de 10 segons. A continuació, truqueu a la funció d'inici del sensor. Segons el meu circuit, la meva pantalla estava al revés. Així que també he inclòs una funció "setRot180" per girar la pantalla.

La funció de bucle de la placa Arduino és la funció principal. Continua cridant la funció de dibuix per mostrar el text i les dades cada vegada que s’actualitza el sensor.

La pantalla té aquest aspecte:

Podeu desconnectar l'Arduino UNO de l'ordinador i alimentar-lo mitjançant un adaptador d'alimentació de 5 V CC connectat al seu connector d'alimentació de 2,1 mm. Emmagatzema el programa dins de la seva unitat i pot executar-lo de forma contínua després de ser alimentat.

Recomanat: