Kazalo:

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

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

Video: Projeto IoT - Detector Sistema De Fumaça: 5 korakov
Video: ТЕПЕРЬ НЕ ПРОПАДУ 10-ть самоделок ВЫРУЧАТ ГДЕ УГОДНО! 2024, Julij
Anonim
Projeto IoT - Sistema Detector De Fumaça
Projeto IoT - Sistema Detector De Fumaça

Uvod

O Sistema Detector de Fumaça je sestavljen iz rešitve IoT com o objektivu dovoljenja ali spremljanju alarmov o vključitvi ostankov v aplikacijo Android. O projeto é baseado em um microcontrolador que se comunica com a nuvem pela rede WiFi, enviando os sinais detectados por um sensor de fumaça. O lastniku, da ostaneência privoli v spremljanje nadzornika sistema através de um aplicativo e recebe notificações prek Telegrama 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

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

  • Vmesnik WiFi ESP8266 NodeMcu ESP-12: Napajanje, ki je kombinirano s čipom ESP8266 (komunikacijski WiFi), vmesnik USB, serijski in reguliran na napetost 3.3V. Programski nastavitveni servis, ki ga uporabljate v IDE do Arduino, preusmerite v komunikacijo prek mikro USB-ja cabo.
  • Senzor de Gás MQ-135 za toksične pline: O Sensor de Gás MQ-135 é um módulo capaz de detectar vários tipos de gasses tóxicos como amônia, dióxido de carbono, benzeno, óxido nítrico, e também fumaça ou
  • Led vermelho
  • Led verde
  • 2 Upori 200Ω
  • Protoboard in skakalci para conexão e teste do protótipo

2. korak: Konfigurirajte Do ThingSpeak

Konfigurirajte Do ThingSpeak
Konfigurirajte Do ThingSpeak
Konfigurirajte Do ThingSpeak
Konfigurirajte Do ThingSpeak
Konfigurirajte Do ThingSpeak
Konfigurirajte Do ThingSpeak

O ThingSpeak é um servisu za plataforma IoT para armazenar in recuperar dados usando ali protocolo HTTP e MQTT pela Internet ali meio de uma rede local. ThingSpeak dovolite agregar, vizualizar in analisar fluxos de dados na nuvem.

O ThingSpeak está disponível como um serviço gratuito para pequenos projetos não comerciais (menos de 3 milhões de mensagens por ano ou or aproximadamente 8000 mensagens dia). Para projetos maiores ou aplicações comerciais, quatro tipos diferentes de licença anual são oferecidos: Standard, Academic, Student in Home.

Konfiguracija kanala brez ThingSpeak

Após criar uma conta no ThingSpeak, é needário criar um channel. Os canais armazenam os dados enviados de um determinado projeto. Cada channel inclui 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 channel, você pode usar os aplicativos ThingSpeak para analisá-los e visualizá-los.

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

  • Polje 1: Concentração de gás
  • Polje 2: Alarm
  • 3. polje: Comando desligar

Na aba "Private View" é possível criar kot vizualizações de cada um dos campos criados. Neste projeto, foram criados:

  • 1 gráfico com os dados de koncentração de gás CO2 em função do tempo
  • 1 indicador 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 kanalu do ThingSpeak é criado com um identificador único (Channel ID), ki ga je mogoče identificirati kot envio in leitura de dados. Na "API ključi" niso na voljo kot čave za escrita (Write API Key) in leitura (Read API Key) brez kanala. Če želite, da se ta disponibilizirajo kot zahteve API (zahteve za prejemanje HTTP), jih je treba podati, če jih uporabljate kot envio in rekvizitor.

O identificador do canal e as chaves serão usadas posteriormente no código do microcontrolador. Kot API zahteva uporabo programske opreme za uporabo v sistemu Android.

3. korak: 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

Za uporabo za spremljanje sistema za desenvolvido uporabo programa MIT App Inventor. O izumitelju aplikacij MIT in ambiente na spletu brezplačno in s kodigo, ki je namenjena desenvolvimento integraciji de aplicativos mantido pelo Massachusetts Institute of Technology (MIT). Dovolite, da začnete inicializirate programe v aplikaciji za Android in iOS.

Če želite, ne uporabljajte aplikacije MIT App Inventor, ki jo je mogoče projecirati s programom IotProject_SmokeDetector.

