12
SISTEMA DE CONTROL UTILIZANDO EL KIT DE DESARROLLO TELIT INFORME FINAL 04 DE DICIEMBRE DE 2014 MARÓN, GASTÓN ARIEL | MERONI, MILTON ALBERTO

Sistema de control via gsm

Embed Size (px)

Citation preview

Page 1: Sistema de control via gsm

SISTEMA DE CONTROL UTILIZANDO EL KIT DE

DESARROLLO TELIT INFORME FINAL

04 DE DICIEMBRE DE 2014 MARÓN, GASTÓN ARIEL | MERONI, MILTON ALBERTO

Page 2: Sistema de control via gsm

MARÓN, GASTÓN ARIEL | MERONI, MILTON ALBERTO

2

Tabla de contenido Idea proyecto ...................................................................................................................................... 3

Módulo TELIT GE864 ........................................................................................................................... 3

Comunicación serie con la PC .......................................................................................................... 3

Script en Python .............................................................................................................................. 5

Entorno de desarrollo .................................................................................................................. 5

Descarga del Script al módulo ..................................................................................................... 6

Diseño del Script .......................................................................................................................... 6

Modularización del Script ............................................................................................................ 7

Microcontrolador Freescale HCS08 .................................................................................................... 9

Protocolo de comunicación HCS08-TELIT........................................................................................ 9

Configuración y programación del HCS08 ....................................................................................... 9

Calculo de la temperatura ............................................................................................................. 11

Diseño de la placa de alimentación ................................................................................................. 12

Maqueta final ................................................................................................................................... 12

Page 3: Sistema de control via gsm

MARÓN, GASTÓN ARIEL | MERONI, MILTON ALBERTO

3

Idea proyecto Realizar un sistema de control de temperatura a través de la tecnología GSM. Dicho sistema contara

con un comunicador (TELIT GE864), que será la interfaz entre el usuario y la variable a controlar, y

un microcontrolador (HCS08) que se encargara de procesar y enviar, en caso de ser necesario, los

datos provenientes del sensor de temperatura (LM35).

El usuario podrá solicitar información (temperatura), encender/apagar un sistema de enfriamiento

(cooler), establecer un umbral máximo de temperatura y pedir el saldo del chip que posee el

módulo.

El sistema será capaz de avisar al usuario en caso de que la temperatura supere el umbral y, en

consecuencia, podrá avisar si la situación se normalizo.

Módulo TELIT GE864

Comunicación serie con la PC Para conectarnos de manera serie con el módulo a través de una PC, tuvimos que configurar los

jumpers de la placa (véase la figura de abajo), el puerto de comunicaciones (COM) de la PC y la

terminal de comunicación (en nuestro caso, utilizamos el HyperTerminal de Windows®). Las

configuraciones antes mencionadas son:

Baud Rate: 9600 bps

Bits de datos: 8 bits

Paridad: Ninguno

Bits de paridad: 1

Control de flujo: Ninguno

Disposición de Jumpers para comunicación RS232

Page 4: Sistema de control via gsm

MARÓN, GASTÓN ARIEL | MERONI, MILTON ALBERTO

4

A su vez, al conectar el módulo a la PC se deben generar 4 puertos virtuales:

Canal virtual 1: Puerto CMUX reservado para el módulo SER (comunicación con el puerto

serie)

Canal virtual 2: Puerto CMUX reservado para atender comandos AT o la interfaz MDM2

Canal virtual 3: Puerto CMUX reservado para atender comandos AT

Canal virtual 4: Puerto CMUX reservado para realizar el debug de datos del Script de Python

En el caso de ser mediante USB, los puertos se inicializan de manera automática; mientras que si se

conecta por el puerto serie de la PC, se deben configurar los puertos de la siguiente manera:

Se debe habilitar la interfaz CMUX del módulo

o Mediante el comando AT#CMUXSCR=1,115200

1 habilitado; 115200 baud rate

Apagar el módulo

o Por hardware: botón on/off

o Por Software: Comando AT#SHDN

Abrir el software “Telit serial port MUX”.

o En la solapa de “setup”, seleccionar el puerto COMx (puerto real de la PC, dicho

puerto configurado de la misma manera y con control de flujo por hardware) a

velocidad 115200 bps y habilitar, en caso de ser necesario, el checkbox de Python

(para debug)

Abrir el HyperTerminal y seleccionar los COM virtuales que se van a utilizar

Page 5: Sistema de control via gsm

MARÓN, GASTÓN ARIEL | MERONI, MILTON ALBERTO

5

Para la correcta comunicación entre el módulo TELIT y la PC, se debe tener en cuenta que el control

de flujo debe ser por hardware. Para realizar esto, existen dos maneras:

El cable necesita todos los conectores UART excepto el de RING y DCD para implementar el

control de flujo por hardware

En el manual indica una manera alternativa para evitar la conexión 1 a 1 anterior, que

consiste en hacer un puente en el lado de la PC entre los pines 4 y 6 como se describe en la

imagen de abajo:

Script en Python

Entorno de desarrollo Para poder desarrollar un correcto código en Python, utilizamos un programa proporcionado por la

empresa Telit, cuyo nombre es “Telit PythonWin”. Este entorno nos permite realizar el código,

verificar que este bien escrito (ctrl+shift+c) y su compilación, generando un archivo con extensión

“.pyo”.

Para compilar el Script, se debe hacer click derecho sobre el archivo de extensión “.py” y elegir la

opción “compile” del menú. En caso de que el código sea correcto, se generará en el mismo

directorio, un archivo con extensión “.pyo”; en caso contrario, no se generará ningún archivo.

Page 6: Sistema de control via gsm

MARÓN, GASTÓN ARIEL | MERONI, MILTON ALBERTO

6

Descarga del Script al módulo Para poder descargar el Script en Python al módulo, deben estar las siguientes configuraciones en

el puerto COM de la PC:

Baud Rate: 115200 bps

Bits de datos: 8 bits

Paridad: Ninguno

Bits de paridad: 1

Control de flujo: hardware

Los pasos en el HyperTerminal® para la descarga del Script son:

Descargar el script al módulo

o Comando AT#WSCRIPT= “nombre.py”,tamañoEnBytesDelArchivo (enter y esperar

por un prompt)

o Una vez que aparece “>>>”,

hacer click en “Transferir” en la barra de herramientas del HyperTerminal

Click en “Enviar archivo de Texto”

Seleccionar el Script

Esperar por un “OK” o un error

Habilitar el script

o Comando AT#ESCRIPT= “nombre.py”

Debido al intérprete de Python que posee el módulo, descargar script demasiados

grandes, lleva a una excesiva demora de compilación. Para evitar esto, es posible

descargar el archivo con extensión “.pyo” y habilitar dicho archivo. Esto salteará

el proceso de compilado.

Ejecutar el script

o Se puede ejecutar de dos maneras

Inmediatamente

Mediante el comando AT#EXECSCR

Al encendido del módulo

Configurando de manera correspondiente a través del comando

AT#STARTMODESCR

Diseño del Script En cuanto al diseño, el Script realiza configuraciones para enviar mensajes de texto, establecer el

número del usuario habilitado, al cual se enviarán todos los mensajes, y los parámetros para

comunicarse por el puerto serie con el microcontrolador.

Luego, intentará establecer la comunicación con el HCS08. En caso positivo, se continuará con la

ejecución del programa; en caso contrario, se avisará al usuario de que la comunicación no se ha

podido establecer y se apagará el módulo.

Page 7: Sistema de control via gsm

MARÓN, GASTÓN ARIEL | MERONI, MILTON ALBERTO

7

Si la comunicación se estableció satisfactoriamente, el Script entrará en un bucle infinito donde las

principales acciones son:

El chequeo de si llegó algún mensaje por parte del microcontrolador indicando que la

temperatura superó el umbral y su posible normalización. En ambos casos se avisará al

usuario por mensaje de texto.

La comprobación de que se ha recibido uno o varios mensajes de texto. Se desglosan los

mensajes y para que el mensaje sea correcto debe cumplir con las siguientes normas: o Número del remitente: número del usuario habilitado o Palabra clave “Telit” y comandos (temp, cooler on, cooler off, umbral xx.x, saldo) o En cualquier caso de que no se cumpla con lo anterior, se avisa al usuario habilitado

de cuál fue el inconveniente.

Posibles mensajes de texto recibidos

Número de teléfono habilitado=”123456”

Número de teléfono Mensaje al módulo Respuesta al número habilitado

123456 Telit temp La temperatura es: xx.x°C

123456 Telit cooler on El cooler se encendió

123456 Telit cooler off El cooler se apagó

123456 Telit umbral 12.3 El umbral se estableció

123456 Telit umbral 123 Error de formato umbral. Ej: Telit umbral 30.5

123456 Telit umbral 12.j Error de formato umbral. Ej: Telit umbral 30.5

123456 Telit saldo Tu saldo actual es de xx.xx pesos

123456 Temp No se ha encontrado la palabra clave "Telit". Intente de nuevo.

123456 Telit temperatura El comando enviado es Inválido. Intente de nuevo.

7891011 Telit temp Telit informa: se recibió un mensaje del numero 7891011

Aclaración: el módulo no es case sensitive. Es decir, no discrimina las mayúsculas de las minúsculas.

Ej: TELIT=telit=Telit=TeLiT.

Modularización del Script El Script está formado por módulos:

Configuración de mensaje para los mensajes de texto

o configura el módulo en modo texto

o activa la clase de servicio en voz

Configuración para la comunicación serie

o Velocidad de comunicación (9600 bps) y modo (8N1)

Establecimiento de conexión con HCS08

o Envía un carácter especial (‘9’) al microcontrolador

Page 8: Sistema de control via gsm

MARÓN, GASTÓN ARIEL | MERONI, MILTON ALBERTO

8

o Espera por la respuesta de un carácter especial (‘9’)

Si llegó el carácter esperado, continúa su ejecución

Si no llegó, se avisa al usuario por mensaje de texto y el módulo se apaga

sms_list(numTel)

o Argumento

numTel: número de teléfono habilitado

o Lista los mensajes de texto sin leer de la bandeja de entrada

En caso de que sea el número del saldo (en nuestro caso, el número “444”),

se envía al número habilitado el saldo que tiene el módulo.

En caso de que no sea el número habilitado o el número del saldo, se envía

el mensaje de texto avisando de que ese número le envió un mensaje de

texto al módulo

o Elimina los mensajes de la bandeja de entrada

o Retorna

smsmsgs

Arreglo de mensajes sin leer

sms_send(to,text)

o Argumentos

to: destinatario del mensaje de texto (en este caso el número habilitado)

text: el texto que se quiere enviar

o Realiza los pasos para enviar un mensaje de texto

o Retorna

status

1 si lo pudo enviar

0 si no lo pudo enviar

Programa principal

o Se fija si el microcontrolador le envío un carácter especial indicando la alerta de que

la temperatura superó el umbral o si se normalizó la situación de la alerta anterior

Avisa al usuario de estas dos situaciones a través de un mensaje de texto

o Se fija si hay un nuevo mensaje (sms_list(numTel)).

Itera sobre los nuevo/s mensaje/s

Se fija si está la palabra clave “telit”

Si no está, avisa al número habilitado

Se fija por alguno de los comandos válidos

Si no se encuentra ninguno, avisa al número habilitado

Envía comando al HCS08

En caso de ser el comando “saldo”, se envía un mensaje al “444”

consultando el saldo

Espera respuesta del HCS08

Si no llega la respuesta, se avisa al usuario que hubo error de

comunicación

Envía mensaje de texto, respondiendo al pedido del usuario

Page 9: Sistema de control via gsm

MARÓN, GASTÓN ARIEL | MERONI, MILTON ALBERTO

9

Microcontrolador Freescale HCS08 El microcontrolador HCS08 de la empresa Freescale será utilizado como la unidad que procesará los datos provenientes de un sensor y actuará en caso de alcanzar alguna situación especial. El microcontrolador tomará los datos de un sensor de temperatura analizándolos y, en caso de que la misma llegue a un umbral establecido, se avisará al módulo Telit de lo sucedido. Si se normaliza la temperatura, nuevamente se avisará al módulo de la situación. El módulo Telit se comunicará con este microcontrolador, esperando, solicitando o estableciendo datos a través de una comunicación serie (RS-232).

Protocolo de comunicación HCS08-TELIT Como primera instancia, se realiza el establecimiento de conexión (mencionado en el apartado “Módulos del Script”), en el cual el microcontrolador va a estar a la espera del carácter especial que debe enviar el módulo Telit. Una vez recibido ese carácter, el HCS08 responderá con el carácter especial, finalizando así, el establecimiento de comunicación. La comunicación entre el usuario y ambos dispositivos se realiza de la siguiente manera:

Configuración y programación del HCS08 El microcontrolador tiene configurado como fuente de interrupción periódica (cada 1 ms) al módulo

RTC (Real Time Counter). Dicho módulo tiene un oscilador interno de bajo consumo (Low Power

Oscilator) de 1 KHz de frecuencia, al cual se le aplica un predivisor de 1 lograr dicha frecuencia de

interrupción.

La arquitectura de software es tipo Foreground/Background, es decir, las interrupciones son tareas

pequeñas que activan/desactivan flags (Foreground) para que el programa principal se encargue de

hacer las tareas más gruesas (Background).

CELULAR AL TELIT TELIT AL HCS08 HCS08 AL TELIT TELIT AL CELULAR

Telit temp 0 xx.x La temperatura es: xx.x °C.

Telit cooler on 1 1 El cooler se encendió

Telit cooler off 2 1 El cooler se apagó

Telit umbral yy.y 3 yy.y 1 El umbral fue establecido

- - 1 ALERTA! La temperatura actual supero el umbral

- - 0 La temperatura se normalizó

Page 10: Sistema de control via gsm

MARÓN, GASTÓN ARIEL | MERONI, MILTON ALBERTO

10

FOREGROUND

BACKGROUND

Configuración módulo serie. Configuración módulo ADC. Loop infinito

Si (hay que calcular temperatura) Se calcula la temperatura

Si hay que comunicar con TELIT Envío Temp Sino Si temperatura > umbral && no avise la alerta Envió carácter de aviso a TELIT Sino Si temperatura < umbral && ya di aviso de alerta Envío carácter de aviso a TELIT Si (hay que setear un nuevo umbral) Se setea Fin Loop infinito

Interrupción RTC Limpio flag de interrupción de RTC Actualizo Buffer del puerto serie Si hay nuevo dato buffer lectura SI es carácter especial Activo flagConexión Sino Si flagConexión activado

0) Activo flag para que se realice un nuevo cálculo y se envíe a TELIT.

1) Se prende el cooler 2) Se apaga el cooler 3) Se espera el umbral

Si flagConexión activado

Si paso tiempo actualizar temperatura Activo flag para que se realice un nuevo calculo

Page 11: Sistema de control via gsm

MARÓN, GASTÓN ARIEL | MERONI, MILTON ALBERTO

11

Para la comunicación serie, utilizamos una librería que realiza la escritura y lectura del buffer del

módulo serie del HCS08 y para la conversión analógica-digital, contamos con una librería que nos

facilitará la configuración y la toma de datos del sensor a través del ADC del microcontrolador.

Calculo de la temperatura Para calcular la temperatura, decidimos utilizar el ADC del microcontrolador en modo 10 bits y en

single-convertion (una sola conversión). El canal que utilizamos para tomar las muestras, es el canal

0 (ADP0 – Puerto A bit 0).

La temperatura a controlar es entre 0° y 100°, su equivalente en tensión entregada por el sensor es

entre 0V y 1V. Al tener 10 bits para la conversión, decidimos no acondicionar el sensor debido a que

tenemos una resolución de 5V/1024 muestras (aproximadamente 4,8828125mV/bit). Finalmente,

el mínimo cambio del bit menos significativo equivale a, aproximadamente, 0.5°C (calculo hallado

por la división de 4,8828125mV/bit dividido 10mV/°C).

Para el cálculo de la temperatura, se tomaron 64 muestras para evitar sobrepico o variaciones

significativas de tensión. De estas 64 muestras se realiza un promedio (se eligen 64 muestras así la

operación división a nivel de bits es un desplazamiento de 6 bits a derecha, ahorrando tiempo de

procesamiento) quedando así una tensión que representa la temperatura actual. Luego se

multiplica por una constante equivalente a la resolución (488281) y lo dividimos por 100000,

quedando así una temperatura con el formato 249 (que equivaldrían a 24,9 grados).

Diseño del medio de comunicación entre TELIT y HCS08

Para realizar la comunicación serie se tuvo que diseñar un cable que cumpla con las especificaciones propias del protocolo serie. Como ambos dispositivos tienen conectores hembra, el cable debía tener en ambas puntas un terminal macho. Es decir, se deben conectar dos DTE. Para que la comunicación se efectúe en forma adecuada, los pines de las puntas se conectaron de la siguiente manera:

Page 12: Sistema de control via gsm

MARÓN, GASTÓN ARIEL | MERONI, MILTON ALBERTO

12

Diseño de la placa de alimentación La placa está alimentada por una fuente de 12V-1A. A su vez, está formada por un circuito regulador

de tensión, el cual baja la tensión a 5V capaces de alimentar el microcontrolador y al sensor que

utilizaremos para medir la temperatura; y por un circuito que permitirá alimentar al cooler con 12V

y encenderlo a través de un pin del microcontrolador.

Maqueta final