Autor Tema: RE: SCADA usando 16F877A - 18F4550 vía GSM  (Leído 3282 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado HaRdAlO

  • PIC10
  • *
  • Mensajes: 4
RE: SCADA usando 16F877A - 18F4550 vía GSM
« en: 15 de Mayo de 2008, 13:41:05 »
Estimados Colegas:

Actualmente vengo desarrollando un proyecto de un mini SCADA usando PIC's y eviando un mensaje de eventos vía SMS a un movil.

Bueno, os comento algo estoy empleando un sensor de nivel que maneja una señal analógica de 4-20 mA para un silo de almacenamiento de arroz. Este sensor debe indicar la altura a la que se encuentra el arroz dentro del silo y enviar constantemente un mensaje al personal de producción de la cantidad de material existente en dicho silo (Tiempos modificables desde un teclado ó el SCADA); dicha información debe llegar al operador para tener un registro periódico del mencionado proceso.

Ya logré manejar esta señal analógica y transmitirla a una PC por medio del puerto RS232 a una pantalla desarrollada en JAVA y hasta el momento no he tenido muchos problemas; lo que estoy tratando de implementar es un SCADA vía GSM para lo cual estoy empleando un celular Motorola como MODEM y empleando los comandos AT puedo lograr que el PIC me envíe tonos RING de llamada; pero por más que craneo no puedo hacer que el PIC me envíe mensajes de texto mediante SMS de la lectura del sensor de nivel 

El problema que tengo es el siguiente:

AT+CGS=70750515 (Número de móvil)
Respuesta 1ª módem:   >
Enviar al módem: Mensaje SMS <Ctrl-Z>
Respuesta 2ª módem:   +CMGS: 188
                                    OK (Mensaje enviado)

Necesito saber como realizar la línea de código en C para que el PIC lleve el mensaje de la lectura del sensor de nivel a un formato de texto y realize las tareas de  Ctrl-Z (Que se aplica para el envío de mensajes)

a ver si alguno de vosotros realizó alguna aplicación similar y pueda darme una manito se os agradecería muchísimo.

Saludos:

HaRdAlO

PD: Si conocen algunos links ó páginas de ayuda favor enviar a mi cooreo www.hardalo@yahoo.es

Desconectado ema

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1078
Re: RE: SCADA usando 16F877A - 18F4550 vía GSM
« Respuesta #1 en: 15 de Mayo de 2008, 13:51:20 »
Nunca realize algo asi pero te puedo aconsejar que te des una vuelta por la sección de telefonia. Ahi van a poder guiarte mas.


Saludos y suerte con tu proyecto

Desconectado ALE1973

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 229
Re: RE: SCADA usando 16F877A - 18F4550 vía GSM
« Respuesta #2 en: 15 de Mayo de 2008, 15:39:21 »
Hola, si no entendi mal tu prengunta, con un printf(), o con un sprintf() puedes pasar a texto cualquier variable.
Por ejemplo supongamos te tu variable sea entero de 16 bits, haces:
Para CCS, que es el que conozco.

int16 altura;
char altTexto[5];

sprintf(altTexto,"<%lu>",altura);

A partir de ahi, en altTexto esta la cadena de texto que contiene tu altura.


Saludos.
Alejandro.

Desconectado HaRdAlO

  • PIC10
  • *
  • Mensajes: 4
Re: RE: SCADA usando 16F877A - 18F4550 vía GSM
« Respuesta #3 en: 15 de Mayo de 2008, 18:55:21 »
OK, gracias por las ideas brindadas, pero creo que planteé mal el problema.

Resulta que para enviar el mensaje de texto estoy usando los comandos AT del celular (a eso me refiero de usar el movil como modem) y esta excelente la idea de importar un texto para enviar.

Donde realmente tengo problemas es en la ejecución del comando AT para envío de mensajes. Ejm:

AT+CGMS, es el comando esencial para el envío de mensajes al MODEM, y la secuencia que se emplea para la ejecución de este comando es el siguiente:

AT+CGMS=70750515
> Mensaje SMS <Ctrl-Z>
OK

si alguno tiene la posibilidad de conectar su movil a la PC y enviar mensajes o llamadas por hyperterminal, podrá orientarse más al problema que tengo

La duda que tengo es como hacer que el pic ejecute la función <Ctrl-Z>;

Revisando algunos manuales referentes al problema encontré el siguiente texto que quizas os pueda orientarlos:

"Para la sincronización entre el PIC y el MODEM es necesario interpretar correctamente el fin de cada transmisión. Para ello, al final de la mayoría de los comandos AT se debe enviar un CR (Carry Return) y un LF (Line Feed). estos caracteres tienen su correspondiente valor decimal: CR=13d; LF=10d, aunque también cabe emplear su equivalente en hexadecimal debido a la posibilidad de incorporar esta codificación en las instrucciones TXD. En este caso, los códigos correspondientes son CR=0Dh; LF=Ah.

Para indicar el final de texto de mensaje, caractér Ctrl-Z, se envía su codificación en hexadecimal, que corresponde a 1Ah"

Me encuentro estudiando la manera de incorporar este tipo de codificación para que el pic pueda realizar el envío demensajes SMS de manera automática creo que la clave está en poder usar los comandos en su modo hexadecimal; o que opinan vosotros

Atento a cuaquier tipo de ideas que me ayuden a resolver este problemilla.

Saludos

HaRdAlO

Desconectado HaRdAlO

  • PIC10
  • *
  • Mensajes: 4
Re: RE: SCADA usando 16F877A - 18F4550 vía GSM
« Respuesta #4 en: 22 de Mayo de 2008, 23:16:34 »
OK;

Ya puedo enviar mensajes pregrabados en el celu, empleando los comandos AT

Ahora tengo un pequeño problema que talvés alguno de vosotrospueda ayudarme.

Si quiero enviar un mensaje de pueda ser leído desd el PIC y enviarlo vía SMS empleando los comandos AT necesito que el programa escriba el valor leido por algún tipo de sensor, lo traduzca y lo envíe.

Ejm.

AT+CGS=70750515
> Valor leído es:  xxx <Ctrl-Z>
OK

Lo que no tengo idea es el como generar los caracteres especiales "Ctrl-Z" dentro del Programa del PIC para que una vez leída y traducida la señal esta pueda enviarla.

Consultando con unos colegas me indican que lo más fácil es emular una señal que sea traducida como un Ctrl-Z "Me imagino que enviando algún código en específico"

No sé si alguno de vosotros pueden ayudarme con este problemilla; o darme alguna pista de como solucionar esta función

Espero vuestros comentarios

HaRdAlO

Desconectado Tholkiem

  • PIC10
  • *
  • Mensajes: 39
Re: RE: SCADA usando 16F877A - 18F4550 vía GSM
« Respuesta #5 en: 25 de Mayo de 2008, 05:49:35 »

Te respondo lo que hice es crearme una simple  aplicacion windows, que detectara el Keycode de la combinacion
de la pulsacion Ctrl+Z. El resultado es 90. Es decir cada vez que pulsamos Ctrl+z para el celular es el caracter 90

#define CTRLZ 90

int16 altura;
char msg[200];
//Eso seria
sprintf(msg,"Altura silo <%lu>%c",altura,CTRLZ);

Espero que te sirva. YA comentaras resultados.


 

anything