El proyecto incluye los siguientes aspectos:
1. Comunicar un microcontrolador PIC, concrétamente el 18F4550, con un PC mediante LabVIEW y haciendo uso de la api de microchip “MPUSBAPI.DLL” que podemos descargar gratuitamente de la
web del fabricante.
2. Comunicar y visualizar dispositivos ZigBee que formen parte de una misma red. Para ello se ha hecho uso de los módulos XBee (Pro) del fabricante Digi. En el proyecto se emplearón 3 dispositivos, un coordinador que se comunica con el microcontrolador y dos endpoints que serían los que se controlan.
En el software desarrollado se visualizan los distintos dispositivos que conforman la red, así como el estado de las distintas señales. Pudiendo configurar los pines de los módulos, entrada/salida digital o entarda analógica, leer sus valores o activarlos y desactivarlos.
Cuando se adquieren los modulos XBee requieren una configuración inicial para poder funcionar. Para ello se empleó la placa
XBee Explorer USB de SparkFun, que no es más que un puente USB-RS232 perparado para conectar directamente los módulos XBee.
De los dos posibles modos de funcionamiento de los módulos, mediante comandos AT o API, se escogió este último por dos motivos, el primero didáctico, para un mayor contacto con el protocolo ZigBee y el segundo y principal, poder enviar comandos remotos. Es decir, ser capaz de activar o desactivar salidas digitales, realziar lectura de los canales, etc.
Por ello tenemos que configurar los dispositivos para que trabajen en este modo de funcionamiento. Así como indicar cual será el coordinador y cuales los endpoints o routers. Todo ello se puede hacer de forma sencilla con el software X-CTU que proporciona Digi.
A continuación se comentará el firmware implementado.
Para la programación en C se ha utilizado el
programa CCS C Compiler en su versión 4.23 el cual facilita mucho la tarea de comunicación USB.
Las funciones redXBee(), configuracionXbee() y datosXBee() son las encargadas de comunicarse con los dispositivos de la red ZigBee.
La función redXBee() se encarga de buscar los dispositivos que forman la red y guarda las direcciones de los dispositivos que encuentra. Para ello el microcontrolador envía la trama API del comando AT ND al coordinador, el dispositivo coordinador manda a toda la red una petición de descubrimiento, todos los dispositivos de la red, devuelven al coordinador una trama API del tipo, Respuesta de comando AT.
La trama de un comando ND es la siguiente: 0x7E 0x00 0x04 0x08 0x01 0x4E 0x44 0x64, donde:
• 0x7E: delimitador de inicio
• 0x0004: tamaño
• 0x08:Comando AT
• 0x01:Identificador
• 0x4E44: 'ND' en ASCII
• 0x64: Suma de control
El valor de la suma de control se calcula: [0xFF - (0x08 + 0x01 + 0x4E + 0x44)].
La función configuracionXbee() se encarga de comprobar para el número de dispositivos configuración de los pines de D0 a D5. Para ello el microcontrolador envía en tramas API los comandos remotos AT Dn, n es un valor comprendido entre 0 y 5, al coordinador. Se utiliza la dirección almacenada tras la ejecución de la función redXBee().
Como puede apreciarse tan sólo se controlan 6 pines de los módulos, dejando la posibilidad de ampliar de manera sencilla el resto de los pines y funcionalidades de los modulos.
La función datosXbee() se encarga de comprobar el estado de las señales analógicas y digitales. Para ello el microcontrolador envía en tramas API los comandos remotos AT IS, al coordinador, que solicita a un dispositivo remoto una muestra de los datos de sus señales.
Para facilitar el desarrollo de la aplicación XbeePic se ha utilizado la aplicación INF_Enumeration_uC_PIC-USB versión V3.1, que genera el archivo .inf y la librería usb_desc_scope necesarias.
Finalmente el interface es desarrollada mediante LabVIEW 8.6 está debidamente comentado para que sea sencilla su comprensión. Se basa en el envío de comandos al microcontrolador haciendo que el coordinador de la red configure los dispositivos, vea el estado de los pines o compruebe si se ha incorporado o eliminado algún módulo.
Espero que con este proyecto sirva de base para las personas que quieran iniciarse en con la tecnología ZigBee o la comunicación USB con microcontroladores.
Con el paso del tiempo he visto numerosas posibilidades de mejora sobre este proyecto, tanto a nivel de firmware como de software por lo que estoy seguro que las capacidades de ampliación son ilimitadas.
A continuación teneis subido todos los archivos necesarios para que podais probar este proyecto.