Академический Документы
Профессиональный Документы
Культура Документы
1
El presente proyecto tiene informacin confidencial, es una versin ntegra de un
proyecto realizado en una empresa, por lo que hay datos que no sern pblicos.
ndice
Seccin 1: Objetivos, alcance y antecedentes del proyecto .............................................................. 6
1.1 Objetivo del proyecto......................................................................................................... 6
1.2 Alcance ............................................................................................................................... 6
1.3 Antecedentes ..................................................................................................................... 6
Seccin 2: Introduccin terica.......................................................................................................... 7
2.1 Fundamentos de Radio ...................................................................................................... 7
2.1.1 Espectro Electromagntico ........................................................................................ 7
2.1.2 Ecuacin de transmisin en espacio libre .................................................................. 8
2.1.3 RSSI ............................................................................................................................. 9
2.2 Redes de sensores inalmbricas WSN.............................................................................. 10
2.3 Motas ..................................................................................................................................... 11
2.3.1 Elementos bsicos de una Mota .............................................................................. 11
2.4 Introduccin a Zigbee....................................................................................................... 12
2.4.1 Historia y curiosidades ............................................................................................. 13
2.4.2 Caractersticas tcnicas de Zigbee [3] ...................................................................... 14
2.4.2.1 Frecuencias de trabajo y rango de velocidades ....................................................... 14
2.4.2.2 Tipos de dispositivos ............................................................................................ 15
2.4.2.3 Topologas de red................................................................................................. 16
2.4.2.4 Capas de Zigbee.................................................................................................... 17
2.4.2.5 Seguridad de red ...................................................................................................... 21
2.4.2.5 Profundidad de red .............................................................................................. 22
2.4.3 Coexistencia de redes inalmbricas ......................................................................... 23
2.4.4 El futuro de Zigbee ................................................................................................... 24
2.5 Introduccin a Arduino .................................................................................................... 25
2.5.1 Qu es Arduino? ..................................................................................................... 25
2.5.2 Qu significa que Arduino sea Open Hardware?[4]............................................... 25
2.5.3 Por qu Arduino?.................................................................................................... 26
2.6 Las placas Arduino............................................................................................................ 27
2.6.1 Qu significa que una placa sea Arduino?.............................................................. 27
2.6.2 Placas de entradas y salidas ..................................................................................... 27
2.6.3 "Shields" y otras placas de terceros ......................................................................... 29
2.6.4 Construir nuestro propio Arduino............................................................................ 30
2.6.5 Cmo obtener una placa Arduino? ........................................................................ 31
2
2.6.6 Eleccin de placa Arduino: El Arduino UNO............................................................. 31
2.6.6.1 El porqu de la eleccin ....................................................................................... 31
2.6.6.2 Caractersticas ...................................................................................................... 32
2.6.6.3 Esquema y pines................................................................................................... 33
2.7 El entorno de trabajo ....................................................................................................... 34
2.7.1 El entorno de desarrollo y los drivers de la placa para Windows ............................ 34
2.7.2 Descargar y ejecutar un ejemplo de aplicacin Arduino ......................................... 37
2.7.2.1 Editor .................................................................................................................... 37
2.7.2.2 Compilador........................................................................................................... 39
2.7.2.3 Cargar y depurar................................................................................................... 40
2.7.2.4 Compilar con Atmel AVRISP mkII ......................................................................... 41
2.8 Lenguaje de programacin Arduino................................................................................. 43
2.8.1 Introduccin e historia ............................................................................................. 43
2.8.2 Funciones bsicas y operadores............................................................................... 44
2.8.2.1 Estructuras ........................................................................................................... 44
2.8.2.2 Variables............................................................................................................... 46
2.8.2.3 Funciones ............................................................................................................. 47
2.8.3 Uso de libreras......................................................................................................... 49
2.8.3.1 Libreras Estndar................................................................................................. 49
2.8.3.2 Libreras de terceros............................................................................................. 50
Seccin 3: Memoria descriptiva ....................................................................................................... 52
3.1 Hardware: Componentes de un sensor inalmbrico ....................................................... 52
3.1.1 Antenas y transceptores Zigbee............................................................................... 52
3.1.1.1 Mdulos Xbee ...................................................................................................... 53
3.1.1.2 Datos E/S .............................................................................................................. 56
3.1.1.3 Eleccin de la antena Xbee .................................................................................. 57
3.1.2 Arduino Uno ............................................................................................................. 59
3.1.2.1................................................................................................................................... 59
3.1.3 Sensor de ultrasonidos............................................................................................. 61
3.1.3.1 Requerimientos iniciales ...................................................................................... 62
3.1.3.2 Eleccin de los componentes............................................................................... 63
3.1.3.3 Descripcin del sensor elegido............................................................................. 63
3.1.3.4 Caractersticas tcnicas ........................................................................................ 66
3.1.3.5 Conexionado......................................................................................................... 66
3
3.1.3.6 Ajustes .................................................................................................................. 67
3.1.3.7 Aplicaciones.......................................................................................................... 67
3.1.4 Bateras..................................................................................................................... 67
3.1.5 Adaptador Xbee a placa protoboard de Sparkfun ................................................... 69
3.1.6 Adaptador Xbee Shield............................................................................................. 69
3.1.7 Caja de Control:........................................................................................................ 71
3.2 Software ........................................................................................................................... 72
3.2.1 Programacin de los mdulos Xbee: X-CTU............................................................. 72
3.2.2 Procesado de datos: MySQL..................................................................................... 75
3.2.2.1 Aplicaciones.......................................................................................................... 75
3.2.2.2 Lenguajes de programacin ................................................................................. 75
3.2.2.3 Caractersticas adicionales ................................................................................... 75
3.2.3 Aplicacin Visual:...................................................................................................... 77
3.3 Implementacin de hardware y software........................................................................ 77
Seccin 4. Memoria de Clculo ........................................................................................................ 79
4.1 Diagramas de flujo del software ...................................................................................... 79
4.2 Potencia consumida ......................................................................................................... 81
Seccin 5: Casos experimentales ..................................................................................................... 82
5.1 Lectura de la corriente consumida en los diferentes ciclos de trabajo ........................... 82
5.2 Lectura de medidas del sensor ultrasnico...................................................................... 83
5.3 Lectura del RSSI: Outdoor ................................................................................................ 83
5.4 Comunicacin emisor-receptor Xbee............................................................................... 85
Seccin 6: Planos.............................................................................................................................. 87
6.1 Plano placa Arduino ......................................................................................................... 88
6.2 Fotografa placa base (interior End Device) ..................................................................... 89
6.3 Plano Pila.......................................................................................................................... 90
6.4 Fotografa del mdulo Coordinador................................................................................. 91
6.5 Planos Xbee Explorer USB ................................................................................................ 92
6.6 Fotografa caja comunicacin .......................................................................................... 93
6.7 Plano caja de comunicacin ............................................................................................. 94
Seccin 7: Presupuesto .................................................................................................................... 95
7.1 Precios unitarios............................................................................................................... 95
7.2 Precios descompuestos.................................................................................................... 96
7.2.1 Captulo 1: Estudios previos ..................................................................................... 96
4
7.2.2 Captulo 2: Diseo y montaje del hardware............................................................. 96
7.3 Resumen del presupuesto................................................................................................ 97
Seccin 8: Conclusiones ................................................................................................................... 98
Seccin 9: Bibliografa .................................................................................................................... 101
Seccin 10: Anexo .......................................................................................................................... 103
10.1 Cdigo fuente................................................................................................................. 103
10.2 Cdigo fuente ejemplo para probar sensor ultrasnico SRF05 ..................................... 106
5
Seccin 1: Objetivos, alcance y antecedentes del proyecto
1.2 Alcance
1.3 Antecedentes
6
Seccin 2: Introduccin terica
E=h c (1)
Dentro del espectro electromagntico tenemos los rayos gamma de alta potencia
que llegan de las supernovas, los rayos X, los microondas para cocinar nuestros alimentos,
los infrarrojos que nos producen una sensacin de calor, la luz visible que nos sirve para
poder captar informacin y procesarla en el cerebro y tambin las ondas de radio. Las
ondas de radio son mucho ms largas que las ondas de luz y muchas pueden viajar a travs
de materiales tales como: ropa, muebles o paredes.
Las ondas de radio se pueden propagar muy bien por el vaco y por lo tanto son
ideales para las comunicaciones en las que las conexiones con cable no son tan prcticas.
Dentro del espectro electromagntico podemos ver que las frecuencias de ondas de
radio ocupan la porcin energtica situada entre 3 kHz y 300 GHz. Dentro de este amplio
espectro, podemos subdividir la radio en varias bandas de frecuencias:
7
Tabla 1. Clasificacin del espectro de radiofrecuencia.
8
Estos fenmenos se pueden explicar con la ecuacin de transmisin en espacio libre.
Esta ley dice que, para fenmenos ondulatorios tales como el sonido y la luz, la intensidad
disminuye con el cuadrado de la distancia con respecto al punto en donde se origina. Dicho
de otra forma, cada vez que se dobla la distancia desde la fuente, se requieren cuatro veces
la cantidad de energa para mantener la seal.
( )= ( )
(2)
2.1.3 RSSI
9
Dnde cada parmetro es:
- n: La pendiente de la seal.
- A: El valor absoluto del RSSI a 1 m de distancia.
- d: La distancia entre antenas.
10
puede ofrecer un valor aadido. De esta forma podemos tener aplicaciones tan variadas
como control medioambiental o control de espacios inteligentes.
2.3 Motas
Micro controlador: Es el elemento que procesa los datos recogidos por los sensores y
controla la funcionalidad del nodo.
11
Memoria Externa: Almacenamiento de datos del nodo. En general, la cantidad de
memoria necesaria depende de cada aplicacin.
Batera: Aporta la energa al nodo para su funcionamiento, tanto cuando est dormido
como cuando est activo.
12
2.4.1 Historia y curiosidades
El nombre de Zigbee deriva de los patrones errticos comunicativos que tienen las
abejas (bees) entre las flores durante la recogida de polen. Los zumbidos de las abejas
evocan en redes inalmbricas invisibles.
Zigbee surge de la necesidad de desarrollar una tecnologa inalmbrica fiable, pero
de no muy alta transferencia de datos. De esta forma, en 1998, un conjunto de empresas se
asociaron para desarrollar un estndar de comunicaciones que complementara a Wi-fi y
Bluetooth. Fue terminado y publicado por el IEEE en Mayo de 2003.
Desde el punto de vista del Hardware, podemos decir que Zigbee ha sido
cuidadosamente optimizado para el bajo coste a gran escala. Tiene pocas partes analgicas
y utiliza circuitos digitales siempre que sea posible.
13
Tabla 2. Cuadro comparativo entre WiFi, Bluetooth y Zigbee.
La banda de 2.4 GHz es usada en el mundo entero mientras que las de 868 MHz y
915 MHz se usan en Europa y Amrica del Norte respectivamente. Esto otorga a los
diseadores libertad para tomar sus propias decisiones sobre qu bandas de frecuencia son
mejores para sus aplicaciones.
En general, podemos decir que las aplicaciones de 2.4 GHz permiten un ancho de
banda ms grande y ms canales. Sin embargo, la coexistencia con otros sistemas que
funcionan con 2.4 GHz como WLAN y Bluetooth debe ser tenida en cuenta. El tamao de
las antenas en sistemas de 2.4 GHz es tambin menor respecto a las otras dos bandas de
frecuencias.
14
Tabla 3. Bandas de frecuencia en Zigbee.
IEEE 802.15.4 y Zigbee definen diferentes tipos de dispositivos. Por un lado, IEEE
802.15.4 define el FFD (de Full Function Device en ingls), que es un dispositivo de
funcionalidad completo. A su vez, este tipo de dispositivos pueden funcionar como
coordinadores de rea (PAN) o dispositivos normales. Por otro lado, tambin define los
RFD (de reduced-function device en ingls), que son dispositivos de funcionalidad
reducida.
La figura 8 nos permite ver las clasificaciones Zigbee e IEEE 802.15.4 y sus
analogas.
15
Zigbee Router: Se encarga de interconectar los dispositivos mediante tcnicas de
encaminamiento y direccionamiento.
Pair: La forma ms sencilla de la red es con dos nodos. Uno de ellos debe ser un
coordinador. El otro puede ser bien un router o bien un end device.
16
Este tipo de topologa permite que, si en un momento un nodo o camino fallan en la
comunicacin, sta pueda seguir rehaciendo los caminos. La gestin de los caminos es
tarea del coordinador.
Las capas del protocolo Zigbee estn basadas en el modelo OSI (Open Systems
Interconnection). Aunque el modelo OSI especfica siete capas, Zigbee utiliza cuatro capas.
17
La ventaja de dividir un protocolo en capas es que, si el protocolo cambia, es ms fcil
cambiar una capa que el protocolo entero.
El estndar Zigbee define slo las capas de red, aplicacin y seguridad, y adopta del
estndar IEEE 802.15.4 las capas PHY y MAC. El estndar fue desarrollado por el comit
802 del IEEE y fue inicialmente lanzado en el 2003.
Capa PHY
Es la capa ms cercana al hardware y es donde tiene lugar el control y las
comunicaciones del transceptor. Esta capa es la responsable de activar la transmisin y
recepcin de paquetes del sistema. Adems, tambin selecciona el canal de frecuencia y se
asegura que ste no es usado por otros dispositivos de la red.
Capa MAC
La capa MAC tiene la misin de proveer servicios a las capas superiores para que
stas se encarguen tanto del manejo de los datos que son transferidos en una red WSN
como de las primitivas para que un sistema operativo administre estas dos capas (capa
fsica y de enlace de datos).
Capa NWK
La capa NWK hace de interfaz entre la capa MAC y la capa APL y es la
responsable de gestionar la formacin de redes y del routing. El routing es el proceso de
seleccionar el camino a travs del cual el mensaje ser lanzado hasta la destinacin del
dispositivo al que va dirigido. En esta capa se brindan los mtodos necesarios para: iniciar
la red, unirse a la red, enrutar paquetes dirigidos a otros nodos en la red y proporcionar los
medios para garantizar la entrega del paquete al destinatario final.
El Zigbee Coordinator y los routers son los responsables de este proceso. El coordinador
Zigbee tambin asigna en la capa NWK las direcciones a los dispositivos en su red.
Capa APL
Esta es la capa ms alta del protocolo en una red inalmbrica Zigbee y alberga los
objetos de la aplicacin. Los fabricantes creadores de Zigbee desarrollaron esta capa para
poder personalizar un mismo dispositivo para varias aplicaciones, por lo que podemos
decir que esta capa es la que hace a los dispositivos verstiles. Adems, puede haber hasta
240 objetos de aplicacin en un nico dispositivo.
El estndar Zigbee ofrece la opcin de utilizar perfiles en el desarrollo de la aplicacin. Un
perfil de aplicacin permite la interoperabilidad entre productos desarrollados por
diferentes fabricantes. Por ejemplo, si dos fabricantes utilizan el mismo perfil de aplicacin,
sus productos sern capaces de interactuar como si hubieran sido fabricados por el mismo
fabricante.
La capa de aplicacin de Zigbee determina varias caractersticas de dispositivos,
incluyendo la funcionalidad requerida para los dispositivos. La estructura general de la
capa se muestra en la figura 14:
19
Figura 13. Descripcin de la capa de aplicacin.
Por un lado, los clusters son un conjunto de atributos agrupados, cada cluster es un
nmero de 16 bits, llamado cluster identifier, que a su vez tiene una pila dnde puede
almacenar atributos, tales como el valor actual de temperatura, si el sensor est dormido,
etc.
20
Figura 14. Perfiles definidos por la Zigbee Alliance.
El perfil Smart Energy, por ejemplo, define varios tipos de dispositivos incluyendo
un portal de servicios energticos, pantallas en el hogar, etc., definiendo una funcionalidad
requerida para cada dispositivo.
21
conocida como la clave de seguridad, y slo el destinatario ser capaz de recuperar el
mensaje original.
- La profundidad de red.
- El nmero mximo de hijos que un padre puede aceptar.
- La profundidad que ocupa el dispositivo en la propia red.
22
2.4.3 Coexistencia de redes inalmbricas
Todas estas tecnologas operan en la banda de 2.4 GHz. Para el desarrollo de estas
tecnologas en el mercado competitivo e innovador de los dispositivos inalmbricos, es
crucial la coexistencia pacfica de las tecnologas que permitan a cada usuario cumplir con
los objetivos de la comunicacin.
Por otro lado, Bluetooth usa 79 canales de 1 MHz cada uno, de forma que tampoco hay
solapamiento entre sus canales y la seal que modulan en cada uno de ellos.
23
Una va para evitar interferencias puede ser la de seleccionar canales que no se
superpongan. En concreto, los canales 15, 16, 21 y 22 del estndar IEEE 802.15.4 no se
superponen con los canales 1, 7 y 13 del estndar 802.11b. Por lo tanto, es en estos canales
dnde tendramos la menor interferencia posible con los canales de WiFi.
Es probable que el rol que Zigbee jugar en el futuro de las comunicaciones vaya
creciendo con el tiempo.
Zig-bee tiene muchos puntos a su favor como estndar gestionado diseado para
ofrecer robustas caractersticas de seguridad, permitir muchos nodos, y soportar
interoperabilidad e independencia de los distribuidores. Tambin incorpora caractersticas
que permiten un rendimiento sobresaliente con un consumo de energa relativamente bajo.
Un ejemplo de las aplicaciones con las que puede tener futuro Zigbee puede ser la
aplicacin que hizo la empresa JPM ingenieros de La Rioja, que desarroll un sistema para
mantener el control de los viedos mediante redes de sensores Zigbee. Este sistema tiene
un coste de implantacin muy bajo comparado con la instalacin de una estacin
meteorolgica tradicional, que necesita una gran inversin. La hace especialmente
adecuada para agricultores con pequeas extensiones de terreno o para aquellos que las
tienen separadas entre s.
Como puntos negativos, sin embargo, podemos decir citar por ejemplo la no
interoperabilidad entre fabricantes, lo que va a dificultar mucho una implementacin del
estndar a gran escala. Adems, aunque el protocolo fue lanzado hace ya unos aos,
todava no ha tenido el auge que se le esperaba, y hoy en da la mayor parte del negocio
Zigbee se centra en kits de desarrollo para ingenieros de RF.
Los mercados potenciales son diversos y tienden a ser de un valor total inferior.
24
2.5 Introduccin a Arduino
2.5.1 Qu es Arduino?
25
La licencia no debe de restringir a ningn campo o actividad el uso de la obra. Es
decir, no se puede limitar su uso nicamente para negocios o prohibir sea utilizado
para investigacin nuclear.
El licenciamiento de la obra no puede depender de un producto en particular.
La licencia no debe restringir otro hardware o software, es decir que no puede
insistir en que otros componentes de hardware o software externos a los
dispositivos sean tambin open-source.
La licencia tiene que ser neutral, ninguna disposicin de la misma debe de basarse
en una tecnologa especfica, parte o componente, material o interfaz para su uso.
Cumpliendo con estas premisas, los diseos y esquemas de Arduino se distribuyen
bajo licencia Creative Commons Attribution-ShareAlike 2.5[5].
Al seguir este tipo de licencias, donde toda la informacin es pblica, todas las
placas pueden ser construidas por uno mismo o bien comprarlas ya montadas. El software
puede ser descargado de forma gratuita. Los ficheros de diseo de referencia (CAD), al
estar disponibles bajo una licencia abierta, pueden ser libremente adaptados a las
necesidades particulares.
26
optimizndolo. Incluso usuarios relativamente inexpertos pueden construir la versin para
placa de desarrollo para entender cmo funciona y ahorrar algo de dinero.
"Freeduino"[10] es un nombre que identifica las variantes del proyecto Arduino que
no fueron creadas por el equipo oficial de desarrollo Arduino.
Existe una gran variedad de placas Arduino, y de todas ellas se han hecho varias revisiones.
Arduino UNO.
Es una placa Arduino que se conecta al PC a travs de un cable USB estndar.
27
A travs de esta conexin la alimentacin y, adems, permite programarla y
utilizarla.
Arduino UNO es la ltima revisin de este tipo de placas que se conectan al
USB. Entre las mltiples revisiones que se han hecho encontraramos la
Duemilanove, Diecimila, NG (Nuova Generazione) o Extreme.
Arduino Mega
Es una placa Arduino similar a la USB, pero ms grande y potente. La ltima
revisin posee el chip ATmega2560. Tiene mayor nmero de pines de entradas y
salidas digitales, ms pines PWM, entradas analgicas, etc.
Arduino Pro
Es una placa similar al Arduino UNO, pero diseada con la intencin de
instalaciones semipermanentes. La placa se entrega sin los distintos conectores o
headers, es compatible con las distintas extensiones de Arduino, y existe una
versin de 3.3V para ser alimentado con bateras.
Arduino Ethernet
Similar al Arduino UNO, sin soporte USB, pero con un conector RJ-45 para dar
soporte Ethernet. Existe la posibilidad de tomar la alimentacin de la propia
Ethernet.
Arduino Fio
Un Arduino orientado para usarlo como nodo inalmbrico. Posee conectores para
un mdulo Xbee (mdulo inalmbrico)[13], un conector para una batera
LiPo (Polmeros de litio), y un circuito para cargar la batera.
Arduino LilyPad
Una placa Arduino circular, reducida al mximo, diseada para ser cosida a la ropa
o a otro tipo de soporte flexible. Necesita un adaptador adicional para comunicarse
con el PC.
Arduino BT
El Arduino BT contiene un mdulo bluetooth integrado para las comunicaciones
mviles.
Arduino Nano
El Arduino Nano es un todo-en-uno, diseo compacto para usar en una placa de
prototipo.
Arduino Serial
28
Las versiones serial de Arduino se vendieron principalmente como kits no
ensamblados o solo PCBs para que lo montara uno mismo, ya sea a modo de
aprendizaje o para reducir costes.
Arduino Mini
El Arduino Mini es la placa compacta de Arduino. Para reducir espacio, la
comunicacin con el PC se hace a travs de un adaptador de USB a Arduino
Mini.
Las shields son placas que se colocan encima de la placa Arduino y que amplan una nueva
funcin para que sea controlada desde Arduino, para controlar diferentes aparatos, adquirir
datos, etc.
29
Esta shield le da a una placa Arduino la posibilidad de comunicarse de manera inalmbrica
basndose en los mdulos Xbee[13], y ofrece al usuario una pequea rea para soldar
componentes (prototipage).
A parte de las shields existe un buen nmero de plataformas que estn listas para
ser controladas por una placa Arduino. Entre estas plataformas, quizs una de las ms
vistosas seria:
RobotShop Rover
Es una pequea plataforma mvil diseada entorno a Arduino. Los usuarios pueden
personalizar su mvil aadiendo funcionalidad.
Al ser OSHW puede montarse los distintos mdulos uno mismo. La placa Arduino
Single-Sided Serial (cara simple y mono capa) o Severino ha sido diseada para que sea
especialmente fcil de grabar el PCB y montar los distintos componentes.
30
Figura 23. Arduino Single-Sided Serial o Severino
Se puede adquirir una placa Arduino desde uno de los distribuidores oficiales, o a
travs de mltiples tiendas online de electrnica.
Para lograr este objetivo se deba trabajar con un mdulo real, pero no era el caso
de estudio el montaje ni la depuracin de los posibles errores del hardware, con lo que se
opt por la compra de mdulo ya montado.
Como punto de partida, teniendo en cuenta que no necesitbamos gran cantidad de
entradas y salidas, se decidi usar una placa Arduino que tuviera todo lo necesario para
empezar a trabajar al coste ms acotado posible. La actual revisin que mejor encaja con
estas caractersticas es el Arduino UNO.
31
Figura 24. Arduino UNO, vista frontal Figura 25. Arduino UNO, vista trasera
2.6.6.2 Caractersticas
El Arduino UNO puede ser alimentado va la conexin USB o con una fuente de
alimentacin externa. El origen de la alimentacin se selecciona automticamente.
32
modulation, modulacin por ancho de pulsos) con temporizadores de 8 bits de
resolucin.
LED: Pin 13. Hay un LED integrado en la placa conectado al pin digital 13,
cuando este pin tiene un valor HIGH(5V) el LED se enciende y cuando este tiene
un valor LOW(0V) el LED se apaga.
AREF. Este pin proporciona un voltaje de referencia para las entradas analgicas.
Los esquemas completos del Arduino UNO se pueden encontrar en su pgina web oficial.
En la siguiente imagen se puede ver la correspondencia de pines entre el
ATmega168/328 y Arduino.
33
Figura 26. Pines de Arduino contra ATmega328
Para empezar a trabajar debemos instalar todo el entorno necesario en el PC. Vamos
a describir brevemente este proceso en un entorno Windows.
Existe gran cantidad de guas acerca de cmo realizar este proceso, incluyendo una
explicacin en la propia pgina del proyecto Arduino[22].
Debo indicar que este proyecto se ha realizado con la versin 1.0 del entorno de
programacin Arduino. Esta es la primera versin no Alfa del entorno Arduino, y
presenta grandes cambios en comparacin de las anteriores. La mayora de cambios son a
nivel esttico (distribucin de iconos en las barra de herramientas, esquema de colores,),
pero hay un gran cambio a nivel funcional, los ficheros Arduino han pasado de tener
extensin .pde a extensin .ino
La descarga:
Descargamos la ltima versin del software Arduino de la pgina oficial
[26].
El paquete de software Arduino est contenido en un nico fichero comprimido. No
es necesario instalarlo, simplemente lo extraemos en la carpeta deseada asegurndonos que
mantenemos la estructura de subcarpetas.
Los drivers necesarios para utilizar la placa Arduino junto con su entorno se
encuentran en la subcarpeta \drivers del paquete que acabamos de extraer. Una vez
conectemos nuestra placa Arduino en nuestro PC, deberemos indicarle a
Windows que debe buscarlos en esta carpeta.
34
Figura 27. Arduino en el administrador de dispositivos de Windows
Una vez abierto el entorno Arduino se debera ver algo como esto:
35
Figura 28. Entorno SW de Arduino
Antes que nada debemos saber que un sketch, o boceto, es el nombre que usa
Arduino para un programa. Es la unidad de cdigo que se sube y se ejecuta en la placa
Arduino. El concepto de sketch o boceto, sera el equivalente a proyecto.
36
2.7.2 Descargar y ejecutar un ejemplo de aplicacin Arduino
Tenemos conectado la placa Arduino en nuestro PC. Hemos instalado los drivers y
ejecutado el IDE de Arduino. Conocemos los conceptos bsicos acerca de los bocetos de
Arduino. Verifiquemos ahora que nuestra placa y el PC funcionan correctamente.
2.7.2.1 Editor
37
Figura 29. Acceso a los ejemplos a travs del men
Esto nos abrir una nueva ventana con el cdigo de este boceto, el objetivo del cual
no es ms que encender y apagar el LED de test, montado en la placa Arduino, cada
segundo (secuencia infinita de un segundo encendido, un segundo apagando. Blink).
38
Figura 31. Ejemplo de cdigo Arduino
2.7.2.2 Compilador
Para tal cosa, simplemente pulsando sobre el icono Verify , el IDE de Arduino va
a verificar y compilar el cdigo escrito en la ventana activa. El entorno Arduino siempre
compila el cdigo de las pestaas de la ventana activa como un nico boceto.
Aqu nos indica el estado del proceso, el tamao de memoria usada y la disponible
en la placa Arduino.
39
Si modificamos el cdigo del ejemplo para forzar un error en la fase de
verificacin/compilacin, nos encontraramos con esto:
Cdigo Blink original Cdigo Blink con depuracin a travs del monitor serie.
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
40
}
void setup() {
pinMode(13, OUTPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(13, HIGH);
Serial.println(HIGH);
delay(1000);
digitalWrite(13, LOW);
Serial.println(LOW);
delay(1000);
}
41
Esta herramienta se utiliza para las actualizaciones de los microcontroladores Atmel
8 bits AVR, con interfaz ISP o PDI. Utilizando el software incluido AVR Studio , los
diseadores pueden programar dispositivos megaAVR utilizando la interfaz del proveedor
de Internet, los dispositivos tinyAVR utilizando la interfaz de TPI y dispositivos XMEGA
AVR utilizando la interfaz de PDI y tiny AVR. La ayuda en lnea de AVR Studio contiene
la informacin ms actual y una lista completa de los dispositivos compatibles.
A continuacin vemos como se clasifica cada pin del conector para programacin:
42
Antes de cargar el software, debemos seleccionar el compilador utilizado en Tools, como
vemos seguidamente, a la vez que hay que seleccionar Cargar usando programador en el
momento de compilar:
43
Adicionalmente Arduino tiene un gran conjunto de funciones ya implementadas
para realizar de un modo fcil tareas comunes como hacer una espera activa, leer un puerto
digital o escribir en l, entre muchas otras.
Los siguientes subapartados tienen el objetivo de dar una visin rpida acerca del
lenguaje de programacin Arduino, pero no se pretende entrar en el detalle del lenguaje de
programacin. Para tal efecto hay multitud de manuales disponibles por la red, entre ellos y
por citar algunos:
2.8.2.1 Estructuras
Al estar basado en Processing, Java y/o C, las estructuras de control son muy
similares a ellos y entre ellos.
Sintaxis bsica
; (punto y coma. Delimitador de lnea de cdigo)
{} (llaves. Delimitador de bloques de cdigo)
// (comentarios en una lnea)
/* */ (comentarios en mltiples lneas)
#define (definicin de precompilador)
#include (inclusin de cdigo externo)
Estructuras de control
if (comparador si-entonces)
if...else (comparador si...si no)
for (bucle con contador)
switch case (comparador mltiple)
while (bucle por comparacin booleana)
44
do... while (bucle por comparacin booleana)
break (salida de bloque de cdigo)
continue (continuacin en bloque de cdigo)
return (devuelve valor a programa)
goto (salta a una etiqueta)
Operadores Aritmticos
= (asignacin)
+ (suma)
- (resta)
* (multiplicacin)
/ (divisin)
% (resto)
++ (incremento en uno)
-- (decremento en uno)
+= (suma y asignacin)
-= (resta y asignacin)
*= (multiplicacin y asignacin)
/= (divisin y asignacin)
Operadores de comparacin
== (igual a)
!= (distinto de)
< (menor que)
> (mayor que)
<= (menor o igual que)
>= (mayor o igual que)
Operadores Booleanos
&& (y)
|| (o)
! (negacin)
45
2.8.2.2 Variables
Los tipos de los datos, su uso y declaracin, es muy similar a otros lenguajes de
programacin, como el C o Java.
Constantes
Las constantes que vienen predefinidas en el lenguaje de Arduino se usan para
facilitar la lectura de los programas.
Tipos de Datos
Las variables pueden ser declaradas en cualquier punto del programa y, si no se
indica lo contrario, valen cero.
1Se debe tener en cuenta que el uso de float se realiza a travs de libreras sw, y que adems la propia
codificacin IEEE-754 que usa el tipo float tiene limitaciones.
Conversin
Estas son una serie de funciones que permiten el cambio entre tipos.
char(x) Convierte el valor de tipo x a carcter.
byte(x) Convierte el valor de tipo x a byte.
int(x) Convierte el valor de tipo x a int.
46
long(x) Convierte el valor de tipo x a long.
float(x) Convierte el valor de tipo x a float.
static Esttica Las variables que se declaran como estticas slo se crearan e
inicializarn la primera vez que se ejecute el bloque de cdigo en el que estn
contenidas.
volatile Voltil Una variable debe ser declarada volatile siempre que su valor
pueda ser modificado por algo ms all de la seccin del cdigo en el que aparece.
En Arduino, el nico lugar en el que se podra dar el caso es en secciones de cdigo
asociadas a interrupciones.
2.8.2.3 Funciones
E/S Digital
pinMode(pin, modo) configura el pin a modo de entrada o salida
digitalWrite(pin, valor) - escritura digital
digitalRead(pin) devuelve una lectura digital
E/S Analgica
analogReference(tipo) configura el tipo de referencia analgica
analogRead(pin) devuelve una lectura analgica
analogWrite(pin, valor) escritura analgica. Generar una onda cuadrada con
el ciclo de trabajo que se le indique como parmetro (0-255 implica un ciclo de
trabajo de 0 a 100%). La frecuencia de la seal PWM ser de 490 Hz por diseo de
Arduino. Proporciona una manera simple de implementar un control de intensidad
luminosa sobre un LED.
47
E/S Avanzada
tone(pin, frecuencia) - Genera una onda cuadrada de la frecuencia en Hz
especificada. Opcionalmente se puede definir la duracin del tono en ms.
noTone(pin) Deja de generar el tono en el pin especificado
shiftOut(pinDatos, pinReloj, ordenBits, valor) - Desplaza un byte de datos bit a
bit a travs del SPI.
pulseIn(pin, value) - Devuelve la anchura de un pulso en microsegundos
empezando a medir cuando el pin se encuentra al nivel definido en value.
Tiempo
millis(). Tiempo des del arranque en ms.
micros(). Tiempo des del arranque en us.
delay(ms). Espera activa en ms.
delayMicroseconds(us). Espera activa en us.
Clculo
min(x, y) Devuelve el mnimo de dos nmeros.
max(x, y) Devuelve el mximo de dos nmeros.
abs(x) - Devuelve el valor absoluto
constrain(x, a, b) Devuelve x siempre que este entre a y b. En caso contrario
devuelve los lmites a o b.
map(value, fromLow, fromHigh, toLow, toHigh) Devuelve el valor de un
re-mapeo de un rango hacia otro. Por ejemplo para realizar un cambio de escala
de un valor de 0 a 1024 a un rango de 0 a 255.
pow(base, exponente) Devuelve el valor de un nmero elevado a otro nmero.
sqrt(x) Devuelve la raz cuadrada
Trigonometra
sin(rad) Devuelve el seno
cos(rad) - Devuelve el coseno
tan(rad) - Devuelve la tangente
Nmeros aleatorios
randomSeed(seed) Inicializa el generador de nmeros pseudoaleatorios.
Se puede usar como semilla una entrada mnimamente aleatoria como
analogRead() en un pin desconectado.
random() Devuelve un valor pseudoaleatorio.
Bits y Bytes
lowByte(x) Devuelve el byte de menor peso (big-endian, el de ms al derecha)
de una variable
highByte(x) - Devuelve el byte de mayor peso (big-endian, el de ms al izquierda)
de una variable
bitRead(x, n) Devuelve el valor del bit n en x.
bitWrite(x, n, b) Escribe b en el bit n de x.
bitSet(x, n) Pone a 1 el bit n de x.
48
bitClear(x, n) Pone a 0 el bit n de x.
bit(n) Devuelve un byte con sus bits a cero a excepcin del bit n. Por ejemplo,
bit(0) devolvera un 1 en decimal, bit(1) un 2, bit(2) un 4 en decimal.
Interrupciones externas
attachInterrupt(inter, funcion, modo) Con el parmetro inter indicamos que ISR
externa vamos a configurar. Con el parmetro modo indicamos el motivo que la va
a disparar (CHANGE, LOW, RISING o FALLING) y con el parmetro funcin, la
funcin que va a ejecutarse al ser disparada.
detachInterrupt(inter) Desactiva la interrupcin inter
Interrupciones
interrupts() - Habilita las interrupciones
noInterrupts() - Desactiva las interrupciones
Comunicacin (estas dos son clases, con lo que no se pueden invocar directamente,
sino que se debe invocar el mtodo que necesitemos)
Serial
Stream
El propio entorno Arduino contiene una serie de libreras integradas que facilitan
enormemente las tareas ms comunes en el mundo del hobby electrnico.
Las Libreras proveen funcionalidad extra a nuestro sketch al trabajar con hardware
o al manipular datos. Para usar una librera dentro de un sketch, puedes seleccionarla desde
Sketch > Import Library (Importar Librera)[16].
49
Wire - Interfaz de dos cables, Two Wire Interface (TWI/I2C), para enviar y
recibir datos a travs de una red de dispositivos y sensores.
Si se desean usar libreras que no vienen junto con Arduino, es necesario instalarlas.
Las libreras suelen entregarse en un fichero comprimido y suelen contener una carpeta
propia con dos archivos, uno con sufijo ".h" y otro con sufijo ".cpp".
Estas son algunas de las libreras que se pueden encontrar y que estn referenciadas
en la propia pgina web del proyecto Arduino [16]. Tambin se puede encontrar una lista
alternativa en la Wiki de Arduino [31].
Sensores:
Capacitive Sensing Implementa un sensor tctil capacitivo uniendo un pin de
escritura con una resistencia relativamente alta (100kOhm 50MOhm), una lamina
de metal o cable y un condensador pequeo (20 - 400 pF) a un pin de lectura,
detectando cambios en este al acercarse o tocar la lmina con el dedo.
Debounce - Para una lectura filtrada de entradas digitales con rebotes
(tpicamente las entradas conectadas a botones).
Displays y LEDs:
Improved LCD library - Arregla errores de inicializacin del LCD de la librera
LCD oficial de Arduino.
GLCD - Rutinas grficas para LCDs basados en el chipset KS0108 o equivalentes.
50
LedControl - Para controlar matrices de LEDs o displays de siete segmentos con
MAX7221 o MAX7219.
LedDisplay - Control para marquesina de LED HCMS-29xx.
Matrix - Librera para manipular displays de matrices de LED bsicas.
Sprite - Librera bsica para manipulacin de sprites para usar en animaciones con
matrices de LEDs.
Motores y PWM:
TLC5940 - Manejador para el chip TLC5940 de Texas Instruments
implementando el control de hasta 16 servomotores a la vez.
Medicin de Tiempo:
DateTime - Librera para llevar registro de fecha y hora actual en el software.
Metro - til para cronometrar acciones en intervalos regulares.
MsTimer2 - Utiliza la interrupcin del temporizador 2 para disparar una accin
cada N milisegundos.
A raz del cambio mayor de versin (de alfa a 1.0) en el entorno de programacin
Arduino, muchas de las libreras de terceros han quedado obsoletas/desactualizadas por la
inclusin de ficheros de encabezados (.h) que han sido renombrados en esta nueva versin,
entre ellos Wprogram.h ha sido renombrado a Arduino.h, con lo que nos obligar a
modificar el cdigo de estas libreras incluyendo el nuevo fichero.
51
Seccin 3: Memoria descriptiva
52
Xbee: La principal ventaja de este mdulo es el precio, que es el ms barato de
todos al no ser necesaria la compra de un kit de desarrollo-, adems tambin es el ms
extendido entre el pblico, lo que da la posibilidad de poder conseguir y compartir mucha
informacin con usuarios. Como desventajas, en cambio, no dispone de microcontrolador.
Finalmente decidimos hacer el proyecto con las Xbee Pro, ya que aunque son ms
limitadas tcnicamente por no disponer de micro-controlador, son mucho econmicas al no
necesitar un kit de desarrollo para poderlas programar (el software para programarlas es
gratuito desde la pgina http://www.digi.com/es/. Adems hemos comprobado que en
Internet hay mucha bibliografa e informacin en foros, etc.
Los mdulos Xbee son fabricados por la empresa Digi, proporcionan conectividad
inalmbrica con otro dispositivo de la misma serie por un precio relativamente econmico
comparado con el de otros fabricantes.
Digi ofrece dos series diferentes, la serie 1 y la serie 2, tambin conocida como
Znet 2.5.
Los mdulos de la Serie 1 y la Serie 2 tienen el mismo pin-out, sin embargo no son
compatibles entre s ya que utilizan distintos chipset y trabajan con protocolos diferentes.
La serie 1 est basada en el chipset de Freescale y est pensado para ser utilizado en redes
punto a punto y punto a multipunto. Los mdulos de la Serie 2 estn basados en el chipset
53
de Ember, y estn diseados para ser utilizados en aplicaciones que requieren repetidores o
una red mesh. Ambos mdulos pueden ser utilizados en los modos AT y API.
La figura 22 ilustra cmo fluyen los bits de datos a travs del mdulo Xbee.
Los datos entran en el mdulo UART a travs de la patilla DIN (pin 3) como una
seal asncrona y se almacenan en un buffer. Lo mismo sucede cundo se quieren
transmitir datos por DOUT (pin 4).
Este modo permite ingresar comandos AT al mdulo Xbee, para configurar, ajustar
o modificar parmetros. Permite ajustar parmetros como la direccin propia o la de
destino, as como su modo de operacin entre otros aspectos. Para poder ingresar los
comandos AT es necesario utilizar el Hyperterminal de Windows, el programa XCTU o
algn micro-controlador que maneje UART y tenga los comandos guardados en memoria o
los adquiera de alguna otra forma.
54
Figura 42. Ejemplo de comando AT.
Este modo es ms complejo, pero permite el uso de tramas con cabeceras que
aseguran la entrega de los datos, al estilo TCP. Extiende el nivel en el cual la aplicacin del
cliente, puede interactuar con las capacidades de red del mdulo.
Cuando el mdulo Xbee se encuentra en este modo, toda la informacin que entra y sale,
es empaquetada en tramas, que definen operaciones y eventos dentro del mdulo.
55
Figura 43. Ejemplo de comando AT.
El primer byte 0x7E indica el comienzo de la trama. Los dos bytes siguientes
indican solamente la longitud de la trama de Datos (Data Frame) (es decir, toda la trama
sin contar ni el byte 0x7E, ni el largo-Length, ni el byte Checksum). La estructura API que
viene despus se compone segn vemos en la figura 26:
Se ha visto que los mdulos Xbee pueden ser configurados de dos formas diferentes
adems del modo comando, que son el modo transparente AT y el modo API. En el modo
AT slo nos permite la comunicacin punto a punto entre dos Xbees.
En el modo API, podemos enviar y recibir desde el Coordinador o cualquier
elemento de red, la informacin que viene en cada trama es mucho ms detallada.
El modo API a la prctica nos permite tener ms control de la red, ya que por ejemplo si la
comunicacin falla obtendremos un cdigo de error.
Para muestrear seales los mdulos Xbee estn equipados con conversores A/ D de
10 bits.
56
ocupa 2 bytes, podremos llegar a tomar 43 muestras antes de enviar. El mximo tiempo de
muestreo es de 1 muestra / ms.
La trama de datos de E/S comienza con un byte de cabecera que define el nmero
de muestras que son mandadas. Los ltimos 2 bytes de la trama definen qu entradas estn
activas, ya que cada bit representa cada IO y ADC.
Muestra_AD
Valor= 1024
1200 mV (4)
Se comenzaron a hacer las pruebas iniciales con una antena o mdulo XBee de
1mW de potencia, serie 1, con conector a antena por U.fl, ya que era la disponible en la
empresa y, adems la ms econmica, su precio oscila los 17 .
57
evidentemente, de mayor coste, el XBee Pro (su precio oscila los 28 ), con el cual
comparamos a continuacin:
En la tabla 6 vemos las prestaciones que ofrecen ambos mdulos. Las Xbee Pro ganan en
cuanto al alcance en la transmisin al tener una potencia de salida bastante mayor. En
cuanto a velocidades de transmisin, ambas son semejantes a 250 kbps.
Por otro lado, por lo que se refiere a las caractersticas tcnicas, podemos ver como
las Xbee Pro tienen como desventaja, su mayor consumo (295 mA en la transmisin de
datos de las Xbee Pro frente a unos 45 mA en las Xbee, y 55 mA en la recepcin para las
Xbee Pro frente a 50 mA en las Xbee), esto hace que el tiempo de vida de las bateras en
las Xbee Pro sea mucho menor.
58
Los factores de programacin de cada antena no condicionan la eleccin, ya que
ambas se programan exactamente igual desde X-CTU. Tampoco es un problema el
disponer tanto de las libreras como de la interfaz grfica, ya que ambos modelos utilizan
las mismas.
La placa Arduino Uno la utilizaremos para conectar con el mdulo Xbee End
Device y el
Sensor ultrasnico, gracias a las placas adaptadoras de Libelium que veremos a
continuacin, y as poder enviar el volumen de llenado del contenedor por RF. Esto
permitir tener otro Cordinador como receptor en una caja de comunicaciones, y poder
controlar desde un PC el estado de los contenedores.
3.1.2.1 Hardware
Parmetro Dato
Voltaje operativo 5V
Voltaje de entrada recomendado 7-12 V
Voltaje de entrada lmite 6-20 V
Pines de entrada y salida digital 14 (6 proporcionan PWM)
Pines de entrada analgica 6
Intensidad de corriente 40 mA
Memoria Flash 32KB (2KB reservados para el bootloader)
59
SRAM 2 KB
EEPROM 1 KB
Frecuencia de reloj 16 MHz
Microcontrolador
Atmel ATmega328P
8-bit AVR CPU
RISC instruction set (assembly)
32KB of program memory
20 MHz max. freq. (Usually 16 MHz) Peripherals voltages ranging from 0V-3.3V
Timers, Counters, Watch dog
6 PWM channels
Serial USART Digital
SPI/I2C communication
Analog-to-Digital Converter (ADC)
Port B Port D
6 usable pins 8 usable pins
60
Digital Port -> only binary 3 can be PWM 3 can be PWM
Digital
Port C
6 usable pins
Analog Port -> can write/read
voltages ranging from 0V-3.3V
Uno de los mejores ejemplos que podemos citar para que podamos entender en una
forma ms clara el funcionamiento de los sensores de ultrasonido es el vuelo de los
murcilagos, ya que despus de todo, el sistema est inspirado en estos pequeos
mamferos. Como ya sabemos todos, los murcilagos son ciegos por ello deben desplazarse
a travs del eco de sus sonidos; de esta manera debemos decir que el murcilago, para
detectar el lugar en el cual se encuentra un obstculo y no chocar contra l, emite una serie
de sonidos cuyo eco rebota en dicho obstculo y de esta manera, al recibir el eco, lo
detectan y pueden esquivarlo.
Uno de los enemigos que tiene este sistema de sensores de ultrasonido es el falso
eco, el cual se produce, cuando el objeto en donde el disparo se supone que tiene que
rebotar en forma de eco, cambia de lugar. Suele pasar en entornos metlicos tambin, que
61
se produzcan falsas medidas, hay que buscar la posicin ptima del sensor para que este
fenmeno no se produzca.
62
3.1.3.2 Eleccin de los componentes
Por ltimo, una vez comprobado que el micro-controlador recibe las medidas
correctas del sensor ultrasonidos, falta conseguir que estas lecturas se enven de manera
inhalmbrica desde el sensor hacia un receptor colocado a una cierta distancia del
contenedor. La solucin ms cercana de la que se dispona son los mdulos Xbee de Digi,
que funcionan a una frecuencia de 2,4 GHz y pensamos que en relacin calidad-precio era
lo ms apropiado.
Empezamos con el Xbee Serie 1, para comprobar que se envan las medidas
correctamente, y as fue, pero vemos que al querer transmitir a ms distancia se nos queda
corto, por lo que acabamos utilizando un Xbee Pro S1 60mW, de mucha ms potencia que
el anterior, aunque tambin mayor consumo, cosa muy importante ya que la vida del sensor
depende de una batera, no va conectado a la red ni panel solar.
Una vez conseguido nuestro objetivo, tenemos que conseguir que el gasto del
proyecto sea el mnimo, a la vez que el tamao del prototipo, cosa que en el caso del sensor
y del Xbee no es posible, ya que son circuitos ya integrados y hay que acoplarlos as a
Arduino.
Por lo tanto, hay que escoger de todo el conjunto de la placa Arduino, nicamente
los componentes necesarios para que, conectados al sensor y a Xbee, nos funcione con la
misma eficiencia y exactitud que en un principio. La diferencia sera que, en vez de
gastarnos ms de 20 en una placa Arduino, nos gastemos 5 en los componentes
imprescindibles.
63
Figura 49. Esquema Hardware de la placa del sensor SRF05.
El SRF05 incluye una pequea temporizacin tras el pulso ECO de salida, que
permite que controladores lentos como Basic Stamp y Picaxe puedan ejecutar sus
correspondientes instrucciones.
64
Figura 50. Diagrama de tiempos en el modo1
La duracin del pulso eco de salida vara entre 100S y 25mS, en funcin de la
distancia entre las cpsulas del mdulo y el objeto. La velocidad del sonido es de 29.15
S/cm que, como realiza un recorrido de ida y vuelta, queda establecida en 58.30S/cm.
As pues el rango mnimo que se puede medir es de 1.7 cm (100S/58) y el mximo d e 431
cm (25mS/58).
65
Figura 51. Diagrama de tiempos en el modo2
3.1.3.5 Conexionado
El mdulo emplea tan slo 5 conexiones que se pueden realizar soldando
directamente 5 cables o bien mediante un conector de 5 vas con paso de 2.54mm. Estas se
muestran en la figura 31.
66
Figura 53. Conexiones SRF05 con Arduino
3.1.3.6 Ajustes
El mdulo SRF05 viene perfectamente ajustado y calibrado de fbrica, por lo que
no necesita de ningn tipo de ajuste. Su funcionamiento se puede verificar aplicando una
serie de pulsos por la entrada de disparo. Con ayuda de un osciloscopio se puede medir la
anchura de la seal eco de salida. Esta anchura, representada en S y dividida entre 58.30
nos permite calcular la distancia del objeto.
3.1.3.7 Aplicaciones
El mdulo SRF05 es capaz de generar una seal lgica de salida cuya duracin
determina la distancia de un objeto. Las aplicaciones son numerosas, citamos unas cuantas
a modos de ejemplo:
Aplicaciones de control conde se deba actuar en funcin de la
distancia o tamao de objetos diversos.
Alarmas activadas cuando el intruso se aproxima a una
determinada distancia.
Microbtica en donde es necesario que se acte en funcin de la distancia
que separa al robot de cualquier otro objeto.
3.1.4 Bateras
Las bateras son uno de los elementos fundamentales en el diseo de nuestro sensor
inalmbrico, tanto por el diseo de la propia placa como la capacidad de otorgar autonoma
a nuestro sensor.
- La tensin que aporta: Los requerimientos de diseo imponen que nuestra batera
presente una alimentacin entre 2.8 V y 3.4 V, que es el rango de tensiones de
alimentacin de las Xbee.
67
- La capacidad de la batera, que la medimos en mAh. Este es un factor de vital
importancia ya que de esta manera podemos medir la vida que tendr la aplicacin. Por
ejemplo, si la batera tiene una capacidad de 250 mAh, y provee una corriente media de 2
mA a la carga, en teora la batera podra otorgar una vida de 125 horas a nuestro equipo.
68
3.1.5 Adaptador Xbee a placa protoboard de Sparkfun
La separacin de los pines de los mdulos Xbee se rige por el sistema mtrico
(concretamente es de 2mm), por lo que no pueden ser puestos directamente sobre una placa
protoboard, cuya separacin se basa en el sistema imperial (pulgadas). El fabricante
Sparkfun ofrece estas pequeas placas que adaptan la separacin de las patas para poder
ser acopladas a una placa protoboard (ver figura 36).
El motivo de hacernos con estas pequeas placas adaptadoras es poder trabajar con
las Xbee en la fase de diseo para poderlas adaptar a nuestra placa protoboard, antes de
adaptarlas a la placa PCB.
Uno de los problemas que tenamos que afrontar en el desarrollo del proyecto era
poder acoplar los mdulos Xbee al PC para poder leer los datos. La Xbee Shield, acoplada
a una placa Arduino permite solventar este problema.
Esta placa, creada por la empresa Libelium permite la comunicacin de los mdulos Xbee
con el micro de Arduino, tanto para aplicaciones remotas (por ejemplo si queremos montar
un router inalmbrico con microcontrolador) como para aplicaciones locales con PC (que
es nuestro caso, ya que la queremos usar para el Coordinador). Dispone adems de pines
digitales (pin 2 a 7) y pines analgicos.
La Xbee Shield tiene dos jumpers que determinan como se conecta el mdulo Xbee
a la placa Arduino. Existen dos posiciones posibles, la posicin Xbee y la posicin USB.
La posicin Xbee conecta el pin DOUT del mdulo Xbee al pin Rx del microcontrolador
del Arduino, y el pin DIN est conectado al TX. Notar que los pines RX y TX del
69
Micro-controlador estn todava conectados a los pines TX y RX respectivamente. Sin
embargo, en esta posicin el micro-controlador slo ser capaz de recibir datos desde el
mdulo Xbee y no desde el USB del ordenador.
La posicin USB conecta el pin DOUT del mdulo Xbee al pin RX del chip FTDI,
y el pin DIN del mdulo Xbee al pin TX del chip FTDI. Por lo tanto, en esta posicin
podemos conectar directamente el mdulo Xbee al ordenador. Un punto importante es que
deber quitarse el micro-controlador del mdulo Arduino.
70
3.1.7 Caja de Control:
La Caja de Control puede albergar la Base de Datos aunque se recomienda que sta
se encuentre no fsicamente en el Punto de Control sino en las Oficinas o Instalaciones del
usuario de Gestin.
Cada Unidad o Caja de Control permite controlar un total de 128 sensores siempre
y cuando estos se encuentren a un radio no superior a los 200m.
71
3.2 Software
X-CTU es el software oficial para programar radios Xbee. Este software permite al
usuario la posibilidad de bajar nuevo firmware de la pgina de Digi, programar parmetros
a la radio o testear la comunicacin fcilmente. En este apartado repasamos de forma
rpida como funciona para centrarnos ms adelante en la programacin de una radio en
modo Sleep.
72
- Range Test: Tras establecer los parmetros de comunicacin en la pestaa PC
Settings y que el Xbee est comunicando con otro, la opcin del Range Test puede
dar idea de cuan fuerte llega la seal y la tasa de fiabilidad en la comunicacin
visualizando el nmero de paquetes correctos y errneos que llegan.
- Terminal: Esta pestaa permite leer y escribir las tramas que llegan al mdulo
Xbee. Permite leerlas en modo hexadecimal para poderlas interpretar.
73
Figura 61. Pestaa Modem Configuration.
74
3.2.2 Procesado de datos: MySQL
3.2.2.1 Aplicaciones
MySQL es muy utilizado en aplicaciones web, como Drupal o phpBB, en
plataformas (Linux/Windows-Apache-MySQL-PHP/Perl/Python), y por herramientas de
seguimiento de errores como Bugzilla. Su popularidad como aplicacin web est muy
ligada a PHP, que a menudo aparece en combinacin con MySQL.
MySQL es una base de datos muy rpida en la lectura cuando utiliza el motor no
transaccional MyISAM, pero puede provocar problemas de integridad en entornos de alta
concurrencia en la modificacin. En aplicaciones web hay baja concurrencia en la
modificacin de datos y en cambio el entorno es intensivo en lectura de datos, lo que hace
a MySQL ideal para este tipo de aplicaciones. Sea cual sea el entorno en el que va a
utilizar MySQL, es importante monitorizar de antemano el rendimiento para detectar y
corregir errores tanto de SQL como de programacin.
Amplio subconjunto del lenguaje SQL. Algunas extensiones son incluidas igualmente.
Disponibilidad en gran cantidad de plataformas y sistemas.
Posibilidad de seleccin de mecanismos de almacenamiento que ofrecen diferente
velocidad de operacin, soporte fsico, capacidad, distribucin geogrfica,
transacciones...
Transacciones y claves forneas.
Conectividad segura.
75
Replicacin.
Bsqueda e indexacin de campos de texto.
76
3.2.3 Aplicacin Visual:
Podr visualizarse as cada contenedor, las calles o el estado general sobre el mapa,
incluyendo datos como son: Tipo de Contenedor, Localizacin (Si se ofrecen previamente).
Permite generar informes gracias a los datos almacenados en la Base de Datos del
sistema.
Funcionamiento:
El funcionamiento bsico del Sensor consiste en detectar el estado del contenedor y
transmitir sta informacin que podr determinar una variacin de estado en %:
77
Figura 63. Ejemplo ejemplo sistema de control de llenado.
Los informes podrn generarse combinando cualquier de los datos anteriores con la
variable Tiempo (Ejemplo Estado Contenedores en fecha: 12.12.12)
78
Seccin 4. Memoria de Clculo
79
Esquema bsico del software del sensor
Figura 65. Esquema general del software en placa base End Device
80
4.2 Potencia consumida
Para la alimentacin del mdulo se ha escogido una batera de 3.6V, 19A, de litio
tipo cilndrica.
Teniendo en cuenta las caractersticas de la pila, los clculos de la vida de sta son:
= (5)
Consumo = 0,476 mA
81
Seccin 5: Casos experimentales
En otros proyectos que se centran en Zigbee principalmente, suelen hacer pruebas para
medir el RSSI (Receive Signal Strength Indication), que indica la fuerza o potencia de la
seal recibida. En nuestro proyecto no hemos entrado a medir este parmetro, ya que
tenemos ejemplos anteriores donde vemos la relacin de distancia y nivel de RSSI, por lo
que he decidido quedarme con estas demostraciones o conclusiones, sin necesidad de hacer
nuevas pruebas, sino probar hasta que distancia hay comunicacin entre emisor y receptor
RF y que no se pierdan datos o medidas.
Antes de hacer estas pruebas de comunicacin, se hicieron las pruebas de medidas del
sensor de ultrasonidos, tanto fuera del contenedor como dentro de l, ya que en el interior
del contenedor podramos tener problemas de rebote del eco, y consecuentemente obtener
falsas medidas.
Para medir la lectura consumida en los diferentes ciclos de trabajo, hemos utilizado
un multmetro Fluke. Hemos programado el micro-controlador para que el sensor enve
una seal cada 10 segundos, y el resto del tiempo est descansando, cosa que en el futuro
cambiar, ya que nos interesar que enve una medida cada hora aproximadamente, por el
tema de la vida de la pila o batera, y no es necesario estar sabiendo cada segundo o minuto
el estado de los contenedores.
82
, ,
= = 0,476 mA
Para saber que sensor ultrasnico utilizar en el presente proyecto, se comprob que
stos daban medidas suficientemente exactas para cumplir con futuras exigencias puestas
en saber el nivel de llenado del contenedor. Se compararon dos de los ms econmicos, el
SRF02 (un cilindro) y el SRF05 (dos cilindros), viendo que el ltimo es el ms exacto y
estable en la medida.
Gracias a las placas Arduino, se pudo conectar el sensor ultrasnico a los dos pines
de alimentacin y datos para que el micro procese los datos recibidos por el mismo sensor,
cargando un software de ejemplo bsico, el cual ordena al sensor que entregue una medida
cada tanto tiempo [apartado 10.2].
Acoplando una Shield o placa adaptadora para unir los mdulos Xbee a una placa
Arduino, se puede tener un emisor y un receptor, de manera que el coordinador ir
conectado al PC mediante USB y se ven las medidas recibidas por el puerto serie a travs
del programa X-Ctu.
Los valores RSSI ledos por las Xbee Pro oscilan entre -36 a -100 dBm mientras que
los de las Xbee lo hacen entre -23 y -92 dBm.
83
Tabla 14. Tabla resumen del experimento.
En la tabla 14, los valores RSSI mostrados se corresponden con el valor de la media
de las muestras tomadas.
84
Figura 68. RSSI vs distancia.
En la tabla 14, los valores RSSI mostrados se corresponden con el valor de la media
de las muestras tomadas.
Por otro lado, como era de esperar la potencia de la seal recibida (RSSI) va
disminuyendo con respecto a la distancia. La curva de la figura 62 representa la media de
los valores RSSI en una cierta distancia en funcin de la distancia.
En este apartado se veremos las pruebas de distancia que se han realizado entre
emisor y receptor de radiofrecuencia, para saber si es suficiente para el tipo de proyecto
que queremos realizar. En las especificaciones tcnicas de la antena o mdulo Xbee Pro S1
que utilizamos, nos dice que esta distancia llega a ser hasta 1 Km, cosa que pensamos que
no es del todo cierta, ya que depende de varios factores esta comunicacin.
Otro factor a tener muy cuenta despus de las pruebas realizadas, es la posicin del
receptor, cuanto ms elevado est respecto el emisor o emisores mejor, tiene ms alcance.
85
Destacar que las pruebas realizadas son en exterior, con rboles, naturaleza y algn
coche entre emisor y receptor, pudiendo decir que es una comunicacin en campo abierto,
sin edificios ni grandes muros entre medio.
86
Seccin 6: Planos
Plano Descripcin
Plano 1 Planos de la placa Arduino Uno
Plano 2 Fotografa del mdulo End Device
Plano 3 Planos de la pila
Plano Descripcin
Plano 4 Planos placa Xbee Explorer Usb
Plano 5 Fotografas del mdulo Coordinador
Plano Descripcin
Plano 6 Fotografa caja de comunicacin
Plano 7 Plano de la caja de comunicacin
87
6.1 Plano placa Arduino
88
6.2 Fotografa placa base (interior End Device)
L
IA
C
EN
D
FI
N
O
C
- Xbee.
- Placa base con jumper de conexin y pistas de interconexionado a los diferentes
submdulos.
- Sensor de ultrasonidos.
- Pila.
89
6.3 Plano Pila
90
6.4 Fotografa del mdulo Coordinador
- Antena Xbee
- Placa Xbee Explorer Usb.
- XBee Pro 60mW U.FL Connection - Series 1 (802.15.4)
- Cable miniUSB a USB
- Latiguillo U.FL a SMA
91
6.5 Planos Xbee Explorer USB
92
6.6 Fotografa caja comunicacin
93
6.7 Plano caja de comunicacin
L
IA
C
EN
D
FI
N
O
C
94
Seccin 7: Presupuesto
En este presupuesto se pretende mostrar el coste de la realizacin del proyecto en s mismo,
dedicado a los estudios previos y al diseo del hardware.
L
connection(802.15.4) EUROS con
SETENTA Y DOS
IA
cntimos
HW004 u Xbee Explorer Usb 18,88 DIECIOCHO EUROS
C con OCHENTA y
OCHO cntimos
EN
HW005 u Low cost Ultrasonic Ranger 14,79 CATORCE EUROS
con SETENTA Y
NUEVE cntimos
D
cntimos
HW007 u Crystal 32.768KHz 0,54 CINCUENTA Y
N
CUATRO cntimos
HW008 u Resistencia SMD 1K 0.125W 0,01 UN cntimo
O
95
7.2 Precios descompuestos
L
de ATmega328P
IA
IT001 Ingeniero Tcnico Industrial 80,00 10 800,00
recopilando informacin acerca C
de Zigbee
EN
96
0.1uF, 25V
HW011 u Regulador de tensin 3.3V, 1,00 0,75 0,75
1A
HW012 u Conector hembra 2.54mm,5 1,00 0,15 0,15
vas
HW013 u Programador Atmel AVRisp 1,00 32,25
mkII
HW014 u Pila-batera cilndrica de 1,00 15,04 15,04
litio 3.6V, 19Ah
HW015 u Antena para Xbee 1,00 6,55 6,55
HW016 u Caja de comunicaciones 1,00 290,00 290,00
(con GPRS incluido)
L
IA
TOTAL PARTIDA 858,56
18 % IVA 759,55
97
Seccin 8: Conclusiones
Para llevar a cabo los objetivos fijados, hemos dividido el proyecto en tres fases:
98
Y con suerte, nuestro sensor funciona a sta tensin tambin, por lo que podemos
utilizar un solo regulador de tensin.
Despus de realizar las pruebas necesarias, cambindole el software al micro-controlador
una y otra vez para conseguir las medidas del sensor en el tiempo deseado, durmiendo el
Xbee para que no se active hasta que el sensor enve la medida, etc., hay que adaptarlo a
una PCB para su posterior encapsulado y montaje en el contenedor, a la vez que hay que
tener una caja de comunicacin para la recepcin y tratamiento de datos.
El hecho de haber definido una manera estndar de crear extensiones, las shields,
ha permitido crear una gran cantidad de placas accesorias para cubrir la mayora de
necesidades habituales en proyectos de electrnica. Estas extensiones se consiguen a travs
de los mismos canales de distribucin. Estas suelen entregarse con ejemplos de uso o
incluso libreras de cdigo integrables en el entorno Arduino, con lo que amplifican mucho
el potencial de la plataforma.
El hecho de interactuar con el mundo real de un modo directo, puede generar una
mayor curiosidad en el alumnado. Esto permite adquirir unos conocimientos de electrnica
o programacin de un modo muy ameno.
99
El hecho que el coste de una placa sea razonablemente bajo, y el hardware muy
robusto, puede facilitar el acceso a este por gran parte de centros, permitiendo su uso
durante un largo camino formativo. Se podra decir que tiene un bajo coste por el
rendimiento que puede ofrecer.
100
Seccin 9: Bibliografa
[3] http://en.wikipedia.org/wiki/ZigBee
[4] http://en.wikipedia.org/wiki/Wireless_sensor_network
[5] http://en.wikipedia.org/wiki/Sensor_node
101
[17] Proyecto Arduino, Download the Arduino Software
http://arduino.cc/en/Main/Software
102
Seccin 10: Anexo
10.1 Cdigo fuente
#include <avr/sleep.h>
#include <avr/power.h>
//Sensor Brossa SB Prova 1.0
int dista = 0;
int distb = 0;
int distfinal = 0;
int comprobar = 0;
int contador = 0;
byte addDH = 0; //no permite 1 en ninguna posicion del byte
byte addDL = 4; //no permite 1 en ninguna posicion del byte
L
int disparoPin = 3; // SB Disparo pin digital
3
IA
unsigned long pulseTime = 0; // stores the pulse in
Micro Seconds
unsigned long distance = 0; // variable for storing
the distance(mm)
int alsensor= 9;
C // pin de alimentacion al
EN
sensor
// Configuraci Sleep
int tdespertar = 0; // tiempo a
desboradar timer2
D
SIGNAL(TIMER2_OVF_vect){
tdespertar++; //augmentamos el tiempo a
C
despertar
}
void setup()
{
//Setup TIMER2
103
TCCR2A = 0x00;
TCCR2B = (1<<CS22)|(1<<CS21)|(1<<CS20); //Set CLK/1024 or overflow
interrupt every 8s
ASSR = (1<<AS2); //Enable asynchronous operation
TIMSK2 = (1<<TOIE2); //Enable the timer 2 interrupt
void loop()
{
if ((tdespertar<tiempo)&&(entrada==0))
{
sleepNow();
}
if ((tdespertar==tiempo)&&(entrada==0))
{
entrada = 1;
// Activar el XBee
digitalWrite (wakexbee, LOW);
}
L
if (entrada==1)
IA
{
contador=contador+1;
digitalWrite(alsensor, HIGH); // habilita la
alimentacion del pin del sensor
while (comprobar==0)
C // Finalitzaci del
EN
Periode de lectures
{
digitalWrite(disparoPin, HIGH); // envia un pols de XX
microsegons
delayMicroseconds(30); // espera XX microsegons
D
abans d'aturar-lo
digitalWrite(disparoPin, LOW); // atura el pols
FI
/ 58 to convert to cm.
delay(1000);
O
if (distfinal>400)
{
distfinal=0;
}
104
delay(500);
Serial.write(byte(1));
Serial.write(byte(addDH));
Serial.write(byte(addDL));
//Serial.print(contador,DEC);
//Serial.print(" Contenedor:" );
//Serial.print(numconte,DEC);
//Serial.print(" ");
int cx, dx, ux, tx;
tx = distfinal;
cx = tx / 100; // Calculamos cuantas centenas tiene nuestro
nmero ...
tx = tx - (cx * 100); // y se lo restamos
dx = tx / 10; // Calculamos cuantas decenas tiene nuestro
nmero ...
tx = tx - (dx * 10); // y se lo restamos
ux = tx / 1; // Y por ltimo calculamos cuantas unidades
tiene nuestro nmero.
Serial.write(byte(cx + 0x30));
L
Serial.write(byte(dx + 0x30));
IA
Serial.write(byte(ux + 0x30));
delay(500);
FI
digitalWrite(alsensor, LOW);
tdespertar=0;
N
entrada=0;
comprobar=0;
O
}
}
105
* SLEEP_MODE_PWR_DOWN -the most power savings
*
* For now, we want as much power savings as possible, so we
* choose the according
* sleep modus: SLEEP_MODE_PWR_DOWN
*
* Timer 2 overflow interrupt is only able to wake up the ATmega in
PWR_SAVE
*
*/
set_sleep_mode(SLEEP_MODE_PWR_SAVE); // sleep mode is set here
L
// disable sleep...
IA
} // Executa el programa
C
10.2 Cdigo fuente ejemplo para probar sensor ultrasnico SRF05
EN
//Sensor Brossa SB Prova 1.0
lectures
N
106
int redLEDPin = 9; // Red LED,
connected to digital PWM pin 9
// Setup lectures
void setup()
L
IA
// create array loop
to iterate over every item in the array
C
for (int thisReading = 0; thisReading < numOfReadings; thisReading++)
EN
{
readings[thisReading] = 0;
D
serial port, lets you view the distances being pinged if connected to
computer
N
}
O
// Executa el
programa
C
void loop()
delayMicroseconds(30); // espera XX
microsegons abans d'aturar-lo
107
total= total - readings[arrayIndex]; // extreu la lectura
antiga del total
delay(3); // Espera YY
milisegons per la segent lectura (SEGURETAT)
L
arrayIndex = 0; // Inicialitza
IA
l'index de mesures
Serial.print(distfinal,DEC); // Escriu la
distancia mitjana
D
unitats
}
C
108