Tabla de contenido:

Estación meteorológica con Arduino UNO: 7 pasos
Estación meteorológica con Arduino UNO: 7 pasos

Video: Estación meteorológica con Arduino UNO: 7 pasos

Video: Estación meteorológica con Arduino UNO: 7 pasos
Video: Crea una Estación meteorológica con Arduino, el Sensor DHT11 y LCD | Estación del Clima con Arduino 2024, Noviembre
Anonim
Estación meteorológica con Arduino UNO
Estación meteorológica con Arduino UNO

Creado por: Hazel Yang

Este proyecto es una estación meteorológica que utiliza una placa Arduino UNO para controlar el flujo de datos, un sensor DHT22 para recopilar los datos y una pantalla OLED para mostrar los datos.

Paso 1: Lista de artículos

Lista de articulos
Lista de articulos

1. Pantalla: OLED, 1.3 Display SH1106, I2C color blanco ---- PID: 18283

2. Sensor: Sensor digital de temperatura y humedad DHT22 ---- PID: 7375

3. Conecta: Cables de puente ---- PID: 10316 o 10318 o 10312 (depende de la longitud) o puede usar cable sólido 22 AWG ---- PID: 22490

Placa de pruebas ---- PID: 10686 o 10698 o 103142 (depende del tamaño)

4. Energía: Este cable solo se puede conectar con un puerto USB de la computadora y el cable también se usa para la transferencia de datos entre el IDE y la placa Arduino. CABLE USB, A A B, M / M, 0.5M (1.5FT) ---- PID: 29862

O puede usar esto para alimentar la placa: Adaptador de CA / CC de 5 V 2 A ---- PID: 10817.

Paso 2: Introducción relativa

Introducción relativa
Introducción relativa
Introducción relativa
Introducción relativa

Introducción de la pantalla: Pantalla OLED de 1.3 blanca

1. Puede encontrar el documento que muestra la configuración básica y las descripciones:

Introducción del sensor: sensor de temperatura y humedad DHT22 1. Puede encontrar el documento que muestra las descripciones:

Paso 3: conecte el circuito

Conectar el circuito
Conectar el circuito

El sensor DHT22 envía datos en serie al pin 2. Por lo tanto, conecte el segundo pin desde la izquierda, el pin "SDA" debe estar conectado al pin 2.

Para la pantalla SSH1106, utiliza el pin analógico para transmitir. El circuito de la pantalla será el pin "SCL" al "A5" de Arduino y el pin "SDA" al "A4" de Arduino. Mientras que los datos de la posición de los píxeles se transmiten continuamente, la función de visualización en el programa solo activa el comando una vez cada vez que lee los datos del sensor.

Tanto el sensor como la pantalla pueden usar 3.3V para encender Arduino como una entrada de energía de CC. Para alimentar, necesitamos conectar los dos pines "VCC" a los "3.3V" de Arduino. Y los pines "GND" se pueden conectar simplemente al pin "GND" en la placa Arduino.

Utilice el cable USB A a B, conecte el Arudino a la computadora.

Paso 4: Prepárese para compilar

"u8glib" para la pantalla SSH1106 de Olikraus.

"Biblioteca de sensores DHT" para el sensor DHT22 de Adafruit. Debe descargar las dos bibliotecas: Biblioteca de sensores DHT22:

U8glib:

Y use "administrar biblioteca" en IDE para descomprimirlos. Instrucción en línea sobre la gestión de bibliotecas:

Paso 5: Código de prueba para el puerto serie del sensor DHT22

Coeficiente de prueba para el puerto serie del sensor DHT22 (que se encuentra dentro de la biblioteca DHT22 >> ejemplos):

(Puede omitir esta parte)

Solo para probar, el sensor DHT22 lee los datos normalmente

#incluir

#incluir

#incluir

#incluir

#incluir

#define DHTPIN 2

#define DHTTYPE DHT22

DHT dht (DHTPIN, DHTTYPE);

configuración vacía () {

Serial.begin (9600);

Serial.println (F ("¡Prueba DHT22!"));

dht.begin ();

}

