Innehållsförteckning:

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

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

Video: Projeto IoT - Sistema Detector De Fumaça: 5 steg
Video: Detecção de incêndio - Como instalar os dispositivos periféricos (Detectores, acionadores e sirenes) 2024, Juli
Anonim
Projeto IoT - Sistema Detector De Fumaça
Projeto IoT - Sistema Detector De Fumaça

Introdução

O Sistema Detector de Fumaça consiste em uma solução IoT com o objetivo de permitir o monitoramento de alarmes de incêndio de residências através de um aplicativo Android. Vi kan också använda mikrokontrollen för att kunna ansluta till ett trådlöst nätverk. O proprietário da residência consegue monitorar o sistema através de 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

Steg 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:

  • Modulo WiFi ESP8266 NodeMcu ESP-12: Placa de desenvolvimento que combina o chip ESP8266 (comunicação WiFi), uma interface usb-serial and um regulador de tensão 3.3V. En programação pode ser feita usando a IDE do Arduino, através da comunicação via cabo micro-usb.
  • Sensor de Gás MQ-135 för Gases Tóxicos: O Sensor de Gás MQ-135 är ett modem för att upptäcka olika gaser som kan kombineras med koldioxid, koldioxid, benzeno, oxido nítrico, eller também fumaça ou álcool.
  • Led vermelho
  • Led verde
  • 2 Motstånd 200Ω
  • Protoboard e jumpers para conexão e teste do protótipo

Steg 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 and recuperar dados usando o protocolo HTTP e MQTT pela Internet ou por meio de uma rede local. ThingSpeak tillåter aggreger, visualiserar och analyserar fluxos de dados na nuvem.

O ThingSpeak är tillgängligt för en tjänst som är gratis för några av våra kunder (menos de 3 milhões de mensagens por ano ou 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 and Home.

Configuração de um canal no ThingSpeak

Após criar uma conta no ThingSpeak, é needsário criar um canal. Os canais armazenam os dados enviados de um determinado projeto. Cada canal inclui 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 for envio de dados:

  • Fält 1: Concentração de gás
  • Fält 2: Alarme
  • Fält 3: Comando desligar

Om du vill ha en "privat vy" kan du se en bild av läget. Neste projeto, foram criados:

  • 1 gráfico com os dados de concentração de gás CO2 em função do tempo
  • 1 indicador de led para indicação de alarme
  • 1 gráfico com os dados de comando de desligar alarme em função do tempo

Leitura e escrita no ThingSpeak

O canal do ThingSpeak é criado com um identifierador único (Channel ID) que possibilita sua identifieração para envio and leitura de dados. Med "API -nycklar" kan du använda en kanal för att skriva (Skriv API -nyckel) och läsa (läs API -nyckel). Alla uppgifter kan också användas som API -förfrågningar (HTTP -begäran).

O identifierador do canal e as chaves serão usadas posteriormente no código do microcontrolador. Ja som API begär serao utilizadas and programação do aplicativo for Android.

Steg 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 system for foi desenvolvido utilizando o MIT App Inventor. O MIT App Inventor é um ambiente web gratuito e de código aberto for a integration de aplicativos mantido pelo Massachusetts Institute of Technology (MIT). Ele permite que iniciantes for programação criem aplicativos for Android and iOS.

Para começar, após criar uma conta no MIT App Inventor, criou-se um projeto com o nome IotProject_SmokeDetector.

Det finns inga möjliga alternativ för val av alternativ, val av komponenter som behövs (böter, etiketter, bilder osv.) Ingen meny i sidled (palett). Para cada um dos componentes selecionados, é possível alterar configurações de cores, tamanho, posição, entre outras no menu lateral direito (Properties).

Na tela Blocks é feita toda a lógica de programação do aplicativo. A programação é feita através de blocos, facilitando o desenvolvimento para iniciantes.

Explicação do código

Duas variáveis locais são inicializadas: alarmData e sensorData.

A cada 1 segundo (definido pelo Clock1), or aplicativo faz um request of dados no canal ThingSpeak através da URL de leitura de dados que pode ser kopiada na aba "API Keys". Om det är något som vi kan tänka oss att göra, kan vi göra en sensorkorrespondent för att få en CO2 -överträdelse. Ja o dado do alarme é testado:

  1. Se o alarme estiver acionado (alarmData = 1), a 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), a 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 é enviado ao ThingSpeak através da URL para escrita de dados que pode ser copiada na aba "API Keys".

Steg 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
  • Anslutning eller anodo till LED (positiv - maior perna) och motstånd
  • Koppla eller leda till LED (negativ - menor perna) no GND do módulo ESP8266

LED -lampa

  • Conectar uma perna doresistor de 200Ω no pino D7 do módulo ESP8266.
  • Ansluta eller anodo do LED (positiv - maior perna) och outra perna do resistor
  • Koppla eller leda till LED (negativ - menor perna) no GND do módulo ESP8266

Steg 5: Programação Do Microcontrolador

O mikrokontrollator för ESP8266 för program som kan användas för IDE för Arduino (för nedladdning).

O código fonte completeo utilizado no projeto pode ser baixado no final deste tutorial (Iot_project.ino). O código tem duas funções principais: setup e loop.

Installation av Fluxo:

  • Inicializa a porta serial
  • Inicializa os -utgångar (pinos dos leds)
  • Conecta à rede WiFi
  • Inicializa o ThingSpeak

Fluxo do loop:

  • Läs mer om sensorn MQ135
  • Verifiera 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" gör ThingSpeak

    Se o comando = 1, desliga o alarme (LED vermelho) och 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 a programação de cada um dos principais módulos com o respectivo código para teste.

Anslutning till WiFi

Abra a IDE do Arduino, vem em File-> Preferences eadicione em Extra Board Manager URLs a URL

Med hjälp av verktygs-> Kort-> Styrelsehanterare kan du använda ESP8266, klicka på det för att installera det.

É nödvändário definir 2 variáveis para conexão na rede:

  • WIFI_SSID: det går inte att använda WiFi för att kunna använda systemet
  • WIFI_PASSWORD: senha da rede

Para teste de conexão WiFi, copie o código abaixo, altere as variáveis fora conexão WIFI listadas acima e faça upload no moddulo ESP8266.

#inkludera /************************ ALTERE AS DEFINIÇÕES ABAIXO ******************** *******/ #define WIFI_SSID "YOUR WIFI SSID" // Nämn 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.start (WIFI_SSID, WIFI_PASSWORD); medan (WiFi.status ()! = WL_CONNECTED) {fördröjning (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi conectado com sucesso!"); Serial.println ("IP obtido:"); Serial.println (WiFi.localIP ()); } // Setup da placa void setup () {Serial.begin (115200); fördröjning (50); // Conecta ao wifi ConnectToWiFi (); }

Lendo dados gör sensor MQ135

Para ler os dados do sensor MQ135, primeiramente deve-se baixar and biblioteca MQ135.h e adicioná-la na IDE do Arduino através do menu Skecth-> Include Library-> Add. ZIP Library.

Depois, copie o código abaixo and faça upload no módulo ESP8266 através do cabo micro-usb. O código realiza a leitura da concentração de CO2 em ppm e imprime os valores lidos no serial monitor.

#inkludera "MQ135.h" #define SMOKE_SENSOR A0 // IO do sensor de fumaça float sensorValue; // Setup da placa void setup () {Serial.begin (115200); fördröjning (50); } // Loop principal void loop () {// Faz leitura do sensor MQ135 gasSensor = MQ135 (SMOKE_SENSOR); sensorValue = gasSensor.getPPM (); Serial.print ("Concentracao de CO2 (ppm):"); Serial.println (sensorValue); }

Escrevendo och lendo dados gör ThingSpeak

Primeiro, adicione a Biblioteca do ThingSpeak no Arduino IDE. Vá em Tools-> Boards-> Boards Manager digite ThingSpeak, klicka för att installera och ladda ner.

En gratis version av ThingSpeak, det går att ladda upp de senaste 20 dagarna, för det är inget som gör det möjligt för oss att testa ett ögonblick.

Para comunicar com o ThingSpeak é needsário definir as variáveis abaixo:

  • myChannelNumber: numero 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 of 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.

#inkludera #inkludera /************************ ALTERE AS DEFINIÇÕES ABAIXO ***************** *** dados ao ThingSpeak /************************ ALTERE AS VARIÁVEIS ABAIXO ****************** ********/ osignerat långt myChannelNumber = 0000000; // Nummer till kanalen gör ThingSpeak const char * myWriteAPIKey = "din skriv -api -nyckel"; // Chave de escrita do canal do ThingSpeak const char * myReadAPIKey = "din läs -api -nyckel"; // Chave de leitura do canal do ThingSpeak unsigned long lastTime; osignerad lång aktuell tid; WiFiClient -klient; // Função que faz a conexão wifi void ConnectToWiFi (void) {// Configura root certificate para api.telegram.org configTime (0, 0, "pool.ntp.org"); clientSecure.setTrustAnchors (& cert); // Tenta conectar ao wifi Serial.println ("Conectando à rede WiFi"); WiFi.start (WIFI_SSID, WIFI_PASSWORD); medan (WiFi.status ()! = WL_CONNECTED) {fördröjning (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi conectado com sucesso!"); Serial.println (WiFi.localIP ()); } // Setup da placa void setup () {Serial.begin (115200); fördröjning (50); // Conecta ao wifi ConnectToWiFi (); // Inicializa ThingSpeak lastTime = 0; ThingSpeak.begin (klient); } // Loop 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 do ThingSpeak:"); Serial.println (värde); // Verifica se é o momento de enviar dados ao ThingSpeak if ((currentTime - lastTime> THINGSPEAK_WRITE_INTERVAL)) {ThingSpeak.setField (1, 100); ThingSpeak.writeFields (myChannelNumber, myWriteAPIKey); lastTime = currentTime; } fördröjning (20000); }

Enviando notificação pelo Telegram

Primeiro, adicione a Biblioteca do Telegram no Arduino IDE. Vá em Tools-> Boards-> Boards Manager digite UniversalTelegramBot, klicka på för att installera och ladda ner.

Abra o Telegram e siga as próximas etapas para criar um Bot. Primeiro, skaffa av botfather e clique nele. A janela a seguir deve abrir e você será solicitado a clicar no botão Iniciar. Digite /newbot e siga as instruções para criar seu bot. Dê a ele um nome e nome de usuário. Se o seu bot for criado com sucesso, você receberá uma mensagem com um link para acessar 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 ESP826.

#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 # definiera CHAT_ID "CHANGEYOURCHATID" // ID do chat do telegram X509List cert (TELEGRAM_CERTIFICATE_ROOT); WiFiClientSecure clientSecure; UniversalTelegramBot bot (BOT_TOKEN, clientSecure); // Envia notificação ao Telegram void SendTelegramNotification (String message) {bot.sendMessage (CHAT_ID, meddelande, ""); Serial.println (meddelande); } // Função que faz a conexão wifi void ConnectToWiFi (void) {// Configura root certificate para api.telegram.org configTime (0, 0, "pool.ntp.org"); clientSecure.setTrustAnchors (& cert); // Tenta conectar ao wifi Serial.println ("Conectando à rede WiFi"); WiFi.start (WIFI_SSID, WIFI_PASSWORD); medan (WiFi.status ()! = WL_CONNECTED) {fördröjning (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi conectado com sucesso!"); Serial.println ("IP obtido:"); Serial.println (WiFi.localIP ()); } // Setup da placa void setup () {Serial.begin (115200); fördröjning (50); // Conecta ao wifi ConnectToWiFi (); // Testa notificação pelo telegram SendTelegramNotification ("Testando envio de notificação."); }

Rekommenderad: