Arduino (IoT): Simple Tutorial GSM Parte V

Arduino Honduras Santiapps Marcio Valenzuela

Tutorial GSM: Parte V

Ahora queremos hacer cosas mas precisas como hacer algo si recibimos un SMS.

Requisitos:

  1. Computadora (mac)
  2. Arduino MEGA (u otra variante Arduino) o incluso Arduino clone, Edison, Raspberry…  Este tutorial en particular usa una Arduino MEGA.
  3. Modulo SIM900 GSM/GPRS
  4. Arduino IDE (https://www.arduino.cc/en/Main/Software)

Estaremos usando el modulo SIM900 GSM/GPRS para nuestra comunicación:

Arduino - SIM900 GSM_GPRS module Santiapps Marcio Valenzuela
Arduino – SIM900 GSM_GPRS

Como podemos ver, el modulo tiene un pin 5V, 2 pines GND y los típicos 2 pines para Rx y Tx.

Veamos un ejemplo sencillo:


#include <SoftwareSerial.h>
char inchar;
//SoftwareSerial SIM900(7, 8);
int led1 = 10;
int led2 = 11;
int led3 = 12;
int led4 = 13;
void setup(){
Serial.begin(19200);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
SIM900power();
Serial1.begin(19200);
delay(20000);
Serial1.print("AT+CMGF=1\r"); // modo texto
delay(100);
Serial1.print("AT+CNMI=2,2,0,0,0\r");
delay(100);
Serial.println("Ready...");
}
void SIM900power() {
digitalWrite(9, HIGH);
delay(1000);
digitalWrite(9, LOW);
delay(7000);
}
void loop() {
//Si entra algun caracter por el modulo GSM...
if(Serial1.available() >0){
inchar=Serial1.read();
if (inchar=='#'){
delay(10);
inchar=Serial1.read();
if (inchar=='a'){
delay(10);
inchar=Serial1.read();
if (inchar=='0'){
digitalWrite(led1, LOW);
} else if (inchar=='1'){
digitalWrite(led1, HIGH);
}
delay(10);
inchar=Serial1.read();
if (inchar=='b'){
inchar=Serial1.read();
if (inchar=='0'){
digitalWrite(led2, LOW);
} else if (inchar=='1'){
digitalWrite(led2, HIGH);
}
delay(10);
inchar=Serial1.read();
if (inchar=='c'){
inchar=Serial1.read();
if (inchar=='0'){
digitalWrite(led3, LOW);
}else if (inchar=='1'){
digitalWrite(led3, HIGH);
}
delay(10);
inchar=Serial1.read();
if (inchar=='d'){
delay(10);
inchar=Serial1.read();
if (inchar=='0'){
digitalWrite(led4, LOW);
}else if (inchar=='1'){
digitalWrite(led4, HIGH);
}
delay(10);
}
}
Serial1.println("AT+CMGD=1,4"); // borrar todos los SMS
}
}
}
}
}

Aquí estamos haciendo algo al recibir un SMS.  Ya hemos visto como enviar uno pero aquí estamos recibiendo uno.  Ademas de recibirlo, podemos parse el contenido del mismo.  Luego escribimos este contenido al monitor serial.  Perfectamente podríamos también llevar a cabo bloques de código dependiendo de lo que se recibió como mensaje de texto.

 

Que podemos hacer con esta tecnología:

  • Utilizar GPRS para transmitir datos entre nuestro proyecto Arduino y la nube.  Por ejemplo parse datos en nuestros proyectos de servicios web como twitter o servicios meteorológicos.
  • Postear datos remotamente desde nuestros proyectos así como crear proyectos que actúen como servidores de información en la nube.
  • Enviar instrucciones a proyectos y controlarlos via llamadas o SMS.

Ahora podemos dar a nuestro robot habilidades realmente avanzadas!

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s