Sei sulla pagina 1di 6

Indice

1. Introducción ............................................................................................................................ 2
2. Materiales ............................................................................................................................... 2
3. Conexión ................................................................................................................................. 2
4. Código ..................................................................................................................................... 3
5. Bibliografia .............................................................................................................................. 6

1
MODULO GSM: IDENTIFICADOR DE LLAMADA CON LED
1. Introducción
EL GSM (Global System for Global Communications) es el sistema de comunicaciones que
más se utiliza en teléfonos móviles y es un estándar en Europa. La primera funcionalidad
de esta tecnología es la transmisión de voz, pero también permite la transmisión de datos
(SMS, Internet), eso sí, a una velocidad muy baja de 9kb/s.
Hemos visto varias formas de conectar nuestro Arduino al exterior, como Ethernet y wifi,
pero puede que alguna vez queramos comunicarnos con él y no tengamos acceso a
ninguna de estas redes, o no queramos depender de ellas. Para este tipo de propósitos
podemos utilizar un módulo GSM/GPRS con una tarjeta SIM, de forma que podamos
comunicarnos con él como si se tratase de un teléfono móvil. Y es que esta tarjeta basada
en el módulo SIM900 nos permite enviar y recibir llamadas y SMS y conectarnos a
Internet, transformando nuestro Arduino en un teléfono móvil.
Se utilizara esta plataforma como identificador de llamadas. Cada LED se puede asignar a
un número. Cuando el modulo recibe la primera llamada se enciende el led y a la segunda,
se apaga.

2. Materiales
1 Kit GSM/GPRS
1 Plataforma arduino
1 resistor 220Ω
1 Protoboard
Cable de programación
Cables de puente
Fuente de alimentación externa
1 Led y un pulsador

3. Conexión
Conecte la antena GPRS al módulo y, a continuación, conecte el modulo al
Arduino. Conecte los LEDs y las resistencias (220Ω) en la placa de procesamiento como se
puede ver en el siguiente diagrama

2
Conecte dos cables, rojo y negro, a las dos
filas largas del protoboard para
proporcionar acceso a la fuente VCC (5V
en Arduino ) y tierra. A continuación,
conecte el pin digital 10 a una pata de la
resistencia, la otra pata de la resistencia
está conectada al cátodo (pata negativa)
del LED. Y en el pin 12 conecte el pulsador

4. Código
const char pin[] = "1010"; //pin del chip
int8_t answer;
int onModulePin = 2;
char aux_str[30];
3
int button = 12;//Push buttom en el pin 12
int bomba= 10; //Led en el pin 10
int contador =0;
void setup() {
pinMode(bomba,OUTPUT);
pinMode(onModulePin, OUTPUT);
Serial.begin(115200);
digitalWrite(bomba,LOW); // el led inicia apagado
Serial.println("Arrancando...");
power_on();
delay(3000);
// Establece el código pin
sprintf(aux_str, "AT+CPIN=%s", pin);
sendATcommand(aux_str, "OK", 2000);
//Habilita el uso del comando ATH
sendATcommand("AT+CVHU=0", "OK", 10000);
delay(3000);
Serial.println("Conectando a la red viva...");
while ( (sendATcommand("AT+CREG?", "+CREG: 0,1", 500) ||
sendATcommand("AT+CREG?", "+CREG: 0,5", 500)) == 0 );

}
//codigo de interes
void loop() {
answer = sendATcommand("", "RING", 1000);
if (answer == 1)
{ Serial.print("activando la bomba");

4
digitalWrite(bomba,HIGH);
contador=contador+1;
Serial.println(contador); }
if(contador==2)
{
Serial.println("Era una mentira");
digitalWrite(bomba,LOW);
}
}
//subfuncion creada para que funcione el modulo
void power_on() {
uint8_t answer = 0;
// Comprueba si se ha iniciado el modulo
answer = sendATcommand("AT", "OK", 2000);
if (answer == 0)
{
// Pulso de encendido
digitalWrite(onModulePin, HIGH);
delay(3000);
digitalWrite(onModulePin, LOW);
// Espera una respuesta del modulo
while (answer == 0) { // Send AT every two seconds and wait for the answer
answer = sendATcommand("AT", "OK", 2000);
}
}
int8_t sendATcommand(char* ATcommand, char* expected_answer, unsigned int
timeout) {
uint8_t x = 0, answer = 0;
5
char response[100];
unsigned long previous;
memset(response, '\0', 100); // Inicializar la cadena
delay(100);
while ( Serial.available() > 0) Serial.read(); // Limpia el buffer de entrada
Serial.println(ATcommand); // Envia el comando AT
x = 0;
previous = millis();
// Este bucle espera la respuesta
do {
// Si hay datos en el búfer de entrada UART, lo lee y comprueba la respuesta
if (Serial.available() != 0) {
response[x] = Serial.read();
x++;
if (strstr(response, expected_answer) != NULL)
{
answer = 1;
}
// Waits for the answer with time out
while ((answer == 0) && ((millis() - previous) < timeout));
return answer; }

5. Bibliografia

https://www.prometec.net/gprs-llamar-enviar-sms/

https://hetpro-store.com/TUTORIALES/modulo-de-comunicacion-inalambrica-gsm-shield/

https://www.cooking-hacks.com/documentation/tutorials/gprs-gsm-quadband-module

Potrebbero piacerti anche