Na tela de Designer je nameščen tako, da je primeren za uporabo, izbrane so komponente, ki so potrebne (boti, nalepke, slike itd.) Brez stranskega menija (paleta). Če želite sestavne dele, ki so izbrani, lahko nastavite druge konfiguracije jeder, tamanho, posição, vnesete zunaj menija stransko usmerjanje (lastnosti).

Na tela Blocks é feita toda a lógica de programção do aplicativo. Programçã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.

Na voljo je 1 sekunda (definicija ure Clock1), ki zahteva, da zahtevate dodatek brez kanala ThingSpeak através da URL de leitura de dados que nastavite servisno kopiranje na "API Keys". Če želite, da senzor ustreza, o senzorju, ki ustreza senzorju, ki koncentrira CO2 v večji količini na telo do aplikacije. Já 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. Če želite, da alarm ni več aktiven (alarmData = 0), uporabite aplikacijo Mostra ao usuário v meniju "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. Če želite, da je ThingSpeak na naslovu URL, ki vas prosimo, da nastavite kopijo na "API ključe".

4. korak: Montagem Do Protótipo

Montagem Do Protótipo
Montagem Do Protótipo

O protótipo foi montado no protoboard conforme indicado na figura.

Senzor MQ135

  • Pino AO: conectado ao pino AD0 do módulo ESP8266
  • Pino GND: povezava ali GND z modelom ESP8266
  • Pino Vcc: konektado ali pino VIN do modula ESP8266

LED svetilka

  • Priključite napajalni upor do 200 Ω brez pina D5 z modulom ESP8266
  • Priključite o anodo do LED (pozitivna - večja perna) na zunanji perna do upor
  • Konektor ali katodo do LED (negativno - menor perna) brez GND do módulo ESP8266

LED vermelho

  • Donec upor z 200Ω brez pina D7 do módulo ESP8266.
  • Priključite o anodo do LED (pozitivna - večja perna) na zunanji perna do upor
  • Konektor ali katodo do LED (negativno - menor perna) brez GND do módulo ESP8266

5. korak: Programirajte mikrokontrolador

O mikrokrmilniku, ki je namestil ESP8266 za program, uporablja IDE do Arduino (faca ali prenos aqui).

O código fonte completeto utilizado no projeto pode ser baixado no final deste tutorial (Iot_project.ino). O código tem duas funções principais: setup e loop.

Nastavitev Fluxo do:

  • Inicializa porta serial
  • Inicializa os izhodi (pinos dos LED)
  • Povežite in obnovite WiFi
  • Inicializa ali ThingSpeak

Fluxo do zanka:

  • Preverite senzor MQ135
  • Preverite, ali je koncentracija CO2 ultrapassa ali omejena definicija (idealno: CO2 <= 700 ppm)

    • Liga o alarmu (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
  • Če želite "comando desligar alarme" do ThingSpeak

    Se o comando = 1, desliga o alarmme (LED vermelho) e liga o LED de status (verde)

  • Envia dados do sensor, do alarmme e de comando para or ThingSpeak a cada 20 sekund

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

Povežite in obnovite WiFi

Vnesite IDE do Arduino v datoteko-> Nastavitve eadicione em Dodatni URL-ji upravitelja odbora URL

Uporabite orodja-> deske-> upravitelj desk digite ESP8266, kliknite in namestite.

É needário definir 2 variáveis para conexão na rede:

  • WIFI_SSID: ime za obnovitev povezave Wi -Fi s sistemom, ki povezuje sistem
  • WIFI_PASSWORD: senha da rede

Če želite povezavo WiFi, kopije ali kodiga abaixo, spremenite kot različico parametra povezave WIFI, ki vsebuje seznam datotek, ki so naložene na ESP8266.

#include /************************ ALTERE AS DEFINIES ABAIXO ******************* *******/ #define WIFI_SSID "YOUR WIFI SSID" // Ime za rede wifi #define WIFI_PASSWORD "VAŠA GESLA ZA WIFI" // Senha da rede wifi WiFiClient client; // Função que faz a conexão wifi void ConnectToWiFi (void) {// Tenta povezava ao wifi Serial.println ("Conectando à rede WiFi"); WiFi.begin (WIFI_SSID, WIFI_PASSWORD); while (WiFi.status ()! = WL_CONNECTED) {zamuda (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi conectado com sucesso!"); Serial.println ("IP obtido:"); Serial.println (WiFi.localIP ()); } // Nastavitev da placa void setup () {Serial.begin (115200); zamuda (50); // Conecta ao wifi ConnectToWiFi (); }

Lendo dados naredi senzor MQ135

Če želite, da senzor MQ135, primera deve-se baixar biblioteca MQ135.h dodano v IDE v Arduino através v meniju Skecth-> Vključi knjižnico-> Dodaj knjižnico. ZIP.

Depois, copie o código abaixo e faça upload no módulo ESP8266 através do cabo micro-usb. O codigo realization a leitura da koncentração de CO2 em ppm e imprime os valores lidos no serijski monitor.

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

Escrevendo e lendo dados do ThingSpeak

Primeiro, dodana v biblioteko do ThingSpeak no Arduino IDE. V orodju-> deske-> upravitelj desk digitalno ThingSpeak, kliknite in namestite.

A versão gratuita do ThingSpeak, aceita upload de dados apenas a cada 20 segundos, por isso, no código deve-se testar se é o momento correto de enviar os dados.

Para comunicar com o ThingSpeak é needário definir as variáveis abaixo:

  • myChannelNumber: número do channel 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, copie o código abaixo, altere as variáveis para conexão na rede e as variaáveis listdas acima e faça upload no módulo ESP8266.

#include #include /************************ ALTERE AS DEFINIÇÕES ABAIXO ***************** *********/ #define WIFI_SSID "YOUR WIFI SSID" // Ime za rede wifi #define WIFI_PASSWORD "VAŠA GESLO ZA WIFI" // 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; // Imenik kanala ThingSpeak const char * myWriteAPIKey = "vaš ključ API za pisanje"; // Chave de escrita do channel do ThingSpeak const char * myReadAPIKey = "vaš ključ za branje api"; // Chave de leitura do canal do ThingSpeak unsigned long lastTime; nepodpisani dolgi currentTime; Odjemalec WiFiClient; // Funkão que faz a conexão wifi void ConnectToWiFi (void) {// Konfiguracija korenskega potrdila za 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) {zamuda (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi conectado com sucesso!"); Serial.println (WiFi.localIP ()); } // Nastavitev da placa void setup () {Serial.begin (115200); zamuda (50); // Conecta ao wifi ConnectToWiFi (); // Inicializacija ThingSpeak lastTime = 0; ThingSpeak.begin (odjemalec); } // Zanka glavne void zanke () {currentTime = millis (); // seta o tempo atual // Poiščite ThingSpeak int value = ThingSpeak.readIntField (myChannelNumber, 1, myReadAPIKey); Serial.println ("Dado no campo 1 do ThingSpeak:"); Serial.println (vrednost); // Preveri, ali je trenutek, ko je treba videti ao ThingSpeak if ((currentTime - lastTime> THINGSPEAK_WRITE_INTERVAL)) {ThingSpeak.setField (1, 100); ThingSpeak.writeFields (myChannelNumber, myWriteAPIKey); lastTime = currentTime; } zamuda (20000); }

Enviando notificação pelo Telegram

Primeiro, dodana v biblioteko do Telegrama brez Arduino IDE. V orodju-> deske-> upravitelj desk digite UniversalTelegramBot, kliknite in namestite.

Abra o Telegram e siga kot próximas etapas para criar um Bot. Primeiro, nabavi por botfather e clique nele. A janela a seguir deve abrir e você será solicitado a 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 žeton 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 defineçõ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 /********************* ALTERARNE DEFINICIJE ABAIXO ******************* *******/ #define WIFI_SSID "YOUR WIFI SSID" // Ime za rede wifi #define WIFI_PASSWORD "YOUR WIFI GESLO" // Senha da rede wifi #define BOT_TOKEN "CHANGEYOURTOKEN" // Token do bot do telegrama # define CHAT_ID "CHANGEYOURCHATID" // ID za klepet do telegrama 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 (sporočilo); } // Funkão que faz a conexão wifi void ConnectToWiFi (void) {// Konfiguriraj korensko potrdilo za 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) {zamuda (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi conectado com sucesso!"); Serial.println ("IP obtido:"); Serial.println (WiFi.localIP ()); } // Nastavitev da placa void setup () {Serial.begin (115200); zamuda (50); // Conecta ao wifi ConnectToWiFi (); // Testa notificação pelo telegram SendTelegramNotification ("Testando envio de notificação."); }

Priporočena: