seminario de computadores i 1 informe final ...lsb/elo325/clases/proyectos/datalogger...porque se ha...

6
SEMINARIO DE COMPUTADORES I 1 Informe Final Proyecto Datalogger+ Diego Valencia, Michael Kusch, Francisco Blancaire, Eduardo Gonz´ alez Resumen — En este documento se muestran los detalles de funcionamiento del proyecto final del ramo Seminario de Computadores I que consiste en un Datalogger con capaci- dades de almacenamiento en EEPROM serial y de env´ ıo de datos por correo electr´ onico como sus principales carac- ter´ ısticas. I. Introducci´ on C OMO proyecto final ten´ ıamos la inquietud de desarro- llar alg´ un dispositivo que permitiera explotar lo m´ as completamente posible las caracter´ ısticas del microcontro- lador MSP430. Luego de desechar varias ideas se decidi´ o que ser´ ıa in- teresante implementar un Datalogger, es decir un dispo- sitivo de adquisici´ on y almacenamiento de datos, al cual se le agregar´ ıan cualidades especiales que lo destacasen del com´ un de los dataloggers (por lo que lo denominamos Datalogger+). Para aprovechar lo ya desarrollado en el curso (y probar que cumpl´ ıa su funcionalidad) se utiliz´ o el m´ odulo medidor de distancia para adquirir el dato, a trav´ es del driver que hab´ ıamos desarrollado. A. Idea original En todo proyecto naciente se tienen cientos de idea para desarrollar, sin embargo, no todas son factibles de concretar debido a diversos factores, entre ellos tiempo. Las principales caracter´ ısticas que se quer´ ıan para nues- tro Datalogger son las siguientes: 1) Realizar mediciones de distancia a trav´ es de un sen- sor ultras´ onico, en intervalos configurables. 2) Implementar un reloj en tiempo real, para sincronizar las mediciones. 3) Almacenar dichas mediciones, junto con la hora de la medici´ on. 4) Configuraci´ on y monitorio v´ ıa Internet. 5) Generaci´ on de gr´ aficos estad´ ısticos de las mediciones en el μC 1 . 6) Env´ ıo de las mediciones mediante correo electr´ onico. Se completaron a cabalidad estos objetivos exceptuando los puntos 4 y 5, los que fueron excluidos principalmente por falta de tiempo. B. Procesos y funcionamiento general El proyecto, en software, se comenz´ o a concebir como un “super loop”, pero teniendo como meta la implementaci´ on de un sistema operativo de tiempo real. Sobre la marcha la programaci´ on como sistema operativo no result´ util por la caracter´ ısticas del dispositivo, ya que 1 Se utilizar´ a μC para referirse al Microcontrolador ´ este se basa en muchas interrupciones y pocos procesos, por lo que se mantuvo el esquema de superloop. El esquema general de funcionamiento del sistema se muestra en las Figuras 1, 2 y 3. Fig. 1. odigo de la rutina MAIN. Fig. 2. odigo de la rutina Interrupci´ on Timer B. Fig. 3. Detalle de los procesos. Observando estos diagramas se puede ver que el c´ odigo

Upload: dongoc

Post on 03-May-2018

217 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: SEMINARIO DE COMPUTADORES I 1 Informe Final ...lsb/elo325/clases/proyectos/DataLogger...porque se ha cumplido el intervalo configurado se traspasa el ulti´ mo dato adquirido de la

SEMINARIO DE COMPUTADORES I 1

Informe FinalProyecto Datalogger+

Diego Valencia, Michael Kusch, Francisco Blancaire, Eduardo Gonzalez

Resumen— En este documento se muestran los detallesde funcionamiento del proyecto final del ramo Seminario deComputadores I que consiste en un Datalogger con capaci-dades de almacenamiento en EEPROM serial y de envıode datos por correo electronico como sus principales carac-terısticas.

I. Introduccion

COMO proyecto final tenıamos la inquietud de desarro-llar algun dispositivo que permitiera explotar lo mas

completamente posible las caracterısticas del microcontro-lador MSP430.

Luego de desechar varias ideas se decidio que serıa in-teresante implementar un Datalogger, es decir un dispo-sitivo de adquisicion y almacenamiento de datos, al cualse le agregarıan cualidades especiales que lo destacasendel comun de los dataloggers (por lo que lo denominamosDatalogger+).

Para aprovechar lo ya desarrollado en el curso (y probarque cumplıa su funcionalidad) se utilizo el modulo medidorde distancia para adquirir el dato, a traves del driver quehabıamos desarrollado.

A. Idea original

En todo proyecto naciente se tienen cientos de idea paradesarrollar, sin embargo, no todas son factibles de concretardebido a diversos factores, entre ellos tiempo.

Las principales caracterısticas que se querıan para nues-tro Datalogger son las siguientes:

1) Realizar mediciones de distancia a traves de un sen-sor ultrasonico, en intervalos configurables.

2) Implementar un reloj en tiempo real, para sincronizarlas mediciones.

3) Almacenar dichas mediciones, junto con la hora dela medicion.

4) Configuracion y monitorio vıa Internet.5) Generacion de graficos estadısticos de las mediciones

en el µC 1.6) Envıo de las mediciones mediante correo electronico.Se completaron a cabalidad estos objetivos exceptuando

los puntos 4 y 5, los que fueron excluidos principalmentepor falta de tiempo.

B. Procesos y funcionamiento general

El proyecto, en software, se comenzo a concebir como un“super loop”, pero teniendo como meta la implementacionde un sistema operativo de tiempo real.

Sobre la marcha la programacion como sistema operativono resulto util por la caracterısticas del dispositivo, ya que

1Se utilizara µC para referirse al Microcontrolador

este se basa en muchas interrupciones y pocos procesos,por lo que se mantuvo el esquema de superloop.

El esquema general de funcionamiento del sistema semuestra en las Figuras 1, 2 y 3.

Fig. 1. Codigo de la rutina MAIN.

Fig. 2. Codigo de la rutina Interrupcion Timer B.

Fig. 3. Detalle de los procesos.

Observando estos diagramas se puede ver que el codigo

Page 2: SEMINARIO DE COMPUTADORES I 1 Informe Final ...lsb/elo325/clases/proyectos/DataLogger...porque se ha cumplido el intervalo configurado se traspasa el ulti´ mo dato adquirido de la

SEMINARIO DE COMPUTADORES I 2

no se basa en la ejecucion del MAIN sino en la rutina deservicio de la interrupcion timer overflow del TIMER Bque actua como sincronizador del reloj y, junto con estesincronizador de todos los demas procesos.

Inicializacion Procesos, inicializa los procesos del stackµIP, del reloj, del driver del Ultra Sonido, del display LCD,puertos y osciladores.

II. Funcionamiento de los procesos

Se explica a continuacion cada parte relevante del sis-tema, con su funcionamiento y razones de su eleccion.

A. Tomar Medicion

La adquisicion del dato se realizo a traves del moduloultrasonico (ver Anexo y [4]). Especıficamente se utilizoel driver que ya se habıa desarrollado para este ramo (ver[2]), utilizado en modo continuo, es decir que esta tomandomediciones periodicamente, sin intervencion ni peticion delresto del codigo. Cuando se toma el dato para guardarporque se ha cumplido el intervalo configurado se traspasael ultimo dato adquirido de la variable DISTANCIA[0] deldriver, por lo que el perıodo de adquisicion de este es menorque el menor intervalo configurable.

Como nota importante del codigo debe mencionarse queel driver agrega al proyecto otra interrupcion por timeroverflow (del TIMER A) y una interrupcion por el puertofreq (P1.0).

B. Reloj

Para poder tener la informacion del tiempo que hapasado, lo que permitirıa dar dimensionalidad temporal alos datos y poder fijar los intervalos de tiempo entre lasmediciones, fue necesario implementar un reloj de tiemporeal en el µC.

El algoritmo es simple y se explica a continuacion: Lainterrupcion por timer overflow llama a una funcion de-nominada tic(), en la cual se incrementa una variable yluego se llevan a cabo los siguientes procesos:

i. Si esta variable tiene el valor que corresponde aun segundo se aumenta la variable segundos, y laprimera se resetea.

ii. Se revisa si segundos ha llegado a 60, en tal caso seaumenta la variable minutos y se resetea segundos.

iii. Se revisa si minutos ha llegado a 60, en tal caso seincrementa la variable horas y se resetea minutos.

iv. Se continuan incrementado y reseteando variablescuando corresponda para las horas, dıas, meses yanos.

En esta misma funcion tic() se revisa si el valor desegundos coincide con el intervalo de tiempo para tomardatos y si es ası llama al proceso de almacenar dato.

C. Almacenar datos

Las limitaciones de memoria interna del µC motivarona utilizar un dispositivo externo capaz de almacenar losdatos tomados en la medicion.

Se penso en distintos dispositivos como memorias Me-mory Stick, Compact Flash, Pendrives y EEPROM. La

facilidad de implementacion resulto ser el factor determi-nante a la hora de decidir, resultando ser la ultima la masconveniente.

Las principales bondades que ofrece la memoria EEP-ROM serial son las siguientes:

X Capacidad de 64[kBytes].X Ser facil de implementar.X Economica.X Se puede reescribir approx. 1.000.000 de veces.X La tarjeta EasyWeb ][ trae incorporada una.X Conexion por I2C.La conexion del dispositivo por medio I2C permite

ademas la anexion de otras tres memorias identicas,lograndose una capacidad de almacenamiento potencial de4 × 64[kB]. Truqueando otras variables (particularmenteel chip enable bit) se podrıan implementar, virtualmente,infinitos bancos de 4 EEPROM (solo limitado por la capaci-dad fısica de controlar infinitos chip enable), aumentandola capacidad de almacenamiento enormemente. Esta carac-terıstica se considero relevante a la hora de proyectar esteproyecto como un producto comercial.

Como el microcontrolador MSP430F149 no trae incorpo-rado I2C por hardware, se tuvo que utilizar un driver porsoftware para poder usar la memoria.

Este driver se adjunta en el archivo i2c.c. Este proveedos funciones:

Para escribir en la EEPROM:

eeprom wr(BC,DA,DB,Dato);

Donde BC, corresponde al byte de control que se usa paraseleccionar el dispositivo por utilizar, DA y DB correspon-den a los 8 bits mas y menos significativos de la direccionrespectivamente y Dato corresponde al informacion que seva a guardar.

Para Leer:

dato=eeprom rd(BC, DA, DB)

La definicion de los argumentos de esta funcion son losmismos, pero en este caso el dato leıdo es retornado por lafuncion misma.

Debe notarse, que con estas funciones se puede es-cribir/leer por byte, por lo que el dato debe ser del tipoCHAR o SHORT.

Como caracterıstica adicional vale mencionar que am-bas funciones retornan un 0x100 en caso de haber ocu-rrido algun error de lectura o escritura (como este numeroes mayor que 1 byte no se puede confundir con un datovalido).

Informacion mas detallada sobre la EEPROM utilizaday su conexion por medio del protocolo I2C se encuentra enel Anexo de este documento. Informacion mas detalladasobre el protocolo I2C mismo se puede encontrar en [1].

En este proyecto se utilizan estan funciones en variasetapas del sistema:

a) Al activar la medicion del datalogger: Se utiliza paracrear un encabezado en la memoria con la infor-macion de la fecha y hora actuales y el intervalo detiempo en el cual se tomara el dato.

Page 3: SEMINARIO DE COMPUTADORES I 1 Informe Final ...lsb/elo325/clases/proyectos/DataLogger...porque se ha cumplido el intervalo configurado se traspasa el ulti´ mo dato adquirido de la

SEMINARIO DE COMPUTADORES I 3

La estructura del encabezado es la siguiente:

00 00 S M H D M A Int

Los dos primeros bytes con 0x00 se utilizan para mar-car el comienzo de un encabezado, y luego vienenla hora y fecha actual (en el caso del ano solo losultimos dos dıgitos) y por ultimo el intervalo al cualse tomaron las mediciones.

b) Para guardar la medicion adquirida: Se graba en laEEPROM el dato, separandolo en dos bytes (ya quees del tipo INTEGER).

c) Al enviar el correo: Se utiliza para leer la informacionalmacenada segun se explica en la seccion siguiente.

D. Envıo de datos

Se penso que la manera mas util de recuperar lainformacion almacenada serıa por medio de un correoelectronico que llegase a un destinatario fijado en la con-figuracion con los datos en un archivo adjunto.

Para lograr este objetivo se implemento el stack TCP/IPµIP (ver [3]) que tiene entre sus aplicaciones el servidorSMTP que permite el envıo de correos electronicos.

El funcionamiento de esta aplicacion consiste en el imple-mentar la comunicacion protocolar SMTP que se muestraen la Figura 4.

220....HELO DATAlogger+++.cl250....MAIL FROM: DATOS@DATAlogger+++.cl250....RCPT TO: [email protected] send the mail data, end with .To: [email protected]: DATOS@DATAlogger+++.clSubject: test easywebTexto Mensaje.250....QUIT221....

Fig. 4. Protocolo SMTP para enviar un mail simple (texto en griscorresponde a respuestas del servidor)

Esta comunicacion se implementa por una maquina deestados que permite el reenvıo de las instrucciones que sepierdan al no recibir un acknowledge.

Para el envıo de archivos adjuntos se extendio la maquinade estados de modo de obtener la comunicacion protocolarque se muestra en la Figura 5.

220....HELO DATAlogger+++.cl250....MAIL FROM: DATOS@DATAlogger+++.cl250....RCPT TO: [email protected] send the mail data, end with .To: [email protected]: DATOS@DATAlogger+++.clSubject: Sus datos al 01/01/2004 - 00:00:28Mime-Version: 1.0Content-Type: multipart/mixed;boundary="=====000 Dragon811671185340 ====="

--=====000 Dragon811671185340 =====Content-Type: text/plain;charset="us-ascii"Content-Transfer-Encoding: 8bit

Se adjuntan sus datos.

Saludos

DATALOGGER

--=====000 Dragon811671185340 =====Content-Type: application/octet-stream;name="Datos.txt"Content-Transfer-Encoding: 8bitContent-Disposition: attachment;filename="Datos.txt"

DATOS--=====000 Dragon811671185340 =====--.250....QUIT221....

Fig. 5. Protocolo SMTP para enviar un mail con adjunto

Las cadenas que se pongan donde dice DATOS quedarancomo contenido del archivo adjunto DATOS.TXT.

Estas cadenas pueden ser cualquier cadena de caracteresASCII. De no ser ası se producirıa un error y no se enviarıael email.

En este proyecto los datos del archivo adjunto son crea-dos leyendo de la EEPROM, primero el encabezado y luegolos datos.

Luego de obtener la informacion del encabezado, se intro-duce la fecha y hora iniciales junto con el intervalo multipli-cado por el numero de dato (que se lleva con un contador)a una funcion, con la que se obtiene la fecha y hora a lacual fue tomada cada medicion, esta funcion correspondea un proceso similar al que realiza la funcion del reloj.

La generacion y envıo de los datos se realiza en dos es-tado identicos de la maquina de estados, incrementandoseel contador de dato al pasar de un estado al otro, de estaforma se puede reenviar el mismo dato la cantidad de vecesque sea necesario.

El proceso de enviar datos se detiene al encontrarse un0xFF en la EEPROM.

Una vez enviados todos los datos se borra la informacionde la memoria.

En la Figura 6 se puede ver el correo resultante en uncliente de e-mail y la Figura 7 muestra un trozo del archivo

Page 4: SEMINARIO DE COMPUTADORES I 1 Informe Final ...lsb/elo325/clases/proyectos/DataLogger...porque se ha cumplido el intervalo configurado se traspasa el ulti´ mo dato adquirido de la

SEMINARIO DE COMPUTADORES I 4

adjunto datos.txt.

Fig. 6. Email recibido con los datos adjuntos

Fig. 7. Trozo del archivo adjunto Datos.txt

E. Elementos Genericos

Como elementos auxiliares tanto para la configuracioncomo monitoreo del funcionamiento del sistema se uti-lizaron el display y los cuatro botones provistos en la tarjetaEasy WEB ][.

Se les dieron las siguientes funciones a los botones:1) Boton 1: Encendido/apagado de la adquisicion de

datos. Sirve para detener o iniciar la medicion yrespaldo de datos. Para indicar el funcionamiento delsistema se enciende un led en la tarjeta. Mientras estefuncionando el dispositivo se ira mostrando en el dis-play el momento (tiempo) en que se tomo la medicion.En caso de estarse encendiendo la medicion se crearael encabezado en la EEPROM.

2) Boton 2: Presentacion de la fecha y hora actuales enel display.

3) Boton 3: Envıo de correo. Comienza el proceso deenvıo de los datos por correo electronico. Este botonesta deshabilitado mientras se esten adquiriendodatos.

4) Boton 4: Cambio de configuracion del Datalogger.Manteniendo presionado este boton se van sucediendoen el display el numero de segundos entre mediciones(entre 1 y 15 [s]), mostrando tambien en el display laconfiguracion actual. Este boton tambien esta desha-bilitado durante el modo de adquisicion.

III. Comentarios sobre codigo y conexiones

Se adjunta el codigo completo a este documento, paraentenderlo nos parece que es bueno tener claro cuales fueron

sus etapas de ensamble, es decir como se fueron juntandotodos los trozos que conforman el proyecto completo.

Las fases de ensamble fueron las siguientes:

i. Implementacion stack TCP/IP µIP: se implementoel stack y el servicio de correo segun las especi-ficaciones comentadas. Se tuvo problemas con elmanejo de los CHAR por parte del compilador IARque fueron solucionados. Se cambio el reloj quenecesita el stack de utilizar el timer A al B, ya que eltimer A sera utilizado por el driver del ultrasonido.

ii. Se monto sobre el codigo anterior el reloj, utilizandola interrupcion del timer B del stack como genera-dor de segundos.

iii. Se monto el manejo del Display y Botones en larutina de servicio del reloj.

iv. Se incluyo el driver del Modulo Ultrasonico en modocontinuo.

v. Se monto el protocolo I2C.

Las conexiones en hardware para utilizar este codigo semuestran a continuacion:

Fig. 8. Conexiones y definiciones en la tarjeta EASY WEB

Precauciones e instrucciones respecto al codigo:

1) Se debe tener especial cuidado de no alterar la RAMmientras se esten enviando emails, ya que se tieneun precario manejo de strings por parte del compi-lador IAR con el cual fue hecho el proyecto y podrıanalterarse los paquetes que se envıan por correo desha-bilitando todo el proceso.

2) Al momento de querer realizar alguna modificacion oagregar alguna caracterıstica adicional se debe teneren cuenta que se estan usando los siguientes puertosy modulos del µC:

Puertos:

Page 5: SEMINARIO DE COMPUTADORES I 1 Informe Final ...lsb/elo325/clases/proyectos/DataLogger...porque se ha cumplido el intervalo configurado se traspasa el ulti´ mo dato adquirido de la

SEMINARIO DE COMPUTADORES I 5

Puerto Pines MotivoP1 0 Entrada senal Modulo Ultrasonico

6 LED indicador de encendidoP2 0..7 Manejo del LCDP3 0..3 Comunicacion con el Chip CS8900A

6..7P4 0..1 Comunicacion I2CP5 0..7 Comunicacion con el Chip CS8900AP6 0 Salida hacia el Modulo Ultrasonico

Timers: Timer A y Timer B.Se tuvo especial cuidado de que todos los pines queno estan siendo utilizados por el codigo no se veanalterados por este por lo que se pueden utilizar contotal libertad.

3) Para poder utilizar el servidor de correo se debe con-siderar que se deben setear las siguientes variables:

En main.c

const char *lhostname= Identificacion del µC comoservidor de correo. Por de-fecto: "DATAlogger+++.cl"

#define server IPADDRX X=numero del octeto de la di-reccion IP del servidor con elcual se conecta el µC Por de-fecto: 192U 168U 100U 2U

En uipopt.h

#define UIP IPADDRX X=numero del octeto de la di-reccion IP del µC. Por defecto:192U 168U 100U 1U

IV. Conclusiones y comentarios

Realizado el Proyecto se concluye que :‡ La familia de microcontroladores MSP430 nos provee de

un dispositivo poderoso para lograr proyectos de altonivel.

‡ Se debe tener especial cuidado con los manejos de memo-ria RAM, ya que es bastante limitada, poniendose todolo que se pueda como constante en flash.

‡ Hay que tener cuidado con los manejos de strings en elµC ya que el compilador de IAR systems tiene un pesimomanejo de estos (seguramente por tratar de optimizar entamano el codigo).

‡ Es importante considerar la conectividad ethernet detodo dispositivo que se desarrolle en la actualidad.

Referencias

[1] Informe sobre el protocolo I2C presentado en el seminario de com-putadores I, http://www.elo.utfsm.cl/∼lsb/elo325/clases/charlas/I2C/El%20Bus%20I2C.pdf

[2] Driver del medidor Ultrasonico de Distancia,http://www.elo.utfsm.cl/ lsb/elo325/clases/miniproyectos/ultrasonido2/DriverUltrasonido.pdf

[3] Pagina oficial del Stack TCP/IP µIPhttp://www.sics.se/∼adam/uip/

[4] Informacion minusiosa del modulo Ultrasonico (y esquematico)http://www.robot-electronics.co.uk/htm/srf04tech.htm

V. Anexos

A. EEPROM serial 24LC515

Caracterısticas generales:X Memoria serial de 512 [kbit].X Compatible con I2C.X Velocidad de bus de datos de hasta 400 [kHz] (Modo

Rapido).

X Empaque Dip 8X Opcion de escritura por pagina de hasta 64 bytes.

A.1 Pines:

Fig. 9. Pines de la EEPROM

A0 y A1 corresponden a la direccion del dispositivo den-tro de la red I2C. Esto nos permite hasta un maximo de 4dispositivos dentro de la misma red I2C.

A2 es una entrada no configurable, debe estar conectadaa Vcc para que el chip opere.

WP Write Protection, debe estar conectado a tierra parahabilitar operaciones de escritura.

Vss y Vcc son tierra y alimentacion respectivamente.

A.2 Conexion:

Fig. 10. Diagrama de Conexiones

La puerta P4.0 corresponde a SDA y es el pin 36 delµC.

La puerta P4.1 corresponde a SCL y es el pin 37 del µC.Se debe colocar una resistencia de pull-up entre SCL y

Vcc, debido a que el codigo esta disenado para multimaster.Se observa en el diagrama de conexiones de la tarjeta

Easy Web ][, que la direccion de la EEPROM dentro de lared I2C es la 00 ya que A0 y A1 estan conectados a tierra.

La conexion tambien permite la escritura en la memoria(WP esta conectada a tierra).

A.3 Funcionamiento:

Para leer y escribir en el dispositivo de ocupa el mismoprocedimiento y consta de tres fases.

1.- Enviar byte de Control

Page 6: SEMINARIO DE COMPUTADORES I 1 Informe Final ...lsb/elo325/clases/proyectos/DataLogger...porque se ha cumplido el intervalo configurado se traspasa el ulti´ mo dato adquirido de la

SEMINARIO DE COMPUTADORES I 6

Fig. 11. Estructura del byte de control

donde:B0 Block select bit, y define el segmente de la memoria

que se utilizara.A0 y A1 quedan definidos segun el diagrama de conex-

iones, en este caso es 00.R/W es el bit que define si la operacion es de lectura o

de escritura.2.- Envıo de la direccionSe envıa en dos bytes, el primero contiene los bits mas

significativos y el ultimo con los menos significativos.

Fig. 12. Esquema del byte de direccionamiento

X queda definido por el Bit B0 del Byte de control.3.- Envıo de la informacion.Se envıa en bytes y se pueden enviar hasta 64 bytes segui-

dos.

B. Modulo Ultrasonico

El modulo utilizado corresponde al SRF04 de Devantech.

Las caracterısticas relevantes de este dispositivo son:X Alimentacion: 3.5-5 [V].X Consumo: Tıp. 30 [mA], Max. 50 [mA].X Frecuencia: 40[KHz].X Rango 3 [cm]-3 [m].Sus conexiones y foto se muestran en la Figura 13.

P1=Salida del eco

P0= Entrada del Trigger

Fig. 13. Foto del modulo (vision trasera) y Diagrama de conexiones(vision delantera)