วันเสาร์ที่ 15 กันยายน พ.ศ. 2561

Arduino 15

ALDUINO AUTO SOLAR INTRUSIVE ALARM





รูปภาพของ WIRING


MATERIALS
Arduino Nano.
Sensor PIR for Arduino
Battery 3,7v 2200mA
Prototype board
Solar panel
Regulated charge module
SIM900L Module
Booster Module

#include <SoftwareSerial.h>

SoftwareSerial SIM900(11, 10); // Configura el puerto serial para el SIM900

char incoming_char = 0; //Variable que guarda los caracteres que envia el SIM900
String agenda[] = {"601006044" , "XXXXXXXXX"}; //Array con los numeros autorizados
int numtotal = 2; //Cantidad de numeros de telefono autorizados
String mensaje = "";
int LED = 13 ;
#define PIR 9 

bool alarma = false ; //estado activacion alarma
bool estado = false ; //Variable para guardar el estado del LED
bool bateria = true; 

float v1 = 4.98; // valor real de la alimentacion de Arduino, Vcc
float r1 = 100000; // 100k
float r2 = 68000; // 68k
float v2 = 0;
long levelalarm = 0; //nivel de alarma

void setup()
{
  pinMode( LED, OUTPUT) ; // LED como salida
  pinMode(PIR, INPUT); //Entrada sensor PIR
  inicializaSIM900();
}

void loop()
{
  
  //float v = (analogRead(7) * v1) / 1024.0;
  //float v2 = v / (r2 / (r1 + r2));
  float lectura = (analogRead(7));
  v2= map(lectura, 0, 1023, 0, 500);
  v2= v2/100;
  //Serial.println("Bateria " + String(v2));
  if (v2<=3.2) {
    if (bateria){
      sendSMS("601006044", "Bateria baja! " + String(v2));
      Serial.println("Bateria baja!");
      bateria=false;
    }    
  }
  
  //Serial.println("\nBateria:" + String(v2));
  
  if (SIM900.available() > 0)
  {
    //Serial.println("Disponible");
    incoming_char = SIM900.read(); //Guardamos el carácter del GPRS
    Serial.print(incoming_char); //Mostramos el carácter en el monitor serie
    mensaje = mensaje + incoming_char ; // Añadimos el carácter leído al mensaje
  }
  identifica_llamada ();
  if (alarma) 
  {
    if (digitalRead(PIR)){
      //Alarma 
      levelalarm= levelalarm + 1;
      if (levelalarm >=7){
      sendSMS("601006044", "ALARMA!! -- "+ String(v2) + "v -- " + String (levelalarm));
      delay (10000);
      levelalarm=0;
      }
      delay (500);
    }
  }
}


void inicializaSIM900()
{
  //digitalWrite(9, HIGH);   // Descomentar para activar la alimentación de la tarjeta por Software
  //delay(1000);             
  //digitalWrite(9, LOW);
  delay (5000);
  SIM900.begin(9600); //Configura velocidad del puerto serie para el SIM900
  Serial.begin(9600); //Configura velocidad del puerto serie del Arduino
  Serial.println("OK");
  delay (1000); 
  //SIM900.println("AT+CPIN=\"4088\""); //Comando AT para introducir el PIN de la tarjeta
  //SIM900.println("AT+CLCK="SC",0,"4088",1");
  SIM900.println("AT+CPIN?\r");
  Serial.println("PIN OK");
  delay(50000); //Tiempo para que encuentre una RED
  SIM900.println("AT+CREG?\r");
  delay(1000);
  //SIM900.println("AT+CBAND\r");
  //SIM900.println("AT+COPS=?\r");
  delay(1000);
  SIM900.print("AT+CLIP=1\r"); // Activa la identificación de llamada
  delay(500);
  SIM900.print("AT+CMGF=1\r\n"); //Configura el modo texto para enviar o recibir mensajes
  delay(5000);
  SIM900.print("AT+CNMI=2,2,0,0,0\r"); // Saca el contenido del SMS por el puerto serie del GPRS
  delay(1000);
}

void identifica_llamada()
{  
  int finllamada = mensaje.indexOf("RING");
  if (finllamada >= 0)
  {
    for ( int i = 0; i < numtotal; i++)
    {
      int pos = mensaje.indexOf(agenda[i]);
      if (pos >= 0)
      {
        estado = ! estado ; // cambiamos el estado del LED
        digitalWrite(LED, estado) ;
        Serial.println("\nEl numero esta autorizado");
        if (alarma){
        sendSMS("601006044", "Alarma desactivada, bateria: " + String(v2));
        alarma = false;
        digitalWrite(LED, LOW);
        }else{
        sendSMS("601006044", "Alarma activada, bateria: " + String(v2));
        alarma = true;
        digitalWrite(LED, HIGH) ;          
        }
      }
    }
    mensaje = "" ; //Bórralo para la próxima vez
  }
}

void sendSMS(String number, String mess) 
{
  SIM900.print("AT+CMGF=1\r");
  delay(100);
  SIM900.println("AT+CMGS=\"" + number + "\"\r");
  delay(100);
  SIM900.println(mess);
  delay(100);
  SIM900.println((char)26);
  delay(100);
  SIM900.println();
  delay(5000);
}

ไม่มีความคิดเห็น:

แสดงความคิดเห็น

Internet of Things (IoT)

Internet of Things หรือ IoT Internet of Things (IoT)  คือ การที่อุปกรณ์อิเล็กทรอนิกส์ต่างๆ สามารถเชื่อมโยงหรือส่งข้อมูลถึงกันได้ด้วยอิน...