Cuprins:

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

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

Video: Projeto IoT - Sistema Detector De Fumaça: 5 Steps
Video: Vape Detector for Schools, Home and Business (Unboxing & Install) 2024, Noiembrie
Anonim
Projeto IoT - Sistema Detector De Fumaça
Projeto IoT - Sistema Detector De Fumaça

Introdução

O Sistema Detector de Fumaça constă în uma soluție IoT cu obiectivul de a permite sau monitoriza alarmele de incidență a rezidențelor atravate de um aplicativ Android. O proiecție este bazată pe un microcontrolator care se află în comun cu o nouă pagină rede WiFi, trimitând o sineață detectată de un senzor de fum. O proprietariu de rezidență consiliu monitorizează o sistemă através de um aplicativ și recebă notificări prin Telegramă în caz de ativație a alarmei de incidență.

Desenvolvedori

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

Pasul 1: Materiale Utilizate

Materiale Utilizate
Materiale Utilizate
Materiale Utilizate
Materiale Utilizate
Materiale Utilizate
Materiale Utilizate
Materiale Utilizate
Materiale Utilizate

Os materiale utilizate pentru construcția proiectului foram:

  • Módulo WiFi ESP8266 NodeMcu ESP-12: Placa de dezvoltare care combina o chip ESP8266 (comunicação WiFi), uma interface usb-serial e um regulator de tensão 3.3V. Un program poate fi folosit folosind un IDE de Arduino, através de comunicație prin cablu micro-usb.
  • Sensor de Gás MQ-135 para Gases Tóxicos: O Sensor de Gás MQ-135 este cu un modul capabil de detectare a tipurilor de gaze tóxice ca amonie, dióxido de carbono, benzeno, óxido nítrico, e prea fumaça sau álcool.
  • Led vermelho
  • Led verde
  • 2 rezistoare 200Ω
  • Protoboard e jumpers para conexão e teste do prototipo

Pasul 2: Configurați Do ThingSpeak

Configurați Do ThingSpeak
Configurați Do ThingSpeak
Configurați Do ThingSpeak
Configurați Do ThingSpeak
Configurați Do ThingSpeak
Configurați Do ThingSpeak

O ThingSpeak este un serviciu de platformă IoT pentru armazenar și recuperare folosind protocolul HTTP și MQTT pela Internet sau pentru meio de uma rede local. ThingSpeak permite agregarea, vizualizarea și analizarea fluxurilor de date pe care le avem.

O ThingSpeak este disponibilível ca um serviciu gratuit pentru mici proiecte fără comercianți (mai puțin de 3 milioane de mesaje pentru un an sau aproximativ 8000 de mesaje pentru dia). Pentru proiecte mai mari sau aplică comerciale, patru tipuri diferite de licență anuală oferite de standard: Standard, Academic, Student and Home.

Configurarea canalului nu ThingSpeak

Apos criar uma doesn't no ThingSpeak, este necesar criar um canal. Os canais armazenam os dados enviados de um determinado projeto. Cada canal inclui 8 campuri pe care putem să le cunoaștem tip de dados, dar 3 campuri pentru dados de localizare și 1 pentru dados de status. Depozit de coletar dados em um canal, poți să folosești aplicații ThingSpeak pentru analiza și vizualizarea.

Pentru acest proiect, a fost creat un canal cu numele IoTProject-SmokeDetector și 3 campuri pentru invitația de date:

  • Câmpul 1: Concentrația de gás
  • Câmpul 2: Alarmă
  • Câmpul 3: Comando desligar

Na aba "Private View" are criar as visualizações de cada um dos campos criados. În acest proiect, foram criados:

  • 1 grafic com os de concentrare a gazelor CO2 em funcționare do tempo
  • 1 indicator de led pentru indicație de alarmă
  • 1 grafic com os dados de comando de desligar alarme em função do tempo

Leitura e escrita no ThingSpeak

O canal do ThingSpeak este criat cu un identificator unic (Channel ID) care posibilă identificarea sa pentru invio și leitura de dados. Na aba "API Keys" são disponibilizadas as chaves para escrita (Write API Key) e leitura (Read API Key) de dados no canal. De asemenea, sunt disponibile și ca solicitări API (HTTP get requests) care pot fi utilizate și pentru trimiterea și solicitarea de date.

O identificator do canal e as chaves serão usadas posteriormente no code do microcontrolador. Așa cum cererile API sunt utilizate în programul Android aplicativ.

Pasul 3: Aplicativ - 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 aplicație pentru monitorizarea sistemului a fost dezvoltată folosind MIT App Inventor. O MIT App Inventor este un mediu web gratuit și de cod deschis pentru dezvoltare integrat de aplicații mantide pelo Massachusetts Institute of Technology (MIT). El permite ca inițiativele să fie aplicate pentru aplicații Android și iOS.

Pentru a veni, apăreați să nu conțineți niciun MIT App Inventor, să creați un proiect cu numele IotProject_SmokeDetector.

În pânză de designer este posibil să se monteze ca aplicații, selectând componentele necesare (butoane, etichete, imagini, etc.) fără meniu lateral drept (Palette). Pentru fiecare um două componente selectate, este posibil să modificați configurațiile de nuclee, tamanho, poziție, între alte fără meniu lateral (Properties).

Na tela Blocks este completă într-o logică a programului de aplicare. A programação é feita através de blocos, facilitando o development for iniciantes.

Explicação do código

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

A cada 1 segundo (definido pelo Clock1), o aplicativ faz um request de dados no canal ThingSpeak através da URL de leitura de dados that you can ser copiada na aba "API Keys". Când os dados são returnados, o dado do sensor correspondente à concentração de gás CO2 este mostrado na tela do aplicativo. Já o dado do alarme este testat:

  1. Se o alarme estiver acionado (alarmData = 1), o aplicativ arată până la utilizatorul unui mesaj "Atenție! Sua casa este em pericol!" e o botão de desligar alarme (Button1) is habilitado.
  2. Se o alarme não estiver acionado (alarmData = 0), o aplicativ arată până utilizatorul a mensajului "Não se preocupe! Sua casa não está em danger." e o botão de desligar alarme (Button1) é desabilitado.

Când o boton de desligar alarme (Button1) for clicado, o aplicativ escreverá 1 no campo Field3: comanda desligar criado no ThingSpeak, indicând că o comandă de desligar alarmă a fost acționată. O dată este trimisă la ThingSpeak através de URL pentru escrita de date care poate fi copiată na aba "API Keys".

Pasul 4: Montagem Do Protótipo

Montagem Do Protótipo
Montagem Do Protótipo

O prototipo a fost montat nu protoboard conforme indicat na figura.

Senzor 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
  • Conectar o anodo do LED (pozitiv - maior perna) na altă perna do resistor
  • Conectar o catodo do LED (negativ - menor perna) no GND do módulo ESP8266

LED vermelho

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

Pasul 5: Programarea Do Microcontrolador

O microcontrolator do módulo ESP8266 a fost programat folosind un IDE de Arduino (faça o download aqui).

O cod font complet folosit nu poate fi descărcat până la finalul acestui tutorial (Iot_project.ino). O cod tematic două funcții principale: setup e loop.

Fluxo do setup:

  • Inicializa a porta serial
  • Inicializați ieșirile (leduri pinos dos)
  • Conecta à rede WiFi
  • Inicializa o ThingSpeak

Fluxo do loop:

  • Lê os dados do sensor MQ135
  • Verificați o concentrare a gazelor CO2 ultrapassa sau 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 dat de "comandă 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 și de comandă pentru o ThingSpeak a fiecare 20 de secunde

Abaixo va fi descris la un program de fiecare dintre cei doi moduli principali cu respectarea codului pentru teste.

Conectarea na rede WiFi

Deschideți un IDE pentru Arduino, accesați Fișier-> Preferințe și selectați-le pe adresele URL suplimentare ale Board Board-ului, o adresă URL

Urmăriți-le, folosind Tools-> Boards-> Boards Manager digite ESP8266, faceți clic pe instalare și fecar.

Este necesar să definesc 2 variante pentru conexiunea na rede:

  • WIFI_SSID: nume da rede WiFi care vrea să conecteze sistemul dvs.
  • WIFI_PASSWORD: senha da rede

Pentru teste de conexiune WiFi, copie sau cod abaixo, altere as variveveis for connection WIFI listadas acima e faça upload no módulo ESP8266.

#include / ************************ ALTERE AS DEFINIÇÕES ABAIXO ******************* ******* / #define WIFI_SSID "YOUR WIFI SSID" // Nume de rede wifi #define WIFI_PASSWORD "YOUR WIFI PASSWORD" // Senha da rede wifi WiFiClient client; // Funcție care fază conexiune wifi void ConnectToWiFi (void) {// Tenta conectar ao wifi Serial.println ("Conectando à rede WiFi"); WiFi.begin (WIFI_SSID, WIFI_PASSWORD); while (WiFi.status ()! = WL_CONNECTED) {întârziere (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi conectat cu succes!"); Serial.println ("IP obtido:"); Serial.println (WiFi.localIP ()); } // Setup da placa void setup () {Serial.begin (115200); întârziere (50); // Conecta ao wifi ConnectToWiFi (); }

Lendo dados do sensor MQ135

Pentru mai multe informații despre senzorul MQ135, trebuie să descărcați mai întâi o bibliotecă MQ135.h și adăugați IDE-ul la 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 cod realizează o leitura de concentrare a CO2 em ppm și 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); întârziere (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); }

Scriind și lând dados de ThingSpeak

Primeiro, adică la Biblioteca do ThingSpeak no Arduino IDE. Vai la Instrumente-> Placi-> Placi Manager Digite ThingSpeak, faceți clic pe instalare și fecar.

A versiune gratuita do ThingSpeak, aceita upload de dados apenas a cada 20 segundos, por isso, no code deve-se testar se é o moment correct de enviar os dados.

Pentru a comunica cu ThingSpeak este necesar să fie definit ca diverse abaixo:

  • myChannelNumber: numărul do canal criado no ThingSpeak
  • myWriteAPIKey: chave de escrita do canal do ThingSpeak
  • myReadAPIKey: chave de leitura do canal do ThingSpeak

Pentru teste de comunicație cu o ThingSpeak, copie sau cod 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" // Nome da rede wifi #define WIFI_PASSWORD "YOUR WIFI PASSWORD" // Senha da rede wifi #define THINGSPEAK_WRITE_INTERVAL 20000 // Intervalo em ms entrevii de dados ao ThingSpeak / ************************* ALTERE AS VARIÁVEIS ABAIXO ****************** ******** / unsigned long myChannelNumber = 0000000; // Número do canal do ThingSpeak const char * myWriteAPIKey = "cheia ta api de scriere"; // Chave de escrita do canal do ThingSpeak const char * myReadAPIKey = "your read api key"; // Chave de leitura do canal do ThingSpeak unsigned long lastTime; currentTime nesemnat lung; Client WiFiClient; // Funcția care face o conexiune wifi void ConnectToWiFi (void) {// Configurați certificatul rădăcină pentru 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); while (WiFi.status ()! = WL_CONNECTED) {întârziere (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi conectat cu succes!"); Serial.println (WiFi.localIP ()); } // Setup da placa void setup () {Serial.begin (115200); întârziere (50); // Conecta ao wifi ConnectToWiFi (); // Inicializa ThingSpeak lastTime = 0; ThingSpeak.begin (client); } // Loop principal void loop () {currentTime = millis (); // seta o tempo atual // Afișează ThingSpeak int value = ThingSpeak.readIntField (myChannelNumber, 1, myReadAPIKey); Serial.println ("Dado no campo 1 do ThingSpeak:"); Serial.println (valoare); // Verificați-vă momentul de trimitere la ThingSpeak if ((currentTime - lastTime> THINGSPEAK_WRITE_INTERVAL)) {ThingSpeak.setField (1, 100); ThingSpeak.writeFields (myChannelNumber, myWriteAPIKey); ultima ora = ora curenta; } întârziere (20000); }

Enviando notificação pelo Telegram

Primeiro, adicione a Biblioteca do Telegram no Arduino IDE. Vai la Tools-> Boards-> Boards Manager digite UniversalTelegramBot, faceți clic pe instalarea și funcționarea.

Abra o Telegram e siga as próximas etapas para criar um Bot. Primeiro, procure por botfather e clique nele. A janela a follow deve open and você will solicitado a clickar 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 for accessar o bot e o token do bot. Salve o token, because você precise will dele for that o ESP8266 possa send notificações.

Am urmărit, am contat cu Telegram, ID-ul de peschise. Inicie uma conversa com esse bot e digite / getid. Você receberá uma reply with your ID de usuário. Salvați-vă ID-ul, deoarece vocea precisă pentru trimiterea notificărilor.

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 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 # definiți CHAT_ID "CHANGEYOURCHATID" // ID faceți chat faceți telegrama X509List cert (TELEGRAM_CERTIFICATE_ROOT); WiFiClientSecure clientSecure; Bot UniversalTelegramBot (BOT_TOKEN, clientSecure); // Envia notificare la Telegram void SendTelegramNotification (String message) {bot.sendMessage (CHAT_ID, mesaj, ""); Serial.println (mesaj); } // Funcția care face conexiunea wifi void ConnectToWiFi (void) {// Configurați certificatul rădăcină pentru 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); while (WiFi.status ()! = WL_CONNECTED) {întârziere (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi conectat cu succes!"); Serial.println ("IP obtido:"); Serial.println (WiFi.localIP ()); } // Setup da placa void setup () {Serial.begin (115200); întârziere (50); // Conecta ao wifi ConnectToWiFi (); // Testa notificação pelo telegram SendTelegramNotification ("Testando envio de notificação."); }

Recomandat: