Buscar este blog

miércoles, 28 de agosto de 2019

FPGA + MQTT + ALEXA




Objetivo:
Implementar el stack del protocolo MQTT en un FPGA Virtex 4. Los métodos desarrollados en hardware son conectar, publicar y subscribir. Desarrollar la comunicación wifi por medio del módulo esp8266, control de pantalla OLED 64x128, y demás periféricos como switches y relojes. Desplegar el servidor broker mosquitto para gestionar la comunicación endpoint con el FPGA. Desarrollar un Skill Alexa para ejecutar los comandos por voz y el procesamiento de los algoritmos de comunicación y conexión MQTT en la nube con el servidor Lambda.

Introducción:
MQTT es un protocolo abierto, sencillo, ligero y fácil de implantar.
Es ideal para responder a las siguientes necesidades:
  • Está especialmente adaptado para utilizar un ancho de banda mínimo
  • Es ideal para utilizar redes inalámbricas
  • Consume muy poca energía
  • Es muy rápido y posibilita un tiempo de respuesta superior al resto de protocolos web actuales
  • Permite una gran fiabilidad si es necesario
  • Requiere pocos recursos procesadores y memorias
El MQTT no es el único protocolo que intenta imponerse: otros como XMPP, REST API y CoAp también tienen ciertas ventajas.



MQTT: ¿cómo funciona?

MQTT es un servicio de publicación/suscripción TCP/IP sencillo y sumamente ligero. Se basa en el principio cliente/servidor.
El servidor, llamado broker, recopila los datos que los publishers (los objetos comunicantes) le transmiten. Determinados datos recopilados por el broker se enviarán a determinados publishers que previamente así se lo hayan solicitado al bróker.
El principio de intercambio se parece mucho al de Twitter. Los publishers envían los mensajes a un canal llamado topic. Los subscribers (suscriptores) pueden leer esos mensajes. Los topics (o canales de información) pueden estar distribuidos jerárquicamente de forma que se puedan seleccionar exactamente las informaciones que se desean.
Los mensajes enviados por los objetos comunicantes pueden ser de todo tipo, pero no pueden superar los 256 Mb.

 Funciones principales que tendrá el FPGA:

1.- Control exacto y sincronización de la señal de reloj y registros.
2.- Implementar stack MQTT.
3.- Manejo del ESP8266
4.- Control de pantalla OLED 128x64, switches, leds, etc.
5.- debug usb.


Metodología:

 La descripción del Hardware se hará en lenguaje C utilizando para ello una metodología propietaria de integración de herramientas.

Nota:
El stack del protocolo MQTT fue implementado y validado antes de la implementación en el FPGA en un microcontrolador microchip en lenguaje C de tal forma que se partiera de una base confiable de funcionamiento.

Destacar que el ciclo completo de diseño desde la simulación hasta la implementación en el FPGA es en minutos. Esto quiere decir que por cada cambio que haga en el código a nivel descripción de hardware hasta la puesta en marcha se hace de manera secuencial y casi sin intervención. Ya que las herramientas son muy configurables y se atan unas a otras.

El flujo de secuencia y metodología usando diversas herramientas se puede ver en la siguiente figura.





Herramientas a utilizar:

FPGA:
1.- DK Design Suite 5.0.  Plataforma de validación rápida y eficiente para diseñadores que utilizan lenguaje C/C++
2.- Synplify Pro H-2013. Software de síntesis estándar en la industria para FPGA de alto rendimiento.
3.- Xilinx Design Tools ISE Suite 14.7. Plataforma de flujo de diseño completo para los FPGA de xilinx

PC:
1.- Mosquitto broker. Agente de mensajes de código abierto (con licencia EPL / EDL) que implementa el protocolo MQTT versiones 5.0, 3.1.1 y 3.1. Mosquitto es liviano y es adecuado para usar en todos los dispositivos, desde computadoras de una sola placa de baja potencia hasta servidores completos.

2.- Alexa SDK. Es el servicio de voz ubicado en la nube de Amazon disponible en los dispositivos de Amazon y dispositivos de terceros con Alexa integrada. Con Alexa, se puede crear experiencias de voz naturales para ofrecer a los clientes una forma más intuitiva de interactuar con la tecnología que usan a diario. Gracias a su conjunto de herramientas, APIs, soluciones de referencia y documentación, cualquier persona puede crear skills de forma sencilla con Alexa.


En la siguiente figura se muestra en forma general el flujo de diseño del proyecto y sus diferentes componentes:




1)      Desarrollo del software para el Virtex 4 en la plataforma DK Design Suite:

2)   Síntesis e implementación del diseño en el FPGA Virtex 4:

3)  Alexa SDK

4)    Conexión del FPGA:


5)   Conclusiones:
Se logró satisfactoriamente hacer la implementación del protocolo MQTT en el FPGA y el desarrollo de la skill de Alexa para el monitoreo y control de las variables internas del Virtex 4.

 Con este tipo de metodologías se puede hacer cualquier proyecto por más complejo que sea en un FPGA aprovechándose de las ventajas en velocidad, paralelismo y alta densidad de recursos que poseen estas arquitecturas. 

6)   Video demostrativo: