El siguiente post describe un proyecto que consiste en un circuito medidor de condiciones ambientales como humedad, temperatura, luminosidad, presión barométrica y altura relativa; los datos se muestran en una pantalla LCD.
En Panama Hitek se ha tratado de llevar contenidos de calidad a todas aquellas personas que nos visitan a diario. Esta vez he preparado un proyecto sencillo, pero muy instructivo según mi parecer. He unificado varios de los contenidos que hemos mostrado aquí en un solo dispositivo capaz de mostrar información en tiempo real acerca de las condiciones del medio ambiente que rodea a la persona que lo esté utilizando. A continuación muestro el diagrama pictórico del proyecto: un medidor de condiciones ambientales con Arduino. Los materiales utilizados son:
- Arduino Nano
- Pantalla LCD 16×2
- Sensor de temperatura DHT22
- Fotorresistencia (LDR)
- Potenciómetro de 10K (cualquier valor funciona)
- Sensor de presión barométrica BMP180
- 2 Resistencias de 10K (cualquier valor por encima de 4.7K funciona, entre más alto mejor).
- Batería de 9 voltios
- Placa perforada universal
He preparado un video donde trato de mostrar el funcionamiento del aparato en tiempo de ejecución. Se explica brevemente las funciones del mismo y su modo de operación.
- Uso de Pantalla LCD con Arduino
- DHT22: Sensor de humedad/temperatura de precisión
- Sensor de Presión Atmosférica, el BMP180
- Lecturas Analógicas en Arduino
En todos y cada uno de los artículos se ha intentado explicar de manera clara, precisa y concisa el uso de los componentes que forman este proyecto. En la programación se ha unificado los códigos de uso de todos y cada uno de los sensores a la vez que se proporciona una estructura que le permite a la pantalla LCD mostrar la información de manera clara. A continuación el código de este proyecto.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 |
#include <LiquidCrystal.h> #include <SFE_BMP180.h> #include <Wire.h> #include "DHT.h" #define DHTPIN 8 #define DHTTYPE DHT22 DHT dht(DHTPIN, DHTTYPE); LiquidCrystal lcd(6, 7, 2, 3, 4, 5); SFE_BMP180 pressure; double baseline; int menu = 0; float h; float t; float l; void setup() { Serial.begin(9600); dht.begin(); lcd.begin(16, 2); pinMode(13, OUTPUT); digitalWrite(13, HIGH); pinMode(14, INPUT); if (pressure.begin()) Serial.println("BMP180 init success"); else { Serial.println("BMP180 init fail (disconnected?)\n\n"); while (1); } baseline = getPressure(); } void loop() { if (digitalRead(14) == 1) { menu++; if (menu > 5) { menu = 0; } delay(300); } double a, P; switch (menu) { case 0: lcd.setCursor(0, 0); lcd.print(" ICSV "); lcd.setCursor(0, 1); lcd.print("XII F Ciencias"); break; case 1: l = analogRead(A3); l = (l * 100) / 1023; lcd.clear(); lcd.setCursor(0, 0); lcd.print("Luminosidad"); lcd.setCursor(0, 1); lcd.print(l); lcd.print(" %"); delay(1000); break; case 2: t = dht.readTemperature(); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Temperatura"); lcd.setCursor(0, 1); lcd.print(t); lcd.print(" *C"); delay(2000); break; case 3: h = dht.readHumidity(); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Humedad Relativa"); lcd.setCursor(0, 1); lcd.print(h); lcd.print(" %"); delay(2000); break; case 4: P = getPressure(); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Pres. bar."); lcd.setCursor(0, 1); lcd.print(P); lcd.print(" mili bares"); delay(2000); break; case 5: P = getPressure(); a = pressure.altitude(P, baseline); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Altura SNM"); lcd.setCursor(0, 1); lcd.print(a); lcd.print(" metros"); delay(2000); break; } } double getPressure() { char status; double T, P, p0, a; status = pressure.startTemperature(); if (status != 0) { delay(status); status = pressure.getTemperature(T); if (status != 0) { status = pressure.startPressure(3); if (status != 0) { delay(status); status = pressure.getPressure(P, T); if (status != 0) { return (P); } else Serial.println("error retrieving pressure measurement\n"); } else Serial.println("error starting pressure measurement\n"); } else Serial.println("error retrieving temperature measurement\n"); } else Serial.println("error starting temperature measurement\n"); } |
El medidor de condiciones ambientales pretende ser el prototipo de una serie de proyectos basados en sensar información a partir de las condiciones del ambiente próximo a quien se disponga en utilizar este dispositivo. Espero que la información suministrada sea de utulidad. Saludos.
Muy buena tu informacion me sirve para mi proyecto como yo apenas estoy comenzando con arduino no lo se utilizar (Y)
Excelente
Hola buenas tardes, estoy realizando el proyecto que publicaron( felicidades de antemano) y quisiera saber si me pudiera decir los materiales exactos que se necesitan, además de los sensores la resistencias y demás componentes necesarios para que lo pudiera realizar. Muchas gracias
YO tambien quiero fabricar esto, y tambien necesito los materiales exactos.! es interesante su proyecto. Le felicito. Ademas de que añada los respectivos comentarios de la programacion //Se le agradeceria. Saludos!
Hola. muy interesante publicación. Me gustaría saber si con estos componentes es posible elaborar un dispositivo datalogger que registre los cambios en las variables ambientales, cada cierto tiempo y como se programaría?. Saludos
Necesitarías agregarle un módulo de memoria micoSD para almacenar la Data
El esquema de esta diferente a la que en el video. Os dejo el video del programa para enviar? Este video tiene 2 botones y 3 resistencias. OBrigrado
En el video uno de los dos botones está colocado ahí y no está conectado. El diagrama pictórico es el válido
preciono el botón y no pasa nada!
Está mal armado
Disculpa, en el esquema donde coloco el potenciometro?
Es el elemento más a la inzquierda. Un pequeño círculo blanco con negro
Estimado Antony, logre armar este proyecto pero me encuentro con el problema que la PC reconoce al arduino cuando esta desconectado del tablero, y asi puedo cargar el programa.
Otro problema es que el DHT22 no muesta los valores de Temperatura y de Humedad, en lugar de ellos muestra en display nan % y nan *C.
Mi mail es [email protected], me puedes por favor ayudar a solucionar estos problemas?
Gracias,
Omar
El problema del DHT se debe a una mala conexión
que tal omar yo igual estoy haciendo este proycto tansolo que en la pantalla del LCD me aparecen letras chinas y ya revise y todo esta bien conectado , si eres tan amable de enviar el codigo que si te funciono a ti te lo agradeceria este es mi correo jm7.jl52@gmail .com
https://uploads.disquscdn.com/images/d2346eeebc5bc7bdb37d9f8cfd87955a091a2fa95c0306df052fccf27faa9146.jpg Buenas noches. Exelente dispositivo. No se si me puedas ayudar. Estoy midiendo humedad y temperatura con un DHT11 y me funciona perfecto. Ahora lo que deseo hacer es tener estas medidas pero en internet y sacar la señal de internet mediante un modulo GPRS. Es posible enlazarlos? Gracias. Saludos desde México
No tengo experiencia con ese módulo en específico
hola antony una pregunta estamos realizando el proyecto peronotamos que en el esquema pictórico que muestra no aparecen algunos componentes como el pulsador…y tenemos un problema al probarlo que no muestra nada en el lcd…podrias ayudarnos porfavor y si tbn podrias brinadarnos un circuito esquemático o impreso para guiarnos al momento de armar la placa….porfavor antony ayudanos…de este proyecto depende nuestro titulo…mi mail es… [email protected]
Hola. En el diagrama sí aparece el pulsador, es el que tiene conectado un cable gris. Con la información que les he proporcionado aquí es suficiente para armar el proyecto. No puedo ponerme a hacerles un diagrama esquemático para ustedes porque ya muchas otras personas lo han armado. Tampoco pueden decirme que de esto depende su título, puesto que si es así entonces no merecen graduarse.
Obtener un título profesional no significa que fuiste bueno en buscar algo en Internet, armarlo y si tuviste problemas le escribiste al que publicó el proyecto para que te ayude. Se supone que si vas a obtener un título tu mismo deberías poder hacer lo que está ahí sin siquiera ver el código, o el circuito. Yo en lo personal publiqué este proyecto mientras me encontraba en el tercer año de mi carrera, así que si yo pude, ustedes pueden. Con lo que hay ahí es más que suficiente.
ola tengo un problema
lo acabo de armar y me sale letras japonesas en mi lcd
que puede ser???
Falso contacto
Puede decirme los pasos para el armado de este proyecto?
No entiendo a qué te refieres con pasos. Es lo que es. Simplemente se arma, se programa y listo
me sale error compliando para arduino nano
Me puedes dar más detalles sobre el error?
Disculpa, buenas tardes Antony, trato de compilar el código que presentas en este proyecto, pero me aparece el siguiente msj: No such file or directory, no sé que estoy haciendo mal. sabrás que hacer?
Creo que es una librería que no ha sido instalada
hola Anthony! y si en dado caso solo pudiera obtener un BMP 280, que es la version mejorada del bmp180, como o en cambiaria el codigo he pasado mucho intentando pero es muy diferente, podrias compartir el codigo del proyecto con la modificacion del codigo cambiando el snesor a bmp280
No tengo ese tipo de sensor. Tampoco debe ser tan complicado
Hola Antony, soy docente de informática en Paraguay…
Estoy ayudando a un alumno para hacer este proyecto y me gustaría saber si hay alguna posibilidad de conseguir el plano de los circuitos para poder hacer una placa fija, o bien el archivo del simulador..
DESDE YA MUCHAS GRACIAS….
Hola. Este es un proyecto viejo y no tengo los archivos del simulador. Con las imágenes del post es más que suficiente para saber qué conectar, y dónde.
muy buen proyecto,me podría decir que librería necesito instalar ya que el codigo me aparece un error al compilar
No tengo idea de que error te aparece. No puedo hacer mucho por ti
Hola que tal, a que se debe que me salen letras chinas?
Falso contacto
maravilloso excelente amigo por compartir tan preciosos proyectos
Hola, puedes enviar una foto por debajo del proyecto?… es para saber cómo está soldado
Este proyecto es de hace años. No tengo idea de qué hice con la placa