Professional Documents
Culture Documents
DE
PIURA
FACULTAD DE INGENIERA
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.
1.1.1.1.
Mapeo ........................................................................................................ 5
1.1.2.
1.1.3.
1.1.4.
1.1.4.1.
1.1.5.
1.1.6.
1.2.
Sensor 2.................................................................................................................. 13
1.2.1.
1.2.2.
1.3.
Central .................................................................................................................... 15
1.3.1.
1.3.2.
1.3.3.
Captulo II ............................................................................................................................. 18
Diseo ................................................................................................................................... 18
2.1. Software ..................................................................................................................... 18
2.1.1.
2.1.2.
2.2.
Hardware ................................................................................................................ 20
2.2.1.
2.2.2.
Sensor 1 .......................................................................................................... 21
2.2.3.
Sensor 2 .......................................................................................................... 22
3.1.1.
3.2.
3.3.
3.3.1.
Arduino. .......................................................................................................... 28
3.3.1.1.
Netbeans. ........................................................................................................ 36
Captulo IV ........................................................................................................................... 38
Pruebas.............................................................................................................................................. 38
4.1.
4.2.
4.3.
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
1.1.1.1.
Mapeo
1.1.2.
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
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
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.
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"
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.
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
Se desarroll un hardware compatible con Arduino Uno y las conexiones de los dispositivos
anteriormente mencionados.
Figura 12. Placa Sensor 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
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
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:
-
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)
Se desarroll un hardware compatible con Arduino Nano y las conexiones de los dispositivos
anteriormente mencionados.
16
17
2. Captulo II
Diseo
2.1. Software
2.1.1.
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
Lectura de
entradas
digitales
Variable Sensor
Imprimir en
puerto serial
Data Sensor # Tx
Serial Xbee
19
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
Sensor 1
Figura 19. Placa Sensor 1 en ISIS PROTEUS
Sensor 2
Figura 21. Placa Sensor 2 en ISIS PROTEUS
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
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.
Librera que permite leer el dato por entrada digital del sensor dht11.
SoftwareSerial.h
en tiempo real.
String.h
SD card.
SPI.h
LiquidCrystal.h
26
27
Arduino.
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
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
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
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
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
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
Router 2
3223
00
0
ROU2
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
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
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
Actividades/Tareas
Responsable
Semana 24 al 30 de
agosto
Semana 31 de
agosto al 6 de
setiembre
Semana 7 al 13 de
setiembre
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
Sensores
XBee
Todos
Arduino UNO
Adaptadores XBee
Ingrid Simn
Batera 9V
Csar Zapata
Todos
Correccin de programacin
Carlos Vega
Todos
Semana 21 al 25 de
setiembre
Todos
Semanas 21 de
setiembre al 9 de
octubre
Exmenes Parciales
Todos
Semana 14 al 18 de
setiembre
Todos
45
47