Como receber SMS usando módulo GSM com Arduino- (Parte 47/49)

Cómo recibir SMS usando el módulo GSM con Arduino - (Parte 47/49)

En determinadas aplicaciones, los sistemas basados ​​en microcontroladores deben estar conectados a la red GSM, lo que permitirá al usuario controlar el sistema enviando mensajes o realizando una llamada. La ventaja de utilizar la comunicación GSM con un sistema o dispositivo es que el usuario puede controlar el sistema de forma inalámbrica independientemente de la distancia en comparación con cualquier otra comunicación inalámbrica, siempre que tanto el usuario como el dispositivo se encuentren en un área de cobertura celular. .

Los teléfonos móviles tienen módulos GSM integrados que pueden ser utilizados por el procesador interno del teléfono para realizar una llamada, enviar o recibir mensajes o incluso conectarse a la red GPRS. Cuando se trata de un sistema basado en un microcontrolador, se utiliza un módulo GSM independiente en lugar del propio teléfono móvil. Hay módulos GSM disponibles que pueden realizar comunicación en serie con sistemas basados ​​en microcontroladores. La comunicación se realiza enviando o recibiendo comandos AT con el módulo GSM. Este proyecto específico demuestra cómo interactuar con un módulo GSM y leer y mostrar SMS en una pantalla LCD de 16*2.

Cualquier placa basada en un microcontrolador AVR que siga el esquema estándar de Arduino y esté actualizada con el gestor de arranque Arduino puede denominarse placa Arduino. Arduino se conoce como hardware de código abierto y Arduino IDE también es de código abierto y cualquiera puede contribuir con sus bibliotecas a Arduino. Todas las placas Arduino deben ser compatibles con Arduino IDE, que se puede utilizar para programar placas Arduino.

Se explica el funcionamiento de este proyecto basándose en la placa Arduino pro-mini y el IDE versión 1.0.3 para Windows. La ventaja de esta tabla es que viene en un tamaño muy pequeño; Se puede soldar cualquier tipo de conector en su periferia según nuestras necesidades. Es muy compatible con la placa de pruebas y ocupa mucho menos espacio que una placa de pruebas típica.

La imagen de la placa Arduino pro-mini y el IDE de Arduino se muestra a continuación:

Fig. 2: Placa típica Arduino Pro-Mini

Fig. 3: Ventana del software Arduino IDE

Dado que la placa Arduino pro-mini no tiene circuitos para interactuar con el puerto serie o el puerto USB de la PC, se requiere una placa convertidora USB a TTL externa para conectarla a la PC. Este hardware ayuda a programar la placa Arduino y también ayuda en la comunicación serie con el puerto USB de la PC.

4: Placa convertidora externa de USB a TTL para programación Arduino y comunicación en serie

Se supone que el lector ha leído el proyecto sobre cómo empezar con Arduino y ha probado todo lo que se comenta allí. El módulo GSM utilizado en este proyecto es un módulo basado en SIM900 que puede comunicarse con otros dispositivos utilizando el puerto de comunicación serie RS232. Funciona con una fuente de alimentación de 9 V y la imagen del mismo se muestra a continuación:

Fig. 5: Módulo GSM SIM900 conectado al pin Tx del módulo de la placa Arduino a través de max232

El módulo GSM se conecta a la placa Arduino mediante el puerto de comunicación serie. Dado que el módulo tiene un puerto RS232 y el Arduino pro-mini puede comunicarse utilizando niveles lógicos TTL, se utiliza un IC max232 para realizar una conversión bidireccional entre los niveles lógicos RS232 y TTL. El pin Tx de la placa Arduino está conectado al pin Rx del módulo GSM a través de max232 y el pin Rx del Arduino está conectado al pin Tx del módulo GSM usando el propio max232.

El código escrito en Arduino es capaz de comunicarse con el módulo GSM mediante comandos AT . Los comandos AT se envían o reciben desde el módulo utilizando las funciones de comunicación en serie proporcionadas por la biblioteca Arduino. En este proyecto se utilizan funciones como Serial.begin que ayuda a inicializar el puerto serie con una determinada velocidad en baudios, Serial.write para enviar datos al puerto serie, Serial.available y Serial.read para leer datos del puerto serie. y ya se han discutido en proyectos anteriores sobre cómo realizar comunicación en serie con Arduino , cómo enviar y recibir datos en serie usando Arduino y cómo realizar depuración en serie con Arduino.

Los módulos GSM responden "OK" cuando reciben el comando "AT" y es la mejor manera de verificar la comunicación entre el módulo y el microcontrolador.

+CMGF: este comando se utiliza para configurar el modo SMS. El modo Texto o PDU se puede seleccionar asignando 1 o 0 al comando.

Sintaxis: AT+CMGF=

0: para modo PDU

1: para modo texto

Por ejemplo,

AT+CMGF=1

+CNMI: este comando AT se utiliza para especificar cómo se deben manejar los mensajes SMS recién llegados. Se puede utilizar para configurar el módem GSM/GPRS o el teléfono móvil para enrutar los mensajes SMS entrantes directamente al puerto serie o para guardarlos en el almacén de mensajes y luego notificar al dispositivo host enviando una cadena a través del puerto serie.

SINTAXIS: AT+CNMI=

Por ejemplo, para enrutar la secuencia de mensajes entrantes al puerto serie del dispositivo, el código escrito para este proyecto utiliza el siguiente comando;

AT+CNMI=2,2,0,0,0

Tan pronto como se recibe un SMS, el módulo GSM envía una larga cadena a la placa Arduino que consta de muchos detalles sobre el mensaje y también incluye el texto original. El código está escrito de tal manera que esperará hasta que algún carácter sea recibido por el puerto serie y tan pronto como comience a recibir verificará la aparición del cuarto ' ” ' y escribirá el resto de los caracteres directamente en el 16. * 2 LCD. Los caracteres después del cuarto ' “ ' en la cadena recibida serán el texto original y el resto de caracteres se ignoran en el código usando las siguientes líneas;

hacer

{

mientras (! Serie.disponible);

} mientras ('”' != Serial.read );

hacer

{

mientras (! Serie.disponible);

} mientras ('”' != Serial.read );

hacer

{

mientras (! Serie.disponible);

} mientras ('”' != Serial.read );

hacer

{

mientras (! Serie.disponible);

} mientras ('”' != Serial.read );

El texto SMS se graba en una pantalla LCD de 16*2 usando funciones de biblioteca que se puede utilizar para interconectar un módulo LCD externo con la placa Arduino. Las funciones que se pueden utilizar para acceder a la pantalla LCD ya se han comentado en proyectos anteriores en cómo interactuar con una pantalla LCD , cómo mostrar el valor del sensor en la pantalla LCD , cómo conectar la pantalla LCD a la PC y cómo hacer una pantalla LCD con desplazamiento .

Puede verificar y cargar el código que puede enviar los mismos comandos a la placa Arduino como se explica en el proyecto Cómo comenzar con Arduino . Asegúrese de que el módulo GSM haya estado encendido al menos 2 minutos antes de que la placa Arduino comience a enviar comandos para que el GSM pueda establecer comunicación con la red celular correspondiente a la tarjeta SIM insertada en ella.

Código fuente del proyecto

 ###




 /*============================= EG LABS ================== ===================//
 
Demostración sobre cómo recibir un SMS usando el módulo GSM


 El circuito:

 LCD:

 * Pin LCD RS a pin digital 12

 * LCD habilita pin a pin digital 11

 * Pin LCD D4 a pin digital 7

 * Pin LCD D5 a pin digital 6

 * LCD D6 pin a digital pin 5

 * Pin LCD D7 a pin digital 4

 * LCD R/W pin a tierra

 * Resistencia de 10K:

 * termina en +5V y tierra

 *limpiador al pin 3 del LCD

 * Ánodo LED conectado a la salida digital 9

 * Cátodo LED conectado a tierra a través de una resistencia de 1K


 GSM:

 PIN RX DE GSM AL PIN TX0 DE ARDUINO

 CORTO LOS PINES DE TIERRA DE ARDUINO Y XBEE

 =============================== EG LABS ================== = ==================*/



 #incluir

 // inicializa la biblioteca con los números de los pines de la interfaz

 LCD de cristal líquido (12, 11, 7, 6, 5, 4);


 // le damos un nombre al pin:

 LED int = 9;

 // byte serial entrante

 int enByte = 0;


 configuración vacía

 {

 pinMode(9, SALIDA);

 lcd.comenzar(16, 2);

 lcd.print("GARAJE PARA INGENIEROS");

 lcd.setCursor(0, 1);

 lcd.print(" GSM SMS ");

 retraso(1000);



 // inicializa el pin del led como salida.

 pinMode(led, SALIDA);
 
// inicia el puerto serie a 9600 bps

 Serie.begin(9600);

 //espera un momento hasta que el puerto serie esté listo

 retraso(100);


 // envía los datos iniciales una vez //

 Serial.print("AT+CMGF=1nr");

 retraso(500);

 Serial.print("AT+CNMI=2,2,0,0,0nr");

 retraso(2000);



 escritura digital (led, ALTA);

 }


 bucle vacío

 {

 del

 {

 mientras (! Serie.disponible);

 } mientras ('"'! = Serial.read);



 del

 {

 mientras (! Serie.disponible);

 } mientras ('"'! = Serial.read);



 del

 {

 mientras (! Serie.disponible);

 } mientras ('"'! = Serial.read);



 del

 {

 mientras (! Serie.disponible);

 } mientras ('"'! = Serial.read);



 mientras (! Serie.disponible);

 inByte = Serial.read;

 mientras (! Serie.disponible);

 inByte = Serial.read;



 lcd.claro;

 mientras(1)

 {

 mientras (! Serie.disponible);

 inByte = Serial.read;



 si (enByte == 'r')

 romper;

 demás;



 lcd.write (enByte);

 }

 }

 ###

Diagramas de circuito

Diagrama de circuito: recepción de SMS mediante módulo GSM-Arduino

Componentes del proyecto

  • Arduino ProMini
  • Condensador
  • LCD
  • CONDUJO
  • MAX232
  • Potenciómetro
  • Resistor

Vídeo del proyecto

contenido relacionado

Regresar al blog

Deja un comentario

Ten en cuenta que los comentarios deben aprobarse antes de que se publiquen.