A6 Teléfono para alarma


          La idea es un teléfono conectado a un amplificador y altavoz para "hablarle" al intruso que previamente ha sido detectado con otros métodos y también lo vemos con nuestra cámara de seguridad.

          Usaremos un módulo GSM A6. Es un teléfono completo, solo necesita añadir micrófono y altavoz. Se controla con un Arduino que "descuelga" la línea cuando recibe una llamada que es selectiva para nuestro número de móvil.

          La salida de audio esta conectada a un módulo amplificador que ataca un altavoz. En mi caso, el A6 y el altavoz están en habitaciones distintas (es uno de los traseros del cine en casa). Esto me permite conectar un micro sin que se acoplen, aunque requiere un preamplificador ya que la sensibilidad del mismo es escasa.

          Así pues, he usado el modulo GSM A6, un Arduino Pro Micro, un amplificador de 15w y un modulo StepDown para pasar los 12v  a 5v del Arduino y del A6 y una tarjeta SIM.
P.D. Por supuesto el A6 necesita una tarjeta SIM para poder recibir las llamadas. En España puede obtenerse con un mantenimiento de 5€ cada 6 meses. Además tienes tarjetas gratis incluidas en paquetes Teléfono-Internet-Tv.
//TeléfonoParaAlarma
//Joaquín Paredes www.jopapa.me  2021

#include <SoftwareSerial.h>
#define rxPin 10
#define txPin 11
SoftwareSerial mySerial =  SoftwareSerial(rxPin, txPin);

int Incomingch;
String data,Fdata;
int periodo = 10000;
unsigned long TiempoAhora = 0;

void setup(){
  //Begin serial communication with Arduino and Arduino IDE (Serial Monitor)
  Serial.begin(115200);
  //Begin serial communication with Arduino and A6

  pinMode(rxPin, INPUT);
  pinMode(txPin, OUTPUT);
  mySerial.begin(115200);
  mySerial.println("AT+IPR = 9600 ");  //bajo el baudrate a 9600 por seguridad
  delay(1000);
  Serial.begin(9600);
   delay(1000);
  mySerial.begin(9600);
  delay(1000);
  Serial.println("Initializing...");
  mySerial.println("AT"); //Once the handshake test is successful, it will back to OK
  updateSerial();
  mySerial.println("AT+CLIP=1");  //Para poder recibir número entrante
  updateSerial();
  delay(500);
  pinMode(LED_BUILTIN, OUTPUT); //Indica llamada entrante válida de mi número


void loop(){
  if(mySerial.available()){ //Si GSM recibe algo
   Incomingch = mySerial.read(); // Almacenar en esta variable
   if (Incomingch == 10 || Incomingch ==13){ //Verifica palabra completada
     //Serial.println(data); 
     Fdata =data; data = ""; }
      if(data.indexOf("659xxxxxx") > 0){   //mi número de móvil
       Serial.println("Número de Joaquín");
       mySerial.println("ATA");  //Descuelga 
       digitalWrite(LED_BUILTIN, HIGH);   // LED on
       //mySerial.println("ATH"); Cuelga solo para pruebas
      }     
    else{
    String newchar = String (char(Incomingch)); //convierte char a string
    data = data +newchar; //  string concatenación
    }
  }
  if(millis() > TiempoAhora + periodo){
   TiempoAhora = millis();
   digitalWrite(LED_BUILTIN, LOW);   // LED off
  }
}

void updateSerial(){
  delay(500);
  while (Serial.available())
  {
    mySerial.write(Serial.read());//Forward what Serial received to Software Serial Port
  }
  while(mySerial.available())
  {
    Serial.write(mySerial.read());//Forward what Software Serial received to Serial Port
  }
}
Menu