Preview only show first 10 pages with watermark. For full document please download

Proyecto Casa Inteligente

Descripción: Domòtica

   EMBED


Share

Transcript

Computo integrado. Proyecto arduino. Que tal gente, esta semana esta relacionada con la clase de computo integrado, aqui se hablara sobre el proyecto arduino. Que es el proyecto? Bien, el proyecto consiste en un conjunto de microsistemas que se pudiesen implementar en una casa inteligente, la idea surge desde el semestre pasado, ya que se venia trabajando con eso, a traves de un simulador y una aplicacion android. En este caso el proyecto muestra en una maqueta, como se podrian implementar las siguientes funcionalidades: una cerradura electronica. una alarma a partir de un sensor de temperatura. una alarma para ventanas. cortinas electronicas. sensores de luminosidad externa. Cabe mencionar que como es una maqueta, maqu eta, lo mencionado arriba se elaboro con los componentes mas simples, para hacer una implementacion real, se puede partir de estos conceptos pero el material de elaboración variara, ya que se tratara entonces de una implementacion real. A continuación se muestra una lista de los materiales utilizados. arduino uno. pic16f628a 2 motores dc 8 transistores BC548B 8 diodos 1n4007 1 reed switch (relevador magnetico) 1 sensor de temperatura MT05 1 fotoresistencia resistencias de 220, 1k, 2k y 4.7k. push buttons y leds. protoboard. cable para conectar. Esquema del proyecto. Puentes H. Los puentes H son un circuito para poder hacer que un motor de corriente directa funcione en ambas direcciones, este se elaboro con los transistores, los diodos y resistencias de 1k. Existe este circuito en microcontrolador, el L293B, pero al ver que se pueden construir facilmente se hicieron a mano. Se elaboraron dos puentes, uno por motor. Esquema del diagrama: Esquema desde Fritzing: Se eliminaron los diodos porque no pasaba nada si no los ponía. Conexion del LM35. El sensor LM35 te permite capturar la temperatura promedio que se presenta alrededor del sensor, esta se calcula en base al voltaje de referencia con el que se trabaja en el circuito. mas adelante en el codigo se explica. la conexión del sensor es como se muestra a continuación: Conexión Fotocelda. La fotocelda es una resistencia que trabaja con l a incidencia de la luz y envía constantemente un valor análogo con la cantidad de luz que recibe en ese momento, ya con ese parámetro, basta con mapear ese valor para generar una una salida pwm para que los leds compensen la falta o exceso de luz, encendiéndose o apagándose. La conexión de la fotocelda. Reed Switch. El Reed Switch es un relevador magnetico, este se activa con la presencia de un campo magnetico, abriendo o cerrando un circuito. esto fue lo que se implemento para la alarma de la ventana. imagen de conexion. Imágenes de todo armado: La primera versión. Final. Codigo arduino. El codigo del programa es bastante sencillo, no es mas que un loop que verifica todas las entradas y en base a eso hace salidas digitales o analogas. abajo todo el codigo comenzarizado. view plainprint? 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. atura 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. //variables de los puertos de arduino. int abierto = 12; int cerrado = 13; int llave = 4; int led1 = 7; int led2 = 8; //funcion setup, para la definicion del tipo de puerto. void setup(){ Serial.begin(9600); //inicializacion de la comunicacion serial pinMode(llave,INPUT); //declaro llave como entrada pinMode(abierto,OUTPUT); //declaro abierto como salida pinMode(cerrado, OUTPUT); //declaro cerrado como salida pinMode(led1,OUTPUT); //declaro led1 como salida pinMode(led2,OUTPUT); //declaro led2 como salida } void loop(){ //Ciclo principal del sistema //lee el valor recibido por el puerto analogo 0 y con la formula // calcula el valor de temperatura con una referencia de 5V. int temperatura = (5.0 * analogRead(0)*100.0)/1023.0; Serial.println(temperatura); // escribe en el puerto serial la temper if(temperatura >=26){ // si la temperatura >30, enciende alarma digitalWrite(led1,HIGH); //prende led calor //ciclo para generar sonidos for(int a=0; a<2; a++){ //genera tono, salida puerto9, pwm 400 y frecuencia de 250. tone(9,400,250); delay(100); // espera 100 ms tone(9,600,250); // otro tono diferente. delay(100); // espera 100 ms } }if(temperatura <=20){ //si la temperatura es menor que 21 grados. 33. 34. 35. digitalWrite(led2,HIGH); //enciende led frio for(int a=0; a<2; a++){ //genera tono, salida puerto9, pwm 400 y frecuencia de 250. 36. tone(9,400,250); 37. delay(100); //espera 100 ms 38. tone(9,600,250); 39. delay(100); 40. } 41. } 42. digitalWrite(led1,LOW); //apaga el led1 43. 44. //la entrada 2 es la que escucha al Reed Switch. 45. //se activa cuando se abre la ventana 46. if(digitalRead(2)==HIGH){ //si la entrada 2 esta activada? 47. for(int a=0; a<2; a++){ 48. tone(9,200,250); //genera sonido 49. digitalWrite(led1,LOW); //leds para simular sir ena. 50. digitalWrite(led2,HIGH); 51. delay(200); //espera 52. tone(9,800,250); //otro tono diferente 53. digitalWrite(led2,LOW); //cambio de leds 54. digitalWrite(led1,HIGH); 55. delay(200); //espera 56. } 57. 58. } 59. //llave es el puerto que escucha al pic, se eleva cuando la pone el 60. //pasword correcto 61. if(digitalRead(llave)==HIGH){ 62. tone(9,200,250); //sonido 63. digitalWrite(cerrado,LOW); //baja la salida de cerrado del  puente H 64. digitalWrite(abierto,HIGH);//sube la salida de abierto del  puente H 65. //cuando ya no es uno. la salida de alta del pic solo dura 3 segundos . 66. }else{ 67. digitalWrite(cerrado,HIGH);//sube la salida de cerrado del  puente H 68. digitalWrite(abierto,LOW); //baja la salida de abierto del  puente H 69. 70. } 71. 72. //lee el valor del sensor ldr int valorldr = analogRead(2); 73. int vled = 1023  valorldr; // restamos al total, lo recibido por la fotocelda. 74. int salida = map(vled,0,1023,0,255); //mapea los valores para obtener  una salida 75. analogWrite(led3,salida); 76. }