Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

AWS - Estación meteorológica Arduino

Componentes y suministros

Arduino UNO
× 1
Cable USB-A a Micro-USB
× 1
Breadboard (genérico)
× 1
Cables de puente (genéricos)
× 1
Plexiglás 4 mm
× 1
Resistencia 221 ohm
× 1
LCD estándar Adafruit - 16x2 blanco sobre azul
× 1
Maxim Integrated DS1307 64 x 8, serial, I²C en tiempo real Reloj
× 1
Foto resistor
× 1
Sensor de temperatura y humedad DHT11 (4 pines)
× 1
Sensor de temperatura
× 1
Receptor de infrarrojos (genérico)
× 1
Sensor de nivel de agua
× 1
Sunfounder Starter RFID Kit
× 1

Herramientas y máquinas necesarias

Cortadora láser (genérica)

Acerca de este proyecto

AWS, la estación meteorológica Arduino, proporciona datos precisos las 24 horas del día para el medio ambiente. En particular, se basa en una placa de microcontrolador Arduino y admite un bloque completo de sensores para el análisis del entorno.

El objetivo

El objetivo de este control hasta es detectar una serie de datos a través de los sensores descritos anteriormente e interactuar con el usuario a través de una pantalla LCD. El reducido tamaño del “hardware” del proyecto permite cerrarlo en una cajita realizada con la máquina de corte láser.

Sensores utilizados

Sensor de nivel de agua y nieve

El indicador de nivel de agua se utiliza para indicar el nivel de agua en el tanque superior, al usarlo podemos evitar el desbordamiento de agua y en cualquier momento podemos conocer el nivel de agua en el tanque.

Sensor de temperatura y humedad DHT11

El sensor digital de temperatura y humedad DHT11 es un sensor combinado de temperatura y humedad de salida de señal digital calibrada, cuyos módulos específicos de la aplicación capturan tecnología y tecnología de sensor de temperatura y humedad digital para garantizar productos con alta confiabilidad y excelente estabilidad a largo plazo. El producto tiene una excelente calidad, respuesta rápida, capacidad antiinterferente, bajo costo y otras ventajas.

Fotorresistor

Los fotorresistores, también conocidos como resistencias dependientes de la luz (LDR), son dispositivos sensibles a la luz que se utilizan con mayor frecuencia para indicar la presencia o ausencia de luz, o para medir la intensidad de la luz. En la oscuridad, su resistencia es muy alta, pero cuando el sensor LDR se expone a la luz, la resistencia cae drásticamente, incluso hasta unos pocos ohmios, dependiendo de la intensidad de la luz.

Pantalla LCD I2C 1602

LCD1602 con un bus I2C es un tipo de bus serial. Es un bus en serie de alto rendimiento que tiene un control de bus y una función de sincronización de dispositivos de alta o baja velocidad requerida por un sistema de host múltiple. El potenciómetro azul en el I2C LCD1602 se usa para indicar solo la luz de fondo.

I2C usa solo dos líneas bidireccionales de drenaje abierto, Serial DataLine (SDA) y Serial Clock Line (SCL), levantadas con resistencias. Los voltajes típicos utilizados son +5 V o +3,3 V, aunque se permiten sistemas con otros voltajes.

Módulo de reloj en tiempo real DS1302

Se basa en el DS1302 integrado dentro del cual hay un reloj / calendario en tiempo real y 31 bytes de RAM estática. Puede ver el formato de hora como hh / mm / ss, mientras que el formato de fecha es aaaa / mm / dd.

Sensor de temperatura LM35

El sensor de temperatura de precisión LM35 es un sensor que detecta la temperatura de manera muy precisa. El convertidor analógico a digital (ADC) convierte valores analógicos en una aproximación digital basada en la fórmula ADCValue =muestra * 1024 / voltaje de referencia (+ 5v). Entonces, con una referencia de +5 voltios, la aproximación digital será =voltaje de entrada * 205.

Receptor de infrarrojos y control remoto

