Está en la página 1de 17

DISEO E IMPLEMENTACIN DE SISTEMA DE COMUNICACIN DE DATOS PARA LA EVALUACIN DEL AGUA EN LAS AVCOLAS Diego F.

Velasco Giraldo, Edier Mera Prez, Juan F. Viveros Diseo Electrnico 2 Universidad Autnoma de Occidente Departamento de Automtica y Electrnica Cali, Colombia Noviembre de 2010 RESUMEN Se pretende implementar un sistema de comunicacin para transmitir datos de variables medidas al agua en las avcolas, para este proyecto especfico, se transmitir temperatura nicamente.

DESCRIPCIN DE LA PROBLEMTICA (NECESIDADES) Como proyecto de grado en modalidad de pasanta institucional para la empresa Laverlam S.A. se est realizando un sistema para el anlisis fisicoqumico del agua en las avcolas permitiendo la transmisin de los datos. Especficamente, se requiere implementar un sistema de monitoreo y comunicacin de datos para evaluar la turbidez, caudal, conductividad, pH y temperatura del agua suministrada a los animales en las avcolas. Pero lo que se abordar en este caso ser nicamente el mdulo de comunicacin de los datos obtenidos, especficamente, los datos de temperatura.

OBJETIVO GENERAL Disear e implementar un sistema para sensar la temperatura del agua.

OBJETIVOS ESPECFICOS

Leer la temperatura del agua. Transmitir los datos de temperatura. Visualizar la informacin en una terminal remota (computador).

Disear y elaborar software para interpretar los datos recibidos de manera remota (interfaz grfica) para que sean comprensibles por el usuario.

MARCO TERICO Tecnologa escogida: KIT CROSSBOW El kit de desarrollo del que se ha dispuesto en el proyecto es de la marca comercial Crossbow, una de las ms extendidas y conocidas en cuanto al desarrollo de kits de hardware para la investigacin en redes de sensores inalmbricas. Este kit est compuesto por la plataforma Mote Telos B TPR2400CA. Plataforma Mote TELOS-B (TPR2400)

El mote TelosB de Crossbow (TPR2400) fue desarrollado y publicado para la comunidad de investigacin de la Universidad de Berkeley. necesario para realizar estudios de laboratorio. En una sola placa incluye: capacidad de programacin por medio del puerto USB, un transceiver IEEE 802,15,4 con antena integrada, una MCU de baja potencia con memoria extendida, y varios sensores. Brinda todo lo

Ofrece muchas ventajas, incluyendo:

Un transmisor-receptor RF de IEEE 802.15.4/ZigBee. Compatible con la banda ISM de 2,4 a 2,4835 Gigahertz. Tasa de datos de 250 Kbps Antena integrada Microcontrolador de 8MHz TI MSP430 con 10K de RAM Bajo consumo, usa dos bateras AA. Programable por medio del bus USB. Sistema operativo TinyOS 1,1,10 o superior.

Diagrama de Bloques del Crossbow TelosB:

Fuente: TelosB_Datasheet Http://www.xbow.com

Transceiver RF CC2420 de 2.4 GHz IEEE 802.15.4 / ZigBee: Para sistemas IEEE 802.15.4 de 2.4 GHz Para sistemas ZigBee Automatizacin casera/edificios

CONECT ORES DE 6 Y 10 PINES

Antena incluida
RADIO CC2420 802.15.4
MEMORIA FLASH ID SERIAL

MICROCONTROLADOR MSP430 CONVERSOR A/D

CONECTOR USB

Control Industrial
1 Redes de sensores inalmbricos

2 Perifricos de PC

3 4Descripcin El CC2420 es un transceiver de RF de 2.4 GHz para la norma IEEE 802.15.4, diseado para aplicaciones inalmbricas de bajo consumo y bajo voltaje. El CC2420 incluye un mdem bandabase DSSS (Espectro expandido de Frecuencia Directa), que proporciona una ganancia de 9 dB y una tasa de datos de 250 kbps. El CC2420 es una solucin econmica y con un alto grado de integracin, que favorece una robusta comunicacin inalmbrica en la banda ISM no licenciada de 2.4 GHz. Obedece a las regulaciones mundiales ETSI EN 300 328 y EN 300 440 clase 2 (Europa), FCC CFR47 Parte 15 (EE.UU.) y ARIB STD-T66 (Japn). El CC2420 ofrece un extenso soporte de hardware para negociacin de paquetes, Data Buffering, transmisin de Burst, encriptamiento de datos, autenticacin de datos, clculo del canal libre, indicacin de la calidad del enlace e informacin de la duracin del paquete. Estos rasgos reducen la carga host controlador y le permite al CC2420 ser una interfaz para microcontroladores de bajo costo. La configuracin de la interfaz y la transmisin/recepcin FIFOs del CC2420 se accede por medio de una interfaz SPI. En una aplicacin tpica el CC2420 se usar junto con un microcontrolador y unos componentes externos pasivos.

Funciones

Fuente: SmartRF CC2420 Datasheet

Transceiver RF IEEE 802.15.4 de 2.4GHz con un modem bandabase y con soporte MAC, todo en un solo chip. Bandabase DSSS con 2MChips/s y una tasa de efectiva de datos de 250Kbps. Apropiado para operaciones RFD y FFD. Bajo consumo de corriente (RX: 18.8 mA, TX: 17.4 mA). Bajo consumo de voltaje (2.1 3.6V) con regulador de voltaje integrado. Bajo consumo de voltaje (1.6 2.0V) con regulador de voltaje externo. Potencia de salida programable. Receptor IF de bajo I/Q. Requiere de algunos componentes externos. El Data Buffering es de 128(RX) + 128(TX) byte. Posee RSSI digital y soporte LQI. Encriptamiento MAC (AES 128). Monitor de batera. Encapsulado QLP-48 de 7*7mm (figura 8). Cumple con las normas ETSI EN 300 328, EN 300 440 clase 2, FCC CFR-47 parte 15 y ARIB STD-T66.

Software de programacin de los Telos: TinyOS

Es un sistema operativo de cdigo libre basado en eventos y destinado para utilizarse en sensores. Despus de introducirse en el mundo de las redes de sensores con el primer captulo de este trabajo, es fcil darse cuenta de la utilidad y necesidad de un sistema operativo adaptado a sensores y basado en eventos. La actividad de un nodo sensor est basada en los impulsos externos que recibe: mensajes radio de otros nodos sensores, deteccin de sonido, deteccin de una temperatura ms alta de lo habitual y que debe generar un mensaje de alerta que se propague por la red, etc. TinyOS utiliza un modelo de programacin basado en el concepto de wiring (enlazar o cablear) componentes software para producir un programa final. Este modelo de programacin adems, pone requisitos sobre como deben ser escritos los programas. TinyOS, siguiendo los patrones de las redes de sensores, toma en cuenta que puede haber muy pocos recursos disponibles (por ejemplo, 512 bytes de RAM) y que esto requiere una utilizacin de los recursos muy eficiente. Otro requerimiento tiene que ver con el concepto wiring, los programas deben ser capaces de mapear una sola llamada a funcin (input wire) para que sean llamadas mltiples funciones (output wires). Adems, TinyOS utiliza frecuentemente macros del preprocesador de C para permitir modos de compilacin alternativos (como pueden ser simuladores). La pgina en Internet donde se puede descargar el sistema operativo de distribucin libre TinyOS es www.tinyos.net, adems en esa pgina se encuentra la comunidad de desarrolladores. NESC NesC es un nuevo lenguaje de programacin, de sintaxis similar a C, en que est programado el sistema operativo TinyOS, as como sus libreras y sus aplicaciones. Las siglas con que se denomina significan Network Embedded Systems C. Originalmente TinyOS estaba programado en C (hasta su versin 0.6), sin embargo, en la transicin entre la versin 0.6 y la 1.0 se reimplement todo el sistema operativo en nesC. Las ventajas que proporcionaba nesC eran: aparicin de las interfaces (de las que se hablar posteriormente), deteccin de errores de wiring, generacin

automtica de documentos (similar a javadoc), y mayor facilidad para la optimizacin del cdigo significativo del sistema operativo respecto al anterior modelo de TinyOS. Su mayor xito fue conseguir que el cdigo de TinyOS fuese ms limpio, ms sencillo de entender y ms sencillo de escribir. TinyOS define un nmero importante de conceptos que tienen su correspondencia en el lenguaje de programacin nesC. En primer lugar, las aplicaciones nesC estn construidas por componentes con interfaces bidireccionales y bien definidas. En segundo lugar, nesC define un modelo concurrente, basado en tareas y capturadores de eventos y capaz de detectar data races en tiempo de compilacin.

DESARROLLO Y PROCEDIMIENTO Para el desarrollo del sistema se requieren cumplir condiciones iniciales de hardware y software para su programacin, tales como:

Computador apropiado con sistema operativo (Windows o Linux) y prestaciones mnimas de clculo y memoria para recibir los programas necesarios.

Instalacin del entorno de Linux para Windows Cygwin. Instalacion de librerias apropiadas. Instalacion de Eclipse IDE mas el plugin Nescdt. Instalacion de Visual Basic.

PROCEDIMIENTO Luego de tener el computador listo con las herramientas mnimas de trabajo se procede con la programacin:

Configuracin del modulo. Carga de los libreras, componentes globales. Carga de componentes especficos (sensor de temperatura).

Carga de componentes interfaces de comunicacin. Se programa el emisor o se carga la aplicacin. Se carga la rutina en el receptor, para el caso se utiliz (Base Station) un ejemplo que recibe de todos los canales, pero se configur un byte de reconocimiento para que solo recibiera del nuestro. Se configura el hardware como la seleccin del canal de transmisin. Elaboracin del la interfaz para el mostrar los datos de la variable medida en al receptor por medio de Visual Basic 6, esta se hace tomando los datos a travs del Hyper terminal del puerto COM que se use, en este caso el 11 y luego por medio de la interrupcin generada en este se toma el dato, luego se convierte el dato recibido en ascii a hexadecimal o bcd para poder lo mostrarlo en la pantalla del PC.

DIAGRAMA DE BLOQUES

TRANSMISOR:
Variable a medir (Temperatura del Agua o del Ambiente)

Sensor de temperatur a

Microcontrolad or MSP430

Transceive r CC2420

Antena Seal Transmitida

RECEPTOR:
Seal

Transceive r CC2420

Microcontrola dor MSP430

Conecto r USB

Estacin Remota (PC)

Interpretacin y anlisis de los datos (software)

Interfaz de usuario en Visual Basic 6

DESCRIPCIN En la parte inicial del sistema, en donde se obtiene el dato, es decir, la medida, se compone del sensor de temperatura y de la parte del software que configura el sensor, ordena la informacin y la sintetiza. Luego, en la transmisin se toma el dato entregado y se organiza y empaqueta para ser enviado al receptor. En el receptor, se cuenta con parte de hardware (dispositivo, antena, etc) y de software (protocolos, empaquetamiento, etc.). El receptor recibe el dato y lo provee al proceso siguiente, igualmente consta de hardware y software. El proceso a seguir es la adquisicin de los datos, donde se toma el dato que est en el receptor y se ingresa al PC. Finalmente, se tiene la interfaz de usuario, en la cual se toma el dato y se le realizan transformaciones hasta que sea presentado al usuario como un medida visible (real). Se constituye totalmente de software (Visual Basic 6).

BIBLIOGRAFA

Datasheet TELOSB Mote Platfrom: http://www.hoskin.qc.ca/uploadpdf/Instrumentation/CrossBow/hoskin_TP R2400CA_42efb73715b8b.pdf. Tiny docs: http://docs.tinyos.net/index.php/TinyOS_Tutorials Gua de instalacin TinyOS: http://www.tinyos.net/tinyos2.x/doc/html/install-tinyos.html Notas de clase, Ingeniero invitado, Andrs.

CONCLUSIONES

La plataforma utilizada (Crossbow Telos) demuestra gran ayuda en el proceso de aprendizaje dado a su aplicabilidad y facilidad brindada para el desarrollo de redes de sensores de bajo consumo.

Se implement la aplicacin del sensado de temperatura para ser aplicada en el monitoreo de agua en las avcolas, siendo de gran ayuda esta tecnologa con una de sus aplicaciones tpicas. Se aplicaron conceptos y herramientas vistas en el curso.

ANEXOS Los programas a continuacin pertenecen al transmisor, ya que para el receptor se carg un programa ya elaborado (BaseStation). Los nombres son relacionados con BlinkToRadio porque el cdigo se elabor sobre los archivos del ejemplo visto en clase excepto el de la interfaz

BlinkToRadioAppC.nc: componentes.

Configuracin

de

la

aplicacin

con

otros

#include "printf.h" #include "BlinkToRadio.h" configuration BlinkToRadioAppC{ } implementation{ components MainC, BlinkToRadioC, LedsC; components new TimerMilliC() as Timer; components new TimerMilliC() as ackTimer; components ActiveMessageC; StdControl del Radio components ActiveMessageAddressC; components new AMSenderC(AM_BLINKTORADIOMSG); /*Sensor de Teperatura del telos*/ components new SensirionSht11C() as Sensor; BlinkToRadioC -> MainC.Boot; BlinkToRadioC.Timer -> Timer; BlinkToRadioC.Leds -> LedsC; BlinkToRadioC.ackTimer -> Timer; //Interfaces para manejo de radio BlinkToRadioC.Packet -> AMSenderC; BlinkToRadioC.AMPacket -> AMSenderC; BlinkToRadioC.AMSend -> AMSenderC; BlinkToRadioC.AMControl -> ActiveMessageC; BlinkToRadioC.ActiveMessageAddress -> ActiveMessageAddressC.ActiveMessageAddress; BlinkToRadioC.Temperature -> Sensor.Temperature; BlinkToRadioC.Acks -> AMSenderC.Acks; }

//Implementa

BlinkToRadioC.nc: Mdulo (lgica) de la aplicacin.


#include <Timer.h> #include "BlinkToRadio.h" #include "printf.h" module BlinkToRadioC{ uses uses uses uses uses uses uses uses uses interface interface interface interface interface interface interface interface interface Timer <TMilli> as Timer; Timer <TMilli> as ackTimer; Leds; Boot; Packet; AMPacket; AMSend; SplitControl as AMControl; ActiveMessageAddress;

uses interface PacketAcknowledgements as Acks; uses interface Read<uint16_t> as Temperature;

implementation { uint16_t sensorData; /*datoSensor almacena la temperatura*/ bool busy; /*Bandera que indica que est en proceso el envo de un paquete*/ message_t pkt; /*Estos dos punteros apuntan al mensaje*/ message_t* pkt_ptr; /*uint8_t radioInitAttempts;*/ am_group_t grupo1; am_addr_t direccion_tx; float realTemperature; event void Boot.booted(){ busy = FALSE; grupo1 = 0x21; direccion_tx = 30; call Timer.startPeriodic(TIMER_PERIOD_MILLI); /*radioInitAttempts =0;*/ call AMControl.start(); } event void Timer.fired(){ call Leds.set(1); call Temperature.read(); } event void Temperature.readDone(error_t result, uint16_t val){ /*val contiene el valor muestreado de la temperatura*/ /*result puede tener los valores de SUCCESS o FAIL*/ atomic sensorData = val; /*La temperatura leda se almacena en una variable global*/ printf("Temperatura leda: %u \n", sensorData); printfflush(); call Leds.set(2); pkt_ptr = &pkt; if (!busy){ BlinkToRadioMsg* btrpkt = (BlinkToRadioMsg*)(call Packet.getPayload(&pkt, NULL)); btrpkt -> nodeid = TOS_NODE_ID; btrpkt -> Temperature = sensorData; if (call AMSend.send(AM_BROADCAST_ADDR, &pkt, sizeof(BlinkToRadioMsg))== SUCCESS){ busy = TRUE; } } } event void AMControl.startDone(error_t result){ //radioInitAttempts++;

call Leds.set(4); } event void AMSend.sendDone(message_t* msg, error_t error){ if (&pkt == msg){ /*Verifica si este evento corresponde al paquete que acabamos de enviar*/ busy = FALSE; /*Se envo el mensaje exitosamente*/ call Leds.set(5); } } event void AMControl.stopDone(error_t result){ } async event void ActiveMessageAddress.changed(){ } event void ackTimer.fired(){ }

MAKEFILE: Reglas de compilacin de la aplicacin


COMPONENT=BlinkToRadioAppC BUILD_EXTRA_DEPS=BlinkToRadioMsg.class BlinkToRadioMsg.class: BlinkToRadioMsg.java javac BlinkToRadioMsg.java BlinkToRadioMsg.java: mig java -target=null -java-classname=BlinkToRadioMsg BlinkToRadio.h BlinkToRadioMsg -o $@ CFLAGS += -I`cygpath /opt/tinyos-2.x/tos/lib/printf`

include $(MAKERULES)

INTERFAZ REALIZADA EN VISUAL BASIC 6.0

Cdigo Interfaz (botn conectar):


Dim tempin As String Dim trama As Long Private Sub cmdIniciar_Click() trama = 0 If cmdIniciar.Caption = "Mostrar Trama" Then trama = trama + 1 txtMostrar.Text = txtMostrar.Text & "--- Trama No " & trama & "---" & vbCrLf txtMostrar.Text = txtMostrar.Text & " " & Counter & " de " & Longitud & " " & token & vbCrLf Else cmdIniciar.Caption = "Desconectar" If cmdIniciar.Caption = "Desconectar" Then puerto.PortOpen = False cmdIniciar.Caption = "Iniciar" End If End If End Sub Private Sub condesc_Click() If condesc.Caption = "Conectar" Then puerto.CommPort = Val(11) puerto.PortOpen = True Timer1.Enabled = True condesc.Caption = "Desconectar" Else If condesc.Caption = "Desconectar" Then Timer1.Enabled = False puerto.PortOpen = False

End If End Sub

condesc.Caption = "Conectar" End If

Private Sub Timer1_Timer() Dim BufferReceive As Variant BufferReceive = puerto.Input End Sub ShowDataReceive BufferReceive

' El evento OnComm se usa para interceptar eventos y errores de comunicaciones. Private Sub puerto_OnComm() Dim EVMsg$ Dim ERMsg$ ' Bifurca segn la propiedad CommEvent. Select Case puerto.CommEvent ' Mensajes de evento. ' Evento Recibir Case comEvReceive Dim BufferReceive As Variant BufferReceive = puerto.Input ShowDataReceive BufferReceive End Select End Sub 'Datos recibidos en el puerto de comunicacin Private Sub ShowDataReceive(ByVal data As String) Dim Longitud, Counter As Integer Longitud = Len(data) ' trama = trama + 1 ' txtMostrar.Text = txtMostrar.Text & "--- Trama No " & trama & "---" & vbCrLf For Counter = 1 To Longitud token = Asc(Mid(data, Counter, 1)) ' txtMostrar.Text = txtMostrar.Text & " " & Counter & " de " & Longitud & " " & token & vbCrLf Select Case Counter Case 7

If (token <> 1) Then Exit For End If Case 15

txtBH = token BH = token

Case 16 dato = (256 * BH) + token Me.txtDATO = dato Case 17 temp = 0.01 * dato - 42.6 Me.txtTEMP = temp End Select Next Counter End Sub

También podría gustarte