Indholdsfortegnelse:

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

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

Video: Projeto IoT - Sistema Detector De Fumaça: 5 trin
Video: IoT Smoke Detector using MQ135 Gas Sensor, Nodemcu ESP8266, and Blynk Application 2024, November
Anonim
Projeto IoT - Systemdetektor De Fumaça
Projeto IoT - Systemdetektor 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å bruge mikrokontroleren til at kombinere en ny Wi -Fi, og vi kan også se, om det er en sensor, der kan bruges. 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

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

  • Forbindelse 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 måde, hvorpå vi kan finde gasser, der kan bruges til gas, dioxidation af carbono, benzeno, oxido nítrico og também fumaça ou álcool.
  • Led vermelho
  • Led verde
  • 2 Modstande 200Ω
  • Protoboard og jumpere til conexão og teste do protótipo

Trin 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 servicefunktion for IoT til armazenar og genanvendelse af brug af protokoller til HTTP og MQTT på Internettet eller via lokale oplysninger. ThingSpeak tillader aggregering, visualisering og analyse af fluxos de dados til nuvem.

O ThingSpeak kan disponível como um serviço gratuito para pequenos projetos não comerciais (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 indeholder 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:

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

Efter "Privat visning" kan der bruges en visuel visning af cada um dos campos criados. Neste projeto, foram criados:

  • 1 gráfico com os dados de concentração de gás CO2 em função do tempo
  • 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

O canal do ThingSpeak é criado com um identifierador único (Channel ID) que possibilita sua identificação para envio and leitura de dados. Efter "API -nøgler" kan der disponeres som chaves for escrita (Write API Key) og leit (Read API Key) de dados no canal. Alle oplysninger kan også bruges som API -anmodninger (HTTP -anmodninger).

O identifikator for kanalen e som chaves serão usadas posteriormente no código do microcontrolador. Ja som API -anmodninger kan bruges til programmering af Android.

Trin 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 er en ambiente web -gratis, der kan bruges til at integrere en praktisk anvendelse af Massachusetts Institute of Technology (MIT). Ele permite que iniciantes to 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.

Der kan vælges en designer som muligvis også valgfri, valg af komponenter, der er nødvendige (boturer, etiketter, billeder osv.) Ingen lateral menu (palet). Para cada um dos componentes selecionados, é possível alterar configurações de cores, tamanho, posição, entre outras no menu lateral direito (Properties).

Efter telekommunikation kan programmerne også bruges til programmer. A programação é feita através de blocos, facilitando o desenvolvimento para iniciantes.

Forklaring til código

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

A cada 1 segundo (definido to 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". Quando os dados são retornados, o dado do sensor correspondente à concentração de gás CO2 é mostrado na tela do aplicativo. Ja 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 é enviado ao ThingSpeak através da URL para escrita de dados que pode ser kopiada na aba "API Keys".

Trin 4: Montagem Do Protótipo

Montagem Do Protótipo
Montagem Do Protótipo

O prototipo foi montado no protoboard conforme indicado na figura.

Sensor MQ135

  • Pino AO: conectado ao pino AD0 til módulo ESP8266
  • Pino GND: tilslutning til GND til model ESP8266
  • Pino Vcc: conectado ao pino VIN do módulo ESP8266

LED verde

  • Tilslutning til en modstand på 200Ω ingen pino D5 til ESP8266
  • Tilslutning af LED (positiv - maior perna) og modstand
  • Tilslutter eller koder til LED (negativ - menuer perna) ingen GND til model ESP8266

LED vermelho

  • Tilslutning af en doresistor på 200Ω uden p7 D7 til ESP8266.
  • Tilslutning af LED (positiv - maior perna) og modstand
  • Tilslutter eller koder til LED (negativ - menuer perna) ingen GND til model ESP8266

Trin 5: Programação Do Microcontrolador

O mikrokontrolor til ESP8266 til programmer, der kan bruges til IDE til Arduino (kan downloades).

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: opsætning og sløjfe.

Opsætning af Fluxo:

  • Initiativ til en serie
  • Inicializa os output (pinos dos leds)
  • Tilslut WiFi
  • Inicializa o ThingSpeak

Fluxo do loop:

  • Læs mere om sensoren 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" gør ThingSpeak

    Se o comando = 1, desliga o alarme (LED vermelho) og liga o LED de status (verde)

  • Envia kan gøre sensorer, gøre alarme og de comando para o ThingSeak a cada 20 segundos

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

Tilslutning og indfrielse af WiFi

Du kan bruge IDE til Arduino, til File-> Preferences eller til yderligere Board Manager-URL'er en URL

Du kan også se værktøjer-> Tavler-> Tavlemanager digit ESP8266, klik på installer og download.

É nødvendário definir 2 varáveis para conexão na rede:

  • WIFI_SSID: Der kan ikke bruges WiFi til at oprette forbindelse til dit system
  • WIFI_PASSWORD: senha da rede

For at teste de conexão WiFi, kopiering eller kopiering eller modtagelse, kan du også vælge, at WIFI -listen kan overføres til ESP8266.

#include /************************ ALTERE AS DEFINIÇÕES ABAIXO ******************* *******/ #define WIFI_SSID "YOUR WIFI SSID" // Nomen 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.begyndt (WIFI_SSID, WIFI_PASSWORD); mens (WiFi.status ()! = WL_CONNECTED) {forsinkelse (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi conectado com sucesso!"); Serial.println ("IP -adresse:"); Serial.println (WiFi.localIP ()); } // Opsætning da placa void setup () {Serial.begin (115200); forsinkelse (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.

Henter, kopierer eller kopierer en e-mail og uploader ingen ESP8266-funktioner til mikro-usb. O código realiza aleitura da concentração de 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; // Opsætning 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 gør ThingSpeak

Primeiro, adicione a Biblioteca do ThingTal ingen Arduino IDE. Find værktøjer-> Tavler-> Tavler Manager digite ThingSpeak, klik på installer og download.

En gratis version af ThingSpeak, der kan uploades med 20 dage eller flere, kan ikke bruges til at teste et øjeblik, hvor vi kan sende dem.

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 o ThingSpeak, kopi 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 AS DEFINIÇÕES ABAIXO ***************** *********/ #define WIFI_SSID "YOUR WIFI SSID" // Nomen 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; // Nummer til kanalen gør ThingSpeak const char * myWriteAPIKey = "din skrive api -nøgle"; // Chave de escrita do canal do ThingSpeak const char * myReadAPIKey = "din læste api -nøgle"; // Chave de leitura do canal do ThingSpeak unsigned long lastTime; usigneret lang currentTime; 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.begyndt (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 ()); } // Opsætning da placa void setup () {Serial.begin (115200); forsinkelse (50); // Conecta ao wifi ConnectToWiFi (); // Inicializa ThingSpeak lastTime = 0; ThingSpeak.begin (klient); } // Loop principal void loop () {currentTime = millis (); // indstille tempo atual // Lær at gøre ThingSpeak int value = ThingSpeak.readIntField (myChannelNumber, 1, myReadAPIKey); Serial.println ("Dado no campo 1 do ThingSpeak:"); Serial.println (værdi); // 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. Find værktøjer-> Tavler-> Boards Manager digiterer UniversalTelegramBot, klik på installer og download.

Abra o Telegram e siga as próximas etapas para criar um Bot. Primeiro, skaff af botfather og klik 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" // Nomen da rede wifi #define WIFI_PASSWORD "YOUR WIFI PASSWORD" // Senha da rede wifi #define BOT_TOKEN "CHANGEYOURTOKEN" // Token do bot do telegram # definer CHAT_ID "CHANGEYOURCHATID" // ID gør 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 (besked); } // 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.begyndt (WIFI_SSID, WIFI_PASSWORD); mens (WiFi.status ()! = WL_CONNECTED) {forsinkelse (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi conectado com sucesso!"); Serial.println ("IP -adresse:"); Serial.println (WiFi.localIP ()); } // Opsætning da placa void setup () {Serial.begin (115200); forsinkelse (50); // Conecta ao wifi ConnectToWiFi (); // Testa notificação pelo telegram SendTelegramNotification ("Testando envio de notificação."); }

Anbefalede: