Innholdsfortegnelse:

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

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

Video: Projeto IoT - Sistema Detector De Fumaça: 5 trinn
Video: Detecção de incêndio - Como instalar os dispositivos periféricos (Detectores, acionadores e sirenes) 2024, November
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. Du kan også bruke mikrokontrolleren til å koble til et trådløst nettverk, og det kan også oppdages av sensor for 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

Trinn 1: Materiais Utilizados

Materiais Utilizados
Materiais Utilizados
Materiais Utilizados
Materiais Utilizados
Materiais Utilizados
Materiais Utilizados
Materiais Utilizados
Materiais Utilizados

Os materiais utilizados para konstruçã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 for Gases Tóxicos: O Sensor de Gás MQ-135 er en modell som kan brukes til å oppdage gasser som forårsaker gass, dioxidasjon av karbon, benzen, oksidant og e-bok.
  • Led vermelho
  • Led verde
  • 2 Motstander 200Ω
  • Protoboard e jumpers para conexão e teste do protótipo

Trinn 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 er en plattform for IoT for armazenar og recuperar dados usando o protocolo HTTP og MQTT for Internet ou por meio de uma rede local. ThingSpeak tillater aggreger, visualiseringer og analyser av fluxos de dados na nuvem.

O ThingSpeak kan leveres på en gratis måte for en del av produktene (menyene for 3 millioner dager for 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 for dados de localização e 1 for 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:

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

Etter en "privat visning" kan du se en visualisering av de forskjellige stedene. Neste projeto, foram criados:

  • 1 gráfico com os dados de concentração de gás CO2 em função do tempo
  • 1 indikator for 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 identificação para envio and leitura de dados. Etter "API -nøkler" kan vi disponere som en chaves for escrita (Write API Key) og søk (Read API Key) de dados no canal. Vi kan også bruke API -forespørsler (HTTP -forespørsler).

Du kan identifisere kanalen slik at vi kan bruke mikrokontroller. Ja som API -forespørsler om bruk av programmer og applikasjoner for Android.

Trinn 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

A aplicativo para monitoramento do system for foi desenvolvido utilizando o MIT App Inventor. O MIT App Inventor er en gratis internettbasert og integrert del av en integrert del av Massachusetts Institute of Technology (MIT). Ele permite que iniciantes on 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 er mulig å installere et alternativ som også gjør det mulig å velge andre komponenter (detaljer, etiketter, bilder osv.) Ingen meny lateral esquerdo (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 er en programvare for programmene. 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 for 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". Vi kan også svare på korrespondanse til CO2 -konsentrasjon. 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. Du kan også bruke ThingSpeak til å bruke URL -adressen for å skrive ut en kopi av "API Keys".

Trinn 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: 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
  • Tilkobling av LED (positiv - maior perna) og motstand
  • Koble til LED -lampe (negativ - meny perna) no GND do módulo ESP8266

LED -lampe

  • Koble til en doresistor på 200Ω uten p7 D7 for ESP8266.
  • Koble til LED (positiv - maior perna) og motstand
  • Koble til LED -lampe (negativ - meny perna) no GND do módulo ESP8266

Trinn 5: Programação Do Microcontrolador

En mikrokontrollator for ESP8266 for programmer som kan brukes til IDE for Arduino (for nedlasting).

Du kan fullføre bruken av noen projeto pode ser baixado no final deste tutorial (Iot_project.ino). O código tem duas funções principais: setup e loop.

Oppsett av Fluxo:

  • Inicializa a porta serial
  • Inicializa os -utganger (pinos dos leds)
  • Tilkobling til WiFi
  • Inicializa o ThingSpeak

Fluxo do loop:

  • Les mer om sensoren MQ135
  • Bekrefter at konsentrasjonen av CO2 ultrapassa eller begrenset definisjon (ideell: 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" gjør ThingSpeak

    Se o comando = 1, desliga o alarme (LED vermelho) og 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.

Tilkobling og innkobling av WiFi

Du kan bruke IDE til Arduino, til File-> Preferences for ytterligere Board Manager-URLer en URL

Du kan også se verktøy-> Tavler-> Boards Manager digite ESP8266, klikk på for å installere og laste ned.

É nødvendigvis definir 2 variáveis para conexão na rede:

  • WIFI_SSID: Du kan ikke bruke WiFi til å koble til et system
  • WIFI_PASSWORD: senha da rede

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

#include /************************ ALTERE AS DEFINIÇÕES ABAIXO ******************* *******/ #define WIFI_SSID "YOUR WIFI SSID" // Navn 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.begynner (WIFI_SSID, WIFI_PASSWORD); mens (WiFi.status ()! = WL_CONNECTED) {forsinkelse (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); forsinkelse (50); // Conectaooo wifi ConnectToWiFi (); }

Lendo dados gjø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 model ESP8266 através do cabo micro-usb. For å realisere og finne en konsentrasjon av CO2 em ppm e imprime os valores lidos no serial monitor.

#include "MQ135.h" #define SMOKE_SENSOR A0 // IO do sensor de fumaça float sensorValue; // Setup da placa void setup () {Serial.begin (115200); forsinkelse (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 og lendo dados do ThingSpeak

Primeiro, adicione a Biblioteca do ThingSpeak no Arduino IDE. Finn verktøy-> Tavler-> Tavlerbehandler digite ThingSpeak, klikk på installasjonen og installasjonen.

En gratis versjon av ThingSpeak, for å laste opp de siste 20 dagene, kan du heller ikke teste noe av det vi ønsker å gjøre.

Para comunicar com 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 av ThingSpeak, kopi av en annonse, andre alternativer for konexão og rede e som varáveis listadas acima e faça laste ikke opp noen ESP8266.

#include #include /*********************** ALTERE AS DEFINIÇÕES ABAIXO ***************** *** dados ao ThingSpeak /*********************** ALTERE AS VARIÁVEIS ABAIXO ****************** ********/ unsigned long myChannelNumber = 0000000; // Nummer til kanalen gjør ThingSpeak const char * myWriteAPIKey = "skrive api -nøkkelen din"; // Chave de escrita do canal do ThingSpeak const char * myReadAPIKey = "your read api key"; // Chave de leitura do canal do ThingSpeak unsigned long lastTime; usignert lang 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.begynner (WIFI_SSID, WIFI_PASSWORD); mens (WiFi.status ()! = WL_CONNECTED) {forsinkelse (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi conectado com sucesso!"); Serial.println (WiFi.localIP ()); } // Setup da placa void setup () {Serial.begin (115200); forsinkelse (50); // Conectaooo 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 (verdi); // 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; } forsinkelse (20000); }

Enviando notificação pelo Telegram

Primeiro, adicione a Biblioteca do Telegram no Arduino IDE. Finn verktøy-> Tavler-> Boards Manager digite UniversalTelegramBot, klikk på for å installere og laste ned.

Abra o Telegram e siga as próximas etapas para criar um Bot. Primeiro, skaff deg av botfather e clique nele. A janela a seguir deve abrir e você será solicitado and 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 # definere 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 melding) {bot.sendMessage (CHAT_ID, melding, ""); Serial.println (melding); } // 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.begynner (WIFI_SSID, WIFI_PASSWORD); mens (WiFi.status ()! = WL_CONNECTED) {forsinkelse (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); forsinkelse (50); // Conectaooo wifi ConnectToWiFi (); // Testa notificação pelo telegram SendTelegramNotification ("Testando envio de notificação."); }

Anbefalt: