En este interesante proyecto , se combinan varios componentes para montar una estación meteorológica con reloj incorporado que es ideal para aquellos que quieren dejar lo básico y atacar proyectos más complejos.
Este proyecto es de dificultad media pero al alcance de cualquiera que se sienta ya cómodo con la programación de Arduino y sus sensores.
Es justamente la mezcla de diferentes componentes y sensores lo que le hace tan interesante , porque sirve magníficamente como proyecto de fin de curso.
Al final si conseguimos una caja en la que embeber todo el proyecto , tendremos un bonito despertador y hecho por vosotros , así que a darle!
Lista de Materiales :
Arduino UNO
Protoboard y cables
Un LCD de 20x4 aunque también se puede adaptar un display de 16x2 o de 16x4
Un sensor de temperatura DHT11
Un reloj Tiny RTC
Un potenciometro de 10K
Esquema del Circuito
El montaje no es complicado pero requiere muchas conexiones, así que es importante que se preste atención , para evitar dolores de cabeza con los componentes.
Les recomiendo que vayan montando y probando los componentes poco a poco y asegurando que todo está bien , porque si lo haces de golpe, pueden existir fallas.
Programa de Control
El programa no es complicado pero tiene una moderada dificultad por lo que supone de mezcla de componentes y librerías , pero por lo demás es similar los ejemplos que hemos ido viendo previamente.
Les dejo el programa aquí : programa
Este proyecto es de dificultad media pero al alcance de cualquiera que se sienta ya cómodo con la programación de Arduino y sus sensores.
Es justamente la mezcla de diferentes componentes y sensores lo que le hace tan interesante , porque sirve magníficamente como proyecto de fin de curso.
Al final si conseguimos una caja en la que embeber todo el proyecto , tendremos un bonito despertador y hecho por vosotros , así que a darle!
Lista de Materiales :
Arduino UNO
Protoboard y cables
Un LCD de 20x4 aunque también se puede adaptar un display de 16x2 o de 16x4
Un sensor de temperatura DHT11
Un reloj Tiny RTC
Un potenciometro de 10K
Esquema del Circuito
El montaje no es complicado pero requiere muchas conexiones, así que es importante que se preste atención , para evitar dolores de cabeza con los componentes.
Les recomiendo que vayan montando y probando los componentes poco a poco y asegurando que todo está bien , porque si lo haces de golpe, pueden existir fallas.
Programa de Control
El programa no es complicado pero tiene una moderada dificultad por lo que supone de mezcla de componentes y librerías , pero por lo demás es similar los ejemplos que hemos ido viendo previamente.
Les dejo el programa aquí : programa
/* Programa para crear un reloj con hora y fecha,tempertura y humedad * union de los programas RTC, DHT11 y LCD de PROMETEC */ #include <DHT11.h> #include <LiquidCrystal.h> #include <Time.h> #include <Wire.h> #include <DS1307RTC.h> // a basic DS1307 library that returns time as a time_t LiquidCrystal lcd(7, 8, 9, 10, 11, 12); //( RS, EN, d4, d5, d6, d7) Asignacion pines del LCD int pin=2; DHT11 dht11(pin); // Asignacion pin DHT11, el RTC tiene SDA en el A4 //(SDA del arduino) y el SCL en el A5 (SCL del arduino) void setup() { Serial.begin(115200); lcd.begin(20, 4); // Fijar numero aracteres y filas setSyncProvider(RTC.get); // Vamos a usar el RTC setTime(00,31,22,28,9,2015); // hh,mm,ss,dd,mm,yy, si en la fecha alguna cifra es de // un solo digito no añadir 0, da error // El setTime hay que comentarlo una vez que el RTC tiene ya la hora y fecha correcta if (timeStatus() != timeSet) Serial.println("Unable to sync with the RTC"); else Serial.println("RTC has set the system time"); } void loop() { digitalClockDisplay(); int err; float temp, hum; if((err = dht11.read(hum, temp)) == 0) // Si devuelve 0 es que ha leido bien { Serial.print("Temperatura: "); Serial.print(temp); lcd.setCursor(0, 2); // Tercera columna LCD lcd.print("Temperatura: "); lcd.print(temp); Serial.print(" Humedad: "); Serial.print(hum); lcd.setCursor(0, 3); // Cuarta columna LCD lcd.print("Humedad: "); lcd.print(hum); Serial.println(); } else { Serial.println(); Serial.print("Error Num :"); Serial.print(err); Serial.println(); } delay(1000); //Recordad que solo lee una vez por segundo } void digitalClockDisplay() { lcd.setCursor(0, 0); // Primera columna LCD printDigits(hour()); // Hacer que la hora tenga siempre dos digitos lcd.print(":"); printDigits(minute()); lcd.print(":"); printDigits(second()); Serial.print(" "); Serial.print(day()); lcd.setCursor(0, 1); // Segunda columna LCD lcd.print(day()); lcd.print("/"); Serial.print("/"); Serial.print(month()); lcd.print(month()); lcd.print("/"); Serial.print("/"); Serial.print(year()); lcd.print(year()); Serial.println(); } void printDigits(int digits) // Modifico esta funcion para que a la vez que imprime { Serial.print(":"); // via serie tambien lo haga via LCD //lcd.print(":"); if(digits < 10) { Serial.print('0'); lcd.print('0'); } Serial.print(digits); lcd.print(digits); }
Comentarios
Publicar un comentario