Prácticas de Sistemas Embebidos e Internet de las Cosas                Sistemas Operativos Avanzados


Prácticas de Sistemas Embebidos e Internet de las Cosas

En teoría, la práctica y la teoría son idénticas. En la práctica, no

La presente guía tiene por objetivo orientar al lector sobre los recursos disponibles para aprender a aprovechar un sistema embebido en vistas de orientar su uso a IoT. No pretende ser inédita, ya que hay mucho material disponible que cubren sobremanera todos los tópicos aquí tratados. Por el contrario, se hará uso en los casos oportunos, con el fin de ahorrar tiempo en una búsqueda exploratoria. Por supuesto, invitamos a (y lo recomendamos) ampliar sus conocimientos con todo el material disponible y omitido en este documento, siempre que sea necesario.

La inmensa variabilidad de SE hace que la práctica sea también muy diversa. Sin embargo, a grandes rasgos los procesos se repiten adaptando cada situación al SE en particular. En esta ocasión la práctica estará orientada a hacer uso de la Placa de prototipos Intel Galileo GEN1. Quedará en manos del lector, hacer una adaptación a otras plataformas cuando lo crea necesario.

Nota importante: Debido a la similitud y a la adopción de tecnologías abiertas, la documentación para Intel Galileo GEN2, Intel Edison y Arduino suele ser compatible y útil para trabajar con Intel Galileo GEN1.

Materiales

Preparación del entorno

Laboratorio 266

Proxy

WiFi

Drivers

Linux

Windows

Conector Serie UART (Cable USB - mini Plug)

Conector Serie USB - µUSB (Cable µUSB)

iOS

Software complementario

Linux

Windows

IDE

Práctica: Preparación de otro S.O.

Práctica: Actualización del firmware

Linux

Windows

Práctica: Conexión con el SE

Configurar una IP Estática

Configurar Proxy

Práctica: Hola SE!

Práctica: Salida Digital (blinking LED)

Práctica: Entrada Digital

Práctica: Entrada Analógica

Práctica: PWM (Salida pseudo Analógica)

Práctica: Interrupciones

Práctica: Publicar en Internet

Práctica: Responder a Internet

Véase también

Enlaces externos


Materiales

Lista de elementos para traer a las clases de SE y IoT por cada pareja

Probablemente para algunos de los ítems necesiten explicaciones que serán oportunamente dadas.

Preparación del entorno

Para poder trabajar con sistemas embebidos, debemos acondicionar nuestra estación de trabajo (nuestra computadora) con los elementos software necesarios. Estos elementos dependarán del dispositivo con el que trabajaremos, y las utilidades que éste presente. Por lo general, suelen ser los mismos. En este caso podremos optar por diferentes lenguajes (C, C++, Java, Javascript, Python, Gráficos, Processing) en diversos entornos (Eclipse, XDK IoT Edition, Wyliodrin, Arduino). Casi todos ellos con versiones disponibles para Linux, Windows y iOS.

Laboratorio 266

En el laboratorio encontrará acceso a Internet para consultar la documentación. Sin embargo, se recomienda asistir con todo el software necesario ya descargado.

Proxy

En Linux suele alcanzar con ejecutar

export http_proxy="192.168.20.1:3128"

export https_proxy=$http_proxy

export HTTP_PROXY=$http_proxy

export HTTPS_PROXY=$http_proxy

export no_proxy="localhost,127.0.0.1,.yafuiste.net"

export NO_PROXY=$no_proxy

La mayoría de los programas utilizan las variables de entorno. Lamentablemente no es el caso de npm (node.js) que precisa configuración aparte.

npm config set https-proxy "http://192.168.20.1:3128"

npm config set proxy "http://192.168.20.1:3128"

WiFi

Drivers

Linux

En cualquier distribución estándar de Linux los drivers ya vienen instalados.

Windows

Hace falta instalar dos drivers. Tener preparado el software necesario para realizar las siguientes prácticas.

Conector Serie UART (Cable USB - mini Plug)

Seguir el procedimiento descrito en esta web para instalar los VCP (Virtual COM Port) drivers

  1. Guía de instalación
    http://www.ftdichip.com/Drivers/VCP.htm
  2. Descarga de archivos
    http://www.ftdichip.com/Drivers/D2XX.htm

Conector Serie USB - µUSB (Cable µUSB)

Instalar SIN la memoria µSD insertada.

  1. Guía de instalación
    https://software.intel.com/en-us/installing-drivers-and-updating-firmware-for-arduino-windows
  2. Descarga de archivos
    https://downloadcenter.intel.com/downloads/eula/24748/Intel-Galileo-Firmware-and-Drivers-1-0-4?httpDown=http%3A%2F%2Fdownloadmirror.intel.com%2F24748%2Feng%2FIntelGalileoFirmwareUpdater-1.0.4-Windows.zip

iOS

No contamos con experiencia en esta plataforma. Invitamos a cualquier estudiante que quiera compartir la suya con nosotros y con futuros estudiantes. Por el momento sólo podemos ofrecer este enlace:

https://software.intel.com/en-us/get-started-galileo-mac 

Software complementario

Los sistemas embebidos suelen carecer de una interfaz humana con la que se lo puede programar y/o configurar. Normalmente, el acceso a los sistemas embebidos se realiza a través de una consola de terminal remota. Más información sobre esto: https://learn.sparkfun.com/tutorials/terminal-basics/serial-terminal-overview- 

Linux

Linux cuenta con varios programas para comunicarse a través de una terminal. Por homogeneización, sugerimos utilizar putty.

