- ¿Qué es Microsoft Azure IoT Hub?
- Creación de un Azure IoT Hub
- Componentes necesarios para construir nuestro circuito de prueba para Azure IoT con Raspberry Pi
- Azure IoT con Raspberry Pi: esquema de hardware
- Programación de Raspberry Pi para publicar datos en Azure IoT Hub
- Publicar datos en Azure IoT Hub: pruebas
Azure IoT Hub, el servicio de computación en la nube de Microsoft permite a los desarrolladores conectar, monitorear y administrar miles de millones de dispositivos IoT en una sola plataforma. Ya se utiliza en varias aplicaciones de IoT como sistemas de automatización del hogar, sistemas de seguridad, vigilancia y monitoreo. Para demostrar las capacidades de Azure IoT Hub, vamos a construir un pequeño circuito con Raspberry Pi, un sensor de temperatura y humedad DHT11, para procesar los datos del sensor con él. Finalmente, publicaremos los datos del sensor en el servidor de Azure IoT utilizando el protocolo MQTT. En este tutorial, aprenderemos cómo instalar y configurar un servidor Azure y enviar datos usando una Raspberry Pi.
¿Qué es Microsoft Azure IoT Hub?
Azure IoT Hub es una colección de servicios administrados que pueden conectar, monitorear y controlar dispositivos de IoT. También incluye comunicación segura para dispositivos, con visualización y análisis de datos que ayudan a los fabricantes de dispositivos a crear, implementar y administrar aplicaciones de IoT con la ayuda de la nube de Azure . Los datos de telemetría Device-to-Cd de Azure IoT Hub nos permiten conocer el estado de los dispositivos IoT conectados, y los mensajes Cloud-to-Device nos permiten enviar comandos y notificaciones a los dispositivos conectados. Un ejemplo podría ser, utilizando un sistema de automatización del hogar inteligente, podemos recopilar varios datos de sensores y enviarlos a Azure IoT Hub para visualizarlos, almacenarlos y administrarlos. También podemos controlar los dispositivos de salida desde la interfaz de Azure IoT Hub.
El concentrador central para la comunicación bidireccional para aplicaciones y dispositivos de IoT admite la comunicación dispositivo-nube y nube-dispositivo, también admite múltiples patrones de mensajería, como un dispositivo a telemetría en la nube, carga de archivos desde dispositivos y métodos de solicitud-respuesta y, finalmente, Podemos utilizar el método de autenticación por dispositivo que permite que cada dispositivo se conecte de forma segura a IoT Hub. Ahora, como ha entendido los conceptos básicos de Azure IoT Hub, pasemos a la configuración del sistema.
Creación de un Azure IoT Hub
Estamos listos para hacer todas las configuraciones necesarias que se requieren para configurar los servicios de Microsoft Azure, pero antes de eso, asegúrese de tener una cuenta de Microsoft. Si no tiene eso, simplemente puede registrarse. A partir de entonces, vaya al portal de Azure mediante portal.azure.com e inicie sesión.
Una vez que haya iniciado sesión, vaya a la página de inicio de Azure, seleccione el botón Crear un recurso y luego busque IoT Hub en el campo Buscar en el mercado. Seleccione IoT Hub en los resultados de la búsqueda y luego seleccione Crear. Las imágenes a continuación le darán una mejor idea del proceso.
Complete los detalles necesarios para crear un IoT Hub.
En la sección Suscripción, debe seleccionar la suscripción para usarla en su hub. En nuestro caso, estamos optando por una cuenta de prueba y hemos seleccionado " Prueba gratuita" .
A continuación, en la sección Grupo de recursos, seleccione su grupo de recursos . Si no tiene uno, debe crear uno nuevo haciendo clic en Crear nuevo e ingresar el nombre del Recurso.
En la sección Región, puede usar el menú desplegable para seleccionar su región preferida.
En la IO Hub Nombre de la sección, lo que necesita e nter un nombre para su centro. Esto debe ser único. Todas las comunicaciones necesarias pasarán con este nombre.
En la pestaña "Tamaño y escala", seleccione " Nivel gratuito " y haga clic en Siguiente. Luego haga clic en "Revisar + Crear". La creación de IoT Hub tardará unos minutos. Haga clic en el nombre del IoT Hub que creó. Anote el nombre de host de la ventana como se muestra en la imagen a continuación. Luego haga clic en las políticas de acceso compartido en la configuración. Las políticas de acceso compartido se destacan en la imagen a continuación. Haga clic en la opción iothubowner en Política. Anote la clave principal y la clave principal de la cadena de conexión para futuras referencias. Ahora, para registrar un nuevo dispositivo en IoT Hub, haga clic en Dispositivos IoT. En el panel Explorador de dispositivos, haga clic en Agregar para agregar un dispositivo al concentrador.
Complete la siguiente información en la pestaña Nuevos dispositivos.
- ID del dispositivo: ingrese el ID del dispositivo. Los ID de dispositivo deben ser únicos.
- Tipo de autenticación: seleccione una clave simétrica.
- Generar claves automáticamente: seleccione esta casilla de verificación.
- Conectar dispositivo a IoT Hub: haga clic en Habilitar.
Una vez que se crea el dispositivo, puede encontrar su dispositivo recién creado en la sección Explorador de dispositivos. Haga clic en el nombre del dispositivo. Mostrará los detalles del dispositivo. Anote la clave principal y la clave principal de la cadena de conexión del dispositivo. Esto es importante ya que lo necesitamos para la comunicación.
Ahora, cuando haya terminado, podemos pasar al lado del hardware.
Componentes necesarios para construir nuestro circuito de prueba para Azure IoT con Raspberry Pi
Como la parte de hardware de este circuito es muy simple, el requisito del componente también es muy simple. A continuación se muestra una lista de los componentes necesarios.
- Raspberry Pi 3B (también podemos utilizar cualquier otro modelo de Pi)
- Tarjeta Micro SD-16 GB
- Sensor DHT11
- Fuente de alimentación Micro USB 5V, 2.4A
Azure IoT con Raspberry Pi: esquema de hardware
El diagrama de circuito completo para el proyecto Azure IoT con Raspberry Pi se muestra a continuación. Fue construido usando fritzing. Siga el diagrama del circuito y las conexiones para hacer el circuito usted mismo.
El circuito anterior envía datos de temperatura y humedad a Microsoft IoT Hub. En este circuito, hemos utilizado un sensor DHT11 para recopilar los datos de temperatura y humedad y estamos utilizando una Raspberry Pi 3B como dispositivo de procesamiento de datos. El sensor DHT11 tiene tres pines. Los pines VCC y GND se utilizan para proporcionar un suministro de 5 V CC al sensor y el pin de salida de datos de DHT11 está conectado a GPIO4 de Raspberry Pi. Si desea aprender cómo conectar el sensor de temperatura y humedad DHT11 con Raspberry Pi, puede consultar nuestro artículo anterior sobre el tema. También hemos utilizado este sensor para construir la estación meteorológica IoT Raspberry Pi.
Programación de Raspberry Pi para publicar datos en Azure IoT Hub
Antes de comenzar la codificación para este proyecto, necesitamos crear un shell de nube de Azure (CLI) en el portal de Azure. Esto será útil de muchas formas. Para eso, haga clic en el botón Azure Cloud Shell en el portal como se muestra a continuación. Luego haga clic en la opción crear almacenamiento, marcada en rojo.
Una vez hecho esto, se puede abrir la CLI y ejecute los siguientes comandos para instalar el Azure add-on' s que se utilizarán para mostrar los datos del sensor.
extensión az agregar --name azure-cli-iot-ext
Una vez hecho esto, necesitamos instalar dependencias en la Raspberry Pi para comunicarnos con el sensor DHT11 y facilitar el proceso de comunicación para los servicios de Azure IoT. Para eso, abra una Terminal Raspberry Pi para instalar los paquetes dependientes utilizados en el proyecto.
Primero, necesitamos descargar la biblioteca DHT para Raspberry Pi, luego extraerla de la carpeta raíz y ejecutar el siguiente comando para instalarla.
sudo python setup.py instalar
Después de una instalación exitosa, ejecute los siguientes comandos para instalar todos los paquetes dependientes en Azure IoT Hub.
sudo pip3 instalar azure-iot-device sudo pip3 instalar azure-iot-hub sudo pip3 instalar azure-iothub-service-client sudo pip3 instalar azure-iothub-device-client
Una vez que hayamos completado la instalación de todos los requisitos previos, es hora de escribir el código en Python. Para hacer eso, primero importe todas las bibliotecas:
importar tiempo de importación de Adafruit_DHT de importación aleatoria desde azure.iot.device importar IoTHubDeviceClient, Message
En este proyecto, estamos usando el pin 4 de la Raspberry Pi para procesar los datos de los datos DHT11, por lo que debe declararse como se muestra.
sensor = Adafruit_DHT.DHT11 pin = 4
A continuación, definimos la cadena de conexión del código. Reemplácelo con la cadena de conexión principal del dispositivo que guardamos anteriormente.
CONNECTION_STRING = "Nombre de host = sensordata.azure-devices.net; DeviceId = ZZZZZ; SharedAccessKey = ZZZZZZZZZZZZZZZZZZ"
A continuación, creamos una matriz que se usará para enviar los datos a Azure IoT Hub. Se puede hacer como se muestra a continuación.
MSG_SND = '{{"temperatura": {temperatura}, "humedad": {humedad}}}'
A continuación, hemos definido un ciclo while. En el ciclo while, los datos de humedad y temperatura se procesan usando la función Adafruit_DHT.read_retry . Además, definimos dos variables especiales y asignamos los datos de salida a esas variables.
while True: humedad, temperatura = Adafruit_DHT.read_retry (sensor, pin)
A continuación, se escribe una función para conectar el IoT Hub utilizando los parámetros de conexión que hemos definido previamente.
def iothub_client_init (): client = IoTHubDeviceClient.create_from_connection_string (CONNECTION_STRING) devolver el cliente
Finalmente, en el siguiente paso, los datos de temperatura y humedad se envían a Azure Hub, con el formato que se muestra en el código siguiente. Además, usamos un método de prueba y captura para identificar si hay algún error en el código.
def iothub_client_telemetry_sample_run (): try: client = iothub_client_init () print ("Enviando datos a IoT Hub, presione Ctrl-C para salir") while True: msg_txt_formatted = MSG_SND.format (temperatura = temperatura, humedad = humedad) message = Message (msg_txt_formatted) print ("Enviando mensaje: {}". formato (mensaje)) client.send_message (mensaje) print ("Mensaje enviado exitosamente") time.sleep (3)
Publicar datos en Azure IoT Hub: pruebas
Después de escribir correctamente el código, compílelo y compruebe si hay errores. Si el bloque de código se compiló correctamente, ejecute el código. En la ventana de Terminal, debería ver el mensaje que dice "Mensaje enviado correctamente". La captura de pantalla de la ventana se muestra a continuación:
Ahora, para ver los datos en Azure IoT Hub, vaya al portal y haga clic en la Terminal CLI y ejecute los siguientes comandos reemplazando sus credenciales en él.
az iot hub monitor-events --nombre de concentrador XYZ - id de dispositivo XYZ
Nota:
Reemplace XYZ con su nombre de Hub e ID de dispositivo.
Después de ejecutar el comando anterior, debe obtener los datos como se muestra a continuación en la pantalla. Estos son los mismos datos que se enviaron desde Raspberry Pi.
Esto marca el final de este tutorial, espero que les haya gustado el artículo y hayan aprendido algo nuevo. Si tiene alguna pregunta sobre el artículo, puede dejarla en la sección de comentarios a continuación. O puede utilizar nuestro Foro de electrónica para obtener una respuesta mejor y más rápida.