Post on 14-Apr-2017
SISTEMA DE CONTROL UTILIZANDO EL KIT DE
DESARROLLO TELIT INFORME FINAL
04 DE DICIEMBRE DE 2014 MARÓN, GASTÓN ARIEL | MERONI, MILTON ALBERTO
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
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
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
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.
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.
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
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
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ó
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
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:
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