Documentos de Académico
Documentos de Profesional
Documentos de Cultura
(581,00elKIT) 39,08
(499.77$el
KIT)
Tabla 5. Comparacin entre mdulos.
*Precios basados en http://es.farnell.com/ y http://search.digikey.com
Finalmente decidimos hacer el proyecto con las Xbee Pro, ya que aunque son ms
limitadas tcnicamente por no disponer de microcontrolador, 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.
3.1.1.1 Mdulos Xbee
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
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.
Con estos mdulos se pueden disear aplicaciones de comunicacin inalmbrica de bajo
consumo energtico, como las requeridas por el proyecto en el que nos embarcamos.
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
32
La figura 22 ilustra cmo fluyen los bits de datos a travs del mdulo Xbee.
Figura 22. Conexiones mnimas para conectar Xbee.
Los datos entran en el modulo 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).
Figura 23. Flujo de datos interno de un modulo Xbee.
Hay bsicamente 3 modos de operacin de Xbee: Transparente, Comandos y API.
3.1.1.1.1 Modo comando
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 X-
CTU o algn microcontrolador que maneje UART y tenga los comandos guardados
en memoria o los adquiera de alguna otra forma.
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
33
Figura 24. Ejemplo de comando AT.
3.1.1.1.2 Modo Transparente
Este modo est destinado principalmente a la comunicacin punto a punto, donde no
es necesario ningn punto de control. Tambin se usa para reemplazar alguna
conexin serie por cable, ya que es la configuracin ms sencilla posible y no
requiere una mayor configuracin. Esta es la conexin que viene por defecto y es la
ms sencilla forma de configurar el mdem. Bsicamente todo lo que pasa por el
puerto UART (DIN, pin 3), es enviado al mdulo deseado, y lo que llega al mdulo,
es enviado de vuelta por el mismo puerto UART (DOUT, pin 2). Existen
bsicamente 4 tipos de conexin transparente. La diferencia principal radica en el
nmero de nodos o puntos de acceso, y la forma en cmo stos interactan entre s.
3.1.1.1.3 Modo de operacin API
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.
As, una trama de Transmisin de Informacin (informacin recibida por el pin 3 o
DIN) incluye:
- Trama de informacin RF transmitida.
- Trama de comandos (equivalente a comandos AT).
Mientras que una trama de Recepcin de Informacin incluye:
- Trama de informacin RF recibida.
- Comando de respuesta.
- Notificaciones de eventos como Reset, Associate, Disassociate, etc
Entre las opciones que permite la API, se tienen:
- Transmitir informacin a mltiples destinatarios, sin entrar al modo de
Comandos.
- Recibir estado de xito/falla de cada paquete RF transmitido.
- Identificar la direccin de origen de cada paquete recibido.
Trama API:
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
34
Figura 25. 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:
Figura 26.Trama Xbee.
Hemos 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.
Entre las opciones que permite API se tienen:
- Transmitir informacin a mltiples destinatarios, sin entrar al modo de
Comandos.
- Recibir estado de xito/falla de cada paquete RF transmitido.
- Identificar la direccin de origen de cada paquete recibido.
3.1.1.2 Datos E/S
3.1.1.2.1 Conversores A/D
Para muestrear seales los mdulos Xbee estn equipados con conversores A/ D de 10 bits.
Otra caracterstica importante es el tiempo de muestreo que se puede modificar con el
comando IR y las unidades en ms. Por ejemplo para pedir un tiempo de muestreo de 10 ms
programaremos ATIR= 0x0A. Otra caracterstica importante es el nmero de muestras que
queremos tomar antes de enviar datos Esto se puede cambiar con el comando IT, teniendo
en cuenta que podemos almancenar un mximo de 93 bytes y que cada muestra ocupa 2
bytes, podremos llegar a tomar 43 muestras antes de enviar. El mximo tiempo de
muestreo es de 1 muestra / ms.
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
35
3.1.1.2.2 Trama de Datos de E/S
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 estan
activas, ya que cada bit representa cada IO y ADC.
Figura 27. I/O Data
Un ejemplo de trama que hemos obtenido durante el proyecto sera:
7E 00 14 92 00 13 A2 00 40 6C 52 65 7C D0 01 01 00 00 81 01 BD 09 58 67
0x7E: Inicio de la trama.
0x00: Numero de bytes (MSB entre la longitud y el checksum)
0x14: Numero de bytes (LSB)
0x92: tipo de trama IO
0x00-0x65: Direccin 64-bits del remitente.
0x7C-0xD0: Direccin 16-bits del remitente.
0x01: Modo recepcin activado. (Se aceptan paquetes)
0x01: Numero de muestras (en este caso una)
0x00-0x00: Mscara del canal digital
0x81: Mscara de canal analgico.
0x01-0xBD: Muestras analgicas
0x09-0x58: Muestra Vss
0x67: checksum
Por lo tanto tenemos un valor de tensin (0x0958): 2.8V. La frmula para obtener los
valores analgicos de la trama se puede obtener de la siguiente forma:
Valor = 1200mV(4)
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
36
3.1.1.3 Eleccin de la antena Xbee
Digi ofrece en la actualidad dos gamas de productos, las Xbee Znet 2.5, y las Xbee Pro
Znet 2.5. En este apartado comparamos las dos antenas antes de decidirnos por una de
ellas:
Tabla 6. Comparativa de prestaciones entre Xbee.
En la tabla 6 vemos las prestaciones que ofrecen ambos mdulos. Las Xbee Pro ganan en
cuanto al alcance de las transmisiones a cambio de 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 (ver tabla 7), podemos ver
como las Xbee Pro tienen como desventaja, unos rangos de tensin mucho menores (las
Xbee Pro slo operan entre 3 y 3,4V y las Xbee entre 2.1 y 3.6V) que las Xbee. Otro
factor en contra de las Xbee Pro es su mayor consumo (295 mA en la transmisin de datos
de las Xbee Pro frente a unos 40 mA en las Xbee, y 45 mA en la recepcin para las Xbee
Pro frente a 40 mA en las Xbee), esto hace que el tiempo de vida de las bateras en las
Xbee Pro sea mucho menor, tanto por el menor margen de tensin como por los elevados
consumos a los que se somete a la batera.
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.
El ltimo factor a tener en cuenta es el precio Xbee Znet 2.5: 33,32 / unidad, mientras
que las Xbee Pro Znet 2.5: 39,08 / unidad.
Considerando todos los aspectos anteriormente citados nos hemos decidido por las Xbee
Pro Znet 2.5.
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
37
Tabla 7. Comparativa de prestaciones entre Xbee.
3.1.2 Arduino Uno
La placa Arduino Uno la utilizaremos para conectar el mdulo Xbee Coordinador con el
PC, aprovechando su puerto USB y las placas adaptadoras de Libelium que veremos ms
adelante. Esto permitir al PC poder comunicarse con la placa Coordinadora con el fin de
leer y escribir datos.
En este apartado hacemos un breve resumen de la placa que, en realidad, tiene ms
aplicaciones que las utilizadas en este proyecto.
Arduino Uno es una placa basada en microcontrolador ATMEL AVR ATmega 328, con
varias entradas y salidas tanto digitales como analgicas y con conexin USB. Adems
dispone de un entorno de desarrollo propio. Est pensada para fomentar y facilitar el uso de
la electrnica para el pblico en general, desde escuelas hasta aficionados a la electrnica.
La placa puede comunicarse con el PC bien mediante su propio entorno, bien utlizando
otros tales como Processing o Macromedia Flash.
El lenguaje de programacin del microcontrolador est basado en C / C++, por lo que
posee funciones de E/S analgica y digital, funciones aritmticas, manejo de
interrupciones, comunicaciones por el puerto serie, etc. Las variables pueden ser, como en
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
38
C, tipo int, char, word, long o float. Las instrucciones de control tambin son parecidas
(if...else, for, while, etc)
3.1.2.1 Hardware
La principal ventaja de la placa Arduino es que es open-hardware, por lo que puede ser
usada libremente para cualquier proyecto sin tener que pagar licencia para ello.
Las caractersticas bsicas de la placa son:
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)
SRAM 2 KB
EEPROM 1 KB
Frecuencia de reloj 16 MHz
Tabla 8. Caractersticas tcnicas de Arduino.
En la figura 28 vemos el esquemtico del Hardware del equipo:
Microcontrolador BotndeReset
PortBdigital PortDdigital
PortCanalog Conectordepotencia
Figura 28. Esquema Hardware de la placa Arduino Uno.
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
39
Las caractersticas tcnicas de la placa son:
Microcontrolador Port B
Atmel ATmega328P 6 usable pins
8-bit AVR CPU Digital Port -> only binary 3 can be PWM
RISC instruction set (assembly) Port C
32KB of program memory 6 usable pins
20 MHz max. freq. (Usually 16 MHz) Analog Port -> can write/read
Peripherals voltages ranging from 0V-3.3V
Timers, Counters, Watch dog Port D
6 PWM channels 8 usable pins
Serial USART Digital
SPI/I2C communication 3 can be PWM
Analog-to-Digital Converter (ADC)
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
40
3.1.3 Sensores de temperatura
3.1.3.1 LM35
EL LM35 es un circuito integrado de precisin que acta como un sensor de temperatura
calibrado directamente en grados centgrados. En la figura 29 podemos ver la relacin V-T
que caracteriza al LM35.
Figura 29. Relacin voltaje temperatura del LM35.
Su tensin de salida es lineal y proporcional a la escala Celsius de temperatura.
En cunto a las configuraciones de montaje tpicas, el LM35 tiene diferentes opciones,
cada una con sus ventajas e inconvenientes.
En la figura 30 vemos la configuracin ms bsica, con el sensor directamente conectado a
la alimentacin y la salida directamente conectada al conversor A/D.
Figura 30. Configuracin bsica del LM35.
Para esta configuracin , la principal ventaja es la tensin de salida, con una sensibilidad
de 10 mV / C.
En lo que a desventajas se refiere, en este caso la tensin de alimentacin necesaria para
poder funcionar apropiadamente, 20 V > Vss > 4 V, sera un problema ya que es diferente
a la de la alimentacin del mdulo Xbee. Esto provocara que, si nos decantaramos por esta
opcin nos veramos obligados a poner un regulador de tensin dentro del mdulo,
reduciendo simplicidad en el diseo del mismo. Otra desventaja de esta configuracin es
que nicamente es posible leer temperaturas sobre cero grados. No obstante, la principal
desventaja es el excesivo consumo para ser utilizado en una red del tipo Zigbee.
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
41
Figura 31. Configuracin rango completo del LM35.
En la figura 31 vemos la segunda configuracin disponible para el LM35, que presenta
como ventaja adicional la posibilidad de tener un mayor rango de temperaturas
disponibles, en este caso tambin bajo cero, de -55C a 150 C.
Las desventajas, en este caso son una mayor complejidad en el diseo al tener que aadir
una tensin negativa y una resistencia,
Figura 32. Configuracin como termmetro Fahrenheit.
A parte de las dos configuraciones generales anteriormente vistas, el LM35 permite
muchas otras, todas ellas ms complejas en cuanto al diseo y con rangos de alimentacin
parecidos como la del termmetro Fahrenheit que devuelve una relacin lineal mV / F.
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
42
3.1.3.2 TMP20
El TMP20 es un sensor con aspecto de circuito integrado de Texas Instruments que opera
entre -55 C a 130 C, con una precisin de 2,5 C dentro de este rango. La tensin de
alimentacin oscila entre los 1.8 V y 5.5V .La funcin de transferencia lineal tiene una
pendiente de -11.77 mV / C.
Figura 33. Relacin Temperatura-Tensin de salida del TMP20.
Sin duda, la principal ventaja de este sensor es que opera en un mismo rango de tensiones
que el mdulo Xbee, lo que simplifica enormemente el diseo.
3.1.3.3 Eleccin Final
En base a las necesidades del proyecto y a las caractersticas de los diferentes sensores
descritos se ha escogido para desarrollar el proyecto el sensor de temperatura TMP20.
El TMP20 se caracteriza por el poco espacio que ocupa y la poca energa que consume, lo
que lo hacen ideal para nuestra aplicacin. A pesar de no tener la mejor sensibilidad, sta
no es crtica para el desarrollo del proyecto.
Sensor
Tensin
Alimentacin
Rango Sensibilidad
Relacin
VC
LM35 4V<Vcc De55a150C 0.5 C 0.1mV/C
TMP20 1.8V<Vcc<5V De55a130C 2.5C 11.77mV/C
Tabla 9. Comparativa Sensores de temperatura.
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
43
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.
En este apartado hacemos un breve resumen de los parmetros a tener en cuenta en nuestra
eleccin, comparamos las bateras disponibles y finalmente seleccionamos la ms idnea
para nuestra aplicacin.
- 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.
- 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.
- El diseo en la placa base: la batera no debe ocupar demasiado espacio y al
mismo tiempo debe poder integrarse bien con el resto del hardware.
- El modo en que consume energa el sensor. Si el sensor consume un
determinado valor de corriente continuamente no es lo mismo que hacerlo a
picos.
Figura 34. Ejemplo del modo de funcionamiento.
En cuanto al tipo de bateras las podemos clasificar segn diversos criterios: capacidad,
voltaje, etc. En nuestro caso tanto el tamao como la capacidad de la batera resultan
esenciales, ya que se supone que el espacio ocupado por el sensor ser pequeo, al tiempo
que se desea que su autonoma sea la mayor posible. Entre las diferentes formas de batera
tenemos: pilas de botn, pilas cilndricas y pilas rectangulares. De todas ellas elegimos
las pilas de botn, ya que ocupan menos espacio y son ms fcilmente integrables a la
placa PCB.
Finalmente, para la seleccin de la pila hemos hecho un resumen de entre distintas clases.
En la tabla 10 tenemos en cuenta las caractersticas que consideramos ms importantes,
asumiendo que todas ellas son de tipo botn:
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
44
Pila Vout Capacidad Peso Dimetro Precio
Panasonic
CR2477
3V 1000mAh 10,5g 24.5mm 5,20*
BR1220/HFN
(Panasonic)
3V 35mAh 0,7g 12.5mm 1,62*
Panasonic
BR2032/HFN
3V 190mAh 2,5g 20mm 3,54*
Panasonic
BR3032/VCN
3V 500mAh 5,5g 30mm 4,80*
VARTACR2450 3V 560mAh 6,2g 24mm 2,79*
RENATA
CR2477
3V 950mAh 6,2g 24,5mm 5,17*
Dantona
IndustriesLITH
51A/GA
3V 1000mAh 8g 24,5mm 5,83*
PanasonicCR
2450/BN
3V 620mAh 5,9g 24,5mm 2,83*
Tabla 10. Comparativa Bateras.
Finalmente la pila seleccionada CR2477 3V 1000 mAh. Es la mejor en cuanto a la relacin
capacidad / precio / dimensiones. Adems ya ha sido utilizada en otros proyectos con
buenos resultados, con lo que la experiencia juega tambin a su favor.
Figura 35. Pila de botn seleccionada.
* Los precios que aparecen en la tabla tienen como referencia la pgina
http://es.farnell.com.
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
45
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).
Figura 36. Esquema de pines del adaptador a protoboard. Y Regleta de 10 pines.
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.
3.1.6 Adaptador Xbee Shield
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
microcontrolador estn todava conectados a los pines TX y RX respectivamente. Sin
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
46
embargo, en esta posicin el microcontrolador 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 microcontrolador del mdulo Arduino.
Figura 37. Adaptador Xbee Shield de Libelium.
Una de las desventajas de la placa es que no permite una comunicacin con Arduino al PC
directamente, ya que es preciso extraer el microcontrolador. Otro problema es que el botn
de reset no puede resetear los mdulos Xbee, que en ocasiones podra resultar una opcin
ms que interesante.
En cuanto a las ventajas, aunque en el mercado se ofrecen otras placas de similares
caractersticas, la ms extendida y, seguramente ms cmoda, es sta, por lo que la hemos
elegido para nuestro proyecto, ya que tiene ms fcil manejo que las otras.
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
47
3.2 Software
3.2.1 Programacin de los mdulos Xbee: X-CTU
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.
Bsicamente, el programa se compone de una serie de funciones muy tiles que repasamos
a continuacin. Cuando abrimos el programa X-CTU, veremos que tenemos cuatro
pestaas:
- PC Settings: Ofrece la posibilidad de seleccionar el puerto COM a travs del
que ir conectada nuestra radio, as como los ajustes tpicos de la comunicacin
serie (Baudrate, Flow Control, Data Bits, Parity y Stop Bits). Ofrece tambin la
posibilidad de habilitar el modo API y el response timeout.
-
- Figura 38. Pestaa PC Settings.
- 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.
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
48
- Terminal: Esta pestaa permite leer y escribir las tramas que llegan al mdulo
Xbee. Permite leerlas en modo hexadecimal para poderlas interpretar.
Figura 39. Pestaa Terminal.
- Modem Configuration: Esta es la interfaz para leer / escribir parmetros de un
Xbee. Desde esta pestaa tambin es posible actualizar el firmware disponible
desde la pgina de Digi.
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
49
Figura 40. Pestaa Modem Configuration.
Las pestaas ms tiles son PC Settings y Modem Configuration. Range Test y Terminal
tambin pueden ayudarnos en casos en los que queramos chequear la comunicacin.
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
50
3.2.2 Interfaz grfica: Processing
Processing es un lenguaje de programacin de cdigo abierto y entorno de desarrollo
integrado (IDE) hecho con el propsito de ensear los fundamentos de la programacin en
un contexto visual. El proyecto de Processing fue iniciado en 2001 en el MIT.
Figura 41. Logotipo de Processing.
Hoy en da ofrece la gran ventaja de que al ser cdigo abierto, cuenta con muchsimas
libreras de cualquier tipo, desde interfaz grfica a interaccin con dispositivos hardware,
adems de contar con una extensa bibliografa a la que poder consultar.
Por lo que se refiere al lenguaje de programacin, Processing est basado en Java, y puede
ser usado tanto para aplicaciones locales como para webs (applets). En la bibliografa
podemos encontrar referencias de algunos libros para poder aprender el lenguaje de
programacin.
Figura 42. Entorno de desarrollo de Processing.
En la figura 42 podemos ver un esquemtico del entorno de desarrollo de Processing. En la
parte superior tenemos la barra de herramientas, dnde aparecen los botones para poder
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
51
ejecutar, parar, guardar o exportar el cdigo, adems de abrir una nueva pgina de edicin
si es necesario. Los botones son:
Figura 43. Botones de Processing.
Se ha elegido Processing como la herramienta para poder hacer de interfaz grfica ya que,
como ya hemos mencionado, cuenta con la ventaja de tener completos tutoriales con los
que poder trabajar, y sobre todo de contar con las libreras ya implementadas para poder
leer tramas Xbee.
Figura 44. Processing como interfaz grfica.
En la memoria de clculo veremos las libreras utilizadas para el desarrollo del proyecto,
as como los diferentes diagramas de flujo del propio programa. En el anexo, apartado
cdigo fuente, podemos ver el cdigo utilizado en el proyecto.
3.2.3 Visualizacin de datos por Internet: Pachube
Pachube es una plataforma de Internet que ofrece la posibilidad de poder colgar, descargar
y graficar datos de sensores adems de poderlos compartir con comunidades.
La idea de Pachube, en http://www.pachube.com, en realidad tiene que ver con lo
denominado Internet de las Cosas, un concepto futurista que se refiere a una red de
objetos cotidianos interconectados. Por ejemplo, tener interconectados unas llaves con una
cerradura
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
52
Figura 45. Idea de la interconexin de objetos a Pachube.
Para poder integrar el proyecto en Pachube, es necesario incluir dentro del software de
visualizacin la librera de pachube y de algunas funciones especficas, adems tambin de
la ID de nuestro feed (datos que aporta el sensor), y el password correspondiente.
Figura 46. Monitorizacin de la batera del sensor con Pachube.
Las ventajas del sistema son que adems de ser un servicio gratuito, ofrece la posibilidad
de poder ver datos en tiempo real de nuestro dispositivo desde cualquier lugar va mvil o
PC mientras hagas tus datos pbicos, aunque tambin existe la posibilidad de hacerlo
privado con cuenta de pago. Adems, ofrece la posibilidad de descargar datos en mltiples
formatos: CSV, XML y JSON. La principal limitacin es el tiempo de carga de datos a
Internet, con una limitacin de 30 segundos por feed.
En nuestro proyecto personal, podemos acceder a los datos de Pachube por medio del
siguiente enlace:
https://pachube.com/feeds/34459
Tambin podremos acceder a estos datos por medio del botn Pachube de la interfaz
grfica que veremos ms adelante.
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
53
Seccin 4: Memoria de clculo
La memoria de clculo se basa en los elementos explicados en la memoria descriptiva.
Por lo tanto, en esta parte de la memoria veremos los clculos realizados tanto para los
elementos hardware como el software, esto es, clculo de componentes, el desarrollo de la
interfaz grfica, etc.
4.1 Interfaz grfica
Como ya hemos comentado en un apartado anterior, nos basamos en Processing para el
desarrollo de la interfaz grfica de nuestra aplicacin.
Las libreras que hemos usado para nuestro proyecto son:
- controlIP5: Librera GUI (interfaz grfica de usuario). Incluye botones, sliders, barras
verticales para monitorizar variables analgicas, etc.
- Libreras Xbee API: Incluyen todas las funciones necesarias para poder hacer el
tratamiento y decodificacin de las tramas Xbee para poder ser entendibles para el ser
humano.
- Librera Pachube: Conjunto de funciones para poder exportar datos a la pgina web
www.pachube.com .
Las libreras se pueden descargar desde: http://processing.org/reference/libraries/
El programa es gratuito y lo podemos descargar de forma gratuita desde:
http://processing.org/.
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
54
4.1.2 Diagramas de flujo de funciones principales
En esta seccin mostramos los diagramas de flujo que gobiernan el sistema de
monitorizacin y guardado de datos que corre en el PC.
Esquema bsico del programa
Figura 47. Esquema general del programa en Processing.
El esquema bsico de un programa en Processing siempre es parecido. Lo primero que
hacemos es cargar las libreras relacionadas con el proyecto (que deben estar en el
directorio del proyecto donde trabajemos, dentro de una carpeta que hay que llamar:
libraries). Posteriormente mediante la funcin setup establecemos la configuracin bsica
del programa, as como el tamao de la pantalla que usaremos, inicializacin de variables,
etc. Luego, la funcin draw se ejecuta cclicamente (tal como hara una funcin main() en
un programa en C por ejemplo).
El programa finaliza por programacin, ya sea por la activacin de alguna variable de
proceso o con algn botn de la interfaz grfica.
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
55
Void Setup
La funcin Setup() se usa para establecer las propiedades iniciales del programa, tales
como cargado de imgenes, tamao de la pantalla, abrir puertos de comunicacin, etc. Se
ejecuta antes que la funcin draw() haya empezado a ejecutarse, una sola vez, al arrancar
el programa. Slo puede haber una funcin Setup() por programa.
Figura 48. Funcin Void Setup.
En nuestro caso la utilizamos para preparar la interfaz grfica. El siguiente paso consistir
en abrir los puertos de comunicacin y configurar los ficheros .txt dnde finalmente
guardaremos los datos que reportan los sensores a medida que se ejecuta el programa.
La creacin del objeto Xbee hace posible la conexin con el elemento coordinador.
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
56
Void Draw
La funcin Draw() es llamada justo despus de la funcin setup y se ejecuta una vez tras
otra, mientras no finalice el programa.
No puede llamarse de forma explcita al tratarse de la funcin principal.
.
Figura 49. Funcin Void Draw.
En la figura 49 vemos el flujo grama de la funcin void Draw(). Como hemos dicho antes,
esta funcin se ejecuta una vez tras otra mientras el programa no termina. Dentro de esta
funcin void draw lo que hacemos es:
- Refrescar la pantalla.
- Contar tiempo de colgado de datos a internet, y, si llega el caso, subirlos a
Pachube.
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
57
- Comprobar si hay paquetes nuevos desde la ltima vez que Void draw() se
ejecut. Como nosotros ya hemos preprogramado los mdulos y sabemos cada
cunto tiempo deberan llegar paquetes, ese tiempo lo tenemos que fijar antes
de iniciar el programa. El programa va comprobando si han llegado paquetes
correctos, y si es as comprueba que la tensin de alimentacin del mdulo no
sea inferior a una tensin mnima (tpicamente unos 23V). Si la tensin leda
es inferior, manda un email al usuario.
- Finalmente, comprueba que no hayamos pulsado el botn Sortida desde la
ltima vez que ejecutamos el programa. Si lo hemos apretado, ejecuta la
funcin Sortida que consiste en guardar todos los datos que se han ido
almacenando en un fichero de texto, posteriormente cerrando los puertos y
saliendo del programa.
Void GetData()
Como ya hemos mencionado en la explicacin de la funcin Setup, la funcin GetData
interrumpe el programa en el estado en el que est y procesa el cdigo, haciendo, gracias a
esto, que podamos independizar las funciones de visualizacin con las de captura de datos.
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
58
Figura 50. Funcin PacketListener.
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
59
Nuestra funcin, antes que nada evala si el paquete nuevo llega efectivamente de una
Znet 2.5. En caso contrario querr decir que nuestras libreras son incapaces de decodificar
el paquete por software y por lo tanto en ese caso sumaramos un paquete errneo.
En caso de que el paquete que llega sea correcto, lo primero que haremos ser preguntar
mediante comandos AT el valor del RSSI, ya que es justo ese el momento en que
podemos hacerlo. Una vez el coordinador ha recibido respuesta del end device,
obtendremos el valor del RSSI. En caso de que no haya respuesta, mostraremos el error en
la consola de errores.
Finalmente decodificaremos los valores que llegan de los sensores a valores interpretables
en valor decimal.
4.1.3 Diagramas de flujo de funciones secundarias
Otras funciones desdeables del cdigo son:
Void Sortida
La funcin Sortida se ejecuta una vez le damos al botn Sortida que tenemos ubicado en
el men de usuario.
Figura 51. Funcin Sortida().
La funcin sortida guardar todos los datos que hemos ido recompilando desde que
iniciamos el programa en un fichero de texto, datasensors.txt, y luego cerrar el propio
fichero y los puertos de comunicacin antes de hacer lo propio con el programa.
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
60
Void Interfaz_pantalla
La funcin Interfaz_pantalla configurar todos los parmetros importantes de la interfaz
grfica: El tamao que tendr la pantalla as como el color de fondo, la velocidad de
refresco de la pantalla (frame rate), el dibujo y carga de imgenes que en ella se muestren y
finalmente la carga de los diferentes botones y sliders como funciones de la interfaz en la
propia pantalla.
Figura 52. Funcin Interfaz_pantalla().
Esta funcin se ejecutar una sola vez, al iniciarse el setup, aunque algunas de las
funciones como la actualizacin de los valores que muestran los sliders se actualizarn en
otras partes del cdigo. La razn de que se ejecute una sola vez se debe a que resultar
adecuado no consumir ms recursos de los necesarios para el procesador, ya que no tiene
mucho sentido por ejemplo, dibujar constantemente el titulo o cargar imgenes a la
pantalla, ya que siempre sern las mismas y adems consumirn recursos a la CPU.
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
61
Void Data_post()
La funcin Data_post subir los datos de los sensores a la pgina www.pachube.com. sta
es una pgina que como ya hemos dicho nos permite subir datos para poderlos visualizar
en grficos o bien exportarlos en ficheros Excel o xml si lo consideramos.
Figura 53. Funcin data_post().
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
62
Bsicamente, para hacerlo necesitamos crear una cuenta en pachube y las claves de acceso
para subir datos (servicio totalmente gratuito).
Por lo tanto, en esta funcin vinculamos las variables que queremos subir a las FeedID
(nmeros enteros que Pachube necesita para poder identificar cada stream). Despus de
darles una feedId a cada variable, las configuramos, esto es establecer rangos, darles
nombre de tag y finalmente las subimos a la red. Se puede dar el caso que haya un fallo en
el proceso de subida de datos, normalmente nos puede ocurrir que ese nmero que hemos
asignado a nuestra stream ya la haya utilizado otro usuario. En ese caso Pachube nos alerta
que esa stream ya existe y lo visualizamos por la consola de errores de Processing.
4.2 Componentes de la placa
Monitorizacin de la tensin de alimentacin
Aunque las Xbee pueden incluir en la trama sus tensiones de alimentacin, nos hemos
encontrado con el problema de que las funciones dentro de las libreras de Processing para
poder leer tensiones no funcionan adecuadamente, sobre todo la funcin
ioSample.getSupplyVoltage(); por lo que al final hemos optado por leer la propia de
tensin de alimentacin como una entrada analgica ms. Para ello hemos tenido que
adaptar la tensin de alimentacin del mdulo a un valor analgico escalado a las entradas
del convertidor A/D.
Las tensiones de entrada de las entradas analgicas de las Xbee pueden variar entre 0 y 1.2
V, mientras que la tensin de alimentacin del sensor tiene un rango de valores entre 0 y
3.3 V, por lo que tenemos que utilizar un factor de conversin para adaptar estos valores:
3.3 1.2, relacin viene a ser 0,36
Por lo tanto, si tomamos esta relacin, aproximadamente tendremos:
SENSOR
36
Vout=V
100
Por lo tanto, escogemos esta relacin para montar el circuito que nos convertir la tensin
de alimentacin del sensor a un valor proporcional como entrada analgica. Para ello
utilizaremos el siguiente circuito analgico basado en un amplificador operacional de bajo
consumo (TLV2401).
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
63
Figura 54. Topologa Amplificadora de diferencias seleccionada.
La topologa seleccionada corresponde con la siguiente ecuacin:
Vout= .Vsensor - 0
Vout = Vsensor (4)
Que se corresponde exactamente con la relacin que buscbamos para poder medir la
tensin en las Xbee. Los valores seleccionados son 36 k y 100k respectivamente.
Monitorizacin de la temperatura
Para monitorizar la temperatura debemos tener en cuenta la respuesta que ofrece nuestro
sensor de acuerdo con la curva temperatura tensin:
Figura 55. Relacin V-T del sensor.
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
64
Si tomamos -15 C (2V), como la temperatura mnima a monitorizar, sta marcar nuestro
fondo de escala, por lo tanto 1.2 V. Utilizaremos el mismo modelo de amplificador
operacional que en el caso previo.
2 1.2, relacin viene a ser 0,6
Figura 56. Topologa Amplificadora de diferencias seleccionada.
Vout= .Vsensor - 0
Vout = Vsensor
Que se corresponde exactamente con la relacin que buscbamos para poder medir la
tensin en las Xbee. Los valores seleccionados son 60 k y 100k respectivamente.
4.3 Potencia consumida
Para la alimentacin del mdulo se ha escogido una batera de 3.6V, 2600 mA, tipo botn.
Teniendo en cuenta las caractersticas de la pila, los clculos de la vida de sta son:
A
Dispositivos
Modo Normal Modo Sleep
Xbee Tx 295000 1
Xbee Rx 45000 1
Sensor tempratura Tmp20 4 4
Amplificador Operacional TLV2401 0.88 0.88
Total Tx 295004 6.88
Tabla 11. Clculos de potencia consumida.
Debemos tener en cuenta los ciclos de trabajo de las Xbee. Si definimos:
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
65
Tcm = Tiempo consumo normal
Tcd = Tiempo consumo dormido
Icm = Intensidad consumo normal
Icd = Intensidad cosnumo dormido
Y aplicamos que el consumo es:
Consumo = (5)
Por ejemplo, para Tcd = 28s y Tcm = 1s e Icm = 295mA y Icd=6,88A, tendremos que:
Consumo = =
Consumo = 10,17 mA
Si tenemos en cuenta que disponemos de una batera de 1000 mA/h, la vida de la batera
ser:
Vida batera = 1000 / 10,17 = 98,24 h 4 das.
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
66
Seccin 5: Casos experimentales
5.1 Lectura de la corriente consumida en los diferentes ciclos de trabajo
En este primer experimento pretendemos validar los clculos que habamos hecho de
autonoma de la batera con datos experimentales. Para ello, hemos conectado un
multmetro funcionando como ampermetro a un computador a travs de un bus GPIB,
midiendo el consumo del circuito y enviando los datos al PC. Luego estos datos los hemos
procesado con el programa MATLAB con el fin de representar el consumo real del nodo
sensor.
La configuracin del sensor est programada para que se duerma durante 12 segundos y
cuando se despierte vaya tomando muestras cada segundo a lo largo de 8 segundos,
momento en el que volver a dormirse.
Figura 57. Circuito de pruebas.
La rutina realizada en Matlab est dividida en dos archivos. m. Por un lado, el cdigo
Principal va almacenando en un vector todas las muestras que va capturando del
instrumento GPIB cada segundo:
Principal
t i c
cl ear al l
v=[ ]
f or i =1: 100
v( i ) =r eadmul t 2( 22, ' I ' )
pause( 1)
end
save v
t oc
La funcin readmult lee del multmetro la tensin y la corriente. Para ello debemos mandar
a las direcciones del instrumento las rdenes GPIB correspondientes.
readmult
f unct i on a=r eadmul t 2( adr , st r )
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
67
i f st r cmp( st r , ' V' )
envi ar ( adr , ' MEAS: VOLT: DC? 10, 0. 03' ) ;
el sei f st r cmp( st r , ' I ' )
envi ar ( adr , ' MEAS: CURR: DC?' ) ;
end
i f st r cmp( st r , ' R' ) ,
envi ar ( adr , ' MEAS: RES?' ) ;
end
pause( 1)
codi =r eadasci ( adr , 20) ; %16 s el n de byt es que r et or na
%el mul t i met r e per cada l ect ur a
%Tr ansf or maci del codi asci i a un st r i ng el i mi nat
%el s dos ul t i ms byt es j a que cor r espone a <CR> i <LF>
%st r mes( 1: 14) =set st r ( codi ( 1: 14) ) ;
%
%
%a=st r 2num( st r mes) ;
a=st r 2num( set st r ( codi ' ) ) ;
El resultado obtenido lo podemos apreciar en la figura 58:
Figura 58. Perfil de la corriente consumida por el mdulo Xbee tras 70 segundos.
De la figura 58 podemos deducir que el consumo medio del sensor cundo se despierta
vale entorno a 20 mA y por otra parte el valor medio del consumo del Xbee cuando ste
est dormido es de 0.12mA.
Por lo tanto, con los datos obtenidos podemos obtener la media de los valores de corriente
cuando el nodo est despierto y cundo est dormido son:
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
68
20,77mA / 0,12mA
Por lo tanto, aplicando la ecuacin 5, podemos determinar en esta configuracin cul ser
el tiempo estimado de la batera:
Consumo = = 8,38 mA
Vida batera = 1000 / 8,38 = 119,33 h 5 das.
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
69
5.2 Lectura de RSSI Indoor
RSSI es la abreviatura en ingls de Receive Signal Strength Indication (Indicador de fuerza
de la seal recibida). Es un parmetro muy til en comunicaciones inalmbricas ya que
mide el nivel de potencia de las seales de comunicacin. El RSSI se mide en dBm.
En las Xbee Serie 2 la RSSI no viene codificada dentro de la trama API, por lo que slo se
puede medir de dos formas posibles:
- Cableando el pin 6 del Xbee. En las Xbee Serie 2, la seal del RSSI se mide
desde el Pin 6 a partir de la duracin del ancho de pulso (PWM). El ciclo de
trabajo de la PWM es proporcional a la RSSI del ltimo paquete recibido por el
mdulo. De esta forma podemos conectar un led y ver cuanto tiempo est
encendido o bien a una entrada de Arduino utilizando el microcontrolador y
ejecutando la instruccin: rssiDur = pulseIn(digitalPin, LOW, 200). En nuestro
caso esta segunda opcin no ser posible ya que hemos desconectado los
microcontroladores de la placa Arduino.
- Consultndolo mediante rdenes AT, en este caso ATDB. Nosotros hemos
implementado esta solucin en el cdigo fuente, ya que cada vez que el
coordinador del elemento remoto recibe datos, ste le manda la rden ATDB
para conocer el estado del RSSI.
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.
Experimentos realizados:
1) Medida de RSSI en una vivienda: Se han hecho diferentes tests dentro de una
vivienda. Los resultados son los siguientes:
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
70
Tabla 12. Valores de RSSI recopilados dentro de una vivienda.
De la tabla 12 se puede deducir que al aumentar la distancia la RSSI va disminuyendo,
cumplindose de esta manera la ecuacin de transmisin en espacio libre (2). Este hecho se
observa si miramos la figura 59, en la que comparamos el valor absoluto de la RSSI
recibida con la distancia.
Figura 59. RSSI vs distancia en la prueba 2.
Por lo tanto de este experimento podemos concluir que:
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
71
- A distancias cortas el RSSI disminuye (incrementa si hablamos de valores
absolutos como en la grfica) de forma proporcional con la distancia,
cumplindose la ecuacin de de transmisin en espacio libre (1).
2) Medida de RSSI entre los pisos de una vivienda: En este experimento hemos puesto
el sensor en diferentes pisos y el coordinador en el primer piso. El valor RSSI ha
ido cambiando en funcin de dnde estaba el nodo End device (que contiene el
sensor).
De los valores obtenidos, adems de comprobar cul es la sensibilidad del receptor
(mnima potencia de seal detectable en relacin a la potencia de ruido y a las
interferencias), tambin podemos determinar la tasa de paquetes errneos
dependiendo de la distancia a la que se encuentre el mdulo End Device.
Por ejemplo, cuando situamos el End Device en el cuarto piso, obtuvimos
diferentes puntos de sensibilidad (ver tabla 13), y a medida que el sistema SCADA
iba mostrando la potencia recibida, comprobbamos cmo la tasa de paquetes
errneos se iba incrementando a medida que la distancia entre el coordinador y el
end device era mayor. (ver figura 60).
RSSI
Paquetes
errneos Distancia
40 0 1m
64 0
65 0
66 1
67 0
68 0
69 0
70 0
71 2
72 0
73 0
74 0
1pisa2pis
75 nodata
76 nodata
77 nodata
78 nodata
?
79 0
80 0
81 0
82 0
83 0
1pisa3pis
84 0
85 0
86 0
87 0
88 0
1pisa4pis
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
72
89 0
90 1
91 0
92 0
93 1
94 10
95 5
96 0
1pisa5pis
Tabla 13. Tabla resumen del experimento.
Figura 60. RSSI vs paquetes perdidos.
Los valores en % obtenidos en la figura 60 se basan en la relacin del nmero total de
paquetes recibidos para cada lectura de RSSI (por ejemplo, con el RSSI = -95 dBm,
hemos obtenido un 4% de paquetes errneos).
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
73
5.3 Lectura del RSSI: Outdoor
1) Medida de RSSI en el exterior: Otra punto en donde hemos hecho las pruebas es en
la terraza de una vivienda.
Figura 61. Foto de las pruebas realizadas.
El estudio llevado a cabo se basa en la recoleccin de muestras del RSSI a
diferentes distancias. Hemos tomado 140 muestras en cada punto, desde distancias
de 1m a 23 m espaciadas con un paso 1 m entre cada toma de muestra.
Tabla 14. Tabla resumen del experimento.
Mdulo
Coordinador
Mdulo
End Device
PC
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
74
En la tabla 14, los valores RSSI mostrados se corresponden con el valor de la
media de las muestras tomadas, y la desviacin estndar se corresponde a la
poblacin de muestras en cada punto.
La media en funcin de la distancia, y en funcin del logaritmo de sta, as como
sus correspondientes desviaciones estndar se muestran en las figuras 62, 63 y 64.
Figura 62. RSSI vs distancia.
Figura 63. RSSI vs log
10
(distancia).
Figura 64. Desviacin estndar de RSSI vs distancia.
En la figura 64 podemos ver como evoluciona la desviacin estndar del RSSI en funcin
de la distancia. Se observa que la desviacin de la seal en cada posicin no vara
significativamente.
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
75
Por otro lado, como era de esperar la potencia de la seal recibida (RSSI) va disminuyendo
con respecto a la distancia. Las curvas de las figuras 62 y 63 representan la media de los
valores RSSI en una cierta distancia en funcin de la distancia y el logaritmo de sta.
En resumen, el RSSI es un buen parmetro para seguir tendencias de la seal.
2) Distribuciones del RSSI a diferentes distancias
En estos grficos comparamos las distribuciones del RSSI en los casos extremos que nos
hemos encontrado en el anterior grfico.
En la figura 65 vemos los casos extremos que nos hemos encontrado en la figura 64. Como
se aprecia, a 2 m la distribucin de muestras est prcticamente concentrada a -45 dBm,
pero en cambio, a 11m la distribucin de muestras se desva ms.
Figura 65. Desviacin estndar de RSSI vs distancia
Distancia [m] Desviacin estndar
2 0,318
11 8,659
En la figura 66 vemos en cambio dos distribuciones que se han repetido bastante la figura
64, aunque con el punto central a un valor diferente. A 21 m tenemos una desviacin
estndar de 2 aproximadamente con el rango de valores entorno a -81 dBm, y a 23 m una
desviacin de 1,9 con los valores concentrados entorno a -72 dBm.
Figura 66. Desviacin estndar de RSSI vs distancia.
Distancia [m] Desviacin estndar
21 2,041
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
76
23 1,951
Las conclusiones extradas de este experimento son:
- La distancia es un parmetro que no tiene relacin con la desviacin estndar de
los valores RSSI obtenidos, ya que hemos obtenido una poblacin de paquetes
ms dispersa a 11 metros que a 23 metros por ejemplo.
- Se pone otra vez de manifiesto que un valor de RSSI obtenido en un instante
puntual no es un valor fiable (por ejemplo si con ello quisiramos calcular la
distancia a la que nos encontramos del mdulo), pero en cambio es un buen
indicador para seguir la tendencia de la seal.
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
77
Seccin 6: Planos
La relacin de planos de elementos comunes tanto para el mdulo Coordinador como End
Device es el siguiente:
Plano Descripcin
Plano1 PlanosdeltransceptorXbee
La relacin de planos de elementos para el mdulo Coordinador es el siguiente:
Plano Descripcin
Plano2 PlanosdelaplacaArduinoUno
Plano3 PlanosplacainterfazLibelium
Plano4 FotografasdelmduloCoordinador
La relacin de planos de elementos para el mdulo End Device es el siguiente:
Plano Descripcin
Plano5 PlanosdelaplacaBase
Plano6 PlanosdelapiladebotnPanasonic
Plano7 FotografasdelmduloRouter
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
78
6.1 Planos del transceptor Xbee
Figura 67. Planos del transceptor Xbee.
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
79
6.2.1 Plano Arduino
Figura 68. Plano de la placa Arduino Uno.
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
80
6.2.2 Planos Placa Interfaz Xbee Shield
Figura 69. Plano de la placa Xbee Shield.
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
81
6.2.3 Fotografa del mdulo Coordinador
Figura 70. Fotografa del diseo del Coordinador.
En la figura 70 vemos las partes bsicas de las que se compone un mdulo
coordinador:
- Antena Xbee
- Placa Xbee Xhield.
- Placa Arduino Uno.
Placa Xbee
Shield
Antena
Xbee
Placa
Arduino
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
82
6.3.1 Planos de la placa Base
Figura 71. Placa Base para el mdulo Router.
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
83
6.3.2 Plano Pila
Figura 72. Planos de la pila.
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
84
6.3.3 Fotografa del mdulo Router.
Figura 73. Fotografa del diseo del Router.
En la figura 73 vemos las partes bsicas de las que se compone un mdulo
coordinador:
- Antena Xbee.
- Placa base con jumper de conexin y pistas de interconexionado a los diferentes
submdulos.
- Sensor de temperatura y sensor de alimentacin.
- Pila.
- Led indicador (posibilita conocer el estado del sensor en cada momento de
forma rpida segn el parpadeo).
Antena
Xbee
Led indicador
Jumper de
conexin
Pila
Sensor Vin
Sensor de
Temperatura
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
85
Seccin 7: Conclusiones
El objetivo principal de este proyecto ha sido el estudio de los sensores inalmbricos en sus
diferentes fases, desde el diseo a su modo de funcionamiento en condiciones normales,
as como el estudio del protocolo de comunicacin Zigbee, tanto en lo referente al estudio
terico de las tramas de comunicacin hasta las pruebas prcticas llevadas a cabo en
diferentes entornos.
Para llevar a cabo los objetivos fijados, hemos dividido el proyecto en tres fases
diferenciadas:
- En un primer momento hemos hecho un estudio del protocolo de
comunicaciones Zigbee y de las redes de sensores inalmbricas, as como de
teora bsica de transmisin de datos. Nos hemos dado cuenta que tanto Zigbee
como los sensores inalmbricos tienen un futuro prometedor, al ofrecer
caractersitcas diferenciadas a las presentes en el mercado de hoy en da y
satisfacer a las cada vez ms exigentes condiciones energticas que reclama el
mundo de cara a objetivos de sostenibilidad como por ejemplo: eficiencia
energtica en edificios, mallas de sensores para monitorizar posibles incendios
en los bosques, etc.
- Por otra parte hemos desarrollado todo el hardware y todo el software
necesarios para poder hacer la monitorizacin de los datos. Para ello ha sido
necesario no slo hacer una eleccin de los componentes hardware a instalar en
nuestro sensor, sino tambin un estudio sobre qu programas son mejores para
poder trabajar con Xbee y las diferentes posibilidades que ofrecen.
- Finalmente, hemos hecho un conjunto de pruebas para poder determinar de
forma experimental parmetros de comunicacin relacionados con Zigbee,
como por ejemplo la fiabilidad de los datos de comunicacin, tanto en
desviacin de los datos como en relacin con los paquetes perdidos en cada
transmisin, distribuciones de potencia con relacin a la distancia, y todas
estas pruebas tanto en entornos Indoor como Outdoor.
Por lo tanto, dividimos las conclusiones del proyecto en tres partes diferentes: primero en
referencia al estudio terico:
- Zigbee ofrece ventajas importantes respecto a otras tecnologas de
comunicacin inalmbrica: Bajo consumo de energa gracias a la posibilidad de
poder poner tener dormidos los mdulos y despertarlos slo cundo es
necesario. Bajo coste, ya que los fabricantes disponibles en el mercado ofrecen
precios competitivos. Posibilidad de interconexin de dispositivos a travs de
mallas ad-hoc de muchos nodos.
- Ofrece nuevas posibilidades de mercado, ya que, aunque opera en la misma
banda de frecuencias que Bluetooth y Wifi, el propsito de Zigbee es
completamente diferente, pretendiendo dar soluciones de bajo coste para
aplicaciones dnde no se requieran grandes transmisiones de datos.
Del trabajo de desarrollo hardware y software del sensor podemos sacar las siguientes
conclusiones:
- Hemos aprendido a programar el mdulo inalmbrico para poderlo dormir y
despertar peridicamente.
- Processing es un lenguaje de programacin adecuado para la monitorizacin de
mdulos Xbee al disponer de muchas libreras e informacin disponible en
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
86
Internet, adems de ofrecer libreras para poder hacer sistemas SCADA
sencillos y de fcil manejo para los usuarios. Adems, el lenguaje de
programacin es fcil de aprender si ya se tienen nociones de Java o C.
- Se ha diseado un prototipo de sensor inalmbrico el cul dispone de un sensor
de temperatura, capacidad de monitorizar su tensin de batera y potencia
recibida. El dispositivo es capaz de dormirse en largos perodos de tiempo y de
despertarse peridicamente para reportar informacin, lo que hace que la vida
de la batera se alargue.
- El estudio y la eleccin de los componentes de la placa, as como el diseo de la
misma han tenido que ver con los objetivos del proyecto. Hemos comprobado
que siempre hay que seguir un compromiso de funcionalidad con
requerimientos de funcionamiento cundo se disea un dispositivo. As por
ejemplo, hemos visto que el sensor de temperatura no tena una sensibilidad
acurada pero en cambio cumpla con los lmites de tensin de alimentacin
necesarios para nuestro mdulo.
- Se ha comprobado el correcto funcionamiento del coordinador y del sensor
inalmbrico: las temperaturas y las tensiones de alimentacin, as como la
potencia recibida.
De las pruebas experimentales que hemos hecho con el sensor podemos sacar otras
conclusiones:
- Al establecer la comunicacin entre emisor y receptor, sta se mantiene muy
fiable a pesar de ir aumentando la distancia, ya que la tasa de paquetes que
dejan de llegar al emisor no aumenta. Sin embargo, cuando el nodo receptor
alcanza el lmite de sensibilidad, la tasa de paquetes errneos empieza a
aumentar.
- Se pueden apreciar irregularidades en cuanto a la distribucin de las
desviaciones estndar de RSSI recibido en las diferentes distancias de las
pruebas de comunicacin que hemos realizado.
Finalmente, podemos decir que hemos alcanzado los objetivos que planteaba el proyecto
de forma satisfactoria.
Para futuros trabajos, se podran aadir nuevos sensores inalmbricos con el fin de
desarrollar redes ms complejas, y de esta forma tener una red con varias capas, poder
hacer diferentes enrutamientos en funcin de los obstculos, etc.
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
87
Seccin 8: Bibliografa
Libros consultados:
[1] Zigbee Wireless Networks and Transcievers Shahin Farahani
Edit: Newnes
[2] Wireless Sensor Networks Robert Faludi
Edit: OReilly
[3] Programming Interactivity Joshua Noble
Edit: OReilly
[4] Learning Processing Daniel Shiffman
Edit: Morgan Kaufmann
Webs consultadas:
[1] http://www.zigbee.org/
[2] http://www.arduino.cc/es/
[3] http://en.wikipedia.org/wiki/ZigBee
[4] http://en.wikipedia.org/wiki/Wireless_sensor_network
[5] http://en.wikipedia.org/wiki/Sensor_node
[6] https://docs.zigbee.org/zigbee-docs/dcn/07-5219.PDF
[7] http://processing.org/
[8] http://www.learningprocessing.com/
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
88
Seccin 9: Anexo
9.1 Manual de Interfaz grfica
La interfaz grafica del proyecto est concebida para ser de fcil manejo para el usuario.
En ella podemos encontrar los siguientes botones:
Sortida: Cundo pulsamos, sale del programa y adems almacena en el fichero
data_sensors.txt, los datos que se han ido guardando desde que hemos iniciado el
programa.
Pachube: Botn de acceso directo a https://pachube.com/feeds/34459 dnde poder
visualizar las grficas de las diferentes variables por Internet.
Figura 74. Interfaz grfica va Processing.
Adems utilizamos sliders para poder representar el valor de las entradas analgicas que
recibimos de nuestro End device:
Sliders: Los sliders son las diferentes barras que representan las diferentes variables que
estamos monitoreando. La altura coloreada en cada barra representa el valor actual
respecto al rango de la variable.
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
89
9.2 Cdigo fuente
/ / Li br er i as
i mpor t Pachube. *;
i mpor t pr ocessi ng. ser i al . *;
i mpor t com. r appl ogi c. xbee. api . At Command;
i mpor t com. r appl ogi c. xbee. api . At CommandResponse;
i mpor t com. r appl ogi c. xbee. api . Api I d;
i mpor t com. r appl ogi c. xbee. api . Packet Li st ener ;
i mpor t com. r appl ogi c. xbee. api . XBee;
i mpor t com. r appl ogi c. xbee. api . XBeeResponse;
i mpor t com. r appl ogi c. xbee. api . zi gbee. ZNet RxI oSampl eResponse;
i mpor t j avax. mai l . *;
i mpor t j avax. mai l . i nt er net . *;
/ / Li br er i a i nt er f az gr af i ca
i mpor t cont r ol P5. *;
/ / Li br er i as par a mandar mai l s
i mpor t j avax. mai l . Aut hent i cat or ;
i mpor t j avax. mai l . Passwor dAut hent i cat i on;
i mpor t j ava. ut i l . concur r ent . *;
/ / Car r egar i mat ges est at i ques de l a pant al l a
PI mage b;
/ / I nt er f az gr af i ca
Cont r ol P5 cont r ol P5;
/ / Xbee xbee;
Queue<XBeeResponse> queue = new Concur r ent Li nkedQueue<XBeeResponse>( ) ;
publ i c voi d Sor t i da( i nt t heVal ue) {
pr i nt l n( " a but t on event f r omSor t i da: " +t heVal ue) ;
out put . f l ush( ) ; / / Wr i t e t he r emai ni ng dat a
out put . cl ose( ) ; / / Fi ni sh t he f i l e
exi t ( ) ; / / St op t he pr ogr am
}
publ i c voi d Pachube ( i nt t heVal ue) {
l i nk( " ht t ps: / / pachube. com/ f eeds/ 39531" , " _new" ) ;
}
/ / publ i c voi d Temper at ur es( i nt t heVal ue) {
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
90
/ / pr i nt l n( " a but t on event f r omTemper at ur es: " +t heVal ue) ;
/ / }
/ / voi d sl i der Temper at ur a( ) {
/ / cont r ol P5. cont r ol l er ( " Temper at ur a" ) . set Val ue( ( f l oat ) t emp) ;
/ / }
/ / voi d sl i der Al i ment aci o( ) {
/ / cont r ol P5. cont r ol l er ( " Al i ment aci o" ) . set Val ue( ( f l oat ) Vi n) ;
/ / }
/ / voi d sl i der LPR( ) {
/ / cont r ol P5. cont r ol l er ( " LossPacket Rat e" ) . set Val ue( l osspacket r at e) ;
/ / }
/ / Segona Pant al l a per a vi sual i t zar dades
/ / Fi Segona Pant al l a per a vi sual i t zar dades
/ / Var i abl es gl obal es
/ / col or cur r ent col or ;
/ / Var i abl es i nt er f az gr af i ca Cont r ol I P5
But t on c;
i nt r ssi =0;
bool ean r ssi _bi n;
i nt bpacket =0; / / paquet es mal os
i nt gpacket =0; / / paquet es buenos
i nt npacket =0; / / nuevos paquet es
i nt npacket _ol d=0; / / par a compr ar ar paquet es nuevos con act ual es
f l oat l osspacket r at e=0;
f l oat l ast Updat e; / / Se ut i l i za par a guar dar el ul t i mo dat apost
f l oat l ast Updat e1; / / Se ut i l i za par a i r compr obando que l l egan paquet es
Ser i al por t ;
i nt addr ess = 0; / / sender ' s addr ess
doubl e t emp=0;
i nt r ebut =0; / / packet succes
doubl e Vi n=3000; / / Si no quan ar r anqui el pr ogr ama m' envi ar mai l s! !
St r i ng mySer i al Por t = " COM1" ; / / Conf i gur o el puer t o com
St r i ng api Key=" 6l l pI S3- 0u292unf 9i Yt kI yzDepm1ohmut y7vgSccT0" ; / / Cl ave
pachube
i nt f eedI D=39531; / / f eed assi gnada por Pachube
PFont f ont ;
XBee xbee = new XBee( ) ;
i nt er r or =0;
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
91
l ong numaddr =0;
i nt val ue=0;
i nt envi at =0;
XBeeResponse r esponse;
i nt success=0;
/ / Funci n de i ni ci o
Pr i nt Wr i t er out put ;
Sl i der t , a, l , k;
voi d di bui xat i t ol ( ) {
f i l l ( 0, 102, 153) ;
t ext Si ze( 30) ;
t ext Al i gn( LEFT) ;
t ext ( " Pr oj ect e Sensor s" , 350, 80) ;
b=l oadI mage ( " ur v. bmp" ) ;
i mage( b, 720, 10) ;
}
voi d i nt er f az( ) {
/ / I NTERFAZ GRAFI CA
si ze( 800, 600) ; / / scr een si ze
di bui xat i t ol ( ) ;
/ / I nt er f az gr af i ca Cont r ol I P5
f r ameRat e( 80) ;
cont r ol P5 = new Cont r ol P5( t hi s) ;
cont r ol P5. addBut t on( " Sor t i da" , 0, 30, 100, 80, 19) ;
cont r ol P5. addBut t on( " Pachube" , 0, 30, 120, 80, 19) ;
/ / cont r ol P5. addBut t on( " Temper at ur es" , 255, 30, 120, 80, 19) ;
/ / cont r ol P5. addBut t on( " Al i ment aci o" , 255, 30, 140, 80, 19) ;
t =cont r ol P5. addSl i der ( " Temper at ur a" , 0, 30, ( f l oat ) t emp, 100, 200, 10, 100) ;
a=cont r ol P5. addSl i der ( " Al i ment aci o" , 0, 3300, ( f l oat ) Vi n, 200, 200, 10, 100) ;
l =cont r ol P5. addSl i der ( " LossPacket Rat e" , 0, 100, l osspacket r at e, 300, 200, 10, 10
0) ;
k=cont r ol P5. addSl i der ( " RSSI " , - 100, 0, ( f l oat ) r ssi , 400, 200, 10, 100) ;
/ / FI N I NTERFAZ GRAFI CA Cont r ol I P5
smoot h( ) ;
/ / FI N I NTERFAZ GRAFI CA
}
voi d conf i gf i cher o( ) {
out put = cr eat eWr i t er ( " dat a_sensor s. t xt " ) ; / /
f ont = l oadFont ( " SansSer i f - 10. vl w" ) ;
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
92
t ext Font ( f ont ) ; / / use t he f ont f or t ext
}
voi d abpuer t o( ) {
Pr oper t yConf i gur at or . conf i gur e( dat aPat h( " " ) +" l og4j . pr oper t i es" ) ;
pr i nt l n( " Avai l abl e ser i al por t s: " ) ; / / Puer t os di sponi bl es
pr i nt l n( Ser i al . l i st ( ) ) ;
t r y { / / I nt ent amos abr i r puer t o ser i e
xbee. open( mySer i al Por t , 9600) ;
}
cat ch ( XBeeExcept i on e) {
pr i nt l n( " ** Er r or abr i endo el puer t o XBee: " + e + " **" ) ;
pr i nt l n( " Est a el Xbee conect ado al PC?" ) ;
er r or =1;
}
}
voi d set up( ) {
i nt er f az( ) ;
conf i gf i cher o( ) ;
t r y{
abpuer t o( ) ;
xbee. addPacket Li st ener ( new Packet Li st ener ( ) {
publ i c voi d pr ocessResponse( XBeeResponse r esponse) {
/ / handl e t he r esponse
i f ( r esponse. get Api I d( ) == Api I d. ZNET_I O_SAMPLE_RESPONSE
&& ! r esponse. i sEr r or ( ) ) {
npacket ++;
gpacket ++;
ZNet RxI oSampl eResponse i oSampl e =
( ZNet RxI oSampl eResponse) ( XBeeResponse) r esponse;
/ / get t he sender ' s 64- bi t addr ess
i nt [ ] addr essAr r ay = i oSampl e. get Remot eAddr ess64( ) . get Addr ess( ) ;
/ / par se t he addr ess i nt ar r ay i nt o a f or mat t ed st r i ng
St r i ng[ ] hexAddr ess = new St r i ng[ addr essAr r ay. l engt h] ;
f or ( i nt i =0; i <addr essAr r ay. l engt h; i ++) {
/ / f or mat each addr ess byt e wi t h l eadi ng zer os:
hexAddr ess[ i ] = St r i ng. f or mat ( " %02x" , addr essAr r ay[ i ] ) ;
}
/ / j oi n t he ar r ay t oget her f or a numer i c addr ess:
l ong numer i cAddr ess = unhex( j oi n( hexAddr ess, " " ) ) ;
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
93
/ / dat a. numer i cAddr = numer i cAddr ess;
/ / numaddr =dat a. numer i cAddr ;
/ / pr i nt ( " numer i c addr ess: " + numer i cAddr ess) ;
/ / j oi n t he ar r ay t oget her wi t h col ons f or r eadabi l i t y:
St r i ng sender Addr ess = j oi n( hexAddr ess, " : " ) ;
/ / pr i nt ( " sender addr ess: " + sender Addr ess) ;
/ / dat a. addr ess = sender Addr ess;
/ / get t he val ue of t he f i r st i nput pi n
/ / r ssi = i oSampl e. get Rssi ( ) ;
/ / dat a. anal og0 = i oSampl e. get Anal og0( ) ;
t emp= i oSampl e. get Anal og0( ) ;
t emp=( t emp/ 1023. 0*1. 2) ;
t emp=( t emp- 1. 159) / - 0. 00725;
Vi n= i oSampl e. get Anal og1( ) ;
/ / Vi n=( dat a. anal og1/ 1023. *1200) ; / / Aqui obt i ng un val or i nf er i or a 1. 2V,
l a l ect ur a de l a AD
Vi n=( Vi n/ 1023. *1200) ;
Vi n = Vi n / 0. 39; / / 0. 39k es l a r el aci o ( R) de l oper aci onal
r ssi _bi n=i oSampl e. i sD2On( ) ;
pr i nt l n( " l osspacket : " +l osspacket r at e) ;
pr i nt l n( " bpacket : " +bpacket ) ;
out put . pr i nt l n( " Vss: " + Vi n+ TAB+ " Temp: " +t emp+ TAB+ " Paquet es buenos:
" +gpacket + TAB+ " Paquet es mal os:
" +bpacket +TAB+npacket +TAB+npacket _ol d+TAB+" Rssi : " +r ssi +TAB+hour ( ) +" : " +mi n
ut e( ) +" : " +second( ) ) ;
/ / val ue=1;
}
el se i f ( r esponse. i sEr r or ( ) ) {
npacket ++;
bpacket ++;
}
}
}) ;
}
cat ch ( Except i on e) {
pr i nt l n( " XBee f ai l ed t o i ni t i al i ze" ) ;
}
}
voi d dr aw( ) {
/ / Sensor Dat a dat a = new Sensor Dat a( ) ; / / Cr eaci n del obj et o t i po
Sensor Dat a l l amado dat a
backgr ound( 0) ;
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
94
di bui xat i t ol ( ) ;
i f ( Vi n<2850) { / / Rang de t ensi ons de Xbee 2. 8<Vcc<3. 4
i f ( envi at ==0) { / / Envi o mai l si t ensi o i nf er i or a umbr al i no havi a
envi at abans
/ / sendMai l ( ) ;
envi at =1;
}
}
el se i f ( Vi n>2900) {
envi at =0;
}
/ / whi l e( t r ue) {
i f ( npacket >npacket _ol d) {
t r y {
At Command at = new At Command( " DB" ) ;
/ / xbee. sendSynchr onous( at , 3000) ;
xbee. sendAsynchr onous( at ) ;
XBeeResponse at Response = xbee. get Response( ) ;
/ / XBeeResponse at Response = xbee. get Response( ) ;
i f ( at Response. get Api I d( ) == Api I d. AT_RESPONSE) {
/ / r emember r ssi i s a negat i ve db val ue
pr i nt l n( " RSSI of l ast r esponse i s " + -
( ( At CommandResponse) at Response) . get Val ue( ) [ 0] ) ;
r ssi =+ - ( ( At CommandResponse) at Response) . get Val ue( ) [ 0] ;
npacket _ol d=npacket ;
l ast Updat e1 = mi l l i s( ) ;
} el se {
/ / we di dn' t get an AT r esponse
pr i nt l n( " expect ed RSSI , but r ecei ved " + at Response. t oSt r i ng( ) ) ;
}
/ / }
}
cat ch ( Except i on e) {
pr i nt l n( e) ;
}
}
l osspacket r at e=( f l oat ) bpacket / ( gpacket +bpacket ) *100;
t . set Val ue( ( f l oat ) t emp) ;
a. set Val ue( ( f l oat ) Vi n) ;
l . set Val ue( l osspacket r at e) ;
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
95
k. set Val ue( ( f l oat ) r ssi ) ;
/ / pr i nt l n( l osspacket r at e) ;
/ / }
i f ( ( mi l l i s( ) - l ast Updat e1) >2000) {
i f ( npacket ==npacket _ol d) {
bpacket ++;
}
npacket _ol d=npacket ;
l ast Updat e1 = mi l l i s( ) ;
}
/ / post dat a a Pachube cada 30 segundos
i f ( ( mi l l i s( ) - l ast Updat e) >30000) {
/ / out put . pr i nt l n( " Vss: " + Vi n+ TAB+ " Temp: " +t emp+ TAB+ " Paquet es
buenos: " +gpacket + TAB+ " Paquet es mal os:
" +bpacket +TAB+npacket +TAB+npacket _ol d+TAB+hour ( ) +" : " +mi nut e( ) +" : " +second(
) ) ;
dat aPost ( ) ;
l ast Updat e = mi l l i s( ) ;
}
/ / Escr i c en el f i t xer l es dades que r ebo
/ / out put . pr i nt l n( " Vss: " + Vi n +TAB+ " Temp: "
+t emp+TAB+hour ( ) +" : " +mi nut e( ) +" : " +second( ) +TAB+day( ) +" / " +mont h( ) +" / " +year
( ) ) ;
/ / out put . pr i nt l n( " Vss: " + Vi n+ TAB+ " Temp: " +t emp+ TAB+ " Paquet es
buenos: " +gpacket + TAB+ " Paquet es mal os: " +bpacket ) ;
/ / out put . pr i nt l n( gpacket +TAB+ bpacket ) ;
}
voi d dat aPost ( ) {
/ / add and t ag a dat ast r eam
i nt t empFeedI D = ( i nt ) ( numaddr ) ;
i nt Vi nFeedI D = 231186;
t r y {
Pachube p = new Pachube( api Key) ;
/ / get t he f eed by i t s I D
Feed f = p. get Feed( f eedI D) ;
Dat a a = new Dat a( ) ;
a. set I d( t empFeedI D) ;
a. set MaxVal ue( 40d) ;
a. set Mi nVal ue( - 10d) ;
a. set Tag( " \ " Gr ados cent i gr ados\ " , " + " \ " " + addr ess + " \ " " ) ;
Dat a b= new Dat a( ) ;
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
96
b. set I d( Vi nFeedI D) ;
b. set MaxVal ue( 40d) ;
b. set Mi nVal ue( - 10d) ;
b. set Tag( " \ " Tensi n bat er a\ " , " + " \ " " + addr ess + " \ " " ) ;
/ / at t empt t o cr eat e i t
t r y {
f . cr eat eDat ast r eam( a) ; / / Cr eamos dat ast r eampar a t emper at ur a
f . cr eat eDat ast r eam( b) ; / / Cr eamos dat ast r eampar a t ensi on
}
cat ch ( PachubeExcept i on e) {
i f ( e. er r or Message. equal s( " HTTP/ 1. 1 400 Bad Request " ) ) {
pr i nt l n( " f eed al r eady exi st s" ) ;
}
el se {
pr i nt l n( e. er r or Message) ;
}
}
pr i nt l n( " post i ng t o Pachube. . . " ) ;
f . updat eDat ast r eam( t empFeedI D,
t emp) ;
f . updat eDat ast r eam( Vi nFeedI D,
Vi n) ; / / updat e t he dat ast r eam
}
cat ch ( PachubeExcept i on e) {
pr i nt l n( e. er r or Message) ;
}
} / / Fi dat apost ( )
/ / PROGRAMA ENVI AR MAI L
publ i c cl ass Aut h ext ends Aut hent i cat or {
publ i c Aut h( ) {
super ( ) ;
}
publ i c Passwor dAut hent i cat i on get Passwor dAut hent i cat i on( ) {
St r i ng user name, passwor d;
user name = " t l er dr den" ;
passwor d = " " ; / / f i car pass
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
97
/ / Syst em. out . pr i nt l n( " aut hent i cat i ng. . " ) ;
r et ur n new Passwor dAut hent i cat i on( user name, passwor d) ;
}
}
voi d sendMai l ( ) {
St r i ng host =" i map. gmai l . com" ;
Pr oper t i es pr ops=new Pr oper t i es( ) ;
/ / SMTP Sessi on
pr ops. put ( " mai l . t r anspor t . pr ot ocol " , " smt p" ) ;
pr ops. put ( " mai l . smt p. host " , host ) ;
pr ops. put ( " mai l . smt p. por t " , " 587" ) ;
pr ops. put ( " mai l . smt p. aut h" , " t r ue" ) ;
/ / We need TTLS, whi ch gmai l r equi r es
pr ops. put ( " mai l . smt p. st ar t t l s. enabl e" , " t r ue" ) ;
/ / Cr eat e a sessi on
Sessi on sessi on = Sessi on. get Def aul t I nst ance( pr ops, new Aut h( ) ) ;
t r y
{
/ / Make a new message
Mi meMessage message = new Mi meMessage( sessi on) ;
/ / Who i s t hi s message f r om
/ / message. set Fr om( new I nt er net Addr ess( " admi n@domai n. com" , " Name" ) ) ;
message. set Fr om( new I nt er net Addr ess( " t l er dr den@gmai l . com" , " Ant on" ) ) ;
/ / Who i s t hi s message t o ( we coul d do f anci er t hi ngs l i ke make a l i st
or add CC' s)
/ / message. set Reci pi ent s( Message. Reci pi ent Type. TO,
I nt er net Addr ess. par se( " <Reci pi ent @domai n. com" , f al se) ) ;
message. set Reci pi ent s( Message. Reci pi ent Type. TO,
I nt er net Addr ess. par se( " ant on. gi r od@est udi ant s. ur v. es" , f al se) ) ;
/ / Subj ect and body
message. set Subj ect ( " Adver t enci a: Canvi i l es bat er i es" ) ;
message. set Text ( " La t ensi d' al i ment aci del seu sensor est a bai xa,
canvi - l a t ant avi at compugui " ) ;
/ / We can do mor e her e, set t he dat e, t he header s, et c.
Tr anspor t . send( message) ;
/ / pr i nt l n( " Mai l sent ! " ) ;
success = 0;
}
cat ch( Except i on e)
{
/ / e. pr i nt St ackTr ace( ) ;
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
98
success = 1;
}
}
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
99
9.3 Otras pruebas realizadas
9.3.1 Medida de temperatura utilizando un LM35
Antes de decidirnos por completo en la eleccin de los sensores de temperatura, los hemos
testeado para comprobar su funcionamiento. Estas pruebas adems nos ayudan a
experimentar con la placa Arduino Uno y a validar su funcionamiento aunque no la
utilicemos para capturar los datos, sino como interfaz entre las Xbee y el PC.
Una de las pruebas que hemos realizado es la programacin del Arduino para visualizar
por pantalla el valor que marca el LM35 en cada momento.
Figura 75. Esquema del montaje.
La configuracin mostrada en la figura 75 es a tres hilos: Utilizamos los cables rojo y
negro para alimentar el LM35 con las salidas a 5V de las que dispone Arduino y utilizamos
el tercer hilo (cable azul), como entrada analgica correspondiente al valor que devuelve
el LM35.
/ * LEE UN SENSOR DE TEMPERATURA
* - - - - - - - - - - - - - - -
*
* Pr ogr ama par a l eer un sensor de t empr at ur a
*/
f l oat t emp;
i nt t empPi n = 0;
voi d set up( )
{
Ser i al . begi n( 9600) ; / / opens ser i al por t , set s dat a r at e t o 9600 bps
}
voi d l oop( )
{
t emp = anal ogRead( t empPi n) ; / / l eer val or del sensor
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
100
t emp = ( 5. 0 * t emp * 100. 0) / 1024. 0; / / conver t i r a t emp
Ser i al . pr i nt ( ( byt e) t emp) ; / / env o al PC
del ay( 500) ; / / esper amos 0. 5s ant es d vol ver
a l eer
}
El programa bsicamente consiste en configurar el puerto de comunicacin a 9600 baudios
y luego leer el valor de la entrada analgica cada 500 ms.
Despus de las pruebas realizadas, hemos comprobado que la placa Arduino funciona
correctamente tras ver que el sensor marca unos valores coherentes de temperatura por
pantalla.
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
101
9.3.2 Otras pruebas con el sistema de visualizacin
Durante el desarrollo del proyecto se han hecho diferentes pruebas en la programacin con
el sistema de visualizacin. El mayor problema encontrado ha sido tratar de independizar
el muestreo de datos con las funciones propias de visualizacin como es mover el ratn
libremente, poder tocar los botones, etc. Este problema lo hemos resuelto gracias a las
funciones Packet Listener (en el proyecto GetData) que consiguen hacer que el tratamiento
de paquetes de llegada de los objetos Xbee se gestionen slo cundo realmente llegan
nuevas tramas, dejando que el software pueda hacer otras tareas en el resto del tiempo.
En un principio, sin embargo, esto no lo hacamos as, ya que esperbamos hasta que
llegaban paquetes para que el programa siguiera funcionando.
Otra prueba realizada con el software fue intentar crear tantos objetos sensores como
hubiera realmente en la red, con tal de reservar espacios de memoria y usarlos slo en caso
que hubiera varios sensores a la propia red. Por ejemplo, si tenamos conectados dos
dispostivos a nuestro coordinador, crear dos sensordata, y mostrarlos por pantalla. En la
figura 76 se ve bsicamente como se pretenda hacer funcionar el programa:
Void draw
Figura 76. Flujo grama de pruebas.
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
102
Sin embargo nos hemos dado cuenta que no es nada sencillo hacer este tipo de objetos en
Processing, por lo que al final lo desestimamos. Una posible lnea futura sera tratar de
realizarlo teniendo en cuenta
Desarrollo de un Sensor Xbee Automtica y Electrnica Industrial
103
9.4 Ficheros adjuntos
En el cd adjunto al proyecto se dispone de toda la documentacin relativa a:Datasheets de
sensores de temperatura LM35 y TMP20.
- Datasheets de placa Arduino Uno.
- Datasheets de antenas Xbee.
- Ficheros de programacin del sistema de visualizacin en Processing.
- Ficheros excel con todos los datos recopilados por los sensores en las
diferentes pruebas del proyecto.
- Ficheros de configuracin de las antenas Xbee.
- Memria del proyecto en formato .pdf.