INHOUDSOPGAWE:

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

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

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

Introdução

O Sistema Detector de Fumaça bestaan uit 'n oplossing IoT com of objetivo de permitir or monitoramento de alarmes de incêndio de residências através de um aplicativo for Android. Ons kan ook 'n mikrokontrole vir ons op die internet bied, en ons kan ook ons sensor opspoor. O proprietário da residência consegue monitorar of 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

Stap 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 for projeto foram:

  • Wifi ESP8266 NodeMcu ESP-12: 'n kombinasie van 'n kombinasie van 'n chip ESP8266 (WiFi-verbinding), 'n usb-seriële koppelvlak en 'n regulator van 3.3V. 'N Program wat vir ons gebruik kan word, is 'n IDE van Arduino, wat deur middel van 'n mikro-usb gekombineer kan word.
  • Sensor de Gás MQ-135 vir Gases Tosxicos: O Sensor de Gás MQ-135 kan 'n groot aantal gasdeteksies in die omgewing, koolstofdioksied, gasstof, oksidasie en e-posse toelaat.
  • Led vermelho
  • Led verde
  • 2 Weerstand 200Ω
  • Protoboard en springers vir conexão en teste do protótipo

Stap 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 is 'n diens vir die platvorm van IoT vir die herwinning en gebruik van protokolle vir HTTP en MQTT vir internet. Met ThingSpeak kan u die nuutste weergawe, analise en analise van vloei.

