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