Introduction: Aplicacion Domotica Basada En XBee Y PSoC 4

Hola, en este, mi primer instructable voy a compartir un proyecto, el cual se basa en el uso de dos PSoC 4 de Cypress, los cuales se comunican entre si mediante el uso del protocolo de comunicación UART, para lo cual usaré así mismo 2 antenas XBee.

Aunque una de las placas es una PSoC 4 BLE, debo aclarar que no he hecho uso del bluetooth.

El sistema puede ser difícil de explicar, así que cualquier duda no dudéis en preguntarme.

Bien, para elaborar este proyecto lo he dividido en 2 partes, un módulo emisor, encargado de enviar ordenes al que será el módulo receptor.

Para realizar todo esto, he usado:

Materiales:

  • 1 Placa de desarrollo PSoC 4
  • 1 Placa de desarrollo PSoC 4 BLE
  • 1 XBee Shield
  • 1 Módulo XBee Explorer
  • 2 Antenas XBee
  • 2 Potenciómetros de 10 KΩ
  • 1 Display LCD
  • 1 LED de luz blanca
  • 1 Sensor de iluminación (LDR)
  • 1 Zumbador (Alarma)
  • 2 Placas de prototipado (protoboard)
  • Cableado
  • 2 Cables USB para las placas PSOC 4 (también se puede usar un cargador de móvil con salida mini USB)

Step 1: Montaje Del Emisor

Primeramente podemos montar el módulo emisor, para ello hemos usado el PSoC 4 BLE junto con un display LCD y el XBee Xplorer y una antena XBee, que he llamado 1.

Cabe decir que previamente habría que configurar las antenas para que puedan comunicarse entre ellas, así como elegir una velocidad de transmisión que coincida con la de los UART de los PSoC, para ellos he usado el software X-CTU. En mi caso la velocidad que elegí han sido 9600 kbps.

También cabe decir que hay que unir dos pines del XBee Xplorer para que pueda funcionar correctamente.

Los potenciómetros sirven para poder adaptar el display y regular la iluminación del mismo. También se puede optar por no poner iluminación.

Step 2: Montaje Del Receptor

Este módulo se encargará de recibir ordenes y activar el funcionamiento del LED y alarma, a la vez, recibe información por medio del LDR (sensor de luminosidad).

Vemos que aquí hemos usado la XBee Shield. Es importante decir que los PSoC no suelen llevar unos pines que están en la zona central de la placa y permiten la alimentación de la XBee shield, por lo que habría que soldarle a la placa.

Los módulos basados en la alarma y LDR vienen en un pack que se puede encontrar por internet, así mismo hay información en internet acerca de su uso, esto lo digo porque llama la atención que tengan 3 pines.

Step 3: Diseño Del Emisor

Se pueden ver en la imagen cuales han sido los módulos usados, y la tarea principal de estos es:

  • Capsense: Regular el nivel de iluminación en el módulo receptor, es decir, se envia información mediante los módulos inalámbricos acerca del nivel de iluminación deseado. Esta información se verá reflejada en el LED del receptor.
  • LED: Proporciona un aviso visual en ciertas tareas. Se trata del LED del PSoC
  • LCD: Proporciona información textual al usuario.
  • XbeeE: Proporciona las herramientas para la transferencia de datos. Se usa protocolo UART.
  • Contador para alarma: Se dará más descripción de la alarma en el módulo receptor. El Contador para alarma se encarga de recibir la cuenta del número de pulsaciones del pulsador (SW) del emisor, ya que al presionar un número de veces el pulsador, podremos apagar la alarma. Se ha configurado para que al pulsar 5 veces la alarma desde el módulo emisor, este pueda enviar información necesaria en el módulo receptor para apagar la alarma.

A nivel de Software las funciones principales que usa el módulo emisor son:

  • iluminacion( )
  • alarma( )
  • alarmaApagada( )

Además del uso de una interrupción llamada isr_apagoAlarma().

Por su parte el programa principal main ( ) realiza la habilitación de cada uno de los bloques usados (UART, Capsense, etc) y se encarga de recibir información para mostrar algún mensaje por el display, y a su vez, realiza la tarea de envio de datos al receptor para el control de iluminación.

A continuación se detalla un poco más la tarea de las funciones:

- iluminación ( ): Muestra un mensaje por el LCD cuando se enciende la iluminación en el receptor. No se encarga de encenderla, si no solo de avisar que se ha encendido.

- alarma ( ): Se encarga de mostrar un mensaje por el LCD cuando se activa la alarma en el receptor, además indica como apagar la alarma. Más adelante se explicará en qué condiciones se enciende la alarma.

- alarmaApagada ( ): Indica un mensaje por LCD cuando se ha apagado la alarma en el receptor.

La interrupción isr_apagoAlarma( ) se ejecuta una vez que se ha detectado que el contador ha alcanzado la cuenta que se requería para apagar la alarma, y envía la información necesaria para que el receptor apague la alarma.

El código del programa se encuentra en:

https://github.com/jorgewilliams21/PSoC_4/blob/mas...

Step 4: Diseño Del Receptor

En este módulo he usado la placa PSoC 4, la XBee Shield, el zumbador (el cual he usado como alarma), el sensor basado en un LDR, y el LED.

A nivel interno el PSoC cuenta con los siguientes módulos:

  • Ilu_sensor: Aquí va conectado el sensor de iluminación, el cual proporcionará información acerca de si hay luz o no en el ambiente, esto permitirá que se pueda encender el LED, el cual simulará la iluminación del hogar.
  • Temporizador (Timer): Se usaría en conjunto con un sensor, el cual podría ser de presencia, de vibración, u otros, que permita detectar cuando un posible intruso está a punto de asaltar la vivienda. Lo que hace en este caso, es básicamente, verificar el tiempo en el que el pulsador (denominado Acceso) correspondiente a dicho módulo (receptor) permanece pulsado. Si el pulsador se pulsa una sola vez, simularemos que el intruso ha forzado una puerta, o ha sido detectado por un sensor de presencia, por un instante de tiempo muy corto, y con el cual no conseguiría éxito en su propósito. Ante esto, la alarma se encenderá y sonará un par de veces, dando únicamente un aviso. Si el intruso persiste en realizar su fechoría pese al aviso de la alarma, la alarma sonará indefinidamente. Esta es la tarea del Temporizador, verifica el tiempo durante el cual el intruso está presente. Si solo es por poco tiempo, se activa la interrupción isr_aviso, en caso contrario, se activa la alarma mediante la interrupción isr_acceso.
  • PWM_ilum: Se encarga de regular la iluminación del LED, lógicamente lo hará solo cuando no haya iluminación, que es cuando esta esté encendida.
  • Alarma: Se encarga de generar la señal necesaria para que el zumbador suene como una alarma.
  • Xbee: Módulo UART, que facilita la comunicación mediante XBee.

A nivel de software se
cuenta con la siguiente función:

  • activoAlarma ( )

Esta función está encargada de activar la alarma, y se ejecuta constantemente mientras no sea apagada la alarma.

Y contamos con las interrupciones:

  • isr_Ilum: Detecta la falta de luz en el ambiente, y activa la iluminación de casa (LED).
  • isr_acceso: Activa la alarma permanentemente, permanece a la espera de recibir la orden de apagado y además envía una señal cuando la alarma ha sido apagada, para que el emisor (PSoC 4 BLE) lo sepa y pueda indicar al usuario.
  • isr_aviso: Como se ha dicho antes, indica la señal de aviso de presencia de un posible intruso, solo activa la alarma un par de veces.

La función principal main( ), se encarga de habilitar los módulos usados en el PSoC, y de recibir la información enviada desde el emisor, acerca del nivel de iluminación deseado. Por facilidad solo se ha dispuesto de 5 niveles de intensidad de luz.

El código completo se encuentra en:

https://github.com/jorgewilliams21/PSoC_4/blob/mas...

Step 5: Funcionamiento

A continuación se puede ver funcionando