El acceso a los puertos /dev/ttyUSB* y /dev/ttyACM* (desde donde accederemos al SE) está restringido para el usuario común. Se puede optar por ejecutar los programas como root (no recomendado) o agregar al usuario al grupo dialout y uupc, respectivamente. Para ello, ejecutar:

sudo usermod -a -G dialout,uupc $USERNAME

El cambio será afectado en el siguiente inicio de sesión. Más información: http://playground.arduino.cc/Linux/All#Permission

Windows

Windows no trae un software incorporado para conectarse a una consola remota. Se sugiere utilizar putty u otro similar.

IDE

Existen muchas opciones para programar un SE.

Por empezar, se trata de un dispositivo que tiene un SO Linux de 32 bits corriendo sobre un SoC con un procesador 32 bit, single core, single thread, Pentium ISA compatible. Cualquiera sea la forma de generar un binario respetando estos parámetros es válida.

Para facilitar las cosas, existen opciones que hacen el trabajo de compilación cruzada, implantación del binario en el dispositivo y depuración de manera automatizada.

Intel brinda, además de la placa de prototipos Galileo, documentación y software para poder trabajar con ella: https://software.intel.com/en-us/iot/documentation. Pero no es la única opción. Al tratarse de entornos abiertos, otras empresas adoptaron el dispositivo para brindar sus productos y servicios. Muchas veces gratuitamente. Algunas de ellas: Wyliodrin, SparkFun.com, Arduino, WindRiver. Una lista no completa publicada por Intel:

https://software.intel.com/en-us/iot/software/ide

Debajo hay una breve referencia con el objetivo de orientar en la búsqueda.

Práctica: Preparación de otro S.O.

La placa de desarrollo Intel Galileo cuenta con una versión reducida de un sistema operativo almacenado en su memoria SPI para brindar mínimas funcionalidades. Además, brinda la opción de iniciar un SO ubicado en almacenamiento externo, a través de una tarjeta µSD.

Intel ofrece al menos dos versiones de SO para instalar en una µSD, con mucho software precargado. También es posible diseñar una imagen a medida de las necesidades utilizando Yoctos.

Práctica: Actualización del firmware

Se recomienda tener leída esta guía a la hora de realizar esta práctica.

http://downloadmirror.intel.com/24748/eng/IntelGalileoFirmwareUpdaterUserGuide-1.0.4.pdf

Linux

Según la documentación de Intel, se puede actualizar el firmware con el actualizador multiplataforma o con el actualizador para Linux. En nuestra experiencia, ninguna de las dos opciones funcionaron.

Encontramos que la actualización del firmware se puede realizar exitosamente desde una versión anterior de Arduino preparada por Intel: 1.5.3

Windows

Según nuestra experiencia, se puede actualizar sin problemas con el actualizador de firmware.

https://software.intel.com/en-us/installing-drivers-and-updating-firmware-for-arduino-windows


Práctica: Conexión con el SE

Difícilmente se pueda configurar un SE desde la casi nula (y a veces inexistente) interfaz de usuario. La placa de desarrollo Intel Galileo ofrece varias formas de acceder a la configuración. Probar acceder a todas ellas.

https://communities.intel.com/thread/46335?start=0&tstart=0 

Ayuda: https://communities.intel.com/message/218498#218498 

Configurar una IP Estática

El SO está equipado con ConnMan. Un servicio para administrar las conexiones de red especialmente diseñado para sistemas embebidos.

connmanctl config <service> --ipv4 manual <ip address> <netmask> <gateway>

Considerar que <service> es el nombre de la interfaz de red, cuyo nombre se compone con ethernet_#MACaddress_cable. Confirmar con connmanctl services

Ejemplo

# connmanctl services

*AR Wired        ethernet_98fee010d69_cable

# connmanctl config ethernet_98fee010d69_cable --ipv4 manual 192.168.20.10 255.255.255.0 192.168.20.1

# connmanctl config ethernet_98fee010d69_cable --nameservers 8.8.8.8

Importante: Considere la posibilidad de provocar colisiones de IP si todos prueban el mismo ejemplo.

Configurar Proxy

http://derekmolloy.ie/setting-a-network-proxy-on-the-beaglebone-black/ 

Práctica: Hola SE!


Práctica: Salida Digital (blinking LED)

http://falsinsoft.blogspot.com.ar/2012/11/access-gpio-from-linux-user-space.html


Práctica: Entrada Digital


Práctica: Entrada Analógica


Práctica: PWM (Salida pseudo Analógica)


Práctica: Interrupciones

Práctica: Publicar en Internet

Práctica: Responder a Internet

Véase también

https://communities.intel.com/thread/46335?start=0&tstart=0 

Enlaces externos

http://www.intel.la/content/www/xl/es/support/boards-and-kits/intel-galileo-boards/000006615.html?wapkw=galileo&_ga=1.177427941.1993249227.1430481159

https://learn.sparkfun.com/tutorials/voltage-current-resistance-and-ohms-law

https://www.arduino.cc/en/ArduinoCertified/IntelGalileo 

http://www.slideshare.net/StructureIoT/nodejs-and-the-internet-of-things

http://www.instructables.com/id/intel/

https://learn.sparkfun.com/tutorials/galileo-getting-started-guide

https://software.intel.com/en-us/articles/blinking-leds-manipulating-digital-gpios-on-the-intel-galileo-board-with-the-iot

https://communities.intel.com/message/222211

http://johnny-five.io/

https://books.google.com.ar/books?id=CFtICgAAQBAJ

https://engage.intel.com/community/es/galileo

https://software.intel.com/en-us/intel-iot-platforms-getting-started-cloud-analytics


Universidad Nacional de La Matanza        Sebastián Barillaro