Download Descargar

Document related concepts
Transcript
PFC Juan Manuel Medel García:
Desarrollo de una plataforma de monitorización y control de un minirobot móvil basada en redes de
sensores inalámbricos
Capítulo 4: Entorno de trabajo y configuración
de dispositivos:
1. Entorno de desarrollo bajo plataforma Unix: Linux –
Ubuntu
1.1.
Justificación de la elección:
A pesar de lo extendido del uso de Windows y que como se verá más adelante el entorno
de trabajo del robot Qfix y de X-CTU es por defecto plataforma de Windows, trabajar en
plataforma Linux nos permite una amplia flexibilidad en cuanto a entornos de
programación y creación de script, multitud de software libre relacionado con
dispositivos arduino sobre los que está basado Libelium.
Es por ello, que a pesar de que existirán algunas complicaciones menores adheridas a la
utilización de software de windows en Linux, las ventajas de usar Linux son
abrumadoras: Incremento en la velocidad de compilación, utilización de los puertos USB
y comunicaciones serie como superusuario pudiendo personalizar cualquier requisito,
consola y terminal en sistema (no emulados como MS2 en Windows)...
En ultima instancia y atendiendo a los equipos del laboratorio, la utilización de Linux
distribución Ubuntu permite un aprovechamiento óptimo del rendimiento y
características de la máquina.
1.2.
Descripción del sistema:
46
PFC Juan Manuel Medel García:
Desarrollo de una plataforma de monitorización y control de un minirobot móvil basada en redes de
sensores inalámbricos
Ubuntu es una distribución de Linux basado en Debian/GNU que fundamenta su uso en
la facilidad de utilización y libertad de software. Está basado y orientado en la
experiencia de los usuarios siendo ellos mismos los que desarrollan aplicaciones o los
que las personalizan siendo una prioridad la solución rápida de bugs y actualizaciones de
sistema. Es importante remarcar que la seguridad es elevada en este tipo de sistemas
siendo imposible activar procesos latentes sin autorización del usuario.
Ubuntu divide todo el software en cuatro secciones, llamadas componentes, para
mostrar diferencias en licencias y la prioridad con la que se atienden los problemas que
informen los usuarios. Por defecto, se instala una selección de paquetes que cubre las
necesidades básicas de la mayoría de los usuarios de computadoras. Estos componentes
son: main, restricted, universe y multiverse.
· El componente main: El componente main contiene solamente los paquetes que
cumplen los requisitos de la licencia de Ubuntu, y para los que hay soporte disponible
por parte de su equipo. Éste está pensado para que incluya todo lo necesario para la
mayoría de los sistemas Linux de uso general. Los paquetes de este componente poseen
ayuda técnica garantizada y mejoras de seguridad oportunas
· El componente restricted: El componente restricted contiene el programa soportado
por los desarrolladores de Ubuntu debido a su importancia, pero que no está disponible
bajo ningún tipo de licencia libre para incluir en main. En este lugar se incluyen los
paquetes tales como los controladores propietarios de algunas tarjetas gráficas, como por
ejemplo, los de nVIDIA. El nivel de la ayuda es más limitado que para main, puesto que
los desarrolladores puede que no tengan acceso al código fuente.
· El componente universe: El componente universe contiene una amplia gama del
programa, que puede o no tener una licencia restringida, pero que no recibe apoyo por
parte del equipo de Ubuntu. Esto permite que los usuarios instalen toda clase de
programas en el sistema guardándolos en un lugar aparte de los paquetes soportados:
main y restricted.
· El componente commercial: Como lo indica su clasificación, contiene programas
comerciales.
· El componente multiverse: Finalmente, se encuentra el componente multiverse, que
contiene los paquetes sin soporte debido a que no cumplen los requisitos de Software
Libre.
1.3.
Paquetes adicionales y dependencias:
La instalación del sistema operativo Ubuntu supone la instalación de un sistema
47
PFC Juan Manuel Medel García:
Desarrollo de una plataforma de monitorización y control de un minirobot móvil basada en redes de
sensores inalámbricos
operativo completo universal con aplicaciones de uso habitual para usuarios. En nuestro
caso, es necesario instalar algunas funcionalidades extras que nos permitan integrar en el
sistema operativo funcionalidades de programación y de comunicación por consola
puerto serie a través del USB.
En principio será necesario instalar un paquete que permite la ejecución de aplicaciones
compiladas para Windows en Linux. Este paquete se llama Wine, su instalación puede
realizarse con la herramienta de instalación de software propia de Ubuntu: “El centro de
software”. Tras la instalación aparecerá una nueva carpeta oculta dentro de la carpeta
personal de Ubuntu donde encontraremos la estructura de raíz y archivos *.dll propios de
windows y que nos permitirán emular una capa donde trabajarán los programa de
windows sin cambiar el entorno de Linux y pudiendo utilizar programas de ambos
sistemas operativos a la vez.
Para crear el programa de intercomunicación entre el ordenador y los robots será
necesario un entorno de programación denominado Eclipe con el motor de compilación
de Java y de C++. A pesar de que también puede ser instalado utilizando el centro de
software, es recomendable descargar la ultima versión disponible en la pagina del
fabricante (www.eclipse.org/downloads/) y compilarlo e integrarlo en el sistema
operativo (./configure, ./make y finalmente ./install) para así disponer de ambos
lenguajes de programación bajo un mismo Eclipse estando actualizado a la última
versión disponible.
Por último, se instalará gratuitamente una suite de oficina llamada “OpenOffice”que
integrará un paquete básico de funcionalidades como procesador de textos, libros excel,
bases de datos, etc. Para escribir este proyecto se esta utilizando OpenOffice Writer con
un modulo que permite escribir funciones en LaTex.
2. Instalación de aplicaciones del fabricante bajo Linux:
2.1.
Qfix programmimg environment:
48
PFC Juan Manuel Medel García:
Desarrollo de una plataforma de monitorización y control de un minirobot móvil basada en redes de
sensores inalámbricos
El entorno de programación para la placa del robot Qfix está únicamente preparado para
ser instalado y utilizado en el sistema operativo Windows XP con versión de lenguaje
Alemana. En caso de no utilizar el idioma Alemán como lengua del sistema operativo
algunas funcionalidades como compilar o reprogramar no pueden ser utilizadas sin
ligeras modificaciones.
Una imagen donde se muestran los principales elementos de la ventana del sistema Qfix
es la siguiente:
Ilustración 24: Ventana de programación de Qfix
Este entorno de programación está preparado para varias tecnologías y lenguajes de
programación. En nuestro caso, nosotros elegiremos mega32 acorde con el
microcontrolador de la placa MiniBoard de Qfix y código de programación C++ al
existir bibliotecas y funciones creadas por el fabricante en dicho lenguaje.
El entorno tiene algunas estructuras típicas de programación y dispone de cogido de
49
PFC Juan Manuel Medel García:
Desarrollo de una plataforma de monitorización y control de un minirobot móvil basada en redes de
sensores inalámbricos
colores para palabras clave, no obstante y puesto que en el sistema se dispone de Eclipse
con C++ los programas se generarán en ese entorno que dispone de corrección y función
de autocompletar en linea que son de gran utilidad para posteriormente exportar el
proyecto al entorno de Qfix y compilarlo.
Las opciones de compilar y descargar en la placa son de especial interés ya que
automatizan y facilitan ambos procesos.
En general el programa es sencillo y amigable tal y como se esperaba al estar destinado a
la enseñanza en niveles medios. Se puede crear un programa “sigue-lineas” en menos de
una hora a pesar de ser el primer contacto con el software.
2.1.1.
Instalación y dependencias necesarias:
Ya que el motor de programación es AVR y el entorno está desarrollado en WinAVR
para poder compatibilizarlo con Windows tendremos que utilizar el programa Wine
como se verá a continuación. Ubuntu incorpora varios comandos que permiten instalar
programas, uno de ellos es MSIexe que se ajusta a las características del instalador msi
proporcionado por qfix. Ejecutando la orden: “msiexec /i tuArchivoInstalador.msi” en
una consola de comandos dentro de la carpeta donde se haya descomprimido el
contenido del disco proporcionado por el fabricante se instala automaticamente el
ProgrammersNotepad sobre el que está basado el entorno de programación. Puesto que
no está instalado en Windows ni el lenguaje del sistema operativo era Alemán, no
podremos utilizar la opción de compilar y cargar automaticamente en la placa de
MiniBot a menos que se realicen unos ligeros cambios que a continuación se detallan:
· Para permitir la compilación debemos ir a la dirección “~/.wine/dosdevices/c:” y
crear una carpeta llamada “Programme” copiando en su interior la carpeta qfix y
todo su contenido que el programa durante su instalación introdujo en la carpeta
“Archivos de programa”.
· Para permitir la descarga en la placa de MiniBot de los programas creados será
50
PFC Juan Manuel Medel García:
Desarrollo de una plataforma de monitorización y control de un minirobot móvil basada en redes de
sensores inalámbricos
necesario modificar el nombre por defecto de los puertos serie en Windows por el
nombre de los puertos serie en Linux. Para ello abrimos el archivo
“~/.wine/dosdevices/c:/Programme/qfix/bin/download-mega32.bat”
y
modificamos el nombre del puerto COMX por /dev/ttyUSBX donde X corresponde
al numero del puerto donde está conectada la placa del robot quedando una
sentencia como: “avrdude -p %CONTROLLER% -P /dev/ttyUSB2 -b 115200 -c avr910 -e -U
flash:w:"%TARGET%.bin”.
2.2.
Arduino Integrated Development Environment:
Arduino está establecido como una plataforma de hardware libre basada en una placa
con un microcontrolador Atmel AVR y con determinados puertos de entrada y salida
muy versátil y conocida entre los programadores del sector. Junto con el hardware de
arduino también se ha desarrollado un entorno de desarrollo para programar esta
plataforma de forma sencilla. En nuestro caso, los WaspMotes están desarrollados
siguiendo una arquitectura Arduino y por tanto pueden ser programados por el software
genérico para ellos; no obstante, los desarrolladores han creado un entorno de desarrollo
propio que tiene incluidas las API dentro de la propia IDE pudiendo poner a punto el
entorno de desarrollo en apenas media hora.
Una imagen de la IDE genérica para arduino donde podemos encontrar los API de los
modelos es la siguiente:
51
PFC Juan Manuel Medel García:
Desarrollo de una plataforma de monitorización y control de un minirobot móvil basada en redes de
sensores inalámbricos
Ilustración 25: Ventana de programación de Arduino
Para los WaspMote de Libelium existe un IDE de arduino personalizado cuyo
funcionamiento es prácticamente el mismo y se detalla a continuación:
52
PFC Juan Manuel Medel García:
Desarrollo de una plataforma de monitorización y control de un minirobot móvil basada en redes de
sensores inalámbricos
Ilustración 26: Ventana de programación de Libelium
2.2.1.
Instalación y dependencias necesarias:
Este programa está desarrollado especialmente para Linux por lo que no necesita de
instalación para ser ejecutado pudiendo lanzarse directamente desde consola o por
medio de un script.
No obstante, para poder ejecutarlo es necesario tener instalado cualquier compilador
AVR en el sistema o las bibliotecas del mismo, esto se consigue utilizando el centro
de software de Ubuntu.
2.3.
Digi X-CTU:
Los módulos ZigBee de los que se dispone en el laboratorio permiten configurar el
modulo para trabajar como ZigBee Coordinador, ZigBee Router o ZigBee End-device.
53
PFC Juan Manuel Medel García:
Desarrollo de una plataforma de monitorización y control de un minirobot móvil basada en redes de
sensores inalámbricos
Estos módulos son más caros que los habituales por permitir este cambio de forma de
uso, sin embargo son mas flexibles hasta que finalmente se decida cuantos ZigBee de
cada tipo son necesarios.
Como consecuencia, es necesario programar el módulo ZigBee en función de la
responsabilidad que tenga en la red. Para ello es necesario un software desarrollado por
Digi, el fabricante de los módulos ZigBee, de acceso gratuito y pensado para trabajar en
Windows.
2.3.1.
Instalación y dependencias necesarias:
Como consecuencia de ser un software desarrollado para windows será necesario
instalarlo en Ubuntu bajo la capa que proporciona el programa Wine. En este caso el
archivo de instalación tiene extensión ejecutable por lo que para instalarlo solo
tendremos que pulsar el botón derecho y ejecutar con Wine. Al hacer esto se habrá
instalado
el
programa
y
se
habrá
generado
una
carpeta
en
“~/.wine/dosdevices/c:/Archivos de Programa”.
Una vez instalado el programa será necesario crear enlaces virtuales que permitan
direccionar el puerto COM que X-CTU utiliza con el puerto TTYUSB que Ubuntu
reconoce. Para ello utilizaremos la sentencia de creación de “soft link” tal y como
sigue:
sudo ln -s /dev/ttyUSB0 ~/.wine/dosdevice/com7
Finalmente, una imagen del programa es la siguiente:
54
PFC Juan Manuel Medel García:
Desarrollo de una plataforma de monitorización y control de un minirobot móvil basada en redes de
sensores inalámbricos
Ilustración 27: Ventana de programación de módulos ZigBee de Digi
55