Recibir SMS desde un módulo GSM en un sistema alimentado por batería

0

El título es bastante claro. Estoy trabajando con un módulo GSM (SIM908) y todo el sistema funciona con una batería y se supone que debe funcionar durante bastante tiempo.
El sistema obtiene una muestra de un sensor cada 2 horas aproximadamente y envía todas las muestras tomadas diariamente mediante SMS. Mientras tanto, se va a dormir para que nada funcione y, por lo tanto, no puedo recibir ningún mensaje de GSM.
Quiero enviar algunas configuraciones y configuraciones desde mi teléfono mediante SMS a un sistema que está en reposo en el momento.

En un sistema normal donde hay energía todo el tiempo, puedo leer y procesar los mensajes recibidos con los comandos AT pero en un sistema alimentado por batería, no estoy seguro de qué hacer exactamente.
Porque despierto el sistema por un tiempo bastante pequeño solo para enviar datos, pero ¿cómo puedo recibir los SMS que he enviado unas cuantas horas antes en ese momento mientras NO estoy planeando mantener el sistema encendido por mucho tiempo? (Quiero decir, no puedo esperar para recibir mensajes para siempre)

Lamentablemente, no hay comandos AT que me den la cantidad de mensajes recibidos y almacenados, por lo que podré encender el sistema por un par de minutos y repasar esos mensajes almacenados para encontrar el mensaje que estoy buscando. para.

solo hay un comando AT + CMGL="REC UNREAD" pero da todos los mensajes, incluidos sus índices, sus números, su fecha y hora, su contenido y todo lo que responde, lo cual no es muy bueno para mí. Sería mejor si supiera el número total de mensajes en su lugar y luego simplemente podría pasar ese número de mensajes. Algo así como oye amigo hay 12 mensajes en la memoria del módulo.

PERO, ¿qué pasaría si al encender el sistema por un par de minutos no fuera suficiente y perdiera mi mensaje de alguna manera o la red todavía no lo hubiera enviado al módulo GSM? ¿Qué hago entonces?

No podría pensar en otra cosa más que en encender el sistema todos los días durante un par de minutos y luego procesar los mensajes almacenados si hubiera alguno. Pero como dije, ¿y si esos minutos no fueran suficientes para que el módulo GSM reciba mensajes? GSM es como el cáncer para una batería y no puedo mantener el GSM en línea para siempre o durante mucho tiempo.

Entonces, ¿cuál es la mejor manera de garantizar que un sistema inactivo reciba un SMS correctamente? Y no importa si lo recibe ese mismo día o el siguiente. Pero puedo enviar un SMS como respuesta al remitente para que sepa que el sistema recibió los mensajes finalmente (¡es una buena idea!). Espero haber podido hacer mi punto.

    
pregunta mostafanfs

1 respuesta

3

No creo que haya ningún comando o método incorporado para obtener la cantidad de SMS no leídos que desee. El pin RING se puede utilizar como un indicador de SMS entrantes o llamadas. Podría configurar una interrupción externa para despertar la MCU en el borde descendente del pin RING. El pin se mantiene bajo durante 120 ms antes de volver ALTO. Luego puedes leer el SMS con AT+CMGR=1 .

Como bonificación, puede poner el módulo en modo de suspensión enviando AT+CSCLK=1 y luego elevando la línea DTR HIGH. Esto debería reducir significativamente el consumo de corriente. Cuando llega un SMS, se activa automáticamente y el pin RING envía un pulso que puede usarse para activar la MCU como se explicó anteriormente. También puede activar el módulo usted mismo presionando DTR LOW. Lea el manual de diseño de hardware para más detalles.

    
respondido por el TisteAndii

Lea otras preguntas en las etiquetas