MQTT - Jesus2Perea/Lab-comunicaciones-22-2 GitHub Wiki
Bienvenidos a IoT: wiki!
Para esta guía de laboratorio se propone implementar:
- La tecnología de identificación y comunicación RFID (Radio-frequency identification) en cada uno de sus proyectos.
- El protocolo de comunicación HTTP
- Plataforma IoT de Ubidots o implementar un portal web donde gestionen la información de sus proyectos.
- Los datos que generen sus proyectos deben almacenarse en la nube
- Acceso a la información que generan sus proyectos desde un computador y un celular (Ubidots tiene también app para android).
IoT
La Internet de las cosas (IoT) describe la red de objetos físicos ("cosas") que llevan incorporados sensores, software y otras tecnologías con el fin de conectarse e intercambiar datos con otros dispositivos y sistemas a través de Internet. Estos dispositivos van desde objetos domésticos comunes hasta herramientas industriales sofisticadas. Con más de 7 mil millones de dispositivos IoT conectados en la actualidad, los expertos prevén que este número aumentará a 10 mil millones para el 2020 y 22 mil millones para el 2025. Oracle cuenta con una red de socios de dispositivos.
¿Qué tecnologías han hecho posible el IoT? Si bien la idea de IoT existe desde hace mucho tiempo, una colección de avances recientes en una serie de tecnologías diferentes la ha hecho práctica.
Accede a la tecnología de sensores de bajo costo y potencia. Los sensores asequibles y fiables están haciendo posible la tecnología IoT para más fabricantes. Conectividad. Una gran cantidad de protocolos de red para Internet ha facilitado la conexión de sensores a la nube y a otras cosas para lograr una transferencia de datos eficiente Plataformas de informática en la nube. El aumento en la disponibilidad de plataformas en la nube permite a las empresas y a los consumidores acceder a la infraestructura que necesitan para escalar sin tener que administrarlo todo. Aprendizaje automático y analítica. Con los avances en aprendizaje automático y analítica, junto con el acceso a cantidades grandes y variadas de datos almacenados en la nube, las empresas pueden recopilar información de forma más rápida y fácil. Por un lado, el surgimiento de estas tecnologías aliadas sigue traspasando los límites de IoT; por otro, los datos producidos por IoT también alimentan estas tecnologías. Inteligencia artificial (IA) conversacional. Los avances en las redes neuronales han llevado el procesamiento del lenguaje natural (PLN) a los dispositivos IoT (como los asistentes personales digitales Alexa, Cortana y Siri) y los han hecho atractivos, asequibles y viables para uso doméstico.
MQTT
MQTT son las siglas MQ Telemetry Transport, aunque en primer lugar fue conocido como Message Queing Telemetry Transport. Es un protocolo de comunicación M2M (machine-to-machine) de tipo message queue. Está basado en la pila TCP/IP como base para la comunicación. En el caso de MQTT cada conexión se mantiene abierta y se “reutiliza” en cada comunicación. Es una diferencia, por ejemplo, a una petición HTTP 1.0 donde cada transmisión se realiza a través de conexión. MQTT fue creado por el Dr. Andy Stanford-Clark de IBM y Arlen Nipper de Arcom (ahora Eurotech) en 1999 como un mecanismo para conectar dispositivos empleados en la industria petrolera.
Funcionamiento del protocolo: El funcionamiento del MQTT es un servicio de mensajería push con patrón publicador/suscriptor (pub-sub). Como vimos en la entrada anterior, en este tipo de infraestructuras los clientes se conectan con un servidor central denominado broker. Para filtrar los mensajes que son enviados a cada cliente los mensajes se disponen en topics organizados jerárquicamente. Un cliente puede publicar un mensaje en un determinado topic. Otros clientes pueden suscribirse a este topic, y el broker le hará llegar los mensajes suscritos.
Seguridad del MQTT: La seguridad siempre debe ser un factor importante a considerar en cualquier sistema de comunicación M2M. El protocolo MQTT dispone de distintas medidas de seguridad que podemos adoptar para proteger las comunicaciones. Esto incluye transporte SSL/TLS y autentificación por usuario y contraseña o mediante certificado. Sin embargo, hay que tener en cuenta que muchos de los dispositivos IoT disponen de escasa capacidad, por lo que el SLL/TLS puede suponer una carga de proceso importante. En muchos casos, la autentificación consiste en una contraseña y usuario que son enviados como texto plano. Por último, también es posible configurar el broker para aceptar conexiones anónimas. Todo esto debe ser tenido en cuenta a la hora de configurar un sistema MQTT, y entender los riesgos de cada uno de ellos, así como su impacto en la eficiencia del sistema.
UBIDOTS
La plataforma Ubidots refleja nuestros valores y nuestra cultura. Conozca los principios que guían a nuestro equipo, nuestro desarrollo de productos y nuestro compromiso con el cliente, ayudando a construir juntos nuestro futuro conectado. Creemos que la visión del mundo de los países "desarrollados" frente a los "en desarrollo" está desactualizada. En cambio, hay lugares mágicos, no países, que se convierten en imanes de ideas, capital y talento de todo el mundo, inspirando a equipos con un propósito para construir productos globales que generen riqueza y cambio en las comunidades locales. América Latina es el hogar de muchos de estos lugares, y el crecimiento de Ubidots desde Medellín solo ha fortalecido este espíritu mientras alienta a miles de compañeros emprendedores de IoT a construir negocios de clase mundial sin salir de casa.
Materiales a usar:
Tarjeta ESP32 de 32bits, módulo para aplicaciones IOT con WIFI, Bluetooth y soporte amplio de periféricos con múltiples formatos de comunicación.
Modulo WIFI que integra un receptor/emisor Bluetooth, con 32 entradas E/S digitales sobre una CPU de 32 bits.
Especificaciones:
- Procesador Tensilica Xtensa 32bits LX6 hasta 240MHz.
- Wi-Fi: 802.11b/g/n/e/i (802.11n @ 2.4 Ghz hasta 150 Mbit/s).
- Bluetooth: v4.2 BR/EDR y bluetooth Low Energy (BLE).
- Rom:448 KiB.
- SRAM: 520 KiB.
- RTC slow SRAM: 8 KiB.
- RTC fast SRAM: 8 KiB.
- eFuse: 1 Kbit.
- Flash embebida: 0 MiB (ESP32-D0WDQ6, ESP32-D0WD, and ESP32-S0WD chips); 2 MiB (ESP32-D2WD chip); 4 MiB (ESP32-PICO-D4 SIP module).
- Periféricos compatibles: ADC, DAC, I2C, UART, Interfaz CAN 2.0, SPI, I2S, RMII y PWM entre otros.
- Seguridad tipo IEEE 802.11, WFA, WPA/WPA2 y WAPI.
- Encriptación de memoria Flash.
- Criptografía soportada por acelerador de hardware: AES, SHA-2, RSA, ECC, RNG.
- Voltaje de trabajo 3.3VDC.
- Energía y datos via conector microUSB 5VDC.
La RFID es un sistema de identificación de productos que puede parecer similar al código de barras tradicional pero cuenta con grandes ventajas. A diferencia del código de barras, que utiliza la imagen para identificar una etiqueta colocada en un producto, la RFID utiliza las ondas de radio para comunicarse con un microchip, que puede estar montado sobre gran cantidad de soportes, como por ejemplo un tag o etiqueta RFID, una tarjeta o un transpondedor. Es posible que no seas consciente de ello, pero en tu día a día, probablemente estarás utilizando algún sistema con tecnología RFID. Al realizar el pago automático de parkings y autopistas, cuando utilizas una tarjeta de acceso o al comprar una camisa, probablemente estarás usando la tecnología de identificación por radiofrecuencia o RFID.
Este modulo integra un chip de comunicación de lectura y escritura sin contacto a 13.56MHZ, caracterizado por manejar tramas según el estándar ISO14443A. Como agregado soporta algoritmo de encripcion CRYPTO1, y productos RFID. Características:
- Voltaje de operación: 3.3V.
- Corriente :10-13mA.
- Corriente en reposo: <80uA.
- Corriente pico: <30mA.
- Frecuencia de operación: 13.56MHz.
- :Dimensiones 40mm×60mm.
- Temperatura de operación: -20 to +80°C.
- Humedad relativa: 5%-95%.
- Interfaz SPI.
Un servomotor es un actuador rotativo o motor que permite un control preciso en términos de posición angular, aceleración y velocidad, capacidades que un motor normal no tiene. En definitiva, utiliza un motor normal y lo combina con un sensor para la retroalimentación de posición.
servomotor estándar de alto torque, puede girar aproximadamente 180° (90° en cada dirección). Puede utilizar cualquier código de servomotores o librería para controlarlo. Tenga en cuenta que los anchos de pulso del servomotor predeterminados, pueden no proporcionarle 180 grados completos de movimiento. En ese caso, verifique si puede configurar su servo controlador a longitudes de pulso personalizadas.
Especificaciones:
Voltaje de alimentación: 4.8V – 6V DC max. Velocidad promedio: 0.2seg/60grados (@ 4.8V), 0.16seg/60grados (@ 6V). Torque: 6.5kg-cm max. Dimensiones: (L x W x H) 40 x 20x 38 mm.
Esquemático
Resultados:
En la anterior imagen se puede visualizar como a través del modulo RFID, y por codificación de cada código hexadecimal de las tarjetas utilizadas da acceso a una puerta simulada a través de un led el cual se prende y apaga como lo haría la puerta cerrando y abriendo automáticamente por un sistema motorizado.
Se puede ver un montaje a escala con 3 leds simulando cada motor de una puerta, esto para no quemar la tarjeta de desarrollo y un motor para ver como se daría el control.
Por ultimo se visualiza, como por medio de el monitor serial de Arduino se da el correcto acceso para diferentes tarjetas de acceso.
Conclusiones:
Dado a la dificultad con la tarjeta de desarrollo se tuvo inconvenientes con el control IOT, dado a que la tarjeta surgían errores frecuentes de compilación del código, los datos no ingresaban correctamente a Ubidots o se quedaban en constante bucle dando que no se visualizara el cierre y apertura de las puertas.
Referencias:
¿Qué es el Internet de las cosas (IoT)?. (2022). from https://www.oracle.com/co/internet-of-things/what-is-iot/ Aula21, Ed., “Qué es un servomotor, para qué sirve y cómo funciona,” aula21, 17-Oct-2022. [Online]. Available: https://www.cursosaula21.com/que-es-un-servomotor/. L. Llamas, “¿Qué es mqtt? Su Importancia como protocolo iot,” Luis Llamas, 17-Apr-2019. [Online]. Available: https://www.luisllamas.es/que-es-mqtt-su-importancia-como-protocolo-iot/.