Tabla de contenido:

Projeto IoT - Sistema Detector De Fumaça: 5 pasos
Projeto IoT - Sistema Detector De Fumaça: 5 pasos

Video: Projeto IoT - Sistema Detector De Fumaça: 5 pasos

Video: Projeto IoT - Sistema Detector De Fumaça: 5 pasos
Video: DETECTOR DE FUMAÇA, entende como POSICIONAR eles no projeto ou no imóvel 2024, Noviembre
Anonim
Projeto IoT - Sistema Detector De Fumaça
Projeto IoT - Sistema Detector De Fumaça

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

Materiais Utilizados
Materiais Utilizados
Materiais Utilizados
Materiais Utilizados
Materiais Utilizados
Materiais Utilizados
Materiais Utilizados
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

Configuração Do ThingSpeak
Configuração Do ThingSpeak
Configuração Do ThingSpeak
Configuração Do ThingSpeak
Configuração Do ThingSpeak
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

Aplicativo - MIT App Inventor
Aplicativo - MIT App Inventor
Aplicativo - MIT App Inventor
Aplicativo - MIT App Inventor
Aplicativo - MIT App Inventor
Aplicativo - MIT App Inventor
Aplicativo - MIT App Inventor
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:

  1. 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.
  2. 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

Montagem Do Protótipo
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: