¿Qué aprenderá?

¿Qué hará?

¿Cuáles son los prerrequisitos?

Este tutorial ha sido construido para que el estudiante pueda emular el funcionamiento de un dispositivos físicos desplegado en la Capa de Dispositivos de un Sistemas IoT. El dispositivo a emular será una Raspberry Pi y para poder realizar la simulación de la captura y envío de datos, para tal fin el tutorial lo guiará en la instalación y configuración de un hipervisor de máquinas virtuales, la creación de una máquina virtual con el sistema operativo Raspberry Pi OS y aprenderá a realizar un uso básico de este sistema operativo. Por último, aprenderá a correr scripts de python que permitan realizar un ejemplo de la captura y envío de datos a los servidores de almacenamiento y visualización de los datos en la nube.

En este punto es importante resaltar que las prácticas fueron desarrolladas utilizando la versión 6.1.32 de VirtualBox y la versión Debian Buster lanzada en enero de 2021 del Raspberry Pi OS; sin embargo el software utilizado puede cambiar, por tanto no se puede garantizar que al desarrollar esta práctica todo estará exactamente igual a cuando se elaboró el tutorial. Esta es una realidad que se vive en el desarrollo de los proyectos de IoT y es muy importante desarrollar la habilidad de adaptarse a estos posibles cambios; así que los invitamos a que estén preparados para buscar información adicional que les permita llevar a buen término el trabajo propuesto. El equipo docente estará pendiente para ayudarlos.

Un hipervisor es un software que permite la creación y ejecución de máquinas virtuales (VM), para el presente tutorial se utilizará el hipervisor de Oracle llamado VirtualBox con la finalidad de crear una máquina virtual basada en el Sistema Operativo Raspberry Pi de manera que nos permita emular una tarjeta de desarrollo IoT.

Como primer paso, en caso de no tener instalado VirtualBox, se debe obtener el instalador adecuado para el sistema operativo (Windows, MacOS, Linux) de su equipo de cómputo, para tal fin ingrese a la página de descarga de esta aplicación.

En el caso de que ya disponga de esta aplicación, por favor siga con la sección Creación y configuración de la Máquina Virtual con Raspberry Pi OS de este tutorial.

Como se puede ver en la figura 1, en la sección "VirtualBox X.X.XX platform packages" se encontrarán los enlaces específicos para descargar el instalador requerido de acuerdo al sistema operativo, solo requiere hacer clic en el enlace que aplique a su caso.

Figura 1. Sitio web de descarga de VirtualBox

Para la instalación de este aplicativo siga los pasos enunciados por el instalador que descargó. Si tiene algún problema, no dude en comunicarse con el tutor o monitor del curso.

Una vez se disponga del Virtualbox debemos proceder a realizar la creación y configuración de la máquina virtual; ya que esta máquina es la que nos permitirá realizar la emulación de la placa de desarrollo de IoT.

Creación de la Máquina Virtual

Para efectuar la creación de la Máquina Virtual con el Sistema Operativo Raspberry Pi OS, realice la siguiente secuencia de pasos:

  1. Descargue la imagen del sistema operativo Raspberry Pi OS. Para tal fin ingrese al sitio web de Rapberry Pi. En la sección "Raspberry Pi Desktop" haga clic en "Descargar". En este punto es importante resaltar que no tiene que escoger el sistema operativo pues la descarga es una imagen ISO que es compatible con el hipervisor.
  2. Abra VirtualBox y cree una nueva máquina virtual dando clic al botón "New" (Ver Figura 2). A continuación, se desplegará una guía paso a paso que le ayudará en el proceso de creación de la máquina virtual.

Imagen ilustrativa

Figura 2. Interfaz de creación de máquina virtual

  1. Como primer paso en el proceso de creación de la máquina virtual debe especificar un nombre para la máquina en el campo "Name" (e.g. "Emulador IoT"), el directorio donde quiere que se instale el nuevo sistema operativo - campo "Machine Folder". Así mismo se debe seleccionar el tipo de sistema operativo a usar que para nuestro caso es Linux y finalmente, seleccionar la versión de linux, en este caso escogeremos Debian 64-bit (ver Figura 3). Una vez diligenciados estos campos pulse el botón "Next".

Si las versiones de 64-bit no aparecen en el listado consulte esta guía.

Imagen ilustrativa

Figura 3. Interfaz de selección de sistema operativo

  1. Posteriormente, aparece una ventana que les permite asignar la cantidad de memoria RAM que la máquina virtual puede usar (Memory Size). Para este caso, asigne 1GB de memoria RAM como mínimo. Esto lo puede realizar escribiendo directamente la cantidad de memoria en el cuadro de texto o utilizando el slider que aparece en la ventana (Ver Figura 4). Una vez realizada la asignación de memoria pulse el botón "Next".

Imagen ilustrativa

Figura 4. Interfaz de selección de memoria RAM

  1. El siguiente paso es la asignación del tamaño del disco virtual de la máquina (Hard Disk); en este disco se almacenará tanto la instalación del sistema operativo como los archivos que se utilicen en la máquina virtual. Para este despliegue es muy importante que se asignen al menos 4GB de disco duro, pues esto es lo mínimo requerido por el sistema operativo. Para este fin seleccione la opción "Create a virtual hard disk now" y pulse el botón "Create" (Ver Figura 5).

Imagen ilustrativa

Figura 5. Interfaz de creación de disco duro

  1. A continuación, aparece una nueva ventana que le permitirá escoger el tipo de disco virtual a crear. En este paso se recomienda dejar la opción por defecto ("VDI (VirtualBox Disk Image)") como se puede ver en la Figura 6. Finalmente, pulse el botón "Next" para ir al siguiente paso en la configuración.

Imagen ilustrativa

Figura 6. Interfaz de selección de tipo de disco duro

  1. En este paso aparece una ventana que le pide seleccionar la forma en la que se asignará el espacio de memoria en el disco duro (Storage on physical hard disk). Al igual que en el paso anterior, se recomienda dejar la opción por defecto ("Dinamically allocated"), esto permitirá que la máquina virtual sólo utilice espacio en su disco duro físico a medida que se vaya llenando (hasta un tamaño máximo fijado) (Ver Figura 7). A continuación pulse el botón "Next".

Imagen ilustrativa

Figura 7. Interfaz de tipo asignación de espacio para el disco duro

  1. Finalmente, aparecerá una ventana donde se debe digitar el nombre que se le dará al disco duro virtual y el tamaño máximo que podrá ocupar dicha máquina virtual en el disco duro (Ver Figura 8). Una vez diligenciados estos campos pulse el botón "Create".

Imagen ilustrativa

Figura 8. Interfaz de selección de tamaño de disco duro

  1. Al hacer clic en el botón "Create" terminará el proceso de configuración de la máquina virtual y posteriormente podrá observar, en la ventana principal de VirtualBox, las características de la máquina virtual que se ha creado (Ver Figura 9).

Imagen ilustrativa

Figura 9. Máquina virtual creada

Configuración de la Máquina Virtual

Una vez creada la máquina virtual, se debe realizar su configuración; esto tiene que ver con la configuración de la conexión a Internet de la máquina virtual, la carga del sistema operativo y la instalación del mismo. A continuación se especifican los pasos a seguir.

Configuración de la conexión a Internet

Dado que en proceso de creación de la máquina virtual ya configuramos sus características básicas (Memoria RAM y Disco Duro), el siguiente paso necesario es la configuración de la red.

Para este fin, haga clic en el botón "Settings" esto desplegará una ventana en la que podrá ver todas las características de la máquina virtual. Seleccione la opción "Network" y en la pantalla que se despliega identifique el campo "Attached to" y seleccione la opción "Bridged Adapter"; esta configuración simula que la tarjeta virtual está conectada al mismo equipo de comunicación que la tarjeta física del computador anfitrión, por lo tanto, la máquina virtual se va a comportar como si fuese un equipo más dentro de la misma red física en la que está dicho equipo.

A continuación, en la sección "Advanced" en el parámetro "Adapter Type" seleccione la opción con Desktop en el nombre; para el parámetro "Promiscuous Mode" seleccione la opción "Allow All"; y para el parámetro "MAC Address" presione el botón azúl al costado derecho para generar una nueva MAC virtual única para la máquina virtual (ver Figura 10) .

Figura 10. Interfaz de configuración de red

Carga de la imagen del Sistema Operativo

A continuación, se especifican los pasos a seguir para realizar la carga e instalación del sistema operativo.

  1. Para realizar la carga de la imagen del sistema operativo que se descargó (ISO) en la ventana de "Settings", haga clic en la opción "Storage" y en la ventana que esta opción despliega seleccione la opción "Controller: IDE" y posteriormente seleccione la opción "Empty". Esto desplegará en la interface un espacio qne el cual se pueden configurar los atributos del controlador; para tal fin haga clic sobre el botón "Virtual Disk" () y seleccione "Choose a disk file..." (Ver Figura 11). En la ventana emergente que se despliega, seleccione la imagen ISO de Raspbian Pi OS.

Imagen ilustrativa

Figura 11. Interfaz de carga del iso del sistema operativo

Si la configuración es correcta, bajo la opción "

Controller: IDE

" debe aparecer el archivo iso a cargar en la máquina virtual (Ver Figura 12).

Imagen ilustrativa

Figura 12. Interfaz de configuración de disco virtual

  1. Una vez verificada la correcta selección del archivo .iso, guarde la configuración realizada dando clic al botón "OK".

Instalación del Sistema Operativo

A continuación, en la ventana principal de VirtualBox seleccione la máquina que se creó y haga clic en "

Start

" (ver Figura 13), al ser la primera vez que se enciende la máquina virtual está arrancará el proceso de instalación del sistema operativo.

Imagen ilustrativa

Figura 13. Interfaz de inicio de máquina virtual

  1. Al iniciar la máquina virtual aparecerá una primera pantalla que permitirá seleccionar la forma de instalación que se quiere utilizar. Con la finalidad de facilitar el proceso les sugerimos utilizar la opción "Graphical install", para seleccionar esta opción utilice las flechas del teclado hasta que la opción quede en gris y luego presione "Enter" (Ver Figura 14).

Imagen ilustrativa

Figura 14. Interfaz de instalación de sistema operativo

  1. Siga las instrucciones del instalador hasta que aparezca la pantalla de particionamiento del disco duro ("Partition disk") y de las opciones disponibles seleccione "Guided – Use Entire Disk" esto utilizará todo el espacio asignado al disco duro para crear una sola gran partición (Ver Figura 15).

Imagen ilustrativa

Figura 15. Interfaz de selección de tipo de partición de disco

  1. En la siguiente pantalla aparece el disco que se le asignó a la máquina virtual en la configuración. Al seleccionarlo confirmara que desea borrar el disco. No hay razón para preocuparse, ya que en este caso, el disco virtual está vacío y se utilizará para realizar el particionamiento. A continuación pulse el botón "Continue" (Ver Figura 16).

Imagen ilustrativa

Figura 16. Interfaz de selección de borrado del disco para realizar la creación de la partición de disco

  1. A continuación, se debe seleccionar el esquema de partición preferido para el disco virtual, de las opciones disponibles seleccione la opción de "All Files in one partition"; esta selección corresponde le permite a la máquina almacenar todos los archivos creados en una sola partición (Ver Figura 17).

Imagen ilustrativa

Figura 17. Interfaz de esquema de partición

  1. En la siguiente pantalla, compruebe el resumen y confirme la configuración del esquema de particionamiento del disco. Seleccione "Yes" y luego de clic en "Continue" (Ver Figura 18).

Imagen ilustrativa

Figura 18. Interfaz de esquema de partición

  1. Una vez configurado el particionamiento del disco, la siguiente pantalla permite la configuración de GRUB; el cual es un programa para iniciar el sistema operativo. Como no hay otros sistemas operativos y cargadores de arranque en un disco virtual, es necesario instalar GRUB en este caso. Seleccione "Yes" y de clic en el botón "Continue" (Ver Figura 19).

Imagen ilustrativa

Figura 19. Interfaz de configuración de GRUB

  1. Posteriormente, seleccione un disco en el cual GRUB debe ser instalado. En este caso, seleccione la opción que aparece bajo "Enter device manually" (Ver Figura 20).

Imagen ilustrativa

Figura 20. Interfaz de configuración de GRUB

  1. A continuación, se realizará la instalación del Raspberry Pi OS, cuando haya finalizado, la máquina virtual se reiniciará automáticamente. Al encender la máquina virtual aparecerá una ventana con el mensaje de bienvenida a Raspberry Pi (Ver Figura 21), y podrá hacer uso de la máquina.

Imagen decorativa

Figura 21. Interfaz de inicio de Raspberry Pi

El Sistema Operativo Raspberry Pi OS trae instaladas varias herramientas similares a las de un computador normal, le recomendamos explorarlas y familiarizarse con ellas. A continuación se presentarán dos funcionalidades que se requieren en el desarrollo del curso: la capacidad de navegación en Internet y la ejecución de programas en Python.

Comprobación de navegación en Internet

Para comprobar la conexión de internet hay varias opciones, pero en este tutorial se utilizará el comando ping ejecutándolo desde la línea de comandos del sistema. A continuación se especifican los pasos a seguir.

  1. Ingrese al terminal dando clic en el ícono de la barra superior.
  2. Ejecute el comando ip a para conocer los datos de conexión de la máquina virtual a la red. Por ejemplo en la Figura 22 se puede observar que la dirección IPv4 es 172.70.4.226.
  3. Ahora ejecute el comando ping a un servidor o página web. Para tal fin, digite comando ping . (e.g. ping www.google.com). Al correr el comando se espera una respuesta del servidor de la cual se calcula el tiempo mínimo, medio y máximo de respuesta (Ver Figura 22). En caso de no recibir respuesta en un tiempo predeterminado, llegará un mensaje de que no hay conexión con el host, la red es inalcanzable o que no se encuentra la ruta al host; en caso de ocurrir esto se debe revisar las configuración de la red de la máquina virtual.

Imagen ilustrativa

Figura 22. Respuesta en consola de comandos para verificar conexión a Internet

  1. Otra forma de comprobar la conexión es abriendo el navegador que viene instalado e intentar acceder a cualquier página web.

Ejecución de programas en Python

La versión que se instaló de Raspberry Pi OS cuenta con la instalación de las versiones Python 2 y Python 3. Para verificar el correcto funcionamiento del intérprete de Python en este tutorial se va a escribir el programa Hello World; se realizará la verificación corriendo el programa desde consola así como guardando un archivo y ejecutándolo.

  1. Para correr un programa en consola primero debe ejecutar el comando python3. Esto abrirá la consola de Python y podrá ejecutar líneas de este lenguaje ahí.
  2. Para comprobar el funcionamiento del intérprete digite print("Hello World") y oprima Enter.
  3. Verifique que en la consola salga impresa la cadena de texto "Hello World".
  4. Finalmente para salir del intérprete de python escriba el comando exit().
  5. Para correr un archivo en el terminal, en primer lugar se debe crear el archivo con el programa de python que se quiere ejecutar, en este caso lo creamos con el comando echo "print(\"Hello World\")" > test.py .
  6. Para ejecutar el archivo digite el comando python3 test.py.
  7. Verifique que en la consola aparezca la cadena de texto "Hello World".

La ejecución de los pasos anteriores en la máquina virtual se muestran en la Figura 23.

Imagen ilustrativa

Figura 23. Respuesta en consola tras correr el programa "Hello World"

Finalmente se realizará la emulación de un dispositivo físico que realiza la captura de los datos de los sensores de temperatura y humedad; y su posterior envío a los servidores de almacenamiento y visualización.

A continuación se especifican los pasos a seguir para realizar la emulación de la captura y envío de los datos.

  1. Desde la máquina virtual de Raspberry Pi OS descargue el archivo Emulator IoT.zip disponible en el siguiente enlace. Para realizar la descarga directamente desde la terminal de la máquina virtual ejecute el siguiente comando:
wget https://raw.githubusercontent.com/SELF-Software-Evolution-Lab/Realtime-Monitoring-webApp/main/tutoriales/Capa%20de%20Dispositivo/Emulador%20IOT.zip -O sensor.zip
  1. A continuación descomprima el archivo con ayuda de la herramienta unzip, para este digite el siguiente comando en la terminal:
unzip sensor.zip
  1. Ahora ingrese a la carpeta Emulador IOT, ejecutando el siguiente comando en la terminal:
cd 

'

Emulador IOT

'

  1. Verifique que en la carpeta se encuentran los siguientes 4 archivos: (i) ca.crt, (ii) requeriments.txt, (iii) pub.py, y (iv) sub.py. Para tal fin digite el siguiente comando en la terminal:
ls
  1. Teniendo en cuenta que esta emulación utiliza el protocolo MQTT es necesario instalar las librerías requeridas de Python para este fin, para realizar esta instalación digite el siguiente comando en la terminal:
pip3 install -r requirements.txt
  1. Una vez instaladas las librerías se puede ejecutar el programa que realiza la emulación de la captura y el envío de los datos de dos variables físicas (temperatura y humedad), que para nuestro caso es el archivo pub.py. El comando que se debe ejecutar el siguiente:
--city

En el comando se deben reemplazar los parámetros USUARIO y CONTRASEÑA con los siguientes datos:

También debe ser reemplazado el parámetro CIUDAD por la ciudad en la cual usted se encuentra ubicado; es importante resaltar en este punto que para el parámetro de ciudad debe escribirse usando minúsculas, guión al piso en vez de espacios y sin tildes o acentos. Por ejemplo, "Santa Marta" sería santa_marta, "Cañasgordas" sería canasgordas y "Santa Bárbara" sería santa_barbara.

  1. Verifique en la terminal que cada 2 segundos se están enviando los datos de temperatura y humedad al servidor
  2. Ingrese a la siguiente dirección https://iotlabweb.virtual.uniandes.edu.co/ e inicie sesión con sus credenciales uniandes.
  3. Revise los valores de humedad, y temperatura presentados en el sitio, estos datos son actualizados en tiempo real.

Al finalizar este tutorial, se espera que sea capaz de instalar y hacer uso de una máquina virtual que le permita emular el funcionamiento de un dispositivos IoT basados en la tarjeta de desarrollo Raspberry Pi.

Versión 1.0

Santiago Fajardo

Carlos Andrés Lozano Garzón

Autores

Kelly Garcés

Andrés Bayona

Juan Avelino

Rocío Héndez

Revisores