Hola amigos, después de mucho tiempo de tener aparcado el hobby hace un par de meses me preguntó mi suegro si podría hacer que la caldera de su casa del pueblo se podría encender remotamente. Muy chulo yo le dije que por supuesto, así que des enpolvé unas placas que me habían sobrado de otro proyecto y me puse manos a la obra.
Las placas llevan un 16f628a con un par de entradas con anti rebotes por hardware, una conexión onewire, seis relés de salida y la posibilidad de montar un rs232 o un rs422. Ideal ademas de ser una placa completamente verificada pues lleva funcionando en mi casa diez años controlando los toldos de la terraza así como leyendo la temperatura exterior y reportandola al sistema de domotica basado en un sistema de Crestron.
La idea era conectarlo a un terminal GSM de wavecom y controlarlo por SMS
El programa tampoco iba a ser tan diferente... pues JA!!!!! me está volviendo loco.
El cacharro funciona cuando le da la gana y ademas con recochineo.
Si simulo el wavecom desde el pc y mando las mismas cadenas de texto que recibiría en caso de recibir un SMS el programa no falla nunca pero si los mensajes llegan realmente del wavecom no funciona ni un 5% de las veces
Está hecho con picbasic pro 2.60.
EL CODIGO LO HE BORRADO POR TENER ERRORES QUE HARÍAN QUE SI OTRO QUISIERA USAR ALGUNA PARTE DE EL LE DIERA UN MONTÓN DE PROBLEMAS.
LO SUBIRE CUANDO LO TENGA MAS DEPURADO
Ni caso a los comentarios pues muchos de ellos están todavía del programa anterior.
Como podéis ver hay una rutina en ensamblador que recibe los caracteres del puerto serie y los guarda en un buffer circular que en este caso es de 80 bytes, aunque es ajustable mediante una constante. Aunque los mensajes recibidos del GSM son de 90 o mas caracteres el sistema es lo suficientemente rápido y lo parsea sobre la marcha sin llegar a llenarse.
El parseado de los caracteres recibidos está hecho con una maquina de estados y solo parseo los comandos que espero en este caso son los siguientes
CMTI - que es la indicación del modem de que ha recibido un SMS y en ese caso envío al modem la petición para leer el sms
temp - la solicitud de que reporte la temperatura
encen - para encender la caldera ( activar un relé )
apag - para apagar la caldera ( des activar el relé )
Pues el problema como digo es que si mando las cadenas de texto idénticas a las envía el modem al leer los sms ( las he capturado con un programa terminal ) desde un programa terminal funciona al 100%, pero si es la cadena real del modem no funciona ni por asomo.
He probado a bajar la velocidad de conexión con el modem pero no se porqué, cuanto mas la bajo peor funciona
Alguna idea antes de que haga el ridículo diciéndole a mi suegro que no lo consigo?