Estos dos componentes funcionan juntos:el receptor de infrarrojos permite la recepción de datos desde el mando a distancia. Los datos dependen del botón que desee presionar. Se han elegido los siguientes botones para asignarlos a funciones específicas:

  • Botón 0:puede ver la hora y la fecha en la pantalla LCD.
  • 1 botón:puede ver los datos de temperatura del LM35 y los datos de humedad del DHT11 en la pantalla LCD.
  • 2 botones:puede ver el porcentaje de oscuridad en la pantalla LCD.
  • 3 Botón:puede ver el valor del nivel de líquido (mm) en la pantalla LCD.
  • Botón "Ciclo":puede ver todas las pantallas en un intervalo de tiempo de 4 segundos entre sí.

EL A.W.S.

Paso 1:construcción de la caja

Después de considerar el tamaño del proyecto, hemos procedido a la construcción de la caja de plexiglás. Los tamaños de las caras con sus asientos entrelazados relativos y los orificios para la salida de los cables del sensor han sido diseñados con el software Autocad, luego hemos cortado las caras con la máquina de corte por láser. Y finalmente lo hemos ensamblado todo con un pegamento potente.

Paso 2:conexiones esquemáticas y de hardware

Aquí está la imagen del esquema de la estación meteorológica Arduino. Lo ha hecho con software fritzing. Las conexiones son bastante simples.

Paso 3:Arduino programación

Hemos hecho el código en Arduino IDE, usamos todas las bibliotecas que necesitábamos y lo programamos para que nuestra estación meteorológica funcione como queríamos.

Paso 4:cómo funciona funciona

AWS ( Estación meteorológica Arduino ) es una estación meteorológica que recoge algunos datos del entorno y les permite verlos mediante un mando a distancia por infrarrojos. Para interactuar con los usuarios, tiene una pantalla LCD con cinco pantallas diferentes intercambiables por el usuario.

Estas son las pantallas:

1. Pantalla de inicio: es la primera pantalla que el usuario puede ver cuando encendemos la placa. Presenta el proyecto con las palabras “Arduino Weather Station” que tienen un efecto de desvanecimiento particular. También puede ver esta pantalla cada vez que solicita a AWS ver algunos datos.

2. Pantalla de fecha y hora: es la primera pantalla a la que el usuario puede acceder, simplemente presionando el botón 0 en el control remoto. Cuando se presiona, la pantalla tiene un retraso de 10 segundos y luego regresa a la pantalla de inicio.

3. Pantalla de humedad y temperatura: es la pantalla la que da los datos recibidos por los sensores DHT11 y LM35 sobre humedad y temperatura respectivamente. Está conectado al botón 1 en el control remoto y cuando se presiona la pantalla tiene un retraso de 10 segundos y luego regresa a la pantalla de inicio.

4. Pantalla de oscuridad: es la pantalla la que da los datos recibidos por el LDR sobre la cantidad de luz en el sensor. Muestra el porcentaje de oscuridad en el sensor. Está conectado al botón 2 en el control remoto y cuando se presiona la pantalla tiene un retraso de 10 segundos y luego regresa a la pantalla de inicio.

5. Pantalla de nivel de líquido: esta pantalla da la altura de una cantidad de líquido en una receta. Está conectado al botón 3 del control remoto y cuando se presiona la pantalla tiene un retraso de 10 segundos y luego regresa a la pantalla de inicio.

Las últimas cuatro pantallas se pueden ver sucesivamente con un intervalo de tiempo de 4 segundos entre sí, presionando el botón Ciclo en el mando a distancia. Con este modo, solo se realiza una vuelta de la información.

Precauciones

El primer hecho a considerar para la buena longevidad de este proyecto es evitar cualquier contacto de líquidos u otras sustancias nocivas con la placa y con la estación en general.

Después de una precipitación es necesario vaciar el recipiente de agua, revisar y limpiar el sensor.

La batería recargable tiene una duración de unos dos días, por lo que es necesario recargarla (unas 2 horas) si se va a descargar.

Probablemente a veces el sensor de infrarrojos no funciona tan bien como queremos, por lo que su función podría verse interrumpida a bajas temperaturas (alrededor de 0 grados). No representa ningún problema, de hecho es necesario simplemente abrir la caja y presionar el botón de reinicio:AWS volverá a funcionar con normalidad.

Si presionamos el botón de reinicio, el módulo RTC DS1302 no cambiará su valor sobre fecha y hora, gracias a la batería de soporte presente en el módulo que dura aproximadamente 10 años.

Si se desconecta la alimentación de AWS, la fecha y la hora cambiarán. Para solucionar el problema es necesario reajustarlos en el punto indicado en la lista según tus preferencias. Una vez cargado, debe ocultar la configuración del programa como se indica a continuación.

  Antes:Hora t (2017, 12, 03, 10, 15, 00, 1); rtc.time (t); Después:// Hora t (2017, 12, 03, 10, 15, 00, 1) //; rtc.time (t);  

Código

  // incluir bibliotecas de bocetos # incluir  #include  // biblioteca de reloj # incluir  // biblioteca de reloj # incluir  // reloj library # include  // dht11 library # include  // LCD library # include  // Wire para LCD library # define lmPin A1 // LM35 adjuntar a A1LiquidCrystal_I2C lcd (0x27, 16, 2); // establece la dirección de la pantalla LCD en 0x27 para una pantalla de 16 caracteres y 2 líneas dht DHT; // crea un tipo de variable de dhtconst int DHT11_PIN =4; // adjuntar dht11 al pin 4const int waterSensor =0; // establecer la variable del sensor de agua en waterValue =0; // variable para sensor de aguaint mmwaterValue =0; int sensorPin =A3; // seleccionar el pin de entrada para el potenciómetroint luce =0; // variable para ldrint pluce =0; // variable para ldrfloat tem =0; // variable para la temperaturalmVal =0; // variable para el LM35 // irconst int irReceiverPin =3; IRrecv irrecv (irReceiverPin); // Crea una variable de tipo IRrecvdecode_results results; // define la variable de relojuint8_t RST_PIN =5; // Pin RST adjuntar touint8_t SDA_PIN =6; // Pin IO adjuntar touint8_t SCL_PIN =7; // clk Pin adjuntar a / * Crear búferes * / char buf [50]; char day [10]; / * Crear un objeto DS1302 * / DS1302 rtc (RST_PIN, SDA_PIN, SCL_PIN); // crear un tipo de variable de DS1302void print_time () {/ * Obtiene la fecha y hora actual del chip * / Time t =rtc.time (); / * Nombre el día de la semana * / memset (día, 0, tamaño de (día)); switch (t.day) {caso 1:strcpy (día, "Sol"); descanso; caso 2:strcpy (día, "lunes"); descanso; caso 3:strcpy (día, "martes"); descanso; caso 4:strcpy (día, "miércoles"); descanso; caso 5:strcpy (día, "Jue"); descanso; caso 6:strcpy (día, "viernes"); descanso; caso 7:strcpy (día, "sábado"); descanso; } / * Formatea la hora y la fecha e inserta en el búfer temporal * / snprintf (buf, sizeof (buf), "% s% 04d-% 02d-% 02d% 02d:% 02d:% 02d", day, t. año, t.mon, t.date, t.hr, t.min, t.seg); / * Imprime la cadena formateada en serial para que podamos ver la hora * / Serial.println (buf); lcd.setCursor (2, 0); lcd.print (t.yr); lcd.print ("-"); lcd.print (t.mon / 10); lcd.print (t.mon% 10); lcd.print ("-"); lcd.print (t.date / 10); lcd.print (t.date% 10); lcd.print (""); lcd.print (día); lcd.setCursor (4, 1); lcd.print (t.hr); lcd.print (":"); impresión lcd (t.min / 10); impresión lcd (t.min% 10); lcd.print (":"); lcd.print (t.seg / 10); lcd.print (t.sec% 10);} void setup () {// reloj Serial.begin (9600); rtc.write_protect (falso); rtc.halt (falso); // ir irrecv.enableIRIn (); // habilita el módulo receptor de infrarrojos lcd.init (); // inicializa el lcd lcd.backlight (); // abre el pinMode de luz de fondo (sensorPin, INPUT); Hora t (2017, 12, 03, 10, 15, 00, 1); // inicializar la hora / * Establecer la hora y la fecha en el chip * / rtc.time (t);} void loop () {lcd. setCursor (0, 0); lcd.print ("A"); retraso (50); lcd.setCursor (1, 0); lcd.print ("r"); retraso (50); lcd.setCursor (2, 0); lcd.print ("d"); retraso (50); lcd.setCursor (3, 0); lcd.print ("u"); retraso (50); lcd.setCursor (4, 0); lcd.print ("i"); retraso (50); lcd.setCursor (5, 0); lcd.print ("n"); retraso (50); lcd.setCursor (6, 0); lcd.print ("o"); retraso (50); lcd.setCursor (8, 0); lcd.print ("W"); retraso (50); lcd.setCursor (9, 0); lcd.print ("e"); retraso (50); lcd.setCursor (10, 0); lcd.print ("a"); retraso (50); lcd.setCursor (11, 0); lcd.print ("t"); retraso (50); lcd.setCursor (12, 0); lcd.print ("h"); retraso (50); lcd.setCursor (13, 0); lcd.print ("e"); retraso (50); lcd.setCursor (14, 0); lcd.print ("r"); retraso (50); lcd.setCursor (4, 1); lcd.print ("S"); retraso (50); lcd.setCursor (5, 1); lcd.print ("t"); retraso (50); lcd.setCursor (6, 1); lcd.print ("a"); retraso (50); lcd.setCursor (7, 1); lcd.print ("t"); retraso (50); lcd.setCursor (8, 1); lcd.print ("i"); retraso (50); lcd.setCursor (9, 1); lcd.print ("o"); retraso (50); lcd.setCursor (10, 1); lcd.print ("n"); delay (50); if (irrecv.decode (&results)) // si los datos del receptor del módulo receptor ir {if (results.value ==0xFF6897) // si se presiona "0" print TIME {lcd.clear (); // limpia la pantalla LCD print_time (); retraso (10000); // demora 10000ms lcd.clear (); // borra el retardo de la pantalla LCD (200); // espera un rato irrecv.resume (); // Recibir el siguiente valor} if (results.value ==0xFF30CF) // si se presiona "1" print TEMPERATURA y HUMEDAD {lcd.clear (); // limpiar la pantalla LCD // LEER DATOS del DHT int chk =DHT.read11 (DHT11_PIN); // MOSTRAR DATOS lcd.setCursor (0, 0); lcd.print ("Tem:"); lmVal =analogRead (lmPin); // leer el valor de A1 tem =(lmVal * 0.0048828125 * 100); // 5/1024 =0.0048828125; 1000/10 =100 lcd.print (tem); // imprimir tem lcd. print (char (223)); // imprime la unidad "?" lcd.print ("C"); // Serial.println ("C"); lcd.setCursor (0, 1); lcd.print ("Hum:"); //Serial.print("Hum:"); impresión lcd (humedad DHT, 1); // imprime la humedad en lcd //Serial.print(DHT.humidity,1); lcd.print ("%"); //Serial.println ("%"); retraso (10000); // espera 3000 ms lcd.clear (); // borra el retardo de la pantalla LCD (200); // espera un rato irrecv.resume (); // Recibe el siguiente valor} if (results.value ==0xFF18E7) ​​// si se presiona "2" imprime la OSCURIDAD {lcd.clear (); // limpia la pantalla LCD lcd.setCursor (4, 0); // coloca el cursor en 4 columnas, 1 fila lcd.print ("Oscuridad:"); luce =analogRead (sensorPin); // lee el ldr pluce =map (luce, 0, 1023, 0, 100); // el valor del sensor se convierte en valores de 0 a 100 lcd.setCursor (6, 1); // coloca el cursor en el medio de la pantalla LCD lcd.print (pluce); // imprime el porcentaje lcd.print ("%"); // imprime el símbolo delay (10000); // demora 10000 ms lcd.clear (); // borra el retardo de la pantalla LCD (200); // espera un rato irrecv.resume (); // Recibe el siguiente valor} if (results.value ==0xFF7A85) // si se presiona "3" imprime el NIVEL DE NIEVE o AGUA {lcd.clear (); // limpia la pantalla LCD lcd.setCursor (0, 0); // coloca el cursor en la columna 0, 1 fila lcd.print ("Nivel de fluido (mm):"); // imprimir "Nivel de fluido (mm):" int waterValue =analogRead (waterSensor); // obtiene el valor del sensor de agua lcd.setCursor (6, 1); // coloca el cursor en 6 columnas, 2 filas mmwaterValue =map (waterValue, 0, 1023, 0, 40); lcd.print (mmwaterValue); // valor mostrado en lcd delay (10000); // demora 10000ms lcd.clear (); // borra el retardo de la pantalla LCD (200); irrecv.resume (); // Recibe el siguiente valor} if (results.value ==0xFF9867) // si se presiona "PRESENTATION" imprime TIME, TEM y HUM, DARKNESS y S o W LEVEL una vez {lcd.clear (); // limpia la pantalla LCD print_time (); retraso (4000); // demora 10000ms lcd.clear (); // borra el retardo de la pantalla LCD (200); // esperar un rato // LEER DATOS del DHT int chk =DHT.read11 (DHT11_PIN); // MOSTRAR DATOS lcd.setCursor (0, 0); lcd.print ("Tem:"); lmVal =analogRead (lmPin); // leer el valor de A0 tem =(lmVal * 0.0048828125 * 100); // 5/1024 =0.0048828125; 1000/10 =100 lcd.print (tem); // imprimir tem lcd. print (char (223)); // imprime la unidad "?" lcd.print ("C"); // Serial.println ("C"); lcd.setCursor (0, 1); lcd.print ("Hum:"); //Serial.print("Hum:"); impresión lcd (humedad DHT, 1); // imprime la humedad en lcd //Serial.print(DHT.humidity,1); lcd.print ("%"); //Serial.println ("%"); retraso (4000); // espera 3000 ms lcd.clear (); // borra el retardo de la pantalla LCD (200); // espera un momento lcd.setCursor (4, 0); // coloca el cursor en 4 columnas, 1 fila lcd.print ("Oscuridad:"); luce =analogRead (sensorPin); // lee el ldr pluce =map (luce, 0, 1023, 0, 100); // el valor del sensor se convierte en valores de 0 a 100 lcd.setCursor (6, 1); // coloca el cursor en el medio de la pantalla LCD lcd.print (pluce); // imprime el porcentaje lcd.print ("%"); // imprime el símbolo delay (4000); // demora 10000 ms lcd.clear (); // borra el retardo de la pantalla LCD (200); // espera un momento lcd.setCursor (0, 0); // coloca el cursor en la columna 0, 1 fila lcd.print ("Nivel de fluido (mm):"); // imprimir "Nivel de fluido (mm):" int waterValue =analogRead (waterSensor); // obtiene el valor del sensor de agua lcd.setCursor (6, 1); // coloca el cursor en 6 columnas, 2 filas mmwaterValue =map (waterValue, 0, 1023, 0, 40); lcd.print (mmwaterValue); // valor mostrado en lcd delay (4000); // demora 10000ms lcd.clear (); // borra el retardo de la pantalla LCD (200); irrecv.resume (); // Recibe el siguiente valor}}}  

En lugar de escribir "Arduino Weather Station" letra por letra, es posible escribirla con modo "cambiar / caso".

CONCLUSIONES

Hemos realizado una estación meteorológica con Arduino que tiene en cuenta la fecha y hora actual y recoge algunos datos ambientales para imprimirlos en una pantalla LCD controlada por un mando a distancia por infrarrojos.

Código

  • código.ino de AWS
Código AWS.ino C / C ++
 // incluir bibliotecas de bocetos # incluir  #include  // biblioteca de reloj # incluir  // biblioteca de reloj # incluir  // biblioteca de reloj # incluir  // dht11 library # include  // LCD library # include  // Wire for LCD library # define lmPin A1 // LM35 adjuntar a A1LiquidCrystal_I2C lcd (0x27, 16, 2 ); // establece la dirección de la pantalla LCD en 0x27 para una pantalla de 16 caracteres y 2 líneas dht DHT; // crea un tipo de variable de dhtconst int DHT11_PIN =4; // adjuntar dht11 al pin 4const int waterSensor =0; // establecer la variable del sensor de agua en waterValue =0; // variable para sensor de aguaint mmwaterValue =0; int sensorPin =A3; // seleccionar el pin de entrada para el potenciómetroint luce =0; // variable para ldrint pluce =0; // variable para ldrfloat tem =0; // variable para la temperaturalmVal =0; // variable para el LM35 // irconst int irReceiverPin =3; IRrecv irrecv (irReceiverPin); // Crea una variable de tipo IRrecvdecode_results results; // define la variable de relojuint8_t RST_PIN =5; // Pin RST adjuntar touint8_t SDA_PIN =6; // Pin IO adjuntar touint8_t SCL_PIN =7; // clk Pin adjuntar a / * Crear búferes * / char buf [50]; char day [10]; / * Crear un objeto DS1302 * / DS1302 rtc (RST_PIN, SDA_PIN, SCL_PIN); // crear un tipo de variable de DS1302void print_time () {/ * Obtiene la fecha y hora actual del chip * / Time t =rtc.time (); / * Nombre el día de la semana * / memset (día, 0, tamaño de (día)); switch (t.day) {caso 1:strcpy (día, "Sol"); descanso; caso 2:strcpy (día, "lunes"); descanso; caso 3:strcpy (día, "martes"); descanso; caso 4:strcpy (día, "miércoles"); descanso; caso 5:strcpy (día, "Jue"); descanso; caso 6:strcpy (día, "viernes"); descanso; caso 7:strcpy (día, "sábado"); descanso; } / * Formatea la hora y la fecha e inserta en el búfer temporal * / snprintf (buf, sizeof (buf), "% s% 04d-% 02d-% 02d% 02d:% 02d:% 02d", day, t. año, t.mon, t.date, t.hr, t.min, t.seg); / * Imprime la cadena formateada en serial para que podamos ver la hora * / Serial.println (buf); lcd.setCursor (2, 0); lcd.print (t.yr); lcd.print ("-"); lcd.print (t.mon / 10); lcd.print (t.mon% 10); lcd.print ("-"); lcd.print (t.date / 10); lcd.print (t.date% 10); lcd.print (""); lcd.print (día); lcd.setCursor (4, 1); lcd.print (t.hr); lcd.print (":"); impresión lcd (t.min / 10); impresión lcd (t.min% 10); lcd.print (":"); lcd.print (t.seg / 10); lcd.print (t.sec% 10);} void setup () {// reloj Serial.begin (9600); rtc.write_protect (falso); rtc.halt (falso); // ir irrecv.enableIRIn (); // habilita el módulo receptor de infrarrojos lcd.init (); // inicializa el lcd lcd.backlight (); // abre el pinMode de luz de fondo (sensorPin, INPUT); Hora t (2017, 12, 9, 11, 20, 00, 7); // inicializar la hora / * Establecer la hora y la fecha en el chip * / rtc.time (t);} void loop () {lcd. setCursor (0, 0); lcd.print ("A"); retraso (50); lcd.setCursor (1, 0); lcd.print ("r"); retraso (50); lcd.setCursor (2, 0); lcd.print ("d"); retraso (50); lcd.setCursor (3, 0); lcd.print ("u"); retraso (50); lcd.setCursor (4, 0); lcd.print ("i"); retraso (50); lcd.setCursor (5, 0); lcd.print ("n"); retraso (50); lcd.setCursor (6, 0); lcd.print ("o"); retraso (50); lcd.setCursor (8, 0); lcd.print ("W"); retraso (50); lcd.setCursor (9, 0); lcd.print ("e"); retraso (50); lcd.setCursor (10, 0); lcd.print ("a"); retraso (50); lcd.setCursor (11, 0); lcd.print ("t"); retraso (50); lcd.setCursor (12, 0); lcd.print ("h"); retraso (50); lcd.setCursor (13, 0); lcd.print ("e"); retraso (50); lcd.setCursor (14, 0); lcd.print ("r"); retraso (50); lcd.setCursor (4, 1); lcd.print ("S"); retraso (50); lcd.setCursor (5, 1); lcd.print ("t"); retraso (50); lcd.setCursor (6, 1); lcd.print ("a"); retraso (50); lcd.setCursor (7, 1); lcd.print ("t"); retraso (50); lcd.setCursor (8, 1); lcd.print ("i"); retraso (50); lcd.setCursor (9, 1); lcd.print ("o"); retraso (50); lcd.setCursor (10, 1); lcd.print ("n"); delay (50); if (irrecv.decode (&results)) // si los datos del receptor del módulo receptor ir {if (results.value ==0xFF6897) // si se presiona "0" print TIME {lcd.clear (); // limpia la pantalla LCD print_time (); retraso (10000); // demora 10000ms lcd.clear (); // borra el retardo de la pantalla LCD (200); // espera un rato irrecv.resume (); // Recibir el siguiente valor} if (results.value ==0xFF30CF) // si se presiona "1" print TEMPERATURA y HUMEDAD {lcd.clear (); // limpiar la pantalla LCD // LEER DATOS del DHT int chk =DHT.read11 (DHT11_PIN); // MOSTRAR DATOS lcd.setCursor (0, 0); lcd.print ("Tem:"); lmVal =analogRead (lmPin); // leer el valor de A1 tem =(lmVal * 0.0048828125 * 100); // 5/1024 =0.0048828125; 1000/10 =100 lcd.print (tem); // imprimir tem lcd. print (char (223)); // imprime la unidad "" lcd.print ("C"); // Serial.println ("C"); lcd.setCursor (0, 1); lcd.print ("Hum:"); //Serial.print("Hum:"); impresión lcd (humedad DHT, 1); // imprime la humedad en lcd //Serial.print(DHT.humidity,1); lcd.print ("%"); //Serial.println ("%"); retraso (10000); // espera 3000 ms lcd.clear (); // borra el retardo de la pantalla LCD (200); // espera un rato irrecv.resume (); // Recibe el siguiente valor} if (results.value ==0xFF18E7) ​​// si se presiona "2" imprime la OSCURIDAD {lcd.clear (); // limpia la pantalla LCD lcd.setCursor (4, 0); // coloca el cursor en 4 columnas, 1 fila lcd.print ("Oscuridad:"); luce =analogRead (sensorPin); // lee el ldr pluce =map (luce, 0, 1023, 0, 100); // el valor del sensor se convierte en valores de 0 a 100 lcd.setCursor (6, 1); // coloca el cursor en el medio de la pantalla LCD lcd.print (pluce); // imprime el porcentaje lcd.print ("%"); // imprime el símbolo delay (10000); // demora 10000 ms lcd.clear (); // borra el retardo de la pantalla LCD (200); // espera un rato irrecv.resume (); // Recibe el siguiente valor} if (results.value ==0xFF7A85) // si se presiona "3" imprime el NIVEL DE NIEVE o AGUA {lcd.clear (); // limpia la pantalla LCD lcd.setCursor (0, 0); // coloca el cursor en la columna 0, 1 fila lcd.print ("Nivel de fluido (mm):"); // imprimir "Nivel de fluido (mm):" int waterValue =analogRead (waterSensor); // obtiene el valor del sensor de agua lcd.setCursor (6, 1); // coloca el cursor en 6 columnas, 2 filas mmwaterValue =map (waterValue, 0, 1023, 0, 40); lcd.print (mmwaterValue); // valor mostrado en lcd delay (10000); // demora 10000ms lcd.clear (); // borra el retardo de la pantalla LCD (200); irrecv.resume (); // Recibe el siguiente valor} if (results.value ==0xFF9867) // si se presiona "PRESENTATION" imprime TIME, TEM y HUM, DARKNESS y S o W LEVEL una vez {lcd.clear (); // limpia la pantalla LCD print_time (); retraso (4000); // demora 10000ms lcd.clear (); // borra el retardo de la pantalla LCD (200); // esperar un rato // LEER DATOS del DHT int chk =DHT.read11 (DHT11_PIN); // MOSTRAR DATOS lcd.setCursor (0, 0); lcd.print ("Tem:"); lmVal =analogRead (lmPin); // leer el valor de A0 tem =(lmVal * 0.0048828125 * 100); // 5/1024 =0.0048828125; 1000/10 =100 lcd.print (tem); // imprimir tem lcd. print (char (223)); // imprime la unidad "" lcd.print ("C"); // Serial.println ("C"); lcd.setCursor (0, 1); lcd.print ("Hum:"); //Serial.print("Hum:"); impresión lcd (humedad DHT, 1); // imprime la humedad en lcd //Serial.print(DHT.humidity,1); lcd.print ("%"); //Serial.println ("%"); retraso (4000); // espera 3000 ms lcd.clear (); // borra el retardo de la pantalla LCD (200); // espera un momento lcd.setCursor (4, 0); // coloca el cursor en 4 columnas, 1 fila lcd.print ("Oscuridad:"); luce =analogRead (sensorPin); // lee el ldr pluce =map (luce, 0, 1023, 0, 100); // el valor del sensor se convierte en valores de 0 a 100 lcd.setCursor (6, 1); // coloca el cursor en el medio de la pantalla LCD lcd.print (pluce); // imprime el porcentaje lcd.print ("%"); // imprime el símbolo delay (4000); // demora 10000 ms lcd.clear (); // borra el retardo de la pantalla LCD (200); // espera un momento lcd.setCursor (0, 0); // coloca el cursor en la columna 0, 1 fila lcd.print ("Nivel de fluido (mm):"); // imprimir "Nivel de fluido (mm):" int waterValue =analogRead (waterSensor); // obtiene el valor del sensor de agua lcd.setCursor (6, 1); // coloca el cursor en 6 columnas, 2 filas mmwaterValue =map (waterValue, 0, 1023, 0, 40); lcd.print (mmwaterValue); // valor mostrado en lcd delay (4000); // demora 10000ms lcd.clear (); // borra el retardo de la pantalla LCD (200); irrecv.resume (); // Recibe el siguiente valor}}} 

Piezas y carcasas personalizadas

box_a5et5f4U9F.dwg

Esquemas

aws_DMDwb4iUZp.fzz

Proceso de manufactura

  1. Weather Station V 2.0
  2. TinyML-Language Detector basado en Edge Impulse y Arduino
  3. Juego de giroscopio Arduino con MPU-6050
  4. 6-Shooter:Arduino Drink Mixing Station
  5. Dados digitales Arduino
  6. Encuéntrame
  7. Luz de escritorio reactiva de audio Arduino
  8. Registrador de datos de globos meteorológicos con tecnología Arduino
  9. $ 10 Estación meteorológica portátil Arduino (AWS)
  10. NeoMatrix Arduino Pong
  11. Estación meteorológica ThingSpeak Arduino