Actualizar 'Proyecto_alarma_2.2.ino'

This commit is contained in:
Isaac Zambrano 2021-04-16 19:15:02 -04:00
parent 8f600768cc
commit 432f8a858d
1 changed files with 109 additions and 110 deletions

View File

@ -1,110 +1,109 @@
#include <WiFi.h> #include <WiFi.h>
#include <PubSubClient.h> #include <PubSubClient.h>
const char PROGMEM *SSID = "LOTUS"; // Nombre del WiFi const char PROGMEM *SSID = "LOTUS"; // Nombre del WiFi
const char PROGMEM *password = "tupapatetocaen64"; // Contraseña del Wifi const char PROGMEM *password = "tupapatetocaen64"; // Contraseña del Wifi
int Pir_Pin = 2; // Pines que controlan los sensores int Pir_Pin = 2; // Pines que controlan los sensores
int SENSOR = 3; int SENSOR = 3;
int buzzer_pin = 4; int buzzer_pin = 4;
const char PROGMEM *ID = "Alarma"; //Nombre del dispositivo const char PROGMEM *ID = "Alarma"; //Nombre del dispositivo
const char PROGMEM *TOPIC = "Sistema de Alarmas"; //Nombre del topico suscrito const char PROGMEM *TOPIC = "Sistema de Alarmas"; //Nombre del topico suscrito
IPAddress broker(192,168,1,15); //Direccion ip del corredor MQTT IPAddress broker(192,168,1,15); //Direccion ip del corredor MQTT
WiFiClient wclient; WiFiClient wclient;
PubSubClient client(wclient); //Configurar el cliente MQTT PubSubClient client(wclient); //Configurar el cliente MQTT
bool state=0; bool state=0;
// Conectar al Wifi // Conectar al Wifi-------------------------
void setup_wifi() { void setup_wifi() {
Serial.print("\nConnecting to "); Serial.print("\nConnecting to ");
WiFi.begin("LOTUS", "tupapatetocaen64"); // Conectarse a la RED WiFi.begin("LOTUS", "tupapatetocaen64"); // Conectarse a la RED
while (WiFi.status() != WL_CONNECTED) { // Esperar por la coneccion while (WiFi.status() != WL_CONNECTED) { // Esperar por la coneccion
delay(500); delay(500);
Serial.print("."); Serial.print(".");
} }
Serial.println(); Serial.println();
Serial.println("WiFi connected"); Serial.println("WiFi connected");
Serial.print("IP address: "); Serial.print("IP address: ");
Serial.println(WiFi.localIP()); Serial.println(WiFi.localIP());
} }
// Volver a conectarse con el cliente // Volver a conectarse con el cliente------------------------
void reconnect() { void reconnect() {
// Bucle hasta que nos volvamso a conectar // Bucle hasta que nos volvamso a conectar-----------------
while (!client.connected()) { while (!client.connected()) {
Serial.print("Attempting MQTT connection..."); Serial.print("Attempting MQTT connection...");
// intenta conectarte // intenta conectarte
if (client.connect(ID)) { if (client.connect(ID)) {
Serial.println("connected"); Serial.println("connected");
Serial.print("Publishing to: "); Serial.print("Publishing to: ");
Serial.println(TOPIC); Serial.println(TOPIC);
Serial.println('\n'); Serial.println('\n');
} else { } else {
Serial.println(" try again in 5 seconds"); Serial.println(" try again in 5 seconds");
// esperar 5 segundos antes de volver a intentar // esperar 5 segundos antes de volver a intentar
delay(5000); delay(5000);
} }
} }
} }
//Comienzo del codigo principal----------------
void setup() { void setup() {
Serial.begin(115200); // Inicie la comunicacion en serie a 115200 baudios Serial.begin(115200); // Inicie la comunicacion en serie a 115200 baudios
pinMode(Pir_Pin,INPUT); // Configurar los sensores como entrada pinMode(Pir_Pin,INPUT); // Configurar los sensores como entrada
pinMode(SENSOR, INPUT); pinMode(SENSOR, INPUT);
pinMode(buzzer_pin, OUTPUT); pinMode(buzzer_pin, OUTPUT);
delay(100); delay(100);
setup_wifi(); setup_wifi();
client.setServer(broker, 1883); client.setServer(broker, 1883);
} }
void loop() { void loop() {
if (!client.connected()) // Vuelve a conectar si se pierde la conexion if (!client.connected()) // Vuelve a conectar si se pierde la conexion
{ {
reconnect(); reconnect();
} }
client.loop(); client.loop();
// Si el detector de movimiento capta algo // Si el detector de movimiento capta algo------------------
if(digitalRead(Pir_Pin) == HIGH) if(digitalRead(Pir_Pin) == HIGH)
{ {
digitalWrite(buzzer_pin, HIGH); digitalWrite(buzzer_pin, HIGH);
Serial.println("¡Intrusos!"); Serial.println("¡Intrusos!");
state = !state; //alternar estado state = !state; //alternar estado
if(state == 1) // Prendido if(state == 1) // Prendido
{ {
client.publish(TOPIC, "on"); client.publish(TOPIC, "on");
Serial.println((String)TOPIC + " => on"); Serial.println((String)TOPIC + " => on");
} }
else else
{ {
digitalWrite(buzzer_pin, LOW); digitalWrite(buzzer_pin, LOW);
Serial.println("Modo vigilante"); Serial.println("Modo vigilante");
client.publish(TOPIC, "off"); client.publish(TOPIC, "off");
Serial.println((String)TOPIC + " => off"); Serial.println((String)TOPIC + " => off");
} }
digitalWrite(buzzer_pin, !digitalRead(SENSOR)); //Si el detector magnetico capta algo--------
{ digitalWrite(buzzer_pin, !digitalRead(SENSOR));
state = !state; //alternar estado {
if(state == 1) // Prendido state = !state; //alternar estado
{ if(state == 1) // Prendido
client.publish(TOPIC, "on"); {
Serial.println((String)TOPIC + " => on"); client.publish(TOPIC, "on");
} Serial.println((String)TOPIC + " => on");
else }
{ else
Serial.println("Modo vigilante"); {
client.publish(TOPIC, "off"); Serial.println("Modo vigilante");
Serial.println((String)TOPIC + " => off"); client.publish(TOPIC, "off");
} Serial.println((String)TOPIC + " => off");
yield(); }
delay(20); }
} }
} }
}