Tabla de contenido:
- Paso 1: Materiais Utilizados
- Paso 2: Configuração Do ThingSpeak
- Paso 3: Aplicativo - MIT App Inventor
- Paso 4: Montagem Do Protótipo
- Paso 5: Programación del Microcontrolador
Video: Projeto IoT - Sistema Detector De Fumaça: 5 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:40
Introdução
El Sistema Detector de Fumaça consiste en una solución de IoT con el objetivo de permitir el seguimiento de alarmas de incêndio de residuos através de un aplicativo Android. O projeto é baseado em um microcontrolador que se comunica com a nuvem pela rede WiFi, enviando os sinais detectados por um sensor de fumaça. O proprietário da residência consegue monitorar o system através of um aplicativo e recebe notificações via Telegram em caso de ativação do alarme de incêndio.
Desenvolvedores
- Bruno Gonçalves Pereira
- João Paulo Tadeu Borges Paiva
- Juliana Guimarães Soares Buére
- Willan Alexander Condor Asenjo
Paso 1: Materiais Utilizados
Os materiais utilizados para construção do projeto foram:
- Módulo WiFi ESP8266 NodeMcu ESP-12: Placa de desenvolvimento que combina o chip ESP8266 (comunicación WiFi), interfaz uma usb-serial e um regulador de tensión 3.3V. Un programa puede ser feita usando un IDE de Arduino, através da comunicação a través de cabo micro-usb.
- Sensor de Gás MQ-135 para Gases Tóxicos: O Sensor de Gás MQ-135 é um módulo capaz de detectar vários tipos de gases tóxicos como amonia, dióxido de carbono, benzeno, óxido nítrico, e também fumaça ou álcool.
- Led vermelho
- Led verde
- 2 resistencias 200Ω
- Protoboard e jumpers para conexión y teste do protótipo
Paso 2: Configuração Do ThingSpeak
O ThingSpeak é um serviço de plataforma IoT para armazenar y recuperar datos usando el protocolo HTTP e MQTT pela Internet ou por meio de uma rede local. ThingSpeak permite agregar, visualizar e analisar fluxos de dados na nuvem.
O ThingSpeak está disponible como un servicio gratuito para pequeños proyectos no comerciales (menos de 3 milhões de mensagens por año o aproximadamente 8000 mensagens por dia). Para projetos maiores ou aplicações comerciais, quatro tipos diferentes de licença anual são oferecidos: Standard, Academic, Student y Home.
Configuração de um canal no ThingSpeak
Após criar uma conta no ThingSpeak, es necesario criar um canal. Os canais armazenam os dados enviados de um determinado projeto. Cada canal incluye 8 campos que podem conter qualquer tipo de dados, mais 3 campos para dados de localização e 1 para dados de status. Depois de coletar dados em um canal, você pode usar os aplicativos ThingSpeak para analisá-los e visualizá-los.
Para este projeto, foi criado um canal com nome IoTProject-SmokeDetector e 3 campos para envio de dados:
- Campo 1: Concentração de gás
- Campo 2: Alarma
- Campo 3: Comando desligar
Na aba "Private View" es posible criar como visualizações de cada um dos campos criados. Neste projeto, foram criados:
- 1 gráfico con datos de concentración de gas CO2 en función de tempo
- 1 indicador de led para indicación de alarma
- 1 gráfico con los datos del comando de desligar alarme em função do tempo
Leitura e escrita no ThingSpeak
O canal do ThingSpeak é criado com um identificador único (ID de canal) que posibilita su identificación para el entorno y la lectura de los datos. Na aba "API Keys" disponibles como chaves para escrita (Write API Key) e leitura (Read API Key) de dados no canal. Además, también están disponibles como solicitudes API (solicitudes HTTP get) que también pueden ser usadas para envio e requisição de dados.
O identificador do canal e as chaves serão used later no code do microcontrolador. Já como solicitudes de API que se utilizan en programas de aplicaciones de Android.
Paso 3: Aplicativo - MIT App Inventor
O aplicativo para monitoramento do sistema foi desenvolvido utilizando o MIT App Inventor. O MIT App Inventor é um ambiente web gratuito e código aberto para desenvolvimento integrado de aplicativos mantido pelo Massachusetts Institute of Technology (MIT). Ele permite que inicien programas de criem aplicativos para Android e iOS.
Para comentar, após criar uma conta no MIT App Inventor, criou-se um projeto com o nome IotProject_SmokeDetector.
La tela del diseñador es posible montar como telas del aplicativo, seleccionando los componentes necesarios (botones, etiquetas, imágenes, etc.) sin menú lateral esquerdo (Paleta). Para cada um dos componentes selecionados, es posible alterar configuraciones de núcleos, tamanho, posição, entre outras no menu lateral direito (Propiedades).
Na tela Blocks é feita toda una lógica de programação do aplicativo. Un programação é feita através de blocos, facilitando o desenvolvimento para iniciantes.
Explicación del código
Duas variáveis locais são inicializadas: alarmData e sensorData.
A cada 1 segundo (definido pelo Clock1), o aplicativo faz um request de dados no canal ThingSpeak através da URL de leitura de dados que pode ser copiada na aba "API Keys". Quando os dados são retornados, o dado el sensor correspondiente à concentração de gás CO2 é mostrado en la tela del aplicativo. Já o dado do alarme é testado:
- Se o alarme estiver acionado (alarmData = 1), o aplicativo mostra ao usuário a mensagem "Atenção! Sua casa está em perigo!" e o botão de desligar alarme (Button1) é habilitado.
- Se o alarme não estiver acionado (alarmData = 0), o aplicativo mostra ao usuário a mensagem "Não se preocupe! Sua casa não está em perigo." e o botão de desligar alarme (Button1) é desabilitado.
Quando o botão de desligar alarme (Button1) for clicado, o aplicativo escreverá 1 no campo Field3: comando desligar criado no ThingSpeak, indicando que o comando de desligar alarme foi acionado. O dado que se envió ao ThingSpeak através da URL para escrito de datos que pode ser copiada na aba "API Keys".
Paso 4: Montagem Do Protótipo
O protótipo foi montado no protoboard conforme indicado na figura.
Sensor MQ135
- Pino AO: conectado ao pino AD0 do módulo ESP8266
- Pino GND: conectado ao GND do módulo ESP8266
- Pino Vcc: conectado ao pino VIN do módulo ESP8266
LED verde
- Conectar uma perna do resistor de 200Ω no pino D5 do módulo ESP8266
- Conectar o anodo do LED (positivo - maior perna) na outra perna do resistor
- Conectar o catodo do LED (negativo - menor perna) no GND do módulo ESP8266
LED vermelho
- Conectar uma perna doresistor de 200Ω no pino D7 do módulo ESP8266.
- Conectar o anodo do LED (positivo - maior perna) na outra perna do resistor
- Conectar o catodo do LED (negativo - menor perna) no GND do módulo ESP8266
Paso 5: Programación del Microcontrolador
O microcontrolador do módulo ESP8266 foi programado utilizando un IDE do Arduino (faça o download aqui).
O código fuente utilizado completo no projeto pode ser baixado no final deste tutorial (Iot_project.ino). O código tem duas funções principais: setup e loop.
Configuración de Fluxo:
- Inicializa a porta serial
- Salidas de Inicializa os (pinos dos leds)
- Conecta à rede WiFi
- Inicializa o ThingSpeak
Fluxo do loop:
- Lê os dados do sensor MQ135
-
Verifica se a concentração de gás CO2 ultrapassa o limite definido (ideal: CO2 <= 700 ppm)
- Liga o alarme (LED vermelho), desliga o LED de status (verde) e envia notificação pelo Telegram se o valor estiver acima do limite
- Desliga o alarme (LED vermelho) e liga o LED de status (verde) se o valor estiver abaixo do limite
-
Lê o dado de "comando desligar alarme" do ThingSpeak
Se o comando = 1, desliga o alarme (LED vermelho) e liga o LED de status (verde)
- Envia dados do sensor, do alarme e de comando para o ThingSpeak a cada 20 segundos
Abaixo será descrita un programação de cada um dos principais módulos com o respectivo código para teste.
Conectando na rede WiFi
Abra un IDE de Arduino, vaya a Archivo-> Preferencias eadicione em URL adicionales del administrador de la placa a URL
Em seguida, vá em Tools-> Boards-> Boards Manager digite ESP8266, clique em install e fechar.
É necessário definir 2 variáveis para conexão na rede:
- WIFI_SSID: nome da rede WiFi que você deseja conectar seu sistema
- WIFI_PASSWORD: senha da rede
Para teste de conexão WiFi, copie o código abaixo, altere as variáveis para conexão WIFI listadas acima e faça upload no módulo ESP8266.
#include / ************************ ALTERE COMO DEFINIÇÕES ABAIXO ******************* ******* / #define WIFI_SSID "YOUR WIFI SSID" // Nome da rede wifi #define WIFI_PASSWORD "YOUR WIFI PASSWORD" // Senha da rede wifi WiFiClient client; // Função que faz a conexão wifi void ConnectToWiFi (void) {// Tenta conectar ao wifi Serial.println ("Conectando à rede WiFi"); WiFi.begin (WIFI_SSID, WIFI_PASSWORD); while (WiFi.status ()! = WL_CONNECTED) {retraso (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi conectado com sucesso!"); Serial.println ("IP obtenida:"); Serial.println (WiFi.localIP ()); } // Configuración de la placa void setup () {Serial.begin (115200); retraso (50); // Conecta ao wifi ConnectToWiFi (); }
Lendo dados do sensor MQ135
Para ler os dados do sensor MQ135, primeiramente deve-se baixar a biblioteca MQ135.h e adicioná-la na IDE do Arduino através do menu Skecth-> Incluir biblioteca-> Agregar biblioteca. ZIP.
Depois, copie o código abaixo e faça upload no módulo ESP8266 através do cabo micro-usb. O código realiza una lectura de concentración de CO2 en ppm e imprime los valores lidos sin monitor de serie.
#incluya "MQ135.h" #define SMOKE_SENSOR A0 // IO do sensor de fumaça float sensorValue; // Configuración de placa void setup () {Serial.begin (115200); retraso (50); } // Loop principal void loop () {// Lectura del sensor MQ135 gasSensor = MQ135 (SMOKE_SENSOR); sensorValue = gasSensor.getPPM (); Serial.print ("Concentracao de CO2 (ppm):"); Serial.println (sensorValue); }
Escrevendo e lendo dados do ThingSpeak
Primeiro, adicione a Biblioteca do ThingSpeak no Arduino IDE. Vá em Tools-> Boards-> Boards Manager digite ThingSpeak, clique em instalar e fechar.
Una versión gratuita de ThingSpeak, aceita upload de dados apenas a cada 20 segundos, por isso, no código deve-se testar se é o momento correto de enviar os dados.
Para comunicar com o ThingSpeak é necessário definir como variáveis abaixo:
- myChannelNumber: número do canal criado no ThingSpeak
- myWriteAPIKey: chave de escrita do canal do ThingSpeak
- myReadAPIKey: chave de leitura do canal do ThingSpeak
Para teste de comunicação com o ThingSpeak, copie o código abaixo, altere as variáveis para conexão na rede e as variáveis listadas acima e faça upload no módulo ESP8266.
#include #include / *********************** ALTERE COMO DEFINIÇÕES ABAIXO ***************** ********* / #define WIFI_SSID "YOUR WIFI SSID" // Nome da rede wifi #define WIFI_PASSWORD "YOUR WIFI PASSWORD" // Senha da rede wifi #define THINGSPEAK_WRITE_INTERVAL 20000 // Intervalo em ms entre envios de dados ao ThingSpeak / *********************** ALTERE AS VARIÁVEIS ABAIXO ****************** ******** / unsigned long myChannelNumber = 0000000; // Número del canal de ThingSpeak const char * myWriteAPIKey = "your write api key"; // Chave de escrita do canal do ThingSpeak const char * myReadAPIKey = "your read api key"; // Chave de leitura do canal do ThingSpeak unsigned long lastTime; unsigned long currentTime; Cliente WiFiClient; // Função que faz a conexão wifi void ConnectToWiFi (void) {// Configura el certificado raíz para api.telegram.org configTime (0, 0, "pool.ntp.org"); clientSecure.setTrustAnchors (& cert); // Tenta conectar ao wifi Serial.println ("Conectando à rede WiFi"); WiFi.begin (WIFI_SSID, WIFI_PASSWORD); while (WiFi.status ()! = WL_CONNECTED) {retraso (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi conectado com sucesso!"); Serial.println (WiFi.localIP ()); } // Configuración de la placa void setup () {Serial.begin (115200); retraso (50); // Conecta ao wifi ConnectToWiFi (); // Inicializa ThingSpeak lastTime = 0; ThingSpeak.begin (cliente); } // Bucle principal void loop () {currentTime = millis (); // seta o tempo atual // Lê dados do ThingSpeak int value = ThingSpeak.readIntField (myChannelNumber, 1, myReadAPIKey); Serial.println ("Dado no campo 1 hacer ThingSpeak:"); Serial.println (valor); // Verifica este momento de enviar datos ao ThingSpeak if ((hora actual - última hora> THINGSPEAK_WRITE_INTERVAL)) {ThingSpeak.setField (1, 100); ThingSpeak.writeFields (myChannelNumber, myWriteAPIKey); lastTime = currentTime; } retraso (20000); }
Enviando notificação pelo Telegram
Primeiro, adicione a Biblioteca do Telegram no Arduino IDE. Vá em Tools-> Boards-> Boards Manager digite UniversalTelegramBot, clique em instalar e fechar.
Abra o Telegram e siga como próximas etapas para criar um Bot. Primeiro, procura por botfather e clique nele. A janela a seguir deve abrir e você será solicitado a clicar no botão Iniciar. Digite / newbot e siga como instrucciones para criar seu bot. Dê a ele um nome e nome de usuário. Se o seu bot para criado com sucesso, você receberá uma mensagem com um link para acceder o bot e o token do bot. Salve o token, porque você precisará dele para que o ESP8266 possa enviar notificações.
Em seguida, em sua conta do Telegram, pesquise IDBot. Inicie uma conversa com esse bot e digite / getid. Você receberá uma resposta com seu ID de usuário. Salve o ID, porque você precisará dele para enviar de notificações.
Para teste do envio de notificação pelo telegram, copie o código abaixo, altere as variáveis de definições para conexão WIFI e para comunicação com o Telegram (BOT_TOKEN e CHAT_ID) e faça upload no módulo ESP8266.
#include #include #include / ********************* ALTERAR DEFINIÇÕES ABAIXO ******************* ******* / #define WIFI_SSID "YOUR WIFI SSID" // Nome da rede wifi #define WIFI_PASSWORD "YOUR WIFI PASSWORD" // Senha da rede wifi #define BOT_TOKEN "CHANGEYOURTOKEN" // Token do bot do telegram # define CHAT_ID "CHANGEYOURCHATID" // ID do chat do telegram X509List cert (TELEGRAM_CERTIFICATE_ROOT); WiFiClientSecure clientSecure; Bot UniversalTelegramBot (BOT_TOKEN, clientSecure); // Envia notificação ao Telegram void SendTelegramNotification (String message) {bot.sendMessage (CHAT_ID, message, ""); Serial.println (mensaje); } // Função que faz a conexão wifi void ConnectToWiFi (void) {// Configura el certificado raíz para api.telegram.org configTime (0, 0, "pool.ntp.org"); clientSecure.setTrustAnchors (& cert); // Tenta conectar ao wifi Serial.println ("Conectando à rede WiFi"); WiFi.begin (WIFI_SSID, WIFI_PASSWORD); while (WiFi.status ()! = WL_CONNECTED) {retraso (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi conectado com sucesso!"); Serial.println ("IP obtenida:"); Serial.println (WiFi.localIP ()); } // Configuración de la placa void setup () {Serial.begin (115200); retraso (50); // Conecta ao wifi ConnectToWiFi (); // Testa notificação pelo telegram SendTelegramNotification ("Testando envio de notificação."); }
Recomendado:
Detector de fugas de gas basado en IOT: 4 pasos
Detector de fugas de gas basado en IOT: Requisitos 1 - Nodemcu (ESP8266) 2 - Sensor de humo (MQ135) 3 - Cables de puente (3)
Guia Do Sensor De Gás E Fumaça MQ-2 Com Arduino: 5 Pasos
Guia Do Sensor De Gás E Fumaça MQ-2 Com Arduino: Este guia muestra como criar um detector de fumaça que emite um bipe quando detecta gás ou fumaça inflaável. Acesse meu último artigo: Arduino: tudo o que você precisa saber [Guia Completo] .O sensor de gás MQ-2O sensor de fumaça MQ-2 é sensível à fu
Detector de gas IoT con Arduino y Raspberry Pi: 5 pasos
Detector de gas IoT con Arduino y Raspberry Pi: en este instructivo, aprenderá cómo construir un detector de gas IoT usando un Arduino, un Raspberry Pi y un sensor de gas MQ-5. Además de estas partes, necesitará tres cables para conectar el Arduino al sensor de gas. Una vez hecho esto, b
Detector de movimiento con la plataforma en la nube Thingsai.io Iot: 6 pasos
Detector de movimiento usando Thingsai.io Iot Cloud Platform: En este tutorial voy a explicar sobre la detección de movimiento usando un sensor PIR y Esp32 junto con una plataforma IOT en la nube Thingai.io
Detector de humo IOT: actualice el detector de humo existente con IOT: 6 pasos (con imágenes)
Detector de humo IOT: Actualización del detector de humo existente con IOT: Lista de contribuyentes, Inventor: Tan Siew Chin, Tan Yit Peng, Tan Wee Heng Supervisor: Dr. Chia Kim Seng Departamento de Ingeniería Mecatrónica y Robótica, Facultad de Ingeniería Eléctrica y Electrónica, Universiti Tun Hussein Onn Malaysia.Distribut