Conexión de Raspberry Pi 3 a la solución de supervisión remota y habilitación de las actualizaciones de firmware remotas mediante C

Este tutorial muestra cómo usar el Starter Kit de IoT de Microsoft Azure para Raspberry Pi 3 para:

  • Desarrollar un lector de temperatura y humedad que pueda comunicarse con la nube.
  • Habilitar y realizar una actualización de firmware remota para actualizar la aplicación cliente en Raspberry Pi.

En el tutorial se usa:

  • El SO Raspbian, el lenguaje de programación C y el SDK de IoT de Microsoft Azure para C para implementar un dispositivo de ejemplo.
  • La solución preconfigurada de supervisión remota del Conjunto de aplicaciones de IoT como el back-end basado en la nube.

Información general

En este tutorial, va a completar los siguientes pasos:

  • Implemente una instancia de la solución preconfigurada de supervisión remota en su suscripción de Azure. Este paso implementa y configura varios servicios de Azure automáticamente.
  • Configure el dispositivo y los sensores para que se comunique con el equipo y la solución de supervisión remota.
  • Actualice el código del dispositivo de ejemplo para que se conecte a la solución de supervisión remota y envíe telemetría que aparezca en el panel de soluciones.
  • Use el código de dispositivo de ejemplo para actualizar la aplicación cliente.

Requisitos previos

Para completar este tutorial, deberá tener una suscripción activa de Azure.

Nota

En caso de no tener ninguna, puede crear una cuenta de evaluación gratuita en tan solo unos minutos. Para obtener más información, consulte Evaluación gratuita de Azure.

Requisitos de software

Necesita el cliente SSH en su máquina de escritorio para poder acceder de forma remota a la línea de comandos en su Raspberry Pi.

  • Windows no incluye ningún cliente SSH. Se recomienda usar PuTTY.
  • La mayoría de las distribuciones de Linux y Mac OS incluyen la utilidad de línea de comandos de SSH. Para más información, consulte SSH Using Linux or Mac OS (SSH cuando se usa Linux o Mac OS).

Requisitos de hardware

Un equipo de escritorio que permita conectarse remotamente a la línea de comandos en Raspberry Pi.

Kit de inicio de Microsoft IoT para Raspberry Pi 3 o componentes equivalentes. En este tutorial se usan los siguientes elementos del kit:

  • Raspberry Pi 3
  • Tarjeta MicroSD (con NOOBS)
  • Un cable USB mini
  • Un cable Ethernet
  • Sensor de BME280
  • Placa de pruebas
  • Cables de puente
  • Resistencias
  • LED

Aprovisionamiento de la solución

Si no ha aprovisionado aún la solución preconfigurada de supervisión remota en su cuenta:

  1. Inicie sesión en azureiotsuite.com con las credenciales de su cuenta de Azure y haga clic en + para crear una solución.
  2. Haga clic en Seleccionar en el icono Supervisión remota.
  3. Escriba un valor en Nombre de la solución para la solución preconfigurada de supervisión remota.
  4. Seleccione la región y la suscripción que desea usar para aprovisionar la solución.
  5. Haga clic en Crear solución para comenzar el proceso de aprovisionamiento. Este proceso normalmente tarda varios minutos en ejecutarse.

Espere a que se complete el proceso de aprovisionamiento

  1. Haga clic en el icono de la solución con el estado Aprovisionando.
  2. Observe los estados de aprovisionamiento , ya que los servicios de Azure se implementan en su suscripción de Azure.
  3. Una vez que se complete el aprovisionamiento, el estado cambia a Listo.
  4. Haga clic en el icono y verá los detalles de la solución en el panel derecho.

Nota

Si surgen problemas al implementar la solución preconfigurada, consulte Permisos en el sitio azureiotsuite.com y Preguntas más frecuentes. Si los problemas persisten, cree un vale de servicio en el portal.

¿Hay detalles que esperaría ver que no aparezcan para su solución? Puede sugerirnos nuevas características en User Voice(La voz del usuario).

Advertencia

La solución de supervisión remota proporciona un conjunto de servicios de Azure de la suscripción de Azure. La implementación refleja una arquitectura empresarial real. Para evitar cobros de consumo innecesarios de Azure, elimine la instancia de la solución preconfigurada en azureiotsuite.com cuando haya terminado con ella. Si necesita la solución preconfigurada de nuevo, puede crearla fácilmente. Para más información sobre cómo reducir el consumo mientras se ejecuta la solución de supervisión remota, consulte Configuring Azure IoT Suite preconfigured solutions for demo purposes (Configuración de soluciones preconfiguradas del Conjunto de aplicaciones de IoT de Azure para fines de demostración).

Visualización del panel de soluciones

El panel de la solución permite administrar la solución implementada. Por ejemplo, puede ver la telemetría, agregar dispositivos e invocar métodos.

  1. Cuando se haya completado el aprovisionamiento y el icono de la solución preconfigurada indique Listo, seleccione Iniciar para abrir el portal de la solución de supervisión remota en una nueva pestaña.

    Iniciar la solución preconfigurada

  2. De forma predeterminada, el portal de la solución muestra el panel. Puede navegar a otras áreas del portal de solución mediante el menú en el lado izquierdo de la página.

    Panel de la solución preconfigurada de supervisión remota

Agregar un dispositivo

Para que un dispositivo se conecte a la solución preconfigurada, debe identificarse en Azure IoT Hub con credenciales válidas. Puede recuperar las credenciales del dispositivo desde el panel de la solución. Incluirá las credenciales del dispositivo en la aplicación de cliente más adelante en este tutorial.

Si aún no lo ha hecho, agregue un dispositivo personalizado a la solución de supervisión remota. Complete los pasos siguientes en el panel de soluciones:

  1. En la esquina inferior izquierda del panel, haga clic en Agregar un dispositivo.

    Agregar un dispositivo

  2. En el panel Dispositivo personalizado, haga clic en Agregar nuevo.

    Agregar un dispositivo personalizado

  3. Elija Permitirme definir mi propio id. de dispositivo. Escriba un id. de dispositivo como rasppi, haga clic en Comprobar id. para comprobar que no haya usado ya el nombre en la solución y haga clic en Crear para aprovisionar el dispositivo.

    Agregar id. de dispositivo

  4. Anote las credenciales del dispositivo (id. de dispositivo, IoT Hub nombre de host y clave de dispositivo). La aplicación cliente en su Raspberry Pi necesita estos valores para conectarse con la solución de supervisión remota. A continuación, haga clic en Hecho.

    Ver las credenciales del dispositivo

  5. Seleccione el dispositivo en la lista de dispositivos del panel de la solución. Luego, en el panel Detalles del dispositivo, haga clic en Habilitar dispositivo. El estado del dispositivo ahora es En ejecución. La solución de supervisión remota ahora puede recibir telemetría desde el dispositivo e invocar métodos en el dispositivo.

Preparación de su Raspberry Pi

Instalación de Raspbian

Si es la primera vez que usa su Raspberry Pi, debe instalar el sistema operativo Raspbian con NOOBS, que se encuentra en la tarjeta SD incluida en el kit. En la guía de software de Raspberry Pi, se describe cómo instalar un sistema operativo en Raspberry Pi. En este tutorial se da por supuesto que ha instalado el sistema operativo Raspbian en su Raspberry Pi.

Nota

La tarjeta SD incluida en el kit de inicio de Microsoft Azure IoT para Raspberry Pi 3 ya tiene NOOBS instalado. Puede iniciar Raspberry Pi desde esta tarjeta y elegir instalar el sistema operativo Raspbian.

Configuración del hardware

Este tutorial utiliza el sensor de BME280 incluido en el Kit de inicio de Microsoft Azure IoT para Raspberry Pi 3 para generar datos de telemetría. Usa un LED para indicar si Raspberry Pi procesa una invocación de método desde el panel de soluciones.

Los componentes en la placa de pruebas son:

  • LED rojo
  • Resistencia de 220 ohmios (rojo, rojo, marrón)
  • Sensor de BME280

En el diagrama siguiente se muestra cómo conectar el hardware:

Configuración de hardware para Raspberry Pi

En la tabla siguiente se resumen las conexiones entre Raspberry Pi y los componentes en la placa de pruebas:

Raspberry Pi Placa de pruebas Color
GND (patilla 14) Patilla -ve de LED (18A) Púrpura
GPCLK0 (patilla 7) Resistencia (25A) Naranja
SPI_CE0 (patilla 24) CS (39A) Azul
SPI_SCLK (patilla 23) SCK (36A) Amarillo
SPI_MISO (patilla 21) SDO (37A) Blanco
SPI_MOSI (patilla 19) SDI (38A) Verde
GND (patilla 6) GND (35A) Negro
3.3 V (patilla 1) 3Vo (34A) Rojo

Para completar la configuración de hardware, debe:

  • Conectar su Raspberry Pi a la fuente de alimentación que se incluye en el kit.
  • Conectar su Raspberry Pi a la red mediante el cable Ethernet incluido en el kit. Como alternativa, puede configurar Conectividad inalámbrica para su Raspberry Pi.

Ahora ha completado la configuración de hardware de su Raspberry Pi.

Inicio de sesión y acceso al terminal

Dispone de dos opciones para acceder a un entorno de terminal en su Raspberry Pi:

  • Si tiene un teclado y un monitor conectados a su Raspberry Pi, puede usar la GUI de Raspbian para acceder a una ventana de terminal.

  • Acceda a la línea de comandos en su Raspberry Pi mediante SSH desde la máquina de escritorio.

Uso de una ventana de terminal en la GUI

Las credenciales predeterminadas para Raspbian son el nombre de usuario pi y la contraseña raspberry. En la barra de tareas en la GUI, puede iniciar la utilidad Terminal mediante el icono que parece un monitor.

Inicio de sesión con SSH

Puede usar SSH para el acceso de línea de comandos a su Raspberry Pi. En el artículo SSH (Secure Shell), se describe cómo configurar SSH en Raspberry Pi y cómo conectarse desde Windows o Linux y Mac OS.

Inicie sesión con el nombre de usuario pi y la contraseña raspberry.

Opcional: Compartir una carpeta en su Raspberry Pi

Si lo desea, puede compartir una carpeta en su Raspberry Pi con el entorno de escritorio. Compartir una carpeta le permite usar el editor de texto de escritorio preferido (como Visual Studio Code o Sublime Text) para editar archivos en su Raspberry Pi en lugar de usar nano o vi.

Para compartir una carpeta con Windows, configure un servidor Samba en Raspberry Pi. Como alternativa, use el servidor SFTP integrado con un cliente SFTP en el escritorio.

Habilitación de SPI

Para poder ejecutar la aplicación de ejemplo, debe habilitar el bus de interfaz de periféricos en serie (SPI) en Raspberry Pi. Raspberry Pi se comunica con el dispositivo de sensor de BME280 a través del bus SPI. Use el comando siguiente para editar el archivo de configuración:

sudo nano /boot/config.txt

Busque la línea:

#dtparam=spi=on

  • Para quitar la marca de comentario de la línea, elimine # al principio.

  • Guarde los cambios (Ctrl-O, ENTRAR) y salga del editor (Ctrl-X).

  • Para habilitar SPI, reinicie Raspberry Pi. Al reiniciarlo, se desconecta el terminal. Debe iniciar sesión de nuevo cuando se reinicia Raspberry Pi:

    sudo reboot
    

Descarga y configuración del ejemplo

Ahora puede descargar y configurar la aplicación de cliente de supervisión remota en su Raspberry Pi.

Clonación de repositorios

Si aún no lo ha hecho, clone los repositorios necesarios mediante la ejecución de los siguientes comandos en Pi:

cd ~
git clone --recursive https://github.com/Azure-Samples/iot-remote-monitoring-c-raspberrypi-getstartedkit.git

Actualización de la cadena de conexión de dispositivo

Abra el archivo de configuración de ejemplo en el editor nano con el comando siguiente:

nano ~/iot-remote-monitoring-c-raspberrypi-getstartedkit/advanced/config/deviceinfo

Reemplace los valores de marcador de posición por el identificador de dispositivo y la información de IoT Hub que creó y guardó al principio de este tutorial.

Cuando haya terminado, el contenido del archivo e información del dispositivo debe ser similar al ejemplo siguiente:

yourdeviceid
HostName=youriothubname.azure-devices.net;DeviceId=yourdeviceid;SharedAccessKey=yourdevicekey

Guarde los cambios (Ctrl-O, ENTRAR) y salga del editor (Ctrl-X).

Compilación del ejemplo

Si todavía no lo ha hecho, instale los paquetes de requisitos previos para el SDK de dispositivo IoT de Microsoft Azure para C ejecutando los comandos siguientes en un terminal en Raspberry Pi:

sudo apt-get update
sudo apt-get install g++ make cmake git libcurl4-openssl-dev libssl-dev uuid-dev

Ahora puede compilar la solución de ejemplo en Raspberry Pi:

chmod +x ~/iot-remote-monitoring-c-raspberrypi-getstartedkit/advanced/1.0/build.sh
~/iot-remote-monitoring-c-raspberrypi-getstartedkit/advanced/1.0/build.sh

Ahora puede ejecutar el programa de ejemplo en Raspberry Pi. Escriba el comando:

sudo ~/cmake/remote_monitoring/remote_monitoring

La salida de ejemplo siguiente es un ejemplo de la salida que se ve en el símbolo del sistema en Raspberry Pi:

Salida de la aplicación Raspberry Pi

Presione Ctrl-C para salir del programa en cualquier momento.

Visualización de la telemetría

Raspberry Pi ahora está enviando telemetría a la solución de supervisión remota. Puede verla en el panel de soluciones. También puede enviar mensajes a su Raspberry Pi desde el panel de soluciones.

  • Vaya al panel de soluciones.
  • Seleccione el dispositivo en la lista desplegable Dispositivo que se visualizará.
  • La telemetría de Raspberry Pi se muestra en el panel.

Mostrar telemetría desde Raspberry Pi

Inicio de la actualización del firmware

El proceso de actualización del firmware descarga e instala una versión actualizada de la aplicación cliente de dispositivo en Raspberry Pi. Para más información sobre el proceso de actualización del firmware, consulte la descripción del patrón de actualización del firmware en Overview of device management with IoT Hub (Introducción a la administración de dispositivos con IoT Hub).

Inicie el proceso de actualización del firmware invocando un método en el dispositivo. Este método es asincrónico y vuelve tan pronto como comienza el proceso de actualización. El dispositivo utiliza propiedades notificadas para notificar a la solución sobre el progreso de la actualización.

Invoque métodos en su Raspberry Pi desde el panel de soluciones. La primera vez que Raspberry Pi se conecta a la solución de supervisión remota, envía información acerca de los métodos que admite.

  1. En el panel de soluciones, haga clic en Dispositivos para visitar la página Dispositivos. Seleccione su Raspberry Pi en la lista de dispositivos. A continuación, elija Métodos:

    Lista de dispositivos en el panel

  2. En la página Invocar método, elija InitiateFirmwareUpdate en la lista desplegable Método.

  3. En el campo FWPackageURI, escriba https://github.com/Azure-Samples/iot-remote-monitoring-c-raspberrypi-getstartedkit/raw/master/advanced/2.0/package/remote_monitoring.zip. Este archivo contiene la implementación de la versión 2.0 del firmware.

  4. Elija Invocar método. La aplicación en Raspberry Pi envía una confirmación de vuelta al panel de soluciones. Después, inicia el proceso de actualización de firmware mediante la descarga de la nueva versión del firmware:

    Mostrar el historial de métodos

Observar el proceso de actualización de firmware

Puede observar el proceso de actualización del firmware a medida que se ejecuta en el dispositivo y ver las propiedades notificadas en el panel de la solución:

  1. Puede ver el progreso en el proceso de actualización en Raspberry Pi:

    Mostrar el progreso de la actualización

    Nota

    La aplicación de supervisión remota se reinicia automáticamente cuando finaliza la actualización. Use el comando ps -ef para comprobar que se está ejecutando. Si desea terminar el proceso, use el comando kill con el identificador de proceso.

  2. Puede ver el estado de la actualización del firmware, tal y como lo notifica el dispositivo, en el portal de solución. La captura de pantalla siguiente muestra el estado y la duración de cada fase del proceso de actualización y la nueva versión de firmware:

    Mostrar estado del trabajo

    Si retrocede al panel, puede comprobar que el dispositivo todavía está enviando telemetría tras la actualización del firmware.

Advertencia

Si deja la solución de supervisión remota ejecutándose en su cuenta de Azure, se le cobra por el tiempo que se ejecute. Para más información sobre cómo reducir el consumo mientras se ejecuta la solución de supervisión remota, consulte Configuring Azure IoT Suite preconfigured solutions for demo purposes (Configuración de soluciones preconfiguradas del Conjunto de aplicaciones de IoT de Azure para fines de demostración). Elimine la solución preconfigurada de su cuenta de Azure cuando haya terminado de usarla.

Pasos siguientes

Visite el Centro para desarrolladores de IoT de Azure para obtener más ejemplos y la documentación de IoT de Azure.