bucle vacío () {

// Espere unos segundos entre mediciones.

retraso (2000);

// ¡La lectura de la temperatura o la humedad tarda unos 250 milisegundos!

// Las lecturas del sensor también pueden tener hasta 2 segundos de antigüedad (es un sensor muy lento)

flotar h = dht.readHumidity ();

// Leer la temperatura como Celsius (por defecto)

flotar t = dht.readTemperature ();

// Leer la temperatura como Fahrenheit (isFahrenheit = true)

flotar f = dht.readTemperature (verdadero);

// Compruebe si alguna lectura falló y salga antes (para volver a intentarlo).

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

Serial.println (F ("¡Error al leer del sensor DHT!"));

regreso;

}

// Calcular el índice de calor en Fahrenheit (predeterminado)

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

// Calcular el índice de calor en grados Celsius (isFahreheit = false)

flotador hic = dht.computeHeatIndex (t, h, falso);

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

Serial.print (h);

Serial.print (F ("% de temperatura:"));

Serial.print (t);

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

Serial.print (f);

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

Serial.print (hic);

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

Serial.print (hif);

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

}

// Después de compilar el programa, haga clic en HERRAMIENTAS >> MONITOR DE SERIE para verificar los datos.

// Fin del programa de pruebas.

Paso 6: código para el proyecto

#incluir

#incluir

#incluir

#incluir

#incluir

#define DHTPIN 2

#define DHTTYPE DHT22

#include "U8glib.h"

U8GLIB_SH1106_128X64 u8g (U8G_I2C_OPT_NONE);

Sensor DHT (DHTPIN, DHTTYPE);

vacío dibujar (vacío) {

u8g.setFont (u8g_font_unifont);

flotar h = sensor.readHumidity ();

// Leer la temperatura en grados Celsius (por defecto)

flotador t = sensor.readTemperature ();

// Compruebe si alguna lectura falló y salga antes (para volver a intentarlo).

si (isnan (h) || isnan (t)) {

u8g.print ("Error");

por(;;);

regreso;

}

u8g.setPrintPos (4, 10);

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

u8g.setPrintPos (4, 25);

u8g.print (t);

u8g.setPrintPos (4, 40);

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

u8g.setPrintPos (4, 55);

u8g.print (h);

}

configuración nula (nula) {

u8g.setRot180 ();

Serial.begin (9600);

sensor.begin ();

}

bucle vacío (vacío) {

// bucle de imagen

u8g.firstPage ();

hacer {

dibujar();

} while (u8g.nextPage ());

// reconstruir la imagen después de un retraso (2000);

}

// Fin del programa principal.

Paso 7: descripción

Descripción
Descripción

Luego, inicialice el circuito de pines para la placa Arduino. Porque la biblioteca de sensores requiere los datos para declarar el objeto.

Y puede probar los datos del sensor monitoreando los datos de salida a través del pin digital 2 usando la función llamada "Serial.print ()". Debido a que la frecuencia de transmisión de datos es aproximadamente 1 lectura cada 2 segundos (que es 0.5 Hz), cuando se programa en Arduino IDE, necesitamos establecer el retraso dentro de la función de bucle para que sea de más de 2 segundos. Entonces hay un "retraso (2000)" dentro de la función de bucle. Esto asegura que los datos se actualizarán con frecuencia. En la función "dibujar", obtenga los datos del puerto de datos en serie y colóquelos en números flotantes usando las funciones "readHumidity" y "readTemperature".

Imprima la humedad y la temperatura usando la función de impresión en el archivo "u8glib". Puede ajustar la posición cambiando el número en la función "setPrintPos". La función de impresión puede mostrar directamente el texto y los números.

Para configurar el hardware, dé al puerto serie un retraso de 10 segundos. Luego llame a la función de inicio del sensor. Según mi circuito, mi pantalla estaba al revés. Así que también incluí una función "setRot180" para rotar la pantalla.

La función de bucle de la placa Arduino es la función principal. Sigue llamando a la función de dibujo para mostrar el texto y los datos cada vez que se actualiza el sensor.

La pantalla se ve así:

Puede desconectar el Arduino UNO de su computadora y encenderlo con un adaptador de corriente de 5 V CC que se conecta a su conector de alimentación de 2,1 mm. Almacena el programa dentro de su unidad y puede ejecutarlo de nuevo continuamente después de ser encendido.

Recomendado: