Hola, estoy haciendo un proyecto y sólo me falta una cosa para que esté al 100% de mi gusto de principiante.
Estoy tratando de hacer una alarma con los siguiente componentes:
- Arduino Uno (conectado a una fuente de 9V sin PC)
- SIM900 Shield (conectado a una fuente de 12V)
- UltrasonidoHC-SR04 (Alimentado a los 5V del Arduino)
- Alarma conectada a un relay y una fuente de 12V
Mi intención es que cuando el ultrasonido detecte algo suene la alarma y me llame por teléfono, hasta ahí todo bien y funcionando, el tema es que me gustaría crear una agenda para que cuando envíe un SMS con mi número o el de mi esposa la alarma se desactive o active dependiendo si es que vamos a ingresar o salir de la casa.
El tema es en el código, he hecho un Frankenstein con el sacando cosas de diversos tutoriales logrando hacer funcionar esto pero me gustaría saber 2 cosas, la primera si es que está ordenada la programación y la segunda es cómo y en dónde debería agregar el encendido de este "sistema de seguridad" o la forma más fácil de agregar este control vía SMS.
Me gustaría implementar más adelante (en tiempo corto) un sensor de gas MQ2 por si hay fugas y uno de fuego por si hay incendio (ambos los tengo comprados pero me gustaría resolver el tema del encendido y apagado del sistema por SMS antes).
Obvio mi intención es que si alguien le interesa hacer este tipo de sistema poder desarrollar algo más integral como con una fuente tipo UPS por si hay cortes o la activación de la alarma si es que alguien desconecta o corta algún cable. De momento paso a paso primero con el tema de la activación del sistema por SMS.
Copio mi programa por si alguien me puede ayudar con el tema del encendido y apagado de todo el sistema por SMS con una agenda de 2 o más números. Se que hay líneas que están de más ya que el sistema no estaría conectado nunca a una PC o monitor, si alguien quiere limpiar la programación lo agradeceré bastante. más tarde subiré un esquema de la conexión que tengo por si alguien quiere seguir el proyecto.
Gracias de antemano, saludos.
// defines pins numbers
const int trigPin = 9;
const int echoPin = 10;
const int buzzer = 11;
// defines variables
long duration;
int distance;
int safetyDistance;
#include <SoftwareSerial.h>
SoftwareSerial SIM900(7, 8); // Configura el puerto serial para el SIM900
void setup() {
pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPin, INPUT); // Sets the echoPin as an Input
pinMode(buzzer, OUTPUT);
SIM900.begin(19200); //Configura velocidad del puerto serie para el SIM900
Serial.begin(19200); //Configura velocidad del puerto serie del Arduino
Serial.println("OK");
delay(25000); //Tiempo para que encuentre una RED
}
void llamar()
{
Serial.println("Realizando llamada...");
SIM900.println("ATDXXXXXXXXX;"); //Comando AT para realizar una llamada
delay(20000); // Espera 20 segundos mientras realiza la llamada
SIM900.println("ATH"); // Cuelga la llamada
delay(1000);
Serial.println("Llamada finalizada");
}
void loop() {
// Clears the trigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Reads the echoPin, returns the sound wave travel time in microseconds
duration = pulseIn(echoPin, HIGH);
// Calculating the distance
distance= duration*0.034/2;
safetyDistance = distance;
if (safetyDistance <= 200){
digitalWrite(buzzer, HIGH);
llamar(); //Realiza la llamada
while (1);
}
else{
digitalWrite(buzzer, LOW);
}
// Prints the distance on the Serial Monitor
Serial.print("Distance: ");
Serial.println(distance);
}