Taula de continguts:

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

Vídeo: Projeto IoT - Sistema Detector De Fumaça: 5 Steps

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

Introdução

O Sistema Detector de Fumaça consisteix en una solució IoT amb l’objectiu de permetre o monitoritzar alarmes d’incés de residències através d’aplicatiu Android. O projectat està basat en un microcontrolador que es comunica amb una nova pantalla Wi-Fi, enviant-se els detectats per sensor de fuma. O propietari da residencia 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.

Desenvolvedors

  • Bruno Gonçalves Pereira
  • João Paulo Tadeu Borges Paiva
  • Juliana Guimarães Soares Buére
  • Willan Alexander Condor Asenjo

Pas 1: materials relacionats

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

Els materials utilitzats per a la construcció del projecte foram:

  • Módulo WiFi ESP8266 NodeMcu ESP-12: Placa de desenvolupament que combina o chip ESP8266 (comunicação WiFi), uma interface usb-serial e um regulador de tensão 3.3V. Un programa pot ser utilitzat mitjançant un IDE per Arduino, através de comunicação via cabo micro-usb.
  • Sensor de Gás MQ-135 para Gases Tóxicos: O Sensor de Gás MQ-135 és un mòdul capaç de detectar varis tipus de gasos tòxics com a amonia, diòxid de carboni, benzè, òxid nítric, i també fumaça o álcool.
  • Led vermell
  • Led verd
  • 2 resistències 200Ω
  • Protoboard e jumpers para conexão e teste do protótipo

Pas 2: Configureu Do ThingSpeak

Configureu Do ThingSpeak
Configureu Do ThingSpeak
Configureu Do ThingSpeak
Configureu Do ThingSpeak
Configureu Do ThingSpeak
Configureu Do ThingSpeak

O ThingSpeak és un servei de plataforma IoT per armazenar i recuperar-los utilitzant protocols HTTP i MQTT pel Internet o per meio de uma rede local. ThingSpeak permet agregar, visualitzar i analitzar els fluxos de dados en nuvem.

O ThingSpeak està disponible com un servei gratuït per a petits projectes no comercials (menys de 3 milions de mensatges per any o aproximadament 8000 mensatges per dia). Per a projectes més grans o aplicacions comercials, quatre tipus diferents de llicència anuals poden oferir-se: Estàndard, Acadèmic, Estudiant i Inici.

Configuració d'un canal sense ThingSpeak

Após criar uma conta no ThingSpeak, is necessary criar um canal. Os canais armazenam os dados enviados de um determinado projeto. Cada canal inclou 8 camps que podem conter qualquer tipus de dados, mais 3 camps per dados de localització i 1 para dados de status. Dipòsits de col·lecció dats em um canal, pot utilitzar els aplicatius ThingSpeak per analitzar-los i visualitzar-los.

Per a aquest projecte, es va crear un canal com a nom IoTProject-SmokeDetector i 3 camps per enviament de dies:

  • Camp 1: Concentració de gàs
  • Camp 2: Alarma
  • Camp 3: Comando desligar

Na aba "Private View" és possible criar com a visualitzacions de cada un dels dos camps. Neste projeto, foram criados:

  • 1 gràfic com os dados de concentració de gas CO2 em função do tempo
  • 1 indicador de led per a indicació d'alarma
  • 1 gràfic com os dados de comando de desligar alarme em função do tempo

Leitura e escrita no ThingSpeak

O canal do ThingSpeak és criat amb un identificador únic (Channel ID) que possibilita la seva identificació per a envio i leitura de dados. Ja hi ha "API Keys" disponibles com a capes per escrit (Write API Key) i leitura (Read API Key) de dados no canal. Tot i així, també està disponible com a API Requests (HTTP get requests) que també podem fer servir per enviament i sol·licitud de dades.

O identificador do canal e as chaves serão usadas posteriorment no code do microcontrolador. Ja que les sol·licituds de l'API s'utilitzen en un programa aplicatiu d'Android.

Pas 3: Aplicatiu - Inventor d'aplicacions MIT

Aplicatiu - MIT App Inventor
Aplicatiu - MIT App Inventor
Aplicatiu - MIT App Inventor
Aplicatiu - MIT App Inventor
Aplicatiu - MIT App Inventor
Aplicatiu - MIT App Inventor
Aplicatiu - MIT App Inventor
Aplicatiu - MIT App Inventor

O aplicatiu per al seguiment del sistema desenvolupat mitjançant MIT App Inventor. O MIT App Inventor és un ambient web gratuït i de codi obert per al desenvolupament integrat d’aplicatius mantingut pel Massachusetts Institute of Technology (MIT). Permet iniciar programes de crèdit aplicatius per a Android i iOS.

Per venir, após criar uma conta no MIT App Inventor, criou-se um projecto com o name IotProject_SmokeDetector.

La tela de dissenyador es pot muntar com a aplicatiu, seleccionant components necessaris (botons, etiquetes, imatges, etc.) sense menú lateral dret (Paleta). Per cada um dos components seleccionats, és possible modificar configuracions de nuclis, tamany, posició, entre altres sense menú lateral dret (Properties).

Na tela Blocks és tota una lògica de programa de aplicació. Un programa és feita através de blocs, facilitant o desenvolupant per a iniciantes.

Explicació del codi

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

A cada 1 segon (definido pelo Clock1), o aplicative faz um request from dados no canal ThingSpeak através da URL de leitura de dados that you can ser copiada na aba "API Keys". Quan os dados são retornados, o dado do sensor correspondente a concentração de gás CO2 és mostrado na tela do aplicativo. Já o dado do alarm es testado:

  1. Se o alarme estiver acionado (alarmData = 1), o aplicativo mostra al usuario a mensagem "Atenção! Sua casa está em perill!" e o botão de desligar alarme (Button1) is habilitado.
  2. Se o alarme não estiver acionado (alarmData = 0), o aplicativo mostra ao usuari a mensagem "No es preocupa! Sua casa no està em perill." e o botão de desligar alarme (Button1) és habilitat.

Quan o botó de desligar alarme (Button1) for clicado, o aplicative escreverá 1 no field Field3: comando desligar criado no ThingSpeak, indicant que o ordre de desligar alarmar va ser accionat. O done is enviado ao ThingSpeak através da URL per escrita de dados that you can ser copiada na aba "API Keys".

Pas 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: connectado ao pino AD0 do módulo ESP8266
  • Pino GND: connectat al GND del mòdul ESP8266
  • Pino Vcc: conectado ao pino VIN do módulo ESP8266

LED verd

  • Conectar uma perna do resistor de 200Ω no pino D5 do módulo ESP8266
  • Conectar o anodo do LED (positivo - maior perna) na altra perna do resistor
  • Conectar o catodo do LED (negatiu - menor perna) no GND do módulo ESP8266

LED vermell

  • Conectar uma perna doresistor de 200Ω no pino D7 do módulo ESP8266.
  • Conectar o anodo do LED (positivo - maior perna) na altra perna do resistor
  • Conectar o catodo do LED (negatiu - menor perna) no GND do módulo ESP8266

Pas 5: Programa Microcontrolador

El microcontrolador del mòdul ESP8266 ha estat programat mitjançant un IDE de Arduino (faça o descàrrega aqui).

O codi font complet utilitzat no es pot baixar cap final d'aquest tutorial (Iot_project.ino). O codi temàtic dues funcions principals: setup e loop.

Configuració de Fluxo:

  • Inicialitza una porta serial
  • Inicialitzar les sortides (pinos dos leds)
  • Connecta’t a WiFi
  • Inicialitzar o ThingSpeak

Fluxo do loop:

  • Lê os dados do sensor MQ135
  • Verifiqueu una concentració de gasos ultrapassa o límit definit (ideal: CO2 <= 700 ppm)

    • Liga o alarme (LED vermell), desliga o LED de status (verde) e envia notificação pelo Telegram se o valor estiver acima do limite
    • Desliga o alarme (LED vermell) e liga o LED de status (verde) se o valor estiver abaixo do limite
  • Llegeix el "comando desligar alarme" de ThingSpeak

    Se o comando = 1, desliga o alarme (LED vermell) e liga o LED de status (verde)

  • Envia dados do sensor, do alarme e de comando para o ThingSpeak a cada 20 segons

Abaixo serà descrit a programa de cada um dos principals mòduls com a codi respectiu per a testejar.

Connectant-se a reduir WiFi

Obriu un IDE d'Arduino, feu clic a Fitxer-> Preferències per obtenir URL del gestor de placa addicionals a una URL

Seguiu, vés a Eines-> Taulers-> Boards Manager digite ESP8266, feu clic a instal·lar i fer servir.

És necessari definir 2 varietats per a connexions:

  • WIFI_SSID: nom da rede WiFi que desitge connectar el seu sistema
  • WIFI_PASSWORD: senha da rede

Per a prova de connexió WiFi, còpia o codi abaix, alt com variàveis per a connexió WIFI llistats acima i faça upload no módulo ESP8266.

#include / ************************ ALTERE AS DEFINIÇÕES ABAIXO ******************* ******* / #define WIFI_SSID "YOUR WIFI SSID" // Nom per redefinir wifi #define WIFI_PASSWORD "YOUR WIFI PASSWORD" // Sense modificar el client WiFiClient wifi; // Funció que fa una connexió wifi void ConnectToWiFi (void) {// Tenta connectar-se al wifi Serial.println ("Conectant à rede WiFi"); WiFi.begin (WIFI_SSID, WIFI_PASSWORD); while (WiFi.status ()! = WL_CONNECTED) {demora (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi connectat amb èxit!"); Serial.println ("IP obtido:"); Serial.println (WiFi.localIP ()); } // Setup da placa void setup () {Serial.begin (115200); retard (50); // Conecta ao wifi ConnectToWiFi (); }

Lendo dados do sensor MQ135

Per ler os dados do sensor MQ135, primerament s’ha de baixar a la biblioteca MQ135.h i afegir-la a IDE do Arduino através do menu Skecth-> Include Library-> Add. ZIP Library.

Depois, copie o código abaixo e faça upload no módulo ESP8266 através do cabo micro-usb. O código realiza a leitura da concentración 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; // Setup da placa void setup () {Serial.begin (115200); retard (50); } // Loop principal void loop () {// Fas leitura do sensor MQ135 gasSensor = MQ135 (SMOKE_SENSOR); sensorValue = gasSensor.getPPM (); Serial.print ("Concentracao de CO2 (ppm):"); Serial.println (sensorValue); }

Escrivint i llegint dats de ThingSpeak

Primeiro, adreça a la Biblioteca de ThingSpeak sense Arduino IDE. Vés a Eines-> Taulers-> Taulers Gestor digital ThingSpeak, feu clic a instal·lar i fer servir.

A versão free do ThingSpeak, aceita upload de dados apenas a cada 20 segons, per isso, no code deve-se testar se és o moment correcte de enviar os dados.

Per comunicar-se amb ThingSpeak és necessari definir-lo com a diversos exemples:

  • myChannelNumber: número de canal criat sense ThingSpeak
  • myWriteAPIKey: chave d'escrita do canal do ThingSpeak
  • myReadAPIKey: chave de leitura do canal do ThingSpeak

Para teste de comunicação com o ThingSpeak, copie o code 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" // Nom per redefinir 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; // Número do canal do ThingSpeak const char * myWriteAPIKey = "la vostra clau API d'escriptura"; // Chave de escrita do canal do ThingSpeak const char * myReadAPIKey = "your read api key"; // Chave de leitura do canal do ThingSpeak unsigned long lastTime; llarga hora sense signar; Client WiFiClient; // Funció que fa una connexió wifi void ConnectToWiFi (void) {// Configura el certificat arrel per api.telegram.org configTime (0, 0, "pool.ntp.org"); clientSecure.setTrustAnchors (& cert); // Tenta connectar-se al wifi Serial.println ("Conectant à rede WiFi"); WiFi.begin (WIFI_SSID, WIFI_PASSWORD); while (WiFi.status ()! = WL_CONNECTED) {demora (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi connectat amb èxit!"); Serial.println (WiFi.localIP ()); } // Setup da placa void setup () {Serial.begin (115200); retard (50); // Conecta ao wifi ConnectToWiFi (); // Inicializa ThingSpeak lastTime = 0; ThingSpeak.begin (client); } // bucle principal buit bucle () {currentTime = millis (); // seta o tempo atual // Vull conèixer ThingSpeak int value = ThingSpeak.readIntField (myChannelNumber, 1, myReadAPIKey); Serial.println ("Dado no campo 1 do ThingSpeak:"); Serial.println (valor); // Verifiqueu el moment de enviar-los al ThingSpeak if ((currentTime - lastTime> THINGSPEAK_WRITE_INTERVAL)) {ThingSpeak.setField (1, 100); ThingSpeak.writeFields (myChannelNumber, myWriteAPIKey); última hora = hora actual; } retard (20000); }

Enviando notificação pelo Telegram

Primeiro, adicione a Biblioteca do Telegram no Arduino IDE. Veure Eines-> Taules-> Gestor de taules digital UniversalTelegramBot, feu clic i instal·leu-lo.

Abra o Telegram e siga as próximas etapas para criar um Bot. Primeiro, procure per botfather e clique nele. A janela a seguir deve open and você serà sol·licitat a un clic sense botó 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 per accessar o bot e o token do bot. Salve o token, perquè você precisará dele para que o ESP8266 possa enviar notificacions.

Em seguida, em la seva compte de Telegram, pesquise IDBot. Inicie uma conversa com esse bot e digite / getid. Você receberá uma resposta com seu ID de usuari. Salve o ID, perquè você precisará dele per enviar de notificacions.

Para teste do envio de notificaciónçã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 ESP8266.

#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 # defineix CHAT_ID "CHANGEYOURCHATID" // ID fa xat fer telegrama X509List cert (TELEGRAM_CERTIFICATE_ROOT); WiFiClientSecure clientSecure; Bot UniversalTelegramBot (BOT_TOKEN, clientSecure); // Envia notificació al Telegram void SendTelegramNotification (missatge de cadena) {bot.sendMessage (CHAT_ID, missatge, ""); Serial.println (missatge); } // Funció que fa una connexió wifi void ConnectToWiFi (void) {// Configura el certificat arrel per api.telegram.org configTime (0, 0, "pool.ntp.org"); clientSecure.setTrustAnchors (& cert); // Tenta connectar-se al wifi Serial.println ("Conectant à rede WiFi"); WiFi.begin (WIFI_SSID, WIFI_PASSWORD); while (WiFi.status ()! = WL_CONNECTED) {demora (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi connectat amb èxit!"); Serial.println ("IP obtido:"); Serial.println (WiFi.localIP ()); } // Setup da placa void setup () {Serial.begin (115200); retard (50); // Conecta ao wifi ConnectToWiFi (); // Testa notificação pelo telegram SendTelegramNotification ("Testando envio de notificação."); }

Recomanat: