Alarma Básica con Sim900, Arduino Uno y Sensor Ultrasónico
Materiales Utilizados:
- Módulo sim900
- Tarjeta Arduino Uno
- Sim card de Claro "para Colombia". Si esta en un país distinto, puedes probar con distintas sim card y ver con cual funciona bien.
- Tres resistencia de 220 ohmio 10K ohmio.
- Tres led del color rojo, verde y azul.
- Sensor ultrasónico HC-SR04
- Zumbador
- Pulsador
- Adaptador de 12V 1A.
Circuito
La alimentacion del módulo sim900 se realiza de manera externa, una batería de 9V, pero se puede realizar con un adaptador de 12V 1A.
Descripción del código
El código para el desarrollo de la alarma básica, se basa en detectar a través del sensor ultrasónico, cierta distancia mínima que pueda verse alterada por un objeto, un animal o persona que se acerque. La medición de la distancia a través del sensor, se realiza mediante tren de pulsos que se envía cada cierto tiempo (10µs) por el trigger y son recibido por el echo.
Además se debe tener en cuenta la siguiente formula para calcular la distancia:
distancia = tiempo/velocidad
Donde utilizamos la velocidad del sonido en términos de cm/µs (centímetros/microsegundo).
velocidad ≈ 58.8
Aplicando la formula en el siguiente código:
digitalWrite(ptrig, HIGH); // Enviar un pulso de trigger por 10us
delay(0.01);
digitalWrite(ptrig, LOW);
duracion = pulseIn(pecho, HIGH); // Lee el tiempo del Echo
distancia = duracion/58.8; // calcula la distancia en centímetros
delay(10);
Luego en un condicional validamos la distancia mínima que se debe detectar, para poder realizar una llamada y enviar mensaje de alerta al numero móvil registrado:
if (distancia<=10){
delay(1000);
tiempoSistema = true;
digitalWrite(Zumbador, HIGH);
Serial.println("Alerta! se detecto un movimiento");
while( (EnviarComandoAT("AT+CREG?", "+CREG: 0,1", 1000) || EnviarComandoAT("AT+CREG?", "+CREG: 0,5", 1000)) == 0 );
delay(1000);
llamar();
while( (EnviarComandoAT("AT+CREG?", "+CREG: 0,1", 1000) || EnviarComandoAT("AT+CREG?", "+CREG: 0,5", 1000)) == 0 );
delay(1000);
mensaje();
}
Función para realizar la llamada:
void llamar(){ //Funcion para Realizar llamada
Serial.println("Realizando llamada...");
Serial.println("ATD313XXXXXXX;");
delay(15000);
Serial.println("ATH"); //Colgar llamada
delay(2000);
}
Función para el envió del mensaje:
void mensaje(){ //Funcion para enviar mensaje
Serial.println("Enviando mensaje...");
Serial.print("AT+CMGF=1\r");
delay(1000);
Serial.println("AT+CMGS=\"313XXXXXXX\"");
delay(1000);
Serial.println("Advertencia! Se ha detectado movimiento...");
delay(100);
Serial.println((char)26);
delay(1000);
Serial.println("Mensaje Enviado...");
}
El código completo se encuentra en el repositorio, link al final.
Tips para realizar las pruebas
- Tener en cuenta de seleccionar el puerto de comunicacion con el que va trabajar el modulo sim900, en este caso el puerto por hardware pines RX y TX (D0 y D1) respectivamente.
- Fijar la frecuencia del módulo en 19200 bps "Serial.begin(19200)", con esta frecuencia el modulo trabaja mucho mas estable, si no le funciona con dicha frecuencia, ir modificando hasta encontrar la correcta.
- Cuando se disponga a subir el código a la tarjeta de Arduino Uno, tener presente que la conexión con los pines de trasmisión por hardware TX y RX (D1, D0), deben estar desconectado para que no se tenga error por conexión ó por ende no tener alimentado el modulo sim900 en el momento.
Códigos Fuentes Utilizados
En el siguiente enlace, puedes encontrar el repositorio con los códigos fuentes que se utilizaron en las pruebas.
0 Comentarios