Está en la página 1de 8

Componente Función Imagen

Este módulo tiene la función de


Módulo Wi-Fi +
almacenar la programación y brindar las
Bluetooth ESP32
instrucciones a los demás componentes.

Este componente es capaz de emitir


sonido y en el circuito tiene la función de
Buzzer
ser una alarma cuando el sensor de gas
detecte la presencia de gas.

Este sensor es capaz de detectar


distintos tipos de gases como: butano,
propano, metano, alcohol, hidrógeno y
Sensor de Gas MQ2 humo. La función que tiene en el circuito
es poder detectar cualquier tipo de gas y
enviar una señal.

Son los encargados en cerrar el circuido


y hacer las conexiones entre los distintos
Jumpers componentes capaces de dar energía a
los componentes y mandar señales entre
los componentes.

Su función es poder apagar el buzzer en


momento que la alarma empiece a
Pulsador
sonar, ya que en ciertas ocasiones
pueden haber falsas alarmas.
#include <WiFi.h> //Libreria de Wifi para ayudarnos con todo lo de la conexion

#include <HTTPClient.h> //Esta libreria permite utilizar las APIs

//Pinout para ESP32

#define BUZZ 32 // Salida para el Buzzer en el pin P32

#define GAS_A 34 // Entrada del sensor de humo en el pin 34

#define LED_BUILTIN 2 // Led interno de la ESP32

//Credenciales de la red WIFI

const char* ssid = "Redmi Note 8 Pro"; //Nombre de la red WIFI

const char* password = "gokulegana"; //Contraseña de WIFI, usa ""

//Credenciales de la API de Whatsapp

String apiKey = "210750"; //Agregar el numero de token que envia el bot por whatsapp

String phone_number = "+50238435326"; //Agregar el numero de Whatsapp (Al que te enviaron


las credenciales)

String url; //se utiliza para generar el codigo URL

//
************************************************CODIGO*************************
*******************************************

void setup() {

Serial.begin(115200);

//Conexion a WIFI

WiFi.begin(ssid, password); // Intenta conectar con las credenciales WIFI

Serial.println("Conectando a WiFi...");
// Espera la conexion de Wifi

while (WiFi.status() != WL_CONNECTED) { // Espera hasta que se conecta

delay(500);

Serial.print(".");

Serial.println();

Serial.println("¡Conectado a WiFi!"); // Muestra que esta conectado

Serial.println("IP: "); //Muestra la IP que se le asigno

Serial.println(WiFi.localIP());

// Este mensaje indica si se realizo la conexion con Whatsapp correctamente

message_to_whatsapp("Ya estas conectado!"); // Puedes enviar cualquier mensaje

// Pinout para la alarma

pinMode(BUZZ, OUTPUT);

pinMode (LED_BUILTIN, OUTPUT);

ledcSetup(0, 5000, 8);

ledcAttachPin(32, 0);

ledcWriteTone(0, 2000); //send tone

delay(2000);

ledcWriteTone(0, 0) ; //no tone

// Pausa para que el sensor se estabilice

delay(40000);

// Funcion para enviar mensajes por whatsapp


//ESTO ES PROPIO DE LA API

//
********************************************************************************
**************************************************

void message_to_whatsapp(String message) // función definida por el usuario para enviar un


mensaje a la aplicación whatsapp

//agrega el numero, el api key, un mensaje dentro del url

url = "https://api.callmebot.com/whatsapp.php?phone=" + phone_number + "&text=" +


urlencode(message) + "&apikey=" + apiKey;

postData(); // llamando a postData para ejecutar la URL generada anteriormente una vez para
que reciba un mensaje.

//
********************************************************************************
**************************************************

//
********************************************************************************
**************************************************

void postData() //función de definición de usuario utilizada para llamar a api (datos POST)

int httpCode; // variable utilizada para obtener el código http de respuesta después de llamar a
api

HTTPClient http; // Declarar objeto de clase HTTPClient

http.begin(url); // comience el objeto HTTPClient con la URL generada

httpCode = http.POST(url); // Finalmente, publique la URL con esta función y almacenará el


código http

if (httpCode == 200) // Compruebe si el código http de respuesta es 200

Serial.println("Enviado."); // imprimir mensaje enviado


}

else // si el código HTTP de respuesta no es 200, significa que hay algún error.

Serial.println("Error."); // Imprimir mensaje de error

Serial.println(url);

http.end(); // Después de llamar a la API, finalice el objeto de cliente HTTP.

//
********************************************************************************
***************************************************

//
********************************************************************************
***************************************************

String urlencode(String str) // Función utilizada para codificar la url

String encodedString="";

char c;

char code0;

char code1;

char code2;

for (int i =0; i < str.length(); i++){

c=str.charAt(i);

if (c == ' '){

encodedString+= '+';

} else if (isalnum(c)){

encodedString+=c;

} else{
code1=(c & 0xf)+'0';

if ((c & 0xf) >9){

code1=(c & 0xf) - 10 + 'A';

c=(c>>4)&0xf;

code0=c+'0';

if (c > 9){

code0=c - 10 + 'A';

code2='\0';

encodedString+='%';

encodedString+=code0;

encodedString+=code1;

//encodedString+=code2;

yield();

return encodedString;

//
********************************************************************************
***************************************************

// Definiciones para la alarma de GAS/HUMO

void loop() {

int gassensorAnalog = analogRead(GAS_A);

Serial.print("Gas Sensor: ");

Serial.print(gassensorAnalog);
Serial.print("\t");

Serial.print("\t");

Serial.print("\t");

//si el valor supera el umbral, programa de alarma de gas/humo;

if (gassensorAnalog > 600) { //Valor de umbral se define aqui

Serial.println("GAS/HUMO DETECTADO"); // Imprime el valor que se obtiene del sensor

//message_to_whatsapp("¡ALERTA! GAS DETECTADO");

SendMsg();

ledcWriteTone(0, 4000); //Envia un tono

digitalWrite(LED_BUILTIN, HIGH); // encienda el LED (ALTO es el nivel de voltaje)

delay(10000);

ledcWriteTone(0, 0) ; //no tone

digitalWrite(LED_BUILTIN, LOW); // apague el LED haciendo que el voltaje sea BAJO

delay(100);

delay(5000);

//Si el valor esta por debajo del umbral no hay alarma

else {

Serial.println("NO SE HA DETECTADO GAS/HUMO");

ledcWriteTone(0, 0);

delay(100);

//Funcion que envia el mensaje por whatsapp

//CALL ME BOT API solo permite enviar 25 mensajes en 240 minutos

//por lo que debemos limitar el numero de mensajes durante las pruebas.

void SendMsg() {
int gassensorAnalog = analogRead(GAS_A);

// Programa de alarma de GAS/HUMO Whatsapp

//si el valor supera el umbral, programa de alarma de gas/humo;

if (gassensorAnalog > 600) { // Aqui se define el umbral para enviar el mensaje

message_to_whatsapp("¡ALERTA! GAS DETECTADO"); // Alerta por whatsapp que se supero el


umbral

delay(3000);

//Si el valor esta por debajo del umbral no hay mensaje

else {

También podría gustarte