Universidad Autónoma de Chihuahua Facultad de Ingeniería Electrónica Analógica Proyecto de electrónica digital Casa domótica Juan Antonio Luna Gutiérrez - 329500 Jesus Alberto Soto Chavarría - 329651 Jesús Alfredo Domínguez Rodríguez - 288123 Ruth Mariana González Banda - 326724 Abstract En el presente reporte se muestran una simulación de un circuito diseñado para controlar una casa por medio de un módulo bluetooth HC-06. Se presenta el código de programación y la aplicación que se usó para establecer comunicación con el PIC. Introducción La electrónica cada vez se integra más a nuestra vida, desde los dispositivos móviles que usamos día a día hasta las grandes maquinas dedicadas al ensamblaje en las fábricas. El hogar no es la excepción, en los últimos años hemos visto el creciente interés por integrar toda clase de circuitos y dispositivos para controlar los aparatos electrónicos a distancia. La construcción del sistema de domótica en el hogar, una casa inteligente, puede llegar incluso a ser controlada en su totalidad a través de la simple pulsación de un botón, ya que lo cierto es que, por intermedio de los sistemas de automatización, una vivienda puede estar por completo conectada a través de un controlador central, lo que la convierte en una casa inteligente. El controlador central funciona dentro de una casa inteligente como una especie de control remoto, que el usuario puede utilizar para activar o desactivar las distintas funciones que incluye el sistema, como por ejemplo para controlar el uso de la luz, la temperatura del ambiente, el sistema de seguridad, el stock de insumos, la programación de rociadores y demás. En función de ello, podemos mencionar que a grandes rasgos la domótica en el hogar es precisamente una tecnología que permite la creación de controles automatizados para los hogares. Desarrollo En el presente proyecto se llevó a cabo la realización de una casa domótica. Para ello se incorporaron 3 sistemas: El primero sistema, una alarma con la cual se controlará el acceso a la puerta frontal. Se agregó un sistema de encendido de luz usando una aplicación en el teléfono móvil y un controlador Bluetooth que permite conectar el PIC al módulo Bluetooth. Se integró una cochera, la cual puede ser controlada por medio del teléfono celular. Para este diseño se usó el PIC16F877A, un pic de gama alta de 40 pines que maneja frecuencias de operación de hasta 20MHz. El pic PIC16F877A cuenta con 5 puertos de pines bidireccionales, que pueden ser usados como entradas o salidas (figura 1). Al trabajar con un cristal externo de 20MHz la frecuencia de procesamiento interno del microcontrolador será: 𝐹= 𝐹𝑐𝑙𝑜𝑐𝑘 20𝑀𝐻𝑧 = = 5𝑀𝐻𝑧 4 4 Así realmente el ciclo de máquina interno del microcontrolador va a trabajar a 5MHz. Figura 1. Diagrama de los pines del PIC18F4550. Para nuestro circuito se hizo uso de un oscilador externo de 20 MHz, para ello se usó un cristal de cuarzo y dos capacitores conectados a los pines OSC1 y OSC2 (figura 2) de acuerdo a lo estipulado en el manual para osciladores externos de alta frecuencia (‘HS High-Speed Crystal/Resonator’). Por lo que cada instrucción de código dentro del PIC en lenguaje Assembler tomaría 0.2 micro-segundos. 1 Ciclo de maquina = 5𝑀𝐻𝑧 = 0.2𝑢𝑠 Debido a que este proyecto fue programado en CCS C Compiler que es un lenguaje más alejado del lenguaje maquina (de más alto nivel), este valor puede crecer. Programación Para la parte de programación se usó el programa CCS C compiler en su versión 5.015. Los fuses que se usaron para el proyecto son: Figura 2. Cristal/cerámica funcionamiento del resonador (XT, HS o HSPLL configuración). Para determinar el valor adecuado de los capacitores se uso la tabla de la figura 3, valores que recomienda el fabricante. HS: Configura el oscilador externo como un cristal de alta velocidad. NOWDT: Desactiva el perro guardián que provoca un reset del sistema en caso de que éste se haya bloqueado. NOPROTECT: No se protege el código, por lo que este puede ser extraído del pic si alguien lo desea. NOPUT: No power up timmer. NOLVP: Desactiva Programming Figura 3. Selección de condensadores para resonadores de cerámica. el Low Voltage BROWNOUT: Se desactiva el modo Brownout, el cuales un sistema que hace que el PIC entre en modo Reset si la alimentación VCC baja de un cierto valor que es configurable. Figura 4. Simulación en Proteus. Figura 5. Inicio de la simulación. Circuito portón. La señal se envía desde el teléfono hacia el módulo bluetooth, este le entrega la señal al pic por el pin 26 y el pic interpreta la información para dar una respuesta por el puerto “e” del pic. Si se presiona el botón abrir de la sección “Garaje” en la aplicación, se envía una “g” al microcontrolador. Lo que provoca que el motor gire en sentido horario por 5 segundos (se abre el portón) *. Figura 6. Circuito usado en el portón. Para el diseño del protón, se hizo uso de dos compuertas AND del 7408 y dos compuestas NOT del 7404. Después, en el panel derecho de la sección “Garaje” de la aplicación, se escribe la palabra “Portón abierto” (figura 8). Tal circuito se configuro usando la siguiente tabla de verdad. h g Q1 Q2 Q3 Q4 Giro 0 0 0 0 0 0 Detenido 0 1 1 0 0 1 Cerrar 1 0 0 1 1 0 Abrir 1 1 x x x x x Tabla 1. Tabla de verdad para el motor del portón. Escogiendo x=0 por simplicidad. Q1 = h'g Q3 = hg' = Q2 Q2 = hg' Q4 = h'g = Q1 Figura 8. Diagrama de bloques en la aplicación App Inventor. Si se presiona el botón cerrar de aplicación, se envía una “h” microcontrolador. Lo que provoca que motor gire en sentido antihorario por segundos (se cierra el portón). la al el 5 Después, en el panel derecho de la sección “Garaje” de la aplicación, se escribe la palabra “Portón cerrado” (figura 9). Q2, Q3 Figura 9. Diagrama de bloques en App Inventor. Q1. Q4 Figura 7. Configuración de las compuertas a parir de las funciones de Boole expuestas. *Como medida de seguridad, para evitar que el motor se active una segunda vez si el operador presiona dos veces la tecla “cerrar” o “abrir” en la aplicación, se agrega un contador al programa para evitar accidentes o daños en el sistema. Desarrollo de la aplicación Para crear la aplicación se uso la aplicación MIT App Inventor 2. La aplicación se diseño para celulares Android y aquellos que tiene el sistema operativo IOS. La interfaz de usuario se trato de hacer lo mas accesible posible, incliyendoce un contro por voz esto diseñado con la intención de falcilitar las operaciones para todos los usuarios. Figura 10. Interfaz de la aplicación diseñada. Figura 11. Lista para el usuario de los comandos al dar clic en la pestaña comandos de voz. Código Simulaciones Para simular el envío de datos se utilizaron dos aplicaciones, Hercules y Virtual Serial Ports Emulator. Primero, se creó un puerto virtual usando el programa Virtual Serial Ports Emulator. Para ello se procedió a ejecutar el programa, dando después clic en la pestaña “Create new device” del panel (figura 12). Una vez creado el puerto se procedió a minimizar la pestaña (figura 14). Figura 14. Puerto creado. Después se procedió a abrir el programa Hercules. Una vez abierto el programa, se seleccionó se pestaña “Serial”. Figura 12. Creación del puerto virtual. En la pestaña emergente se selecciona la opción “Connector” (figura 12). Figura 15. Selección de la pestaña “Serial” en el programa Hercules. En la ventana “Serial” se seleccionó el puerto de trabajo, en nuestro caso el puerto que creamos (COM1). Se eligió un velocidad de comunicación (Baud) de 9600, valor típico en el HC-06. Finalmente se dio clic en el botón “Open” (figura 16). Figura 13. Creación del puerto virtual. Después se selecciona “COM1” (figura 13). Figura Selección puerto trabajo. Figura 13. Selección de “COM1”. 16. del de Al cargar el programa en el simulador y enviar una “a”, usando el programa Hercules, se enciende el led D3 (figura 17). Figura 19. Envío de una “e” al pic. Al enviar una “b”, se apaga el led D3 (figura 20). Figura 17. Envío de una “a” al pic usando el programa Hercules. Al enviar una “c”, se enciende el led D2 (figura 18). Figura 20. Envío de una “e” al pic. Al enviar una “d”, se apaga el led D2 (figura 21). Figura 18. Envío de una “c” al pic. Al enviar una “e”, se enciende el led D1 (figura 19). Figura 21. Envío de una “d” al pic. Al enviar una “f”, se apaga el led D1 (figura 22). Figura 24. Envío de una “h” al pic. Figura 22. Envío de una “f” al pic. Al enviar una “g” se activa el motor girando este a la derecha por 5 segundo. Esto se puede observar viendo el estado de los transistores Q1 y Q4 (cuadros azules en la figura 23). Figura 25. Programa del pic. Para el tercer circuito, la alarma inicia pidiendo la contraseña a través del LCD. Además, el led rojo (que representa una cerradura magnética) indica que la puerta está cerrada y por ende la cerradura activa (figura 26). También se puede observar de la figura 27 que el buzzer está desactivado (no está sonando). Figura 23. Envío de una “g” al pic. Al enviar una “h” se activa el motor girando este a la izquierda por 5 segundo. Esto se puede observar viendo el estado de los transistores Q2 y Q3 (cuadros azules en la figura 24). Cabe destacar que al enviar una vez la señal para que se abra o cierra el portón, se lleva a cabo un conteo (variable n) para evitar que al presionar otra vez por error el mismo botón, el motor vuelva arrancar en el mismo sentido (figura 25). Figura 26. Alarma en su estado inicial. abierta, después se vuelve a cerrar (figura 31). Figura 27. Buzzer desactivado. Al presionar cualquier tecla del teclado este despierta y nos pide ingresar el primer digito de la contraseña (figura 28). Cabe destacar que la contraseña se configuro como 1,2,3. Lo anterior se hizo al inicio del programa (figura 29). Figura 30. Ingreso del segundo digito de la contraseña. Figura 31. Ingreso del tercer digito de la contraseña. Figura 28. Simulación en Proteus, ingreso del primer digito de la contraseña. Figura 29. Configuración de la contraseña como 123, almacenándose esta en la memoria rom del pic en la localidad 0x2100. Después de que se ingresa el primer digito el LCD nos pide ingresar el segundo y tercer digito como se muestra en las figuras 30 y 31. Si la contraseña es correcta, se despliega el letrero de “Contraseña correcta” y se desactiva la cerradura magnética encendiéndose el led verde por 5 segundo (valor que puede modificarse), lo que indica que la puerta esta Figura 32. Contraseña correcta y desactivación de la cerradura (led puesto en verde). Si la contraseña se ingresa una contraseña incorrecta, el LCD nos lo indicara como se puede ver en la figura 33. Para poder desactivar el Buzzer es necesario ingresar la contraseña correcta, de lo contrario este continuara sonado por un periodo indefinido (figura 36). Figura 33. Contraseña incorrecta. Si se ingresa 3 veces mal el código se activa el pin 5 del microcontrolador (figura 34), el cual pone en saturación el transistor Q5 encendiéndose una bocina (figura 35). Figura 36. Desactivación de la bocina ingresando la contraseña correcta en el teclado. Archivo de simulación En el siguiente link se encuentran carpetas que contienen los videos en YouTube de nuestro circuito funcionando, además se encuentran las simulaciones en Proteus: Figura 34. Activación del pin 5 del microcontrol ador. https://drive.google.com/drive/folders/1nLAM VrkghCY2xs56SWtS0SnUUthL5TCl?usp=sh aring Las mismas carpetas se encuentran en el siguiente código QR. Figura 35. Activación de la bocina. Código QR que va al link de los archivos (Proteus y CCSC C Compiler) utilizados en el proyecto. Aplicación para Android (archivo .apk). Conclusión La electrónica esta cada vez más en nuestra vida, entender y manejar los conceptos básicos nos permite diseñar nuestros propios circuitos para controlar desde un simple foco o motor hasta una alarma. La comunicación entre dispositivos es una parte importante, el poder recibir y transmitir información, pues nos brinda confort y comodidad en cualquier clase de tarea. Es importante conocer y aprender a manejar todas estas aplicaciones que nos permiten programar y diseñar aplicaciones. Al igual que es importante conocer los tipos de lenguaje que existen y aprender a manejarlos de acuerdo a las necesidades de nuestro proyecto. Conocer las plataformas y sitios donde podemos encontrar información es un papel clave al diseñar un circuito. Es importante conocer y aprender a leer los datasheet del fabricante, ya que una mala interpretación tan simple como interpretar un pin de salida como uno de entrada nos puede causar graves problemas o incluso nos puede poner en riesgo. Bibliografía CCS C Compiler Manual. (2021, Noviembre). Obtenido de CCS C: https://www.ccsinfo.com/downloads/ ccs_c_manual.pdf PIC16F87XA Data sheet. (23 de julio de 2015). Obtenido de Microchip: https://www.microchip.com/enus/product/PIC 18F877A. Reinoso, S., Mena, L., & Sánchez, J. (2018). Gestión de puertos e interrupciones externas. Sangolquí: Comisión Editorial de la Universidad de las Fuerzas Armadas ESPE. Obtenido de http://repositorio.espe.edu.ec/bitstrea m/21000/15406/1/Programaci%C3% B3n%20de%20microcontralores%20 tomo%201.pdf Reninoso, S., Pilatasig, M., Mena, L., & Sánchez, J. (2018). Programación de módulos: temporizadores, ADC, CCP Y DE comunicaciones. Sangolquí: Comisión Editorial de la Universidad de las Fuerzas Armadas ESPE. Obtenido de file:///C:/Users/jesus/Downloads/P ROGRAMACI%C3%93N%20DE% 20MICROCONTROLADORES%20 PIC%20CON%20LENGUAJE%20 C%20tomo%202%20(1).pdf Tecnologia-facil.com. 2022. Domótica doméstica: Casas Inteligentes Tecnología fácil.