Inhaltsverzeichnis:

Projeto IoT - Sistema-Detektor De Fumaça - Gunook
Projeto IoT - Sistema-Detektor De Fumaça - Gunook

Video: Projeto IoT - Sistema-Detektor De Fumaça - Gunook

Video: Projeto IoT - Sistema-Detektor De Fumaça - Gunook
Video: IoT Smoke Detector using MQ135 Gas Sensor, Nodemcu ESP8266, and Blynk Application 2024, November
Anonim
Projeto IoT - Sistema-Detektor De Fumaça
Projeto IoT - Sistema-Detektor De Fumaça

Einführung

O Sistema Detector de Fumaça besteht aus einer Lösung von IoT-Com-Objekten oder einer Überwachung von Alarmmeldungen von incêndios através através de 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 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

Schritt 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: Kombinationsplatz für ESP8266-Chip (WiFi-Kommunikation), USB-Seriell-Schnittstelle und 3.3V-Spannungsregelung. A programação pode ser feita usando a IDE do Arduino, através da comunicação über Cabo Micro-USB.
  • Gassensor MQ-135 para Gases Tóxicos: O Sensor de Gas MQ-135 é um modulare Capaz de Detectar varios tipos de gas tóxicos como atônia, dióxido de carbono, benzeno, óxido nítrico, e também fumacoolça.
  • Led vermelho
  • Led verde
  • 2 Widerstände 200Ω
  • Protoboard und Jumper für Conexão und Teste do Protótipo

Schritt 2: Konfiguration von ThingSpeak

Konfiguration von Do ThingSpeak
Konfiguration von Do ThingSpeak
Konfiguration von Do ThingSpeak
Konfiguration von Do ThingSpeak
Konfiguration von Do ThingSpeak
Konfiguration von Do ThingSpeak

O ThingSpeak ist ein Plattform-IoT-Dienst für Armazenar und Rekuperar-Dados oder ein HTTP- und MQTT-Protokoll für das Internet oder für die lokale Wiederverwendung. ThingSpeak erlaubt gemeinsames, visualisieren und analysieren von neuen Daten.

O ThingSpeak ist eine kostenlose Disponível como um serviço serviço for pequenos projetos não comerciais (Menos de 3 Milhões de mensagens por ano ou ca. 8000 mensagens pro dia). Para projetos maiores oder aplicações comerciais, quatro tipos diferentes de licença anual são oferecidos: Standard, Academic, Student und Home.

Configuração de um canal no ThingSpeak

Após criar uma conta no ThingSpeak, écessário crar um den Kanal. Os canais armazenam os dados enviados de um determinado projeto. Cada canal beinhaltet 8 Campos que Podem conter qualquer tipo de dados, mais 3 campos para dados de localização und 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 und 3 campos para envio de dados:

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

Na aba "Private View" é possível crar as visualizações de cada um dos campos criados. Neste projeto, foram criados:

  • 1 gráfico com os dados de concentração de gas CO2 em função do tempo
  • 1 LED-Anzeige für Alarmanzeige
  • 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 ist eine Criado-Com-Um-Identifikationsnummer (Channel ID), die eine Identifikationsmöglichkeit für die Umgebung und die Leitura von Dados bietet. Na aba "API Keys" sind verfügbar als chaves para escrita (API-Schlüssel schreiben) und leitura (API-Schlüssel lesen) de dados no canal. Além disso, também são disponibilizadas as API Requests (HTTP Get Requests) que também podem ser usadas para envio e requisição de dados.

O identificador do canal e as chaves serão usadas posteriormente no código do microcontrolador. Ja als API-Anforderungen, die für Android-Anwendungen verwendet werden.

Schritt 3: Aplicativo - MIT App Inventor

Aplicativo - MIT App Erfinder
Aplicativo - MIT App Erfinder
Aplicativo - MIT App Erfinder
Aplicativo - MIT App Erfinder
Aplicativo - MIT App Erfinder
Aplicativo - MIT App Erfinder
Aplicativo - MIT App Erfinder
Aplicativo - MIT App Erfinder

O aplicativo para monitoramento do sistema foi deenvolvido utilizando oder MIT App Inventor. O MIT App Inventor é um ambiente web gratuito and de código aberto para Desenvolvimento integrado de aplicativos mantido pelo Massachusetts Institute of Technology (MIT). Erlaubt die Einleitung von Anwendungen für Android und iOS.

Para começar, após criar uma conta no MIT App Inventor, Criou-se um ein Projekt mit einem Namen von IotProject_SmokeDetector.

Na tela de Designer é possível montar als telas do aplicativo, selecionando os Componentes Bedarf (Botões, Labels, Images, etc) kein Menü seitliche esquerdo (Palette). Para cada um dos komponenten selecionados, é possível alterar configurações de cores, tamanho, posição, entre outras no menu lateral direito (Eigenschaften).

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

Erklärung des Codes

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

A cada 1 segundo (definido pelo Clock1), oder aplicativo faz um Request von dados no canal ThingSpeak através von URL de leitura de dados que pode ser copiada na aba "API Keys". Quando os dados são retornados, o dado do sensor korrespondente à concentração de gas CO2 é Mostrado na tela do 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 oder botão de desligar alarme (Button1) und 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 oder botão de desligar alarme (Button1) é desabilitado.

Quando oder botão de desligar alarme (Button1) für clicado, oder aplicativo escreverá 1 no campo Field3: comando deligar criado no ThingSpeak, indicando que o comando de deligar alarme foi acionado. O dado enviado ao ThingSpeak através von URLs für schreibgeschützte Daten, die mit "API Keys" kopiert werden.

Schritt 4: Montagem Do Protótipo

Montagem Do Protótipo
Montagem Do Protótipo

O protótipo foi montado no protoboard konforme indicado na figura.

Sensor MQ135

  • Pino AO: Verbindung mit Pino AD0 oder Modul ESP8266
  • Pino GND: Verbindung mit GND oder Modul ESP8266
  • Pino Vcc: Verbindung mit Pino VIN oder ESP8266

LED-Verde

  • Conectar uma perna do Widerstand de 200Ω kein Pino D5 do módulo ESP8266
  • Conectar o anodo do LED (positivo - maior perna) na outra perna do Widerstand
  • Conectar o catodo do LED (negativo - menor perna) kein GND do módulo ESP8266

LED-Vermelho

  • Conectar uma perna doresistor de 200Ω ohne Pino D7 oder ESP8266 Modul.
  • Conectar o anodo do LED (positivo - maior perna) na outra perna do Widerstand
  • Conectar oder catodo do LED (negativo - menor perna) kein GND do módulo ESP8266

Schritt 5: Programação Do Microcontrolador

O microcontrolador dopódulo ESP8266 für die Nutzung von Programmen und IDE für Arduino (Faça oder Download aqui).

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

Fluxo do-Setup:

  • Initialisierung einer Porta Serial
  • Initialisieren von os-Ausgängen (pinos dos leds)
  • Conecta à rede WiFi
  • Initialisierung oder ThingSpeak

Fluxo do-Schleife:

  • Lê os dados do Sensor MQ135
  • Verifica se a concentração de gas 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 Telegramm 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 a programação de cada um dos principais módulos com o resivo código para teste.

Connectando na rede WiFi

Abra a IDE do Arduino, vá em File->Preferences eadicione em Additional Board Manager URLs a URL

Em seguida, vá em Tools->Boards->Boards Manager digite ESP8266, clique em instalar e fechar.

É notwenig 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, copy or código abaixo, altere as variáveis para conexão WIFI listadas acima and faça upload no módulo ESP8266.

#include /************************ ÄNDERN ALS DEFINIÇÕES ABAIXO ******************** *******/ #define WIFI_SSID "IHRE WIFI-SSID" // Name des WLAN-Neustarts #define WIFI_PASSWORD "IHR WIFI-KENNWORT" // Erneut WLAN-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); Während (WiFi.status () != WL_CONNECTED) { Verzögerung (500); Serial.print("."); } Serial.println(""); Serial.println ("WiFi conectado com sucesso!"); Serial.println ("IP obtido: "); Serial.println (WiFi.localIP()); aufrechtzuerhalten. // Setup da placa void setup () { Serial.begin (115200); Verzögerung (50); // Conecta ua WLAN ConnectToWiFi (); }

Lendo dados do sensor MQ135

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

Depois, Kopie oder Código Abaixo und Faça Upload kein Modul ESP8266 através mit Cabo Micro-USB. O código realiza a leitura da concentração de CO2 em ppm und imprime os valores Lidos kein serieller Monitor.

#include "MQ135.h" #define SMOKE_SENSOR A0 // IO do sensor de fumaça float sensorValue; // Setup da placa Void setup () { Serial.begin (115200); Verzögerung (50); } // Schleifenprinzip Void loop () {// Faz leitura do 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, eine Biblioteca von ThingSpeak ohne Arduino IDE. Vá em Tools->Boards->Boards Manager digite ThingSpeak, clique em instalar e fechar.

Eine kostenlose Version von ThingSpeak, das Hochladen von 20 Segmenten und 20 Segundos, kein código deve-se testar se é oder momento correto de enviar os dados.

Para comunicar com o ThingSpeak ist notwendig, um als Variáveis abaixo zu definieren:

  • 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, kopieren oder código abaixo, ändern als variáveis para conexão na rede e als variáveis listadas acima und faça upload no módulo ESP8266.

#include #include /************************ ÄNDERN ALS DEFINIES ABAIXO ***************** *********/ #define WIFI_SSID "IHRE WIFI-SSID" // Nome da rede wifi #define WIFI_PASSWORD "IHR WIFI PASSWORD" // Senha da rede wifi #define THINGSPEAK_WRITE_INTERVAL 20000 // Intervall em ms entre envios de dados ua ThingSpeak /************************ ALTERE AS VARIÁVEIS ABAIXO ****************** ********/ unsigned long myChannelNumber = 0000000; // Número do canal do ThingSpeak const char * myWriteAPIKey = "Ihr Schreib-API-Schlüssel"; // Chave de escrita do canal do ThingSpeak const char * myReadAPIKey = "Ihr gelesener API-Schlüssel"; // Chave de leitura do canal do ThingSpeak unsigned long lastTime; unsigned long currentTime; WiFiClient-Client; // 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.begin(WIFI_SSID, WIFI_PASSWORD); Während (WiFi.status () != WL_CONNECTED) { Verzögerung (500); Serial.print("."); } Serial.println(""); Serial.println ("WiFi conectado com sucesso!"); Serial.println (WiFi.localIP()); aufrechtzuerhalten. // Setup da placa void setup () { Serial.begin (115200); Verzögerung (50); // Conecta ua WLAN ConnectToWiFi (); // Initialisierung ThingSpeak lastTime = 0; ThingSpeak.begin(Client); } // Schleifenprinzip 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 (Wert); // Verifica se é o momento de enviar dados ao ThingSpeak if((currentTime - lastTime > THINGSPEAK_WRITE_INTERVAL)) { ThingSpeak.setField(1, 100); ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey); letzteZeit = aktuelleZeit; } Verzögerung (20000); }

Enviando notificação pelo Telegramm

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 und siga as póximas etapas para criar um Bot. Primeiro, besorgen Sie von Botfather und Clique nele. A janela a seguir deve abrir e você será solicitado a clicar no botão Iniciar. Digite /newbot und siga als 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. Beginnen Sie mit der Konversation mit Bot und Digit/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 to envio de Benachrichtigung Pelo Telegramm, kopieren oder código abaixo, ändern als variáveis de definições para conexão WIFI and para comunicação com o Telegramm (BOT_TOKEN und CHAT_ID) und faça Upload kein Modul ESP8266.

#include #include #include /********************* ALTERAR DEFINIÇÕES ABAIXO ***************** * CHAT_ID "CHANGEYOURCHATID" definieren // ID chatten Telegramm X509List cert(TELEGRAM_CERTIFICATE_ROOT); WiFiClientSecure clientSecure; UniversalTelegramBot-Bot(BOT_TOKEN, clientSecure); // Envia Benachrichtigung ao Telegram void SendTelegramNotification(String message) { bot.sendMessage(CHAT_ID, message, ""); Serial.println (Nachricht); } // 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.begin(WIFI_SSID, WIFI_PASSWORD); Während (WiFi.status () != WL_CONNECTED) { Verzögerung (500); Serial.print("."); } Serial.println(""); Serial.println ("WiFi conectado com sucesso!"); Serial.println ("IP obtido: "); Serial.println (WiFi.localIP()); aufrechtzuerhalten. // Setup da placa void setup () { Serial.begin (115200); Verzögerung (50); // Conecta ua WLAN ConnectToWiFi (); // Testa-Benachrichtigungstelegramm SendTelegramNotification("Testando envio de notificação."); }

Empfohlen: