You are on page 1of 56

UNIVERSIDAD

DE

PIURA

FACULTAD DE INGENIERA

Protocolo de comunicacin ZigBee para transmisin de datos

Simn Rodrguez Ingrid Mirelli


Vega Cruz Carlos Diego
Villegas Chipana Juan Diego
Zapata Casariego Csar Gabriel

ASESOR: Marlon Villegas Flores

Piura, Octubre 2015

Resumen
Teniendo como conocimientos los elementos para que se lleve a cabo la comunicacin
(emisor, receptor, canal, contexto, cdigo) haremos una analoga de cmo es que se realiza
la comunicacin de nuestro trabajo:
EMISOR: Sensores de humedad y temperatura DHT-11
RECEPTOR: Microcontrolador Arduino NANO, Coordinador
CODIGO: Protocolo XBee, Comunicacin serial
CANAL: Ondas generadas por los mdulos XBee a travs del medio ambiente
MENSAJE: Lectura de temperatura y humedad
CONTEXTO: Medio de cultivo, invernadero, etc.
Los sensores toman la lectura de temperatura y humedad y son enviadas en voltaje, esta
lectura es recepcionada por el Arduino UNO de cada sensor la cual decodifica y la
acondiciona para poder ser mostrada en las Pantallas LCD 16x2, a su vez cada Arduino UNO
enva la data codificada al Mdulo XBee para que este se encargue de acondicionarla para
enviarla inalmbricamente al Mdulo XBee coordinador, este dar la data obtenida al
Arduino NANO para poder tomar la lectura de los sensores en otro ambiente y as poder
monitorear las condiciones en las que se encuentra el medio de cultivo o ambiente que
necesitamos controlar. Al mismo tiempo el Arduino NANO almacenar las lecturas en una
memoria micro SD a travs del Micro SD Card.
El Arduino NANO estar conectado a una PC la cual nos mostrar unas grficas de las
lecturas gracias a un software NET BEANS.

ndice
Resumen ................................................................................................................................. 2
ndice ...................................................................................................................................... 3
Introduccin ............................................................................................................................ 1
Objetivos................................................................................................................................. 2
Objetivo Principal ............................................................................................................... 2
Objetivos Especficos ......................................................................................................... 2
Captulo I ................................................................................................................................ 3
Alcance ................................................................................................................................... 3
1.1.

Sensor 1.................................................................................................................... 3

1.1.1.

Arduino UNO ................................................................................................... 3

1.1.1.1.

Mapeo ........................................................................................................ 5

1.1.2.

Mdulo XBee Router 1 .................................................................................... 6

1.1.3.

Adaptador USB-XBee ...................................................................................... 7

1.1.4.

Sensor DHT11 .................................................................................................. 8

1.1.4.1.

Comunicacin del sensor ........................................................................ 10

1.1.5.

Pantalla LCD 16x2 ......................................................................................... 12

1.1.6.

Placa diseada para ser compatible con Arduino UNO. ................................ 13

1.2.

Sensor 2.................................................................................................................. 13

1.2.1.

Potencimetro 50K ......................................................................................... 13

1.2.2.

Placa diseada para ser compatible con Arduino UNO ................................. 14

1.3.

Central .................................................................................................................... 15

1.3.1.

Arduino NANO .............................................................................................. 15

1.3.2.

Adaptador SD Card ........................................................................................ 16

1.3.3.

Placa diseada para ser compatible con Arduino NANO .............................. 16

Captulo II ............................................................................................................................. 18
Diseo ................................................................................................................................... 18
2.1. Software ..................................................................................................................... 18
2.1.1.

Programacin de los Sensores ........................................................................ 18

2.1.2.

Programacin del Coordinador ....................................................................... 19

2.2.

Hardware ................................................................................................................ 20

2.2.1.

Placa Central (Coordinador) ........................................................................... 20

2.2.2.

Sensor 1 .......................................................................................................... 21

2.2.3.

Sensor 2 .......................................................................................................... 22

Captulo III ........................................................................................................................... 24


Implementacin .................................................................................................................... 24
3.1.

Toolchain de Arduino ............................................................................................ 24

3.1.1.

Funcionamiento de la plataforma y sus herramientas .................................... 25

3.2.

Toolchain de NetBeans (Java) ............................................................................... 26

3.3.

IDE (Ambiente de Desarrollo Integrado) .............................................................. 28

3.3.1.

Arduino. .......................................................................................................... 28

3.3.1.1.

Programa Sensor 1 .................................................................................. 28

3.3.1.1.1. Cdigo Sensor 1 ................................................................................... 28


3.3.1.2.

Programa Sensor 2: ................................................................................. 30

3.3.1.2.1. Cdigo Sensor 2 ................................................................................... 30


3.3.1.3.

Programa Central: ................................................................................... 31

3.3.1.3.1. Cdigo Coordinador ............................................................................. 32


3.3.2.

Netbeans. ........................................................................................................ 36

Captulo IV ........................................................................................................................... 38

Pruebas.............................................................................................................................................. 38
4.1.

Recepcin de datos en comunicacin multipunto sin microcontrolador. ........................ 38

4.2.

Recepcin de datos en comunicacin multipunto con microcontrolador y sensores. ..... 39

4.3.

Implementacin del sistema de comunicacin con dispositivos de monitoreo. .............. 39

4.4. Recepcin de datos en la central empleando el software en Java para verificar su


funcionamiento. ............................................................................................................................ 39
4.5. Recepcin de datos en la central empleando el software en Java y guardando datos en el
mdulo SD card con registro de hora y fecha. .............................................................................. 39
4.6. Implementar las tarjetas electrnicas de los dispositivos y probar su funcionamiento. (Se
repiten las pruebas anteriores ya con el hardware terminado). .................................................. 40
Conclusiones ..................................................................................................................................... 41
Referencias ........................................................................................................................................ 43
Anexos ............................................................................................................................................... 44
Anexo A: Cronograma de actividades y tareas ............................................................................. 45
Anexo B: Diseo de Maqueta ........................................................................................................ 46
Materiales ................................................................................................................................. 46
Diseo........................................................................................................................................ 47

Introduccin
Nuestro proyecto ha sido concebido en los invernaderos, la tecnologa de riego tecnificado
es muy utilizada en la actualidad, porque permite el monitoreo de parmetros fundamentales,
tales como humedad y temperatura, las cuales son consideraciones bsicas para poder
implementar un biohuerto o un invernadero especial para el cultivo de flores. Para ello, se
debe plantear desde un principio los objetivos que se pretenden alcanzar y los beneficios que
con ellos queremos obtener. Por ello, el propsito del proyecto ha sido implementar un
prototipo estndar, con el protocolo de comunicacin ZigBee, con aplicacin en modelos de
invernaderos usados para reducir la influencia de factores adversos, como temporada, plagas,
vientos, tormentas, lluvias, etc., que limitan la produccin y la calidad de los cultivos. De
esta manera incluyen el control de las variables ambientales y hacen uso eficiente del agua.
Con la finalidad de mejorar la eficiencia, se adquiere una red de inalmbrica de sensores
WSN para poder monitorear y accionar sistemas de control. Hay diferentes tecnologas para
desarrollar WSN, sin embargo, la tecnologa conocida como ZigBee es una de la ms
generalizadas y utilizadas. Esta es el estndar ms aceptado hoy para usar en redes de
sensores y actuadores que deban operar a batera.
El sistema desarrollado en el presente proyecto se compone de dos Nodos Sensor y un
Dispositivo Coordinador, emisor y receptor respectivamente. El nodo sensor es, bsicamente,
una unidad de adquisicin de datos, y es responsable de recoger datos de las variables
climticas tales como temperatura y humedad relativa, transmitindolos al coordinador de
mdulos a travs de ZigBee.
En el captulo I desarrollamos el alcance de nuestro proyecto, es decir todo los elementos que
integra nuestra maqueta simulando un problema as como su respectiva solucin a travs del
protocolo de comunicacin ZigBee.
En el captulo II desarrollamos el software y hardware desarrollados en nuestro proyecto,
explicando los cdigos realizados as como detallando el hardware adicional utilizado.
En el captulo III explicamos los Toolchain usados para nuestro proyecto, siendo estos
Arduino y NetBeans utilizando el lenguaje de programacin Java.
En el captulo IV detallamos las pruebas desarrolladas a lo largo de nuestro proyecto,
mencionando algunos problemas que tuvimos en su desarrollo as como las soluciones que
se realizaron para las mejoras.
1

Objetivos
Nuestro proyecto est orientado nicamente en la transmisin de datos pero con la aplicacin
especfica del diseo y construccin de un dispositivo final ZigBee para lectura remota de
medidas en un modelo de invernadero, especficamente humedad y temperatura. A
continuacin, se detallarn los objetivos principales y especficos convenidos en este informe
final.
Objetivo Principal
Implementar un prototipo de sistema de monitoreo de parmetros ambientales en un
invernadero, mediante un protocolo de comunicacin ZigBee, ya que en la actualidad estos
dispositivos electrnicos, son la mejor alternativa para redes WPAN, gracias al bajo consumo
energtico, el bajo costo y la practicidad en su diseo.
Objetivos Especficos
- Diseo y construccin de un dispositivo final ZigBee para lectura remota de medidas
en un modelo de invernadero, con libertad de colocar cualquier cultivo.
- Descripcin del Toolchain de Arduino, ya que esta plataforma fue utilizada para
generar el cdigo fuente de nuestro proyecto.
- Creacin del cdigo para los sensores y el coordinador.
- Adaptar, configurar y programar el dispositivo ZigBee coordinador, el cual va
interconectado a un Arduino y el dispositivo ZigBee Router, que acta como terminal
con los sensores, resguardando lo datos recogidos en una memoria.
- Comprobacin mediante pruebas experimentales la recepcin de datos en
comunicacin multipunto sin controlador, con controlador y sensores
- Adquirir data del monitoreo mediante el sistema de comunicacin ZigBee de
parmetros, tales como: humedad relativa y temperatura, que son las ms influyentes
en este tipo de aplicacin. Con el fin de que un usuario compruebe su comportamiento
y puedan ser controladas segn el requerimiento.
- Evaluacin de acuerdo a las especificaciones del sistema y el alcance de la
comunicacin de sensores, actuadores y otros dispositivos pequeos entre ellos.
- Diseo de un prototipo que ser un modelo estndar para poder controlar mediante el
protocolo ZigBee cualquier cultivo, bajo los parmetros de medicin de humedad y
temperatura.
2

1. Captulo I
Alcance
En el presente proyecto hemos empleado diversos dispositivos, los cuales han ayudado a
realizar el funcionamiento del protocolo de comunicacin as como desarrollar mejoras en la
implementacin del proyecto para facilitar las condiciones de uso para el usuario.
A continuacin vamos a mencionar y explicar los diferentes dispositivos usados para nuestra
red, siendo sus elementos una central (coordinador) y dos nodos (sensores).
1.1. Sensor 1
1.1.1.

Arduino UNO

El Arduino UNO es un microcontrolador basado en el ATmega328P, el cual consta de 14


pines de entrada/salida digitales, de los cuales 6 pueden utilizarse como salidas PWM, 6
entradas analgicas, un cristal de cuarzo de 16 MHZ, conexin USB, un conector de
alimentacin, un encabezado ICSP y un botn de reset.
Hemos elegido trabajar con la placa Arduino UNO, por ser la placa ms robusta de la familia
Arduino & Genuino, habiendo tenido la oportunidad de haber realizado diferentes pruebas
para determinar la mejor alternativa ptima para el proyecto.
Recomendaciones sobre el Arduino UNO:
- Puede ser alimentado a travs de la conexin USB o por una fuente de alimentacin
externa seleccionada.
- Cuenta con un polyfuse (fusible) reajustables que protege los puertos USB del nuestro
computador, no proporciona una capa adicional de proteccin.

- Funciona con un suministro entre 6-20V.


- Se recomienda un rango de alimentacin entre 7-12V debido a que si se suministrara
menos de 7V el PIN de 5V suministra menos de 5V y la junta se vuelva inestable y a
ms de 12V el regulador de voltaje se sobrecalienta daando la placa.
- Cada uno de los 14 PINES Digitales puede utilizarse como entrada y salida utilizando
el pinMode (), digitalWrite () y digitalRead () funciones, operan a 5V y cada uno de
estos pines pueden recibir o proporcionar una corriente de 20mA.
Tabla 1. Ficha tcnica Arduino UNO
Ficha tcnica
ATmega328P
Microcontroladores
5V
Tensin de funcionamiento
7-12V
Voltaje de entrada (recomendado)
6-20V
Voltaje de entrada (lmite)
14(6 proporcionan salida PWM)
PINES Digitales
6
PWM Digital PINES
6
PINES de entrada analgica
20mA
Corriente DC por E/S Pin
50mA
Corriente DC de 3.3V PIN
32KB (ATmega328P) 0.5KB utilizado
Memoria Flash
para el gestor de arranque
2KB (ATmega328P)
SRAM
1KB (ATmega328P)
EEPROM
16MHz
Velocidad de reloj
68.6mm
Largo
53.4mm
Ancho
25g
Peso
Fuente: Elaboracin propia

1.1.1.1.

Mapeo

Figura 1. Mapeo entre los pines de Arduino y puertos ATmega328P.

Fuente: www.arduino.cc [1]

Figura 2. Componentes del Arduino UNO

Fuente: www.element14.com [2]


5

1.1.2.

Mdulo XBee Router 1

Los mdulos XBee son pequeos chips azules los cuales cuentan con la capacidad de
comunicarse de forma inalmbrica unos con otros. Existen muchos tipos de mdulos XBee,
siendo su particular ventaja los pines similares con los que estos cuentan, ya que
alimentacin, tierra y los pines de comunicacin (Tx y Rx) se encuentran en la misma
posicin, haciendo que los chips sean totalmente intercambiables para la mayora de
aplicaciones.
Estos mdulos son soluciones integradas que brindan un medio inalmbrico para la
interconexin y comunicacin entre dispositivos. Utilizan el protocolo de red llamado IEE
802.15.4 para crear redes FAST POINT-TO-MULTIPOINT (punto a multipunto); o para
redes PEERT-TO-PEER (punto a punto). Fueron diseados para aplicaciones las cuales
requieren un alto trfico de datos, baja latencia y una sincronizacin de comunicacin
predecible.
ZigBee es un protocolo de alto nivel de comunicacin inalmbrica para su utilizacin con
radio fusin digital de bajo consumo. Su objetivo son las aplicaciones que requieren
comunicaciones seguras con baja tasa de envo de datos y maximizacin de la vida til de
sus bateras. Las caractersticas ms relevantes de este protocolo son su bajo consumo, su
topologa en red en malla y su fcil integracin.
Hemos optado por utilizar XBee Serie 2 porque nos brinda un mejor protocolo de salida de
energa y de datos, nos permite crear redes de malla complejas y por tanto una comunicacin
fiable y simple entre el microcontrolador, Arduino.
Tabla 2. Ficha tcnica XBee Serie 2
Ficha tcnica
250kbps Max
Velocidad de Datos
6 PINES
Entradas ADC de 10 bits
8
PINES Digitales
Modo transparente, comandos AT y modo
Modos de trabajo
API
96dBm
Sensibilidad del receptor
2mW (3dBm)
Potencia de transmisin
40mA
TX Pico de corriente
40mA
RX corriente
3.3V
Alimentacin
Fuente: Elaboracin propia

Figura 3. XBee Pinout

Fuente: www.instructables.com [3]


1.1.3.

Adaptador USB-XBee

El adaptador USB-XBee se utiliza para conectar mdulos XBee al puerto USB del ordenador.
Este conversor tiene hasta dos finalidades:
- Configurar los mdulos XBee
- Usar al PC como interfaz de comunicacin inalmbrica a travs del cable miniUSB.
- Caractersticas:
- Configuracin de parmetros XBee y otros mdulos.
- Conexin fcil a PC a travs de cable miniUSB.
- Software de configuracin XBee X-CTU.
- Permite el uso como adaptador USB-TTL.
- Voltaje: +5V (a travs de USB)
7

Figura 4. Adaptador USB-XBee

Fuente: www.electropro.pe [4]


1.1.4.

Sensor DHT11

Este sensor nos permite medir la humedad relativa y la temperatura y se caracteriza por tener
una seal digital calibrada lo cual nos garantiza una alta calidad y fiabilidad a largo plazo ya
que posee un microcontrolador de 8 bits. Para la medicin de la humedad cuenta con un
sensor tipo resistivo que trabaja correctamente entre 20-95% y para la medicin de la
temperatura presenta un sensor tipo NTC que trabaja entre 0-50C.
La interfaz que presenta de comunicacin a travs de nico hilo hace que la integracin de
este sensor a nuestro proyecto sea rpida y fcil, posee la ventaja de poseer un tamao
reducido as como un bajo consumo, la desventaja es que nos proporciona medidas enteras.
En comparacin con el sensor DHT22, este sensor es menos preciso y menos exacto, su
funcionamiento se da en un rango ms pequeo de temperatura/humedad, pero su empaque
es ms pequeo y menos caro.

Figura 5. Ficha tcnica Sensor DHT11


Ficha tcnica
DHT11
Modelo
3.3-5V
Fuente de alimentacin
Seal digital a travs de un solo bus
Seal de salida
Resistor polmero
Elemento sensor
Humedad 20-95% y temperatura 0-50C
Rango de medicin
Humedad +-4% y temperatura +-2C
Exactitud
Humedad +-1% y temperatura +-1C
Resolucin o la sensibilidad
Humedad +-1% y temperatura +-1C
Repetibilidad
+-1%RH
Histresis de humedad
+-0.5%RH/ao
Estabilidad a largo plazo
Promedio 2 segundos
Promedio de deteccin
Totalmente intercambiable
Intercambiabilidad
12*15.5*5.5mm
Dimensiones
Fuente: Elaboracin propia

Figura 6. Sensor DHT11

Fuente: felixmaocho.wordpress.com [5]


9

Figura 7. Esquema de conexin DHT11

Fuente: www.rduinostar.com [6]


1.1.4.1.

Comunicacin del sensor

El microcontrolador inicia la comunicacin configurando el pin como salida y enviando la


seal de inicio. Esta seal consiste en establecer nivel bajo durante 18ms y nivel alto durante
20us-40us.
A continuacin ponemos el pin como entrada y el sensor responder estableciendo un nivel
bajo de 80us y un nivel alto de 80us. Una vez realizado esto el sensor enviar 5 bytes (40
bits) de forma continua.

Figura 8. Diferencia de tiempo para la transmisin de "1s" y "0s"

Fuente: www.embedded-lab.com [7]


10

Los 5 bytes recibidos son los siguientes:


-

Byte 0: es la parte entera de la humedad relativa.


Byte 1: es la parte decimal de la humedad relativa.
Byte 2: es la parte entera de la temperatura.
Byte 3: es la parte decimal de la temperatura.
Byte 4: es el checksum.

Como el sensor no emplea decimales entonces podemos ignorar la informacin delos bits 2
y 4 que son la parte decimal de la medicin y por lo tanto nos quedamos con los bits 1y 3.
El checksum se emplea para confirmar que la informacin recibida es correcta, y se calcula
sumando los 4 bytes (byte 1, byte 2, byte 3 y byte 4) y cogiendo solo los 8 bits menos
significativos del resultado.
Cada uno de los bits se enva siguiendo esta estructura: cuando el sensor va a enviar un bit,
pone el pin a 0 durante 50us, y luego lo pone a 1 durante 26-28us para sealizar un 0,
o durante 70us para sealizar un 1.
Figura 9. Diferencia de tiempo para la transmisin de "1s" y "0s"

Fuente: http://embedded-lab.com [7]


Figura 10. Seales de inicio, respuesta y datos en secuencia

Fuente: www.embedded-lab.com [7]

11

Una vez enviados todos los bits, el sensor pone el pin de datos a 0 durante 50us y luego lo
deja a nivel 1, una vez terminada la transmisin, el sensor pasa al estado de bajo consumo de
energa.
1.1.5.

Pantalla LCD 16x2

Una pantalla LCD es un dispositivo el cual est diseado para mostrar informacin de manera
grfica. El trmino LCD hace referencia a Liquid Crystal Display. Generalmente las pantallas
LCD estn unidas a una placa de circuito y poseen pines de entrada/salida de datos. Arduino
es capaz de utilizar las pantallas LCD para desplegar datos.
Este display LCD consta de 2 filas por 16 columnas, lo cual nos permite imprimir caracteres
en 2 filas en las cuales entran 16 caracteres.
Figura 11. PINOUT de una pantalla LCD

Fuente: www.panamahitek.com [8]


Estas pantallas constan de 16 pines. De izquierda a derecha en la Figura 10, sus usos son los
siguientes:
-

Pin 1: VSS o GND


Pin 2: VDD o alimentacin (+5V)
Pin 3: Voltaje de contraste. Se conecta a un potencimetro.
Pin 4: Seleccin de registro. Aqu se selecciona el dispositivo para su uso.
Pin 5: Lectura/Escritura. Dependiendo del estado (HIGH o LOW), se podr escribir o leer
datos en el LCD
Pin 6: Enable. Es el pin que habilita o deshabilita el LCD.
Pin 7 hasta Pin 14: Son los pines de datos por donde se enva o recibe informacin.
Pin 15: El nodo del LED de iluminacin de fondo (+5V).
12

Pin 16: El ctodo del LED de iluminacin de fondo (GND).


1.1.6.

Placa diseada para ser compatible con Arduino UNO.

Se desarroll un hardware compatible con Arduino Uno y las conexiones de los dispositivos
anteriormente mencionados.
Figura 12. Placa Sensor 1

Fuente: Elaboracin propia


1.2. Sensor 2
Para el segundo nodo o Sensor 2 hemos utilizado los mismos elementos empleados para el
Sensor 1, con la particularidad de haber establecido un Mdulo XBee Router 2 y haber
empleado un nuevo elemento descrito a continuacin.
1.2.1.

Potencimetro 50K

En nuestro proyecto hemos usado dos pantallas LCD, la cual una es nueva y ha sido usada
para el Sensor 1, mientras que la otra pantalla LCD, la cual est desgastada, se ha usado para
el Sensor 2.

13

En las pruebas la segunda pantalla LCD pero no mostraba los datos grficamente, por eso se
us la alternativa de poder usar un potencimetro con la finalidad de variar el contraste de la
pantalla LCD, logrando de esta forma mostrar los datos deseados.
Figura 13. Potencimetro 50K

Fuente: es.wikipedia.org [9]


1.2.2.

Placa diseada para ser compatible con Arduino UNO

Debido a que se ha usado el potencimetro es necesario disear una nueva placa que sea
compatible con el Arduino Uno considerando de esta manera el potencimetro.
Figura 14. Placa Sensor 2

Fuente: Elaboracin propia


14

1.3. Central
Para el Coordinador o la Central hemos utilizado de igual manera un Adaptador XBee, as
como hemos establecido un Mdulo XBee Coordinador, habiendo empleando nuevos
elementos descritos a continuacin.
1.3.1.

Arduino NANO

El Arduino NANO es una placa pequea, completa y amigable por su facilidad de uso basado
en el ATmega328 (Arduino Nano 3.x) o ATmega168 (Arduino Nano 2.x). Tiene una
funcionalidad similar a la del Arduino Duemilanove, pero en paquete diferente. Esta carece
solo de un conector de alimentacin DC y funciona con un cable Mini-B USB en lugar de
uno estndar.
Tabla 3. Ficha tcnica Arduino NANO
Atmel ATmega168 or ATmega328
Microcontroladores
5V
Tensin de funcionamiento
7-12 V
Voltaje de entrada
(Recomendado)
6-20 V
Voltaje de entrada (Lmite)
14 (of which 6 provide PWM output)
Pines Digitales
8
Pines de entrada analgica
40 mA
Corriente DC por E/S Pin
16 KB (ATmega168) or 32 KB (ATmega328) of which
Memoria Flash
2 KB used by bootloader
1 KB (ATmega168) or 2 KB (ATmega328)
SRAM
512 bytes (ATmega168) or 1 KB (ATmega328)
EEPROM
16 MHz
Velocidad de reloj
0.73" x 1.70"
Dimensiones
45 mm
Largo
18 mm
Ancho
5g
Peso
Fuente: Elaboracin propia
Recomendaciones sobre el Arduino NANO:
-

El Arduino Nano puede ser alimentado a travs de la conexin USB Mini-B, a travs
del Pin 30 por medio de una alimentacin externa no regulada 6-20V, o a travs del
Pin 27 por medio de una alimentacin externa de 5V.

Cada uno de los 14 pines digitales en el Nano se puede utilizar como una entrada o
salida, utilizando las funciones pinMode (), digitalWrite () y digital Read (). Cada pin
puede proporcionar o recibir un mximo de 40mA y tiene una resistencia interna pullup de 20-50 kohms.
15

El Arduino Nano tiene una serie facilidades para la comunicacin con un ordenador,
otro Arduino y otro Microcontroladores.
1.3.2.

Adaptador SD Card

Es un mdulo de lector de tarjeta Micro SD que permite guardar datos, la interfaz SPI va el
conductor del sistema de archivos, se comunica por el protocolo I2C.
Detalles:
-

El nivel de conversin de la placa que puede interactuar es 5V o 3.3V.

La fuente de alimentacin es de 4.5V-5.5V. La interfaz de comunicacin es un


interfaz SPI estndar.

La interfaz de control consta de 6 pines, los cuales son: GND, VCC, MISO, MOSI,
SCK, CS. GND es la tierra, VCC es la fuente de alimentacin, MISO, MOSI, SCK
es un bus SPI, CS es el pin de seal Chip Select.
Figura 15. MicroSD Card Adapter (Catalex)

Fuente: www.dx.com [10]


1.3.3.

Placa diseada para ser compatible con Arduino NANO

Se desarroll un hardware compatible con Arduino Nano y las conexiones de los dispositivos
anteriormente mencionados.

16

Figura 16. Placa Central

Fuente: Elaboracin propia

17

2. Captulo II
Diseo
2.1. Software
2.1.1.

Programacin de los Sensores

Los mdulos ZigBee, cada uno de ellos tiene una direccin nica de 64bits que viene grabada
de fbrica. Por otro lado, la red ZigBee, utiliza para sus algoritmos de ruteo direcciones de
16 bits, cada vez que un dispositivo se asocia a una red
Para nuestro proyecto estos mdulos XBee se han ajustado para usarse en redes de
configuracin punto a punto.
Como ya se ha especificado los mdulos XBee son de Serie 2, los cuales nos permite hacer
redes MESH, que son redes ms complejas, permiten acceder a un punto remoto utilizando
mdulos intermedios para llegar como routers (Adems los mdulos automticamente
generaran la red entre ellos, sin intervencin humana alguna, permitiendo la reparacin de la
red en caso de que algn nodo falle; al mismo tiempo la red por s sola resuelve la mejor ruta
para un determinado paquete).
Para nuestro proyecto no hace falta hacer esta red MESH debido a que la distancia de punto
a punto no son lo suficientemente grandes como para establecer una red como esta, pero
queremos hacer un inciso en esto porque no debemos pensar como solo una simple
transmisin de datos de punto a punto.
La idea principal de la programacin de los sensores se ve reflejada en el siguiente esquema.

18

Ilustracin 1. Diagrama de Programacin de los Sensores


Nombre del
Sensor
Imprimir en LCD
Variable Sensor
DHT11

Lectura de
entradas
digitales

Variable Sensor

Imprimir en
puerto serial

Data Sensor # Tx
Serial Xbee

Fuente: Elaboracin propia


El sensor nos dar una lectura de temperatura y humedad del ambiente al cual se ver
expuesto, esta informacin digital (entrada digital) se podr apreciar por cada 2 segundos en
una pantalla LCD, donde aparecer Sensor 1 (si corresponde a la lectura realizada por el
sensor 1) y la variable (es la lectura de temperatura y humedad) lo mismo ser para el Sensor
2 (si corresponde a la lectura realizada por el sensor 2) y su variable.
Ahora no solo se imprimir la lectura de temperatura y humedad en la pantalla LCD, si no
tambin se imprimir por medio de un puerto serial hacia el mdulo XBee para ser luego
transmitido al coordinador general y guardar la informacin.
2.1.2.

Programacin del Coordinador

Modo de operacin de transmitir y recibir se encuentra cuando al mdulo le llega algn


paquete RF a travs de la antena (Modo Receive) o cuando se manda informacin serial al
buffer del pin 3 (UART Data in) que luego ser transmitida (Modo Transmit).
La informacin transmitida puede ser Directa o Indirecta. En el modo Directo la informacin
se enva inmediatamente a la direccin de destino. En el modo Indirecto la informacin es
retenida durante un perodo de tiempo y es enviada slo cuando la direccin de destino la
solicita. Para nuestro proyecto se trata de una transmisin directa, porque se ha desarrollado
una programacin que consiste en que cada dos segundos nos muestre en el LCD los
resultados obtenidos.
El siguiente esquema tramamos de explicar de forma sencilla la idea que se tiene sobre la
transmisin de datos desde el mdulo XBee y la impresin de estos datos.

19

Ilustracin 2. Diagrama de programacin del Coordinador

Puerto Serial
Disponible

Data Sensor #
Rx Serial XBee

Almacena en
Buffer

Si es "Sensor 1"

Imprime en
Puerto Serial a
PC
Data guardada
en memoria SD

Decodificacin
del Buffer

Si es "Sensor 2"

Imprime en
Puerto Serial a
PC
Data guardada
en memoria SD

Fuente: Elaboracin propia


2.2. Hardware
2.2.1.

Placa Central (Coordinador)


Figura 17. Placa Central en ISIS PROTEUS

Fuente: Elaboracin propia


20

Figura 18. Placa Central en Ares Professional

Fuente: Elaboracin propia


2.2.2.

Sensor 1
Figura 19. Placa Sensor 1 en ISIS PROTEUS

Fuente: Elaboracin propia


21

Figura 20. Placa Sensor 1 en Ares Professional

Fuente: Elaboracin propia


2.2.3.

Sensor 2
Figura 21. Placa Sensor 2 en ISIS PROTEUS

Fuente: Elaboracin propia


22

Figura 22. Placa Sensor 2 en ISIS PROTEUS

Fuente: Elaboracin propia

23

3. Captulo III
Implementacin
3.1. Toolchain de Arduino
El entorno de desarrollo de Arduino tiene el siguiente esquema, como se aprecia en la figura
con sus funciones especficas para el desarrollo del programa.
Figura 23. Software Arduino

Fuente: Elaboracin propia (Captura de pantalla)


24

En el cuadro del editor de texto escribiremos el cdigo del programa que queramos que
Arduino ejecute.
En los botones de acceso rpido tenemos los siguientes iconos:
Verifica si tu programa est bien escrito y puede funcionar.
Carga el programa a la placa de Arduino tras compilarlo.
Crea un programa nuevo.
Abre un programa.
Guarda el programa en el disco duro del ordenador.
Abre una ventana de comunicacin con la placa Arduino en la que podemos ver las
respuestas que nuestro Arduino nos est dando.
Finalmente, en el rea de mensajes y la consola Arduino nos ir dando informacin sobre si
la consola est compilando, cargando y sobre los fallos o errores que se produzcan tanto en
el cdigo como en el propio IDE.
3.1.1.

Funcionamiento de la plataforma y sus herramientas

El programa Arduino realiza algunas pequeas transformaciones para asegurarse de que el


cdigo es correcto C o C ++ (dos lenguajes de programacin comunes). A continuacin, se
pasa a un compilador (avr-gcc), lo que convierte el cdigo legible en mquina instrucciones
legibles (o archivos objeto). Luego, el cdigo se combina con las bibliotecas estndar de
Arduino que proporcionan funciones bsicas como digitalWrite () o Serial.print (). El
resultado es un solo archivo hexadecimal, que contiene los bytes especficos que deben ser
por escrito a la memoria de programa del chip de la placa Arduino. Este archivo se carga en
la placa: transmitida a travs de la conexin USB serie o a travs del gestor de arranque que
ya estn en el chip o con el hardware de programacin externa.
Comprendiendo el funcionamiento de los programas informticos que tiene este entorno de
Arduino, para nuestro proyecto se dio uso de las siguientes libreras en los programas de los
dispositivos.
Dht.h

Librera que permite leer el dato por entrada digital del sensor dht11.

SoftwareSerial.h

Librera que emplea funciones de comunicacin serial con Arduino

y PC. Tambin permite crear puertos seriales virtuales.


Time.h

Librera que nos permite ingresar y verificar datos de fecha y hora

en tiempo real.
String.h

Librera que contiene la definicin de todo tipo de variables,


25

funciones y operaciones de manipulacin de memoria.


SD.h

Librera para uso de escritura, lectura y registro de datos en Modulo

SD card.
SPI.h

Librera de protocolo sncrono de data serial.

LiquidCrystal.h

Librera para uso de LCD.

3.2. Toolchain de NetBeans (Java)


Para conocer un poco de esta plataforma, es un entorno de desarrollo integrado libre, hecho
principalmente para el lenguaje de programacin Java. La plataforma NetBeans permite que
las aplicaciones sean desarrolladas a partir de un conjunto de software llamados mdulos. Un
mdulo es un archivo Java que contiene clases de java escritas para interactuar con las APIs
de NetBeans y un archivo especial (manifest file) que lo identifica como mdulo. Las
aplicaciones construidas a partir de mdulos pueden ser extendidas agregndole nuevos
mdulos.
La plataforma ofrece servicios reusables comunes para las aplicaciones de escritorio,
permitiendo a los desarrolladores centrarse en la lgica de sus aplicaciones. Algunas de las
caractersticas de la aplicacin son:
Gestin de la interfaz de usuario ( mens y barras de herramientas )
Gestin de configuracin de usuario
Gestin de almacenamiento (guardar o cargar algn tipo de dato)
Gestin de ventana
Marco Asistente (soporta dilogos para a paso)
Librera visual de Netbeans
Herramientas de desarrollo integrado

26

Figura 24. Software NetBeans

Fuente: Elaboracin propia (Captura de pantalla)


Libreras usadas en la interfaz del programa Grafica de Sensores XBee.
Arduino v2.5.0.jar

La librera Arduino para Java es una compilacin de mtodos que

permite comunicar aplicaciones en Java con Arduino.


Jfreechart-1.0.19.jar Permite hacer diferentes tipos de grficos con plantillas
preestablecidas y con opciones dinmicas en Java.
Jcommon-1.0.23.jar Es una clase de librera en java usada para el soporte de la librera
Freechart.
RXTXcomm.jar

Librera que permite establecer la comunicacin serial con


funciones especficas a travs de los puertos COM disponibles.

27

3.3. IDE (Ambiente de Desarrollo Integrado)


3.3.1.

Arduino.

Se us la plataforma Arduino 1.5.6 para la generacin de cdigo de fuente de 3 programas


nicos del proyecto. Los dispositivos Central, Sensor 1 y Sensor 2 poseen su micro
controlador que corre un programa en lenguaje C para ejecutar distintas funciones, a
continuacin se detallan los sketches desarrollados para los dispositivos.
3.3.1.1.

Programa Sensor 1

Descripcin:
- Leer datos de los sensores dht11 por sus pines digitales 5 y 6.
- Almacenar los datos en valores enteros para luego ser enviados por el puerto serial.
- Los pines Tx y Rx van conectados directamente con los pines del mdulo XBee, usando
- el adaptador para adecuar el voltaje de entrada (3.3v).
- El adaptador con el mdulo XBee estarn conectados a los pines de 5v y GND del
Arduino.
- Los sensores estarn conectados a los pines de 3.3v para su alimentacin.
3.3.1.1.1.

Cdigo Sensor 1

// MODULO XBEE ROUTER - TRANSMISOR


//librerias:
#include <SPI.h>
#include "DHT.h" //Libreria usada para procesar el valor digital de los sensores DHT11.
#include <LiquidCrystal.h>;
LiquidCrystal lcd(2,3,4,9,10,11,12);
//Declaro Variables Globales
#define DHTPINS1 7 // Pin de conexion del sensor1
#define DHTTYPE DHT11 // Tipos de DHT por parte de las librerias.
//Uso de la libreria con la funcin --> dht( Pin conectado del sensor, Tipo de sensor)
DHT dht1(DHTPINS1, DHTTYPE);
float h1;
float t1;

28

void setup() {
//Conexin Puerto Serial
Serial.begin(9600); // Velocidad de baudios
lcd.begin(2,16);
dht1.begin(); //Se inicia el Sensor 1
//Serial.println("Comenzando Transmision...");
//Serial.println("Enviando datos Temperatura y Humedad");
}
void loop(){
//Declaracin de variables enteras usando la funcion de leer humedad y temperatura:
if(Serial.available()>0){
h1 = dht1.readHumidity(); //Se lee la humedad 1
t1= dht1.readTemperature(); // Se lee la temperatura 1
String trama1 = "";
trama1 = String("Sensor1") + "," + String(h1,1) + "," + String(t1) + ","; // adjuntamos la
data en una cadena
Serial.println(trama1);
delay(2000);
imprimirlcd();
}}
void imprimirlcd ()
{ lcd.clear();
lcd.setCursor(0,6);
lcd.print("Sensor 1");
delay(2000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Humedad =");
lcd.setCursor(9,0);
lcd.print(h1,1);
lcd.setCursor(15,0);
lcd.print("%");
lcd.setCursor(0,1);
lcd.print("Temp =");
lcd.setCursor(9,1);
lcd.print(t1);
lcd.setCursor(15,1);
lcd.print("C ");
}

29

3.3.1.2.

Programa Sensor 2:

Descripcin:
- Leer datos de los sensores dht11 por sus pines digitales 5 y 6.
- Almacenar los datos en valores enteros para luego ser enviados por el puerto serial.
- Los pines Tx y Rx van conectados directamente con los pines del mdulo XBee, usando
el adaptador para adecuar el voltaje de entrada (3.3v).
- El adaptador con el mdulo XBee estarn conectados a los pines de 5v y GND del
Arduino.
- Los sensores estarn conectados a los pines de 3.3v para su alimentacin.
3.3.1.2.1.

Cdigo Sensor 2

// MODULO XBEE ROUTER - TRANSMISOR


//librerias:
#include <SPI.h>
#include "DHT.h" //Libreria usada para procesar el valor digital de los sensores DHT11.
#include <LiquidCrystal.h>;
LiquidCrystal lcd(2,3,4,9,10,11,12);
//Declaro Variables Globales
#define DHTPINS2 7 // Pin de conexion del sensor1
#define DHTTYPE DHT11 // Tipos de DHT por parte de las librerias.
//Uso de la libreria con la funcin --> dht( Pin conectado del sensor, Tipo de sensor)
DHT dht2(DHTPINS2, DHTTYPE);
float h2, t2;
void setup() {
//Conexin puerto serial
Serial.begin(9600); // Velocidad de baudios
lcd.begin(2,16);
dht2.begin(); //Se inicia el sensor 1
//Serial.println("Comenzando Transmision...");
//Serial.println("Enviando datos Temperatura y Humedad");
}
void loop(){
30

//Declaracin de variables enteras usando la funcion de leer humedad y temperatura:


if(Serial.available()>0)
{ h2 = dht2.readHumidity(); //Se lee la humedad 2
t2= dht2.readTemperature(); // Se lee la temperatura 2
String trama2 = "";
trama2 = String("Sensor2") + "," + String(h2,1) + "," + String(t2) + ",";
Serial.println(trama2);
delay(2000); // Cada 2 segundos
imprimirlcd();
//Lo que veremos en el monitor serie ser ---> Sensor2,41,30,
}}
void imprimirlcd ()
{ lcd.clear();
lcd.setCursor(0,6);
lcd.print("Sensor 2");
delay(2000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Humedad =");
lcd.setCursor(9,0);
lcd.print(h2,1);
lcd.setCursor(15,0);
lcd.print("%");
lcd.setCursor(0,1);
lcd.print("Temp =");
lcd.setCursor(9,1);
lcd.print(t2);
lcd.setCursor(15,1);
lcd.print("C ");
}
3.3.1.3.

Programa Central:

Descripcin:
- Recibir datos de los sensores DHT11 por sus pines 5 y 6, usando la libreria
SoftwareSerial, se programa para que esos pines funcionen como puerto serial.
Recordar que por estos pines estn conectados los pines de Tx y Rx del mdulo
coordinador.
- Almacenar los datos recibidos en un buffer con un tamao especfico, usando algunas
funciones de la libreria string.
31

- Luego de recibir el dato con la longitud especfica se procede a parsear o separar la


trama recibida para extraer los datos de temperatura y humedad de cada sensor. Una
variable de tipo long, almacenar los datos separados y luego sern almacenados en
variables enteras independientes.
- Luego se procede a escribir la informacin en una memoria SD Card, con las debidas
conexiones de los pines al Arduino y haciendo uso de las librerias SD.h y SPI.h con
sus respectivas funciones.
3.3.1.3.1.

Cdigo Coordinador

** MOSI - pin 11
** MISO - pin 12
** CLK - pin 13
** CS - pin 10
Nota: Algunas lineas de Serial.print estan comentadas porque fueron usadas como prueba
para ver el funcionamiento del codigo por el monitor serie.
// MODULO XBEE COORDINADOR - RECEPTOR
//librerias SD card:
#include <SD.h>
#include <SPI.h>
//librerias ultilizadas:
#include <SoftwareSerial.h>
#include <String.h>
//Declaro los pines de TX y RX para mi serial port virtual en arduino.
SoftwareSerial mySerial(5, 6); // RX, TX
//*DECLARACIN DE VARIABLES
//Variables usadas de MircoSD Card Adapter
const int chipSelect = 10; //Pin 10 del arduino se establecer como salida debido a la librera
int contador1 = 0; //Numero de datos que sern almacenados
int contador2 = 0;
int i=0;
//Variables usadas en la recepcin
#define MAX_BUFFER 200
// Almacenamos el estado como variable global
int estado=LOW;
32

int estado_transf=LOW;
// Almacenamos tambin el nmero de milisegundos anterior
unsigned long momento_anterior=0;
unsigned long bytes_recibidos=0;
//data recibida:
char *Indata;
char *Sen1;
char *Sen2;
//Variables de Sensores 1 y 2
int h1 = 0;
int t1 = 0;
int h2 = 0;
int t2 = 0;
//Variable para almacenar los datos separados
long valores[3]; // 0 - 3 : Variables separadas de la cadena recibida
void setup() {
Serial.begin(9600);
mySerial.begin(9600);
Serial.println("Comenzando Recepcion de prueba XBee - Arduino");
//Condiciones del Modulo SD card
Serial.print("Inicializando sd card...");
pinMode(chipSelect,OUTPUT); // Establece el pin 10 como salida
//delay(2000);
if (!SD.begin(chipSelect)) // Si el pin10 fall en lectura de la tarjeta sd, imprime aviso fallo
lectura...
{
Serial.print("Fallo lectura de tarjeta");
//delay(2000);
return;
}
Serial.print("SD incializada ok.");
//delay(2000);
//Se inicia la Recepcin.
mySerial.println("C"); // Trama que activa los demas sensores.

33

}
//Funcin que devuelve variable string especifica y un valor entero
int serialGetString(char *string, int max)
{
unsigned i=0;
char sIn;
// Queremos que la cadena se rellene hasta max-2 para que en el carcter
// max-1 (el ltimo) podamos meter el terminador \0
--max;
while (mySerial.available() && i<max) //Mientras mi puerto serial virtual este abierto y el
valor entero i sea menor a max
{
sIn=mySerial.read(); //Leo mi data y lo almaceno en un string con un contador (i++)
string[i++]=sIn;
// La recepcin tiene una latencia, se produce a travs de una interrupcin, que a lo mejor
se ejecuta
// Un poco despus del Serial.available() por lo que el dato no entrara, por eso hacemos
una pequea espera
delayMicroseconds(500);
}
string[i++]='\0'; // Coloco un terminador para especificar que se termin de recibir los datos.
return i; //Se repite el proceso para recibir otro dato.
}
void loop() {
int recibe;
unsigned long momento_actual=millis();
char buf[MAX_BUFFER];
// No bloqueante, si hay algo para leer entramos, si no, no.
if(mySerial.available())
{
serialGetString(buf, MAX_BUFFER); // Funcin dada anteriormente que escribe el
buffer completo con su longitud especifica.
// Escribimos el buffer completo
//Serial.print((char*)buf); imprimie la variable que tiene aadido el terminador '\0'
Indata = (char*)buf; //almacenamos el dato en una variable char
if(strncmp(Indata,"Sensor1",7) ==0)
{
Sen1 = strtok(Indata,"\n");
Serial.print(Sen1); //Imprime por el puerto serial al Programa Grafica Sensores
parse_S1();
contador1++;
sdcard_S1();
}
34

if(strncmp(Indata,"Sensor2",7) ==0)
{
Sen2 = strtok(Indata,"\n");
Serial.println(Sen2); //Imprime por el puerto serial al Programa Grafica Sensores
parse_S2();
contador2++;
sdcard_S2();
} } }
void parse_S1()
{
//char signal[] = "125,0,255"; // Esto es lo que tengo que cambiar por lo que venga del
puerto serie (ejemplo)
char *result = NULL;
int index = 0 ; //Iniciamos en la posicion 1 de la cadena Sen1 y Sen2
result = strtok(Sen1, ","); // Funcion strtok que separan las variables
while( (result != NULL) && (index < 3) ) { // Mientras la variable sea diferente a NULL
(vacia) y index menor a 4 (nmero de datos a separar)
valores[index++] = atol(result); // Aqui se convierten en valores enteros y se almacenan en
una variable de tipo long
result = strtok( NULL, "," ); // Aqui vacia result para repetir el proceso.
}
//2 parametros de 1 sensores se almacenan en valores enteros
h1 = valores[1];
t1 = valores[2];
}
void parse_S2()
{ char *result = NULL;
int index = 0 ; //Iniciamos en la posicion 1 de la cadena Sen1 y Sen2
result = strtok(Sen2, ","); // Funcion strtok que separan las variables
while( (result != NULL) && (index < 3) ) { // Mientras la variable sea diferente a NULL
(vacia) y index menor a 4 (numero de datos a separar)
valores[index++] = atol(result); // Aqui se convierten en valores enteros y se almacenan
en una variable de tipo long
result = strtok( NULL, "," ); // Aqui vacia result para repetir el proceso.
}
//2 parametros de 1 sensores se almacenan en valores enteros
//Sensor1,35,29 // con index = 1
h2 = valores[1]; //0
t2 = valores[2]; //0
}
void sdcard_S1()
{ String dataString = ""; //Cadena vacia

35

dataString = String(contador1) + "," + String("Humedad S1") + "," + String(h1) + ","


+String("Temperatura S1") + "," + String(t1) + ",";
File dafile = SD.open("SENSOR1.txt", FILE_WRITE);
if( dafile)
{
dafile.print(","); //Se puede colocar el tiempo de cada impresion
dafile.println(dataString);
dafile.close();
//Serial.println(dataString); // Imprimir para visualizar que se esta mandando al sdcard
}
else
{
Serial.println("Error al abrir datalog.text");
}}
void sdcard_S2()
{
String dataString = ""; //Cadena vacia
dataString = String(contador2) + "," + String("Humedad S2") + "," + String(h2) + ","
+String("Temperatura S2") + "," + String(t2) + ",";
File dafile = SD.open("SENSOR2.txt", FILE_WRITE);
if( dafile)
{
dafile.print(","); //Se puede colocar el tiempo de cada impresion
dafile.println(dataString);
dafile.close();
//Serial.println(dataString); // Imprimir para visualizar que se esta mandando al sdcard
}
else
{
Serial.println("Error al abrir datalog.text");
}}
3.3.2.

Netbeans.

Esta plataforma nos permite hacer un desarrollo de un software ms especfico y flexible para
las distintas aplicaciones que se requieran, por este motivo se eligi usar este software. La
aplicacin tendr la funcin de monitorear los datos recibidos de los sensores.

36

Figura 25. Software desarrollado para realizar grficas

Fuente: Elaboracin propia (Captura de pantalla)

37

4. Captulo IV
Pruebas
4.1. Recepcin de datos en comunicacin multipunto sin microcontrolador.
Con los 2 XBee programados anteriormente como Router y Coordinador, se agrega un XBee
ms a nuestra red de sensores. Todos los mdulos estn programados con su firmware ZigBee
y versin actualizada, con el software XCTU nos permite ingresar los comandos respectivos
y actualizar su versin de firmware.
Ya tenemos programado un mdulo XBee que tendr la funcin de Coordinador y otro XBee
con la funcin de Router. El nuevo mdulo XBee tambin tendr la funcin de Router para
asi establecer nuestra red de 1 Coordinador con sus 2 nodos.
Establecemos los parmetros de Router con su direccionamiento por defecto como lo indica
la siguiente tabla:

PAN ID
DH
DL
NI

Tabla 4. Comunicacin Punto a Multipunto


Coordinador
Router 1
3223
3223
0
0
FFFF
0
COOR
ROU
Fuente: Elaboracin propia

Router 2
3223
00
0
ROU2

Recordar que estamos trabajando en el modo comando AT para esta comunicacin


multipunto.
Utilizamos el software y con la herramienta que ofrece su monitor serial, probamos la
comunicacin conectando los 3 mdulos XBee a la PC. Los XBee Router enviarn paquetes
de informacin al XBee Coordinador. Los paquetes se reciben correctamente en orden a

38

travs del software XCTU. Un dato llega despus de un corto y breve tiempo del otro. La
comunicacin es exitosa.
4.2. Recepcin de datos en comunicacin multipunto con microcontrolador y sensores.
Se instalan los mdulos XBee con sus debidas conexiones en el hardware del Arduino y se
establece la comunicacin por puerto serial, con el mismo objetivo de probar la comunicacin
pero ahora con los microcontroladores enviando datos de lectura del sensor.
La comunicacin es exitosa, se reciben las tramas de los sensores 1 y 2 sin tiempos de
latencia. Se observ que se puede configurar los tiempos de envo de tramas y recepcin.
Con esta prueba ya se puede implementar los dems dispositivos para completar el
funcionamiento del proyecto.
4.3. Implementacin del sistema de comunicacin con dispositivos de monitoreo.
Se instalan las pantallas LCD en las entradas digitales del microcontrolador para su
configuracin. Se observa un problema de contraste en una de las pantallas, por este motivo
se decide usar una resistencia variable de 50k con el objetivo de mejorar el display y muestreo
de datos en los segmentos. Se muestra un resultado ptimo en el monitoreo de los sensores
en sus pantallas incorporadas.
4.4. Recepcin de datos en la central empleando el software en Java para verificar su
funcionamiento.
Ya teniendo nuestra red funcionando con la comunicacin multipunto, se procede a avanzar
con la siguiente fase, probar el funcionamiento de recepcin de datos con el software
desarrollado en NetBeans.
Este programa est diseado para recibir la data por el puerto COM designado. La central
tiene su microcontrolador que es el Arduino Nano, se encargar de enviar la informacin por
este puerto especfico. Una vez establecida la comunicacin PC y Central, se muestran los
datos recibidos en cajas de texto del programa y tambin ofrece la opcin de visualizar los
datos de temperatura y humedad en grficas con respecto al tiempo.
En tiempo real se obtienen las grficas de los sensores de manera exitosa, los sensores
muestran los datos exactos de temperatura y humedad del ambiente.
4.5. Recepcin de datos en la central empleando el software en Java y guardando datos
en el mdulo SD card con registro de hora y fecha.

39

Con el software y hardware ya funcionando, se realizan cambios en la programacin del


Arduino nano del dispositivo Central para aadir la funcin del mdulo SD Card que nos
dar el registro de temperatura y humedad de los sensores, con esto podremos guardar la
informacin que se enva. Se instala este mdulo al Arduino Nano ocupando 4 de sus entradas
digitales y configuramos su comunicacin I2C en la programacin.
Una vez terminada la conexin, se procede a escribir la data recibida de los sensores a una
memoria SD con comandos de la librera SD y SPI que trabaja Arduino. Los datos son
guardados en archivos de texto con xito. Ya tenemos nuestra red funcionando con los
dispositivos completos.
4.6. Implementar las tarjetas electrnicas de los dispositivos y probar su
funcionamiento. (Se repiten las pruebas anteriores ya con el hardware terminado).
Se procede a disear una placa compatible con los pines hembra del Arduino Uno y a la vez
que se conecte con el sensor, mdulo XBee y pantalla LCD.
Esto se hace posible gracias a una librera de Arduino en el programa Proteus y Ares para el
diseo de la tarjeta electrnica. En este caso, no se toman en cuenta los espacios que tienen
los elementos en el diseo.
Se hacen las conexiones respectivas en Proteus y luego se pasa a Ares para el diseo del
circuito impreso. Se hacen los procesos para obtener las placas. Se trabajan 3 diseos para
nuestro hardware de la red.

40

Conclusiones
- Para este proyecto se ha utilizado una comunicacin Punto-Multipunto, es decir de un
solo mdulo XBee Coordinador puedo comunicarme con los dems mdulos XBee
Routers, usando el protocolo ZigBee, que es el protocolo de comunicacin que utilizan
los mdulos XBee.
- El sensor DHT-11 usa una seal de ancho de pulso (PWM), la cual al detectar una seal
de alta magnitud indica valores lgicos, 1 o 0, y al detectar una seal de magnitud
baja indica el valor contrario, esta sera nuestra seal digital la cual nos da lectura del
parmetro Humedad y Temperatura.
- El Arduino realiza todo el procesamiento del cdigo de lenguaje C, que consiste en
un micro-controlador, que es un circuito integrado que sirve para acoplar el sensor, la
pantalla LCD y el mdulo XBee.
- Hemos establecido en este proyecto dos Arduino (UNO) que tienen la funcin de
codificar la trama que envan a un receptor, en este caso otro Arduino (NANO), que se
encargar de decodificar la trama recibida.
- Los Arduino que se encuentra en los sensores ocuparn a los XBee Router como
transmisores, y el Arduino que se encuentra en el coordinador ocupar al XBee
Coordinador como receptor de la data.
- Los XBee han sido programas con comandos AT, que son tipos de comandos que se
envan a un dispositivo para poder programar su funcionamiento. La programacin que
se utiliz para estos mdulos fue establecer los parmetros de PAN ID (rea de red
personal) y DL, DH (Direccionamientos), y NI (Identificador)
- El Arduino de los sensores enva el dato a las pantallas LCD por medio de sus entradas
digitales.
Nota: Las pantallas LCD ocupan 7 entradas, 4 digitales, una RS que es registro, RW
que es escribir, y E que es ENABLE que sirve para habilitar la pantalla LCD.
- El Arduino coordinador se encargar de recibir toda la data de los sensores, la cual
enviar por el puerto serial virtual, en este caso hemos usado dos puertos seriales, uno
es usado por el mdulo XBEE y otra para la PC.

41

- Para la conexin de la PC con el Arduino coordinador, se estableci un puerto COM


por defecto, el cual cumplir la funcin de puerto USB que reconocer el Arduino a la
PC.
- Se dise un Hardware ya desarrollado y simulado por el Software Proteus para la
conexin de todos los dispositivos, imprimindolos en una placa de fibra de vidrio con
las pistas impresas y los pines conectados para su presentacin.
- La representacin grfica de los datos puede tener diversos usos, como por ejemplo: si
se consideramos que tengamos una data considerable, podemos llegar a estimar en que
pocas del ao el rea controlada alcanza niveles significativos para una posible
prevencin en el cultivo o en el control de algn proceso.
- Para nuestro proyecto no hace falta hacer una red MESH debido a que la distancia de
punto a punto no son lo suficientemente grandes como para establecer una red como
esta, pero queremos hacer nfasis en esto porque no debemos quedarnos con la simple
idea que el mdulo XBee implica solamente transmisin de datos de punto a punto.
- Se pudo identificar que los mdulos con tecnologa ZigBee, son mdulos inteligentes
que tienen una funcionalidad variada y amplia, a pesar del tamao reducido que
presentan; y permiten un ahorro significativo de energa. Los mdulos XBee de nuestro
proyecto son de la serie 2, lo que nos permite formar redes ms avanzadas, el verdadero
objetivo del protocolo ZigBee; en cambio en nuestro caso, solamente podemos realizar
comunicacin punto a punto.
- Durante la implementacin del proyecto, pudimos notar que el mdulo XBee no trabaja
cuando el voltaje baja a niveles menores de 2.8V, pudimos notar adems que son de
fcil configuracin e implementacin, ya que no requiere de mucha circuitera
adicional, slo adaptadores de voltaje a sus entradas.
- Los mdulos XBee son bastante inmunes al ruido, celulares con llamadas entrantes,
adems de WI-FI, que podra interferir, al momento de usar la red inalmbrica los datos
se transmitieron sin problema.

42

Referencias
[1]
[2]

https://www.arduino.cc/en/Hacking/PinMapping168
http://www.element14.com/community/groups/arduino/blog/2014/03/28/getting-toknow-arduino-part-1-hello-world
[3] http://www.instructables.com/id/Use-xbees-series-2-to-control-amotor/step5/Connect-the-Xbee-to-the-arduino/
[4] http://electropro.pe/index.php?route=product/product&product_id=195
[5] https://felixmaocho.wordpress.com/2014/09/01/huerto-familiar-nebulizadorescontrol-economico-del-clima/
[6] http://rduinostar.com/documentacion/datasheets/dht11-overview/
[7] http://embedded-lab.com/blog/?p=4333
[8] http://panamahitek.com/uso-de-pantalla-lcd-con-arduino/
[9] https://es.wikipedia.org/wiki/Potenci%C3%B3metro#/media/File:Potentiometer.jpg
[10] http://www.dx.com/es/p/spi-microsd-card-adapter-v0-9b-for-arduino-works-withofficial-arduino-board-246784#.ViSTe34ve00

43

Anexos

44

Anexo A: Cronograma de actividades y tareas


Cronograma y Planificacin
Fecha

Actividades/Tareas

Responsable

Primera reunin grupal.


Identificar el proyecto
Semana 17 al 23 de
agosto

Semana 24 al 30 de
agosto

Semana 31 de
agosto al 6 de
setiembre

Semana 7 al 13 de
setiembre

Determinar problema a resolver


Asignar diversos puntos de informacin de los
dispositivos a usar
Bsqueda de proyectos similares

Comprar y adquirir
dispositivos

Investigacin de
programacin
Primer avance de
programacin
Comprar y adquirir
dispositivos
Comprar y adquirir
dispositivos

Sensores
Mdulos XBee y Pantallas
LCD
Arduino UNO, y mdulo y
memoria SD
Cables Jumper

Todos

Ingrid Simn
Carlos Vega
Csar Zapata
Juan Diego Villegas
Ingrid Simn

Sensores

Csar Zapata

XBee

Carlos Vega

Arduino UNO

Juan Diego Villegas

Sensores
XBee

Todos

Arduino UNO
Adaptadores XBee

Ingrid Simn

Batera 9V

Csar Zapata

Planteamiento de diseo de maqueta para el


problema

Todos

Correccin de programacin

Carlos Vega

Elaboracin y entrega primer informe

Todos

Semana 21 al 25 de
setiembre

Semana previa a Exmenes Parciales

Todos

Semanas 21 de
setiembre al 9 de
octubre

Exmenes Parciales

Todos

Semana 14 al 18 de
setiembre

Desarrollo fsico de maqueta


Programacin en Arduino de la SD Card
Elaboracin informe final

Ingrid Simn y Csar


Zapata
Juan Diego Villegas
Carlos Vega
Todos

Entrega informe final

Todos

Compra de materiales para maqueta


Semana 12 al 16 de
octubre
Semana 13 al 16 de
octubre

45

Anexo B: Diseo de Maqueta


Materiales
- 3 tapas de vidrio acrlico transparente
- 3 cajas de paso de PVC de 10x10cm
- Separadores con pernos
- Tornillos
- 3 placas de fibra de vidrio de 10x10cm
- Espadines hembras, machos, machos en L
- 1 potencimetro de 50Kohm
- Jumpers de colores pequeos y largos, hembra-hembra, hembra-macho, machomacho
- 1 tomacorriente triple
- 1 enchufe
- 1 cable para el enchufe
- 2 cables USB con conector CENTRONICS
- 2 cargadores de celular con puerto USB
- 2 cubos de vidrio semidoble de 15x15cm
- 2 plancha de Tecnopor de 15x15cm
- 1 mica transparente
- 1 barra de silicona
- 1 pinturas esmalte
46

- 1 tabla de madera de 45x60cm


- 2 Arduino UNO
- 1 Arduino NANO
- 3 mdulos XBEE
- 2 pantallas LCD 16x2 segmentos
- 2 sensores DTH-11 con adaptador
- 1 micro SD Card
- 1 cable USB con entrada a conector micro USB
Diseo
Para proteger cada nodo (Los dos sensores) y el coordinador, se ha utilizado cajas de paso de
PVC de 10x10cm, las cuales han sido acondicionadas con orificios que permiten tener una
conexin de alimentacin con los Arduino, y los sensores puedan conectarse con el ambiente.
Se ha utilizado planchas de vidrio acrlico transparente como cubiertas de las cajas de paso
para as poder visualizar todos los componentes que contiene cada caja de paso (Arduino,
pantalla LCD, mdulo XBee, placa de fibra de vidrio) y que estn funcionando
correctamente, lo que se puede verificar con las luces que destella cada componente.
Para simular un ambiente en donde se va a medir los valores de humedad y temperatura,
hemos usado cubos de vidrio cubiertos con tecnopor, los cuales aislarn del exterior a los
sensores y as se podrn acondicionar ambientes distintos para hacer contrastes con las
lecturas obtenidas de cada uno.
Los cubos de vidrio simulan un terreno o un rea de cultivo, que al utilizar tierra hmeda,
podremos tomar lecturas de humedad y temperatura a la que se encuentra esta y as poder
predecir el estado en el que se encuentra el cultivo.
Para este trabajo se ha tratado de simular dos ambientes distintos.

47

Figura 26. Proceso de diseo de maqueta (1)

Fuente: Elaboracin propia


Figura 27. Proceso de diseo de maqueta (2)

Fuente: Elaboracin propia


48

Figura 28. Proceso de diseo de maqueta (3)

Fuente: Elaboracin propia


Figura 29. Proceso de diseo de maqueta (4)

Fuente: Elaboracin propia


49

Figura 30. Proceso de diseo de maqueta (5)

Fuente: Elaboracin propia


Figura 31. Proceso de diseo de maqueta (6)

Fuente: Elaboracin propia


50

Figura 32. Proceso de diseo de maqueta (7)

Fuente: Elaboracin propia


Figura 33. Proceso de diseo de maqueta (8)

Fuente: Elaboracin propia


51

You might also like