
Tutorial GSM IV
Ahora exploraremos como llamar a Arduino para hacer algo mas especifico. Aquí vamos a parse otra informacion sobre la llamada entrante.
Requisitos:
- Computadora (mac)
- Arduino MEGA (u otra variante Arduino) o incluso Arduino clone, Edison, Raspberry… Este tutorial en particular usa una Arduino MEGA.
- Modulo SIM900 GSM/GPRS
- Arduino IDE (https://www.arduino.cc/en/Main/Software)
Estaremos usando el modulo SIM900 GSM/GPRS para nuestra comunicación:

Como podemos ver, el modulo tiene un pin 5V, 2 pines GND y los típicos 2 pines para Rx y Tx. Seguiremos usando los pins 18 & 19 en nuestra MEGA como Serial1.
En este caso leeremos cuantas veces suena el timbre. El timbre suena y manda una señal “RING”. Mejor dicho la librería nos permite identificar 1 ring a la vez. El modulo se comunica a traves de tonos y cada tono significa algo distinto. Esto significa que podemos saber cuantas veces ha sonado el timbre de la llamada entrante y reaccionamos en base a esa informacion.
Veamos un ejemplo sencillo:
#include <SoftwareSerial.h>
char inchar;
//SoftwareSerial SIM900(7, 8);
int numring=0;
int comring=3;
int onoff=0; // 0 = off, 1 = on
void setup(){
Serial.begin(19200);
// set up the digital pins to control
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
digitalWrite(12, HIGH);
digitalWrite(13, LOW);
// wake up the GSM shield
SIM900power();
Serial1.begin(19200);
Serial1.print("AT+CLIP=1\r");
delay(100);
}
void SIM900power(){
digitalWrite(9, HIGH);
delay(1000);
digitalWrite(9, LOW);
delay(7000);
}
void doSomething(){
if (onoff==0){
onoff=1;
digitalWrite(12, HIGH);
digitalWrite(13, LOW);
Serial.println("D12 high D13 low");
} else
if (onoff==1) {
onoff=0;
digitalWrite(12, LOW);
digitalWrite(13, HIGH);
Serial.println("D12 low D13 high");
}
}
void loop(){
if(Serial1.available() >0){
inchar=Serial1.read();
if (inchar=='R'){
delay(10);
inchar=Serial1.read();
if (inchar=='I'){
delay(10);
inchar=Serial1.read();
if (inchar=='N'){
delay(10);
inchar=Serial1.read();
if (inchar=='G'){
delay(10);
// Nuestro modulo ha sonado 1 vez
numring++;
Serial.println("ring!");
if (numring==comring){
numring=0; // reseteamos el counter
doSomething();
}
}
}
}
}
}
}
Como podemos ver la tecnología nos permite realizar tareas bien especificas en base a controles bien puntuales en nuestros proyectos.
Exploremos ahora opciones con mensajes de texto!