O ThingSpeak is beskikbaar vir 'n gratis diens vir 'n paar van ons handelsmerke (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 kanaal geen ThingSpeak

Ons kan ook nie 'n ThingSpeak -kanaal hê nie. Ons kan dit vir ons beslis bepaal. Die kanaal bevat 8 kampusse wat 'n podium vir 'n goeie status kan bied, maar 3 kampe vir 'n plaaslike status en 1 vir 'n status. Ons kan die kanaal gebruik, maar ons kan dit ook gebruik as ThingSpeak para analisá-los en visualizá-los.

Para este projeto, foi criado um channel com nome IoTProject-SmokeDetector e 3 campos for envio de dados:

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

As 'privaat aansig' kan u 'n visuele beeld van die kampus kry. Neste projeto, foram criados:

  • 1 grafiek kan ons konsentreer om die tempo van CO2 te verlaag
  • 1 indikator 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

Ons kan die ThingSpeak -boodskap identifiseer as 'n identifisering van kanaal (kanaal -ID). Na die "API -sleutels" kan ons ook 'n kanaal oopmaak (skryf API -sleutel). Ons kan dit ook as API -versoeke (HTTP -versoeke) aanskaf.

U kan die kanaal identifiseer as 'n manier waarop ons 'n mikrobestuurder kan gebruik. Ja, as API -versoeke om programme vir Android aan te wend.

Stap 3: Aplicativo - MIT App Uitvinder

Aplicativo - MIT App Uitvinder
Aplicativo - MIT App Uitvinder
Aplicativo - MIT App Uitvinder
Aplicativo - MIT App Uitvinder
Aplicativo - MIT App Uitvinder
Aplicativo - MIT App Uitvinder
Aplicativo - MIT App Uitvinder
Aplicativo - MIT App Uitvinder

Aplicativo para monitoramento do sistema foi desenvolvido utilizando o MIT App Uitvinder. Die MIT App Inventor is 'n gratis internetgebruiker van die Instituut vir Tegnologie (MIT) van Massachusetts. Dit is moontlik om programme vir Android en iOS te gebruik.

Ons kan ook nie 'n MIT-app-uitvinder gebruik nie, maar ek kan ook 'n nuwe program vir IotProject_SmokeDetector kry.

Na ontwerper kan ons ook later 'n kieslys kies, insluitend die nodige komponente (etikette, etikette, afbeeldings, ens.) Geen laterale spyskaart (palet). Para cada um doses selecionados, é possível alterar configurações de cores, tamanho, posição, entre outras no menu lateral direito (Properties).

Na blokke kan die program aplicativo gedoen word. 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.

Ons kan 1 sekondes (definisie vir klok 1) gebruik, maar dit kan ook versoek word om nie 'n kanaal te gebruik nie. Ons kan dit herhaal, of ons kan die korrespondensie van die konsentrasie van die CO2 -konsentrasie in die praktyk toelig. Ja of alado en testament:

  1. Ons kan ook 'n alarme estiver acionado (alarmData = 1) gebruik, maar dit kan ook 'n mens gebruik word "Atenção! Sua casa está em perigo!" e o botão de desligar alarme (Button1) é habilitado.
  2. Sien 'n alarme não estiver acionado (alarmData = 0), of 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, of aplicativo escreverá 1 no campo Field3: comando desligar criado no ThingSpeak, indicando que o comando de desligar alarme foi acionado. Ons kan ook die ThingSpeak -URL vir URL's vir die dokument wat ons kan gebruik, kopieer na die "API -sleutels".

Stap 4: Montagem Do Protótipo

Montagem Do Protótipo
Montagem Do Protótipo

O prototipo foi montado no protoboard conforme indicado and figura.

Sensor MQ135

  • Pino AO: kan ook die AD0 van ESP8266 gebruik
  • Pino GND: verbind tot GND vir ESP8266
  • Pino Vcc: konektado ao pino VIN do módulo ESP8266

LED verde

  • Weerstand teen 200Ω sonder pyp D5 vir ESP8266
  • Aansluiting vir LED (positief - meer perna) en weerstand teen weerstand
  • Konnekteer of gebruik LED (negatief - menigte perna) geen GND vir model ESP8266

LED vermelho

  • Ons kan 'n doresistor van 200Ω gebruik sonder 'n D7 -model vir ESP8266.
  • Aansluiting vir LED (positief - meer perna) en weerstand teen weerstand
  • Konnekteer of gebruik LED (negatief - menigte perna) geen GND vir model ESP8266

Stap 5: Program vir mikrokontrole

Die mikrobeheerder vir die ESP8266 vir die gebruik van IDE vir Arduino (vir aflaai).

Ons kan nie 'n volledige projek gebruik nie, maar nie 'n finale tutoriaal nie (Iot_project.ino). Een van die belangrikste funksies: opstel en lus.

Fluxo opstel:

  • Inisieer 'n portale reeks
  • Inisieer ons uitsette (pinos dos leds)
  • Skakel WiFi in
  • Inisieer o ThingSpeak

Fluxo do lus:

  • Ons kan ook die sensor MQ135 gebruik
  • Verifieer die konsentrasie van CO2 ultrapassa of beperkte definisie (ideaal: CO2 <= 700 ppm)

    • Liga o alarme (LED vermelho), desliga o LED de status (verde) e envia notificação pelo Telegram of valor estiver acima do limite
    • Ons kan die LED (status) en die status van die status (verde) verander
  • Lê o dado de "comando desligar alarme" van ThingSpeak

    Komando = 1, lys van alarme (LED -lampe) en lig van LED -status (verde)

  • Envia kan die sensor, die alarme en die kommando van ThingSpeak tot 20 sekondes toespreek

Abaixo será descrita a programação de cada um dos principais módulos com o respectivo código para teste.

Verbind met WiFi

Skep 'n IDE vir Arduino, of lêer-> Voorkeure vir addisionele raadbestuurder-URL's, 'n URL

U kan ook gereedskap-> rade-> radebestuurders gebruik om ESP8266 te klik, en klik om dit te installeer.

Dit is noodsaaklik dat ons 2 verskillende weergawes vir ons kan gebruik:

  • WIFI_SSID: WiFi kan nie gebruik word om 'n stelsel te kan gebruik nie
  • WIFI_PASSWORD: dit kan gedoen word

Vir WiFi, kopiëring of aflaai, kan dit ook verander word as 'n verbinding met WIFI -lys en geen oplaai nie ESP8266.

#include /************************ ALTERE AS DEFINIÇÕES ABAIXO ******************* *******/ #define WIFI_SSID "YOUR WIFI SSID" // Naam vir wifi #definieer WIFI_PASSWORD "YOUR WIFI PASSWORD" // Wifi WiFiClient -kliënt kan gebruik word; // Funksionele funksies van 'n konneksie van die wifi -verbinding van ConnectToWiFi (ongeldig) {// Tenta conectar ao wifi Serial.println ("Conectando à rede WiFi"); WiFi.begin (WIFI_SSID, WIFI_PASSWORD); terwyl (WiFi.status ()! = WL_CONNECTED) {vertraging (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi konectado com sucesso!"); Serial.println ("IP -adres:"); Serial.println (WiFi.localIP ()); } // Setup da placa void setup () {Serial.begin (115200); vertraging (50); // Conecta ao wifi ConnectToWiFi (); }

Lendo het die sensor MQ135

Paral 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-> Include Library-> Add. ZIP Library.

Laai, kopieer of stuur 'n e-pos na die ESP8266-ontvanger vir mikro-usb. Dit is moontlik om 'n konsentrasie van CO2 en ppm te gebruik en nie 'n seriële monitor te gebruik nie.

#include "MQ135.h" #define SMOKE_SENSOR A0 // IO do sensor de fumaça float sensorValue; // Stel da placa void setup op () {Serial.begin (115200); vertraging (50); } // Loop hoof leegte lus () {// Faz leitura do sensor MQ135 gasSensor = MQ135 (SMOKE_SENSOR); sensorValue = gasSensor.getPPM (); Serial.print ("Concentracao de CO2 (ppm):"); Serial.println (sensorValue); }

Skakel na en stuur na ThingSpeak

Primeiro, adicione a Biblioteca do ThingSpeak no Arduino IDE. Gaan na gereedskap-> rade-> radebestuurders deur ThingSpeak te klik, en klik op die installering daarvan.

Vir ThingSpeak kan u dit gratis oplaai na 20 dae, maar dit is ook nie 'n tyd om dit te sien nie.

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

  • myChannelNumber: número 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, copy of codig abaixo, altere as variáveis for conexão na rede e as variáveis listadas acima and faça upload no moddulo ESP8266.

#include #include /*********************** ALTERE AS DEFINIÇÕES ABAIXO ***************** *********/ #define WIFI_SSID "YOUR WIFI SSID" // Noem 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 ****************** ********/ ongetekende lang myChannelNumber = 0000000; // Nommero do canal do 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; ongetekende lang huidige tyd; WiFiClient -kliënt; // Funksies wat verband hou met 'n wifi -verbinding, ConnectToWiFi (void) {// Configureer wortelsertifikaat vir 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); terwyl (WiFi.status ()! = WL_CONNECTED) {vertraging (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi konectado com sucesso!"); Serial.println (WiFi.localIP ()); } // Setup da placa void setup () {Serial.begin (115200); vertraging (50); // Conecta ao wifi ConnectToWiFi (); // Inicializa ThingSpeak lastTime = 0; ThingSpeak.begin (kliënt); } // Lus hoof leemte lus () {currentTime = millis (); // stel 'n tempo inual // Lê dados do ThingSpeak int value = ThingSpeak.readIntField (myChannelNumber, 1, myReadAPIKey); Serial.println ("Dado no campo 1 do ThingSpeak:"); Serial.println (waarde); // Verifieer dit as 'n oomblik om die dinge soos ThingSpeak as ((currentTime - lastTime> THINGSPEAK_WRITE_INTERVAL)) {ThingSpeak.setField (1, 100); ThingSpeak.writeFields (myChannelNumber, myWriteAPIKey); laaste tyd = huidige tyd; } vertraging (20000); }

Enviando notificação pelo Telegram

Primeiro, adicione a Biblioteca do Telegram no Arduino IDE. Vir hulpmiddels-> rade-> radebestuurders kan u UniversalTelegramBot oplaai, klik om dit te installeer.

Abra o Telegram e siga as próximas etapas para criar um Bot. Eerste keer, kry 'n aankoop deur die botfather en die kliek. Ons kan nie meer 'n antwoord gee nie, maar ons kan nie eers 'n antwoord gee nie. Digite /newbot e siga as instruções fora criar seu bot. Dê a ele um nome e nome de usuário. U kan ook 'n skakel vir 'n skakel of 'n teken van 'n bot sien. Skep 'n teken, 'n porselein wat presies op die ESP8266 kan plaas.

U kan ook telegram gebruik, pesquise IDBot. Inicie uma conversa com esse bot e digite/getid. Você receberá uma resposta com seu ID de usuário. Salve of 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 of Telegram (BOT_TOKEN en CHAT_ID) e faça upload no módulo ESP826.

#include #include #include /******************** ALTERAAR 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 # definieer 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, message, ""); Serial.println (boodskap); } // Funksies wat verband hou met 'n wifi -verbinding, ConnectToWiFi (leeg) {// Configureer wortelsertifikaat vir 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); terwyl (WiFi.status ()! = WL_CONNECTED) {vertraging (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi konectado com sucesso!"); Serial.println ("IP -adres:"); Serial.println (WiFi.localIP ()); } // Setup da placa void setup () {Serial.begin (115200); vertraging (50); // Conecta ao wifi ConnectToWiFi (); // Testa notificação pelo telegram SendTelegramNotification ("Testando envio de notificação."); }

Aanbeveel: