Autor Tema: ENVIO DE SMS CON UN PIC 16.... ATRAVES DE UN MODEM GSM SE PUEDE????  (Leído 15665 veces)

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

Desconectado paulo199

  • PIC10
  • *
  • Mensajes: 2
Hola amigos del foro, espero no molestarlos. Mi duda es la siguiente, estoy realizando un prototipo el cual deve tomar lecturas(humedad, Tº y pH), la idea es q estas lecturas llegen a un telefono movil atraves de msm pre-establecidos, el problema es que este proyecto esta orientado para estar en la interperie mas especificamente entre alguna plantacion. Mi idea seria comunicar el pic con el modem gsm(se puede??, y si es asi como hago para enviar los msm?, donde los guardo??)), no me interesa recibir nada solo enviar los datos


les agradecere mucho su ayuda :-/

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: ENVIO DE SMS CON UN PIC 16.... ATRAVES DE UN MODEM GSM SE PUEDE????
« Respuesta #1 en: 01 de Abril de 2008, 22:36:13 »
Hola, si se puede, necesitas una UART en el micro y con comandos AT lo manejas, es bastante sencillo. Que Modem tenes ?
Saludos !

Desconectado ASTROCAR

  • PIC24F
  • *****
  • Mensajes: 664
Re: ENVIO DE SMS CON UN PIC 16.... ATRAVES DE UN MODEM GSM SE PUEDE????
« Respuesta #2 en: 02 de Abril de 2008, 03:27:24 »
como le comento el colega Richi777, aplicando comandos at se puede enviar sms via modem y mejor aun todo lo puedo testiar con su modem y el hyperterminar de windows, luego que tenga todo claro de como funciona los comando at puede empezar hacer las pruebas con el pic y como ya es dicho con el colega richi777 tuiene que usar protocolo serial entre el pic y el modem.

saludos y aca estamos a la ordem para continuar.
EL APRENDER ES NADA; MEJOR ES COMPARTIR EL APRENDIZAJE

Desconectado fawatters

  • PIC10
  • *
  • Mensajes: 3
Re: ENVIO DE SMS CON UN PIC 16.... ATRAVES DE UN MODEM GSM SE PUEDE????
« Respuesta #3 en: 12 de Marzo de 2010, 21:21:12 »


hola gente: estoy empezando en esto de usar un modem GSM con PIC y ando buscando ejemplos   basicos de programas  para enviar y recibir  mensajes de texto mediante un pic (de la gama 16F o 18F) con un modem motorola g24, tengo en claro que esto se debe hacer mediante el puerto serie del pic  con comandos AT,o en su defecto con una aplicacion JAVA cargada en el modem  pero no tengo en claro como es la secuencia basica de comandos para lograr esto, si alguien me puede dar una idea de donde puedo encontrar algun ejemplo de programa en  JAVA o en comandos AT  se lo agradeceria. desde ya muchas gracias

micronoob

  • Visitante
Re: ENVIO DE SMS CON UN PIC 16.... ATRAVES DE UN MODEM GSM SE PUEDE????
« Respuesta #4 en: 12 de Marzo de 2010, 21:36:56 »


hola gente: estoy empezando en esto de usar un modem GSM con PIC y ando buscando ejemplos   basicos de programas  para enviar y recibir  mensajes de texto mediante un pic (de la gama 16F o 18F) con un modem motorola g24, tengo en claro que esto se debe hacer mediante el puerto serie del pic  con comandos AT,o en su defecto con una aplicacion JAVA cargada en el modem  pero no tengo en claro como es la secuencia basica de comandos para lograr esto, si alguien me puede dar una idea de donde puedo encontrar algun ejemplo de programa en  JAVA o en comandos AT  se lo agradeceria. desde ya muchas gracias

hola,

tienes algún sdk de motorola o alguna forma de conectar tu modem a la serial de tu PC  o adaptador serie?

s2.

Desconectado fawatters

  • PIC10
  • *
  • Mensajes: 3
Re: ENVIO DE SMS CON UN PIC 16.... ATRAVES DE UN MODEM GSM SE PUEDE????
« Respuesta #5 en: 12 de Marzo de 2010, 21:47:38 »

hola,

tienes algún sdk de motorola o alguna forma de conectar tu modem a la serial de tu PC  o adaptador serie?

s2.

todavia no tengo el modem pq lo compre via internet y no me ha llegado , pero si contaria con una conexion a la pc via puerto serie para usar un sdk de motorola y poder programarlo

micronoob

  • Visitante
Re: ENVIO DE SMS CON UN PIC 16.... ATRAVES DE UN MODEM GSM SE PUEDE????
« Respuesta #6 en: 12 de Marzo de 2010, 22:13:39 »


entonces una ves lo tengas conectado la midad del trabajo ya esta hecho
cuando se hace una machina de estado para comunicarse con un modem hay que tener en cuenta los tiempos de respuesta del modem
por esto siempre hay que probar bien el modem atreves de el puerto serie de tu PC
una vez tengas las ideas claras sobre como comunicarte con el puedes trasladar el código a tu PIC
no es una tarea compleja y empezare por pasarte algo de código porque te hagas una idea


estos son los comandos basicos para iniciar configurar y enviar un SMS

Código: [Seleccionar]
#define GSM_CMD_AT                (0x8000)   //AT 
#define GSM_CMD_DEFAULT           (0x8201)   //AT&F           (Default configuration)
#define GSM_CMD_SAVE              (0x8202)   //AT&W           (save the configuration)
#define GSM_CMD_RESET             (0x8407)   //AT$RESET       (Reset Stack Module)
 
#define GSM_RQST_GSMREG_STATUS    (0xA103)   //AT+CREG?       (status GSM registration)
#define GSM_SET_GSMREG_STATUS     (0x9103)   //AT+CREG=x      (status GSM registration)


#define GSM_SETNUM_SMS            (0x9104)   //AT+CMGS="xx"   (set SMS number)
#define GSM_WRITE_SMS             (0x5000)   //xxx ^z         (write SMS text + send)
#define GSM_SERVICE_NR            (0x9109)   //AT+CSCA="xxx.."(set service number)

#define GSM_ECHO_OFF              (0x8005)   //ATE0           (ECHO OFF COMMAND)
#define GSM_SEARCH_SIM            (0xA106)   //AT+CPIN?       (REQUEST PIN MODE)
#define GSM_SET_PIN               (0x9106)   //AT+CPIN="XXXX" (SEND PIN VALUE)      
#define GSM_IMEI                  (0x8108)   //AT+GSN         (REQUEST IMEI NUMBER)

UInt16  maskATcmd[8]={ 0x8000,
                       0x0100,
                       0x0200,
                       0x0400,
                       0x0800,
                       0x1000,
                       0x2000,
                       0x4000};
                           
 
                             //80   01  02  02  08 10 20  40
const char *GSMstaticSet[7]={"AT","+","&&","$","%","=","?"};


const char *GSMmacro[10]={"\0",     //00
                                "F\0",     //01
                                "W\0",     //02
                                "CREG\0",  //03
                                "CMGS\0",  //04
                                "E0\0",    //05
                                "CPIN\0",  //06
                                "RESET\0", //07
                                "GSN\0",   //08
                                "CSCA\0"   //09
                                };
                               
const char *GSMmacroIn[8]={" \0",       //00
                                  "OK\0",      //01
                                  "ERROR\0",   //02
                                  "SIM PIN\0", //03
                                  "READY\0",   //04
                                  "+CREG:\0",  //05
                                  "SIM\0",     //06
                                  "PIN\0"      //07
                                  };   



este es el sintetizador de comandos es un methodo que uso en mis maquinas

Código: [Seleccionar]
void GSMsendCmd(UInt16 cmd, UInt16 delay, Pointer value, UInt8 len,Bool isStr)
{

char   _tempStr[200]={0x0};
UInt8  _tempIdx=0;
UInt8  ix=0;
Byte _idxMacro=0;
Pointer _tempChar=0;
Pointer _savePointer1= (Pointer) GSMstaticSet;

breakpoint();

ResetGSMallqueueList();

if(cmd & maskATcmd[GSM_IDXCMD1])
{//AT
_savePointer1= (Pointer) GSMstaticSet[GSM_IDXCMD1];

_tempStr[_tempIdx++]=*_savePointer1++;
_tempStr[_tempIdx++]=*_savePointer1++;
}

if(cmd & maskATcmd[GSM_IDXCMD2])
{ //+
_savePointer1= (Pointer) GSMstaticSet[GSM_IDXCMD2];
_tempStr[_tempIdx++]=*_savePointer1;
    }   
if(cmd & maskATcmd[GSM_IDXCMD3])
{//&
_savePointer1= (Pointer) GSMstaticSet[GSM_IDXCMD3];
_tempStr[_tempIdx++]=*_savePointer1;
    }
if(cmd & maskATcmd[GSM_IDXCMD4])
{//$
_savePointer1= (Pointer) GSMstaticSet[GSM_IDXCMD4];
_tempStr[_tempIdx++]=*_savePointer1;
    }
if(cmd & maskATcmd[GSM_IDXCMD5])
{//%
_savePointer1= (Pointer) GSMstaticSet[GSM_IDXCMD5];
_tempStr[_tempIdx++]=*_savePointer1;
    }
   
_idxMacro = (Byte)cmd & 0x00FF;
if(_idxMacro)
{
_tempChar = (Pointer) GSMmacro[_idxMacro];

    for(ix=0;ix<6;ix++)
    {
   if(isPrint(*_tempChar))
     _tempStr[_tempIdx++]=*_tempChar++;
   else break;
     
}   
}

if(cmd & maskATcmd[GSM_IDXCMD6])
{
if(!(cmd & maskATcmd[GSM_IDXCMD8]))
{//=
    _savePointer1= (Pointer) GSMstaticSet[GSM_IDXCMD6];
    _tempStr[_tempIdx++]=*_savePointer1;
    }   
    if(isStr)_tempStr[_tempIdx++]='"';
    while(len--)//import value
    {
    if(isPrint(*value))
    _tempStr[_tempIdx++]=*value++;
    }
    if(isStr)_tempStr[_tempIdx++]='"';
}   

breakpoint();

if(cmd & maskATcmd[GSM_IDXCMD7])
{//?
_savePointer1= (Pointer) GSMstaticSet[GSM_IDXCMD7];
_tempStr[_tempIdx++]=*_savePointer1;
    }
if(cmd & maskATcmd[GSM_IDXCMD8])//^z
    _tempStr[_tempIdx++]=GSM_SUB;
else
    _tempStr[_tempIdx++]=GSM_CR;//\r
   
breakpoint();

    #if defined (_GSMDEBUG_)
       DputsRS485(_tempStr);
    #endif

    GSM_CTS(1);
    putsUART2(_tempStr);
    while(BusyUART2());
    GSM_CTS(0);
    secureON=False;
if(delay)DelayMs(delay);

breakpoint();

}


y con añadir una pequeña machina de estado puedes enviar los comandos que quieres a tu modem

aqui un ejemplo de envio sms

Código: [Seleccionar]

GSMsendCmd(GSM_SETNUM_SMS,0,"00391112223344",14,True);
GSMsendCmd(GSM_WRITE_SMS,0,"hola soy yo",11,False);



asi de simple

veras que una vez conectado tu modem y siguiendo los pasos de el manual consigues en pocos minutos enviar tu sms

saludos

Desconectado fawatters

  • PIC10
  • *
  • Mensajes: 3
Re: ENVIO DE SMS CON UN PIC 16.... ATRAVES DE UN MODEM GSM SE PUEDE????
« Respuesta #7 en: 12 de Marzo de 2010, 22:57:48 »

Gracias por la ayuda  micronoob, estudiare el codigo que me diste y en cuanto me llegue el modem comienzo con las pruebas

Saludos  :lol:

micronoob

  • Visitante
Re: ENVIO DE SMS CON UN PIC 16.... ATRAVES DE UN MODEM GSM SE PUEDE????
« Respuesta #8 en: 12 de Marzo de 2010, 23:01:39 »

Gracias por la ayuda  micronoob, estudiare el codigo que me diste y en cuanto me llegue el modem comienzo con las pruebas

Saludos  :lol:

de nada

recuerda que es solo una parte del codigo y hay llamadas a defines y funciones no publicadas

cuando llege tu modem me comentas y seguimos

Saludos.

Desconectado COARITES

  • PIC10
  • *
  • Mensajes: 13
Re: ENVIO DE SMS CON UN PIC 16.... ATRAVES DE UN MODEM GSM SE PUEDE????
« Respuesta #9 en: 11 de Julio de 2013, 14:43:17 »
Yo tengo listo mi modem(huawei) y mi pic(16F876A) listo; mi pregunta que pines del modem uso; el modem solo tiene cuatro pines(conector usb) VCC, GND, D+ y D-; ya hice pruebas con aplicacion que me hice para enviar sms desde la pc y todo va de maravilla. Este modem trabaja de forma serial; pero tiene conector usb

Ahora me pregunta es necesito el max 232 para conectarlo al pic o lo conecto directamente a los pines de TX y RX, y si es asi; cuales pines del modem lo conecto.

El modem es de este tipo:

http://ren-ben.en.alibaba.com/product/385564685-200183795/Huawei_e173_3g_usb_modem_hsdpa.html
« Última modificación: 11 de Julio de 2013, 15:05:25 por COARITES »

Desconectado SavageChicken

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 928
Re: ENVIO DE SMS CON UN PIC 16.... ATRAVES DE UN MODEM GSM SE PUEDE????
« Respuesta #10 en: 29 de Julio de 2013, 19:13:22 »
Estimado Coarites.

Me temo que el modem que has adquirido no lo puedes conectar a un PIC 16F876A.
Para tu conocimiento todo USB trabaja en forma serial, pero el protocolo con el cual trabaja difiere enormemente del protocolo serial RS-232 que usa el PIC.
Desgraciadamente no podras conectarlo a un PIC, ni con un MAX232 ni directamente.  :?

Salud  8)
No hay preguntas tontas...
Solo hay tontos que no preguntan.