Inhoudsopgave:

Projeto IoT - Sistema Detector De Fumaça - Ajarnpa
Projeto IoT - Sistema Detector De Fumaça - Ajarnpa

Video: Projeto IoT - Sistema Detector De Fumaça - Ajarnpa

Video: Projeto IoT - Sistema Detector De Fumaça - Ajarnpa
Video: Detecção de incêndio - Como instalar os dispositivos periféricos (Detectores, acionadores e sirenes) 2024, Juli-
Anonim
Projeto IoT - Sistema Detector De Fumaça
Projeto IoT - Sistema Detector De Fumaça

Introductie

O Sistema Detector de Fumaça is een oplossing voor het IoT met een vergunning voor het monitoren van alarmen voor de woning die wordt gebruikt voor Android. O projeto é baseado em um microcontrolador que se comunica com a nuvem pela rede WiFi, enviando os sinai detectados por um sensor de fumaça. U kunt zelf een verblijfsvergunning krijgen voor het ontvangen van alarmmeldingen en ontvangen meldingen via Telegram voor alarmmeldingen.

Desenvolvedores

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

Stap 1: Materiais Utilizados

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

Nuttige materialen voor het project foram:

  • Módulo WiFi ESP8266 NodeMcu ESP-12: Gecombineerde chip ESP8266 (communicatie WiFi), interface usb-serieel en spanningsregelaar 3.3V. Een programação pode ser feita usando a IDE do Arduino, através da comunicação via cabo micro-usb.
  • Sensor van Gas MQ-135 door Gases Toxicos: O Sensor van Gas MQ-135 en een gasmeter voor het detecteren van gasvormige gassen, koolmonoxide, benzeno, nítrico, en tammem fumacool.
  • Led vermelho
  • Led verde
  • 2 Weerstanden 200Ω
  • Protoboard en jumpers voor verbinding en test om protótipo

Stap 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 voor het platvormen van IoT voor gebruik en herstel van het gebruik van protocollen voor HTTP en MQTT op internet of op lokaal niveau. ThingSpeak maakt het mogelijk om het geheel te visualiseren en te analyseren fluxos de dados na nuvem.

O ThingSpeak heeft een gratis dienstverlenende dienst die niet is voltooid (menos de 3 milhões de mensagens o ou aproximadamente 8000 mensagens por dia). Para projetos maiores of aplicações comerciais, quatro tipos diferentes de licença anual são oferecidos: Standard, Academic, Student and Home.

Configuratie van het kanaal no ThingSpeak

Er is geen sprake van ThingSpeak, een noodzaak voor een kanaal. Os canais armazenam os dados enviados de um determinado projeto. Cada-kanaal inclusief 8 campos que podem conter qualquer tipo de dados, meer 3 campos para dados de localização en 1 para dados de status. Depois de coletar dados em um canal, você pode usar os aplicativos ThingSpeak para analisá-los e visualizá-los.

Voor het eerste project, voor het kanaal com nome IoTProject-SmokeDetector en 3 campos para envio de dados:

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

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

  • 1 grafische weergave van de concentratie van gas CO2 en funço do tempo
  • 1 indicatie van de led voor alarmmeldingen
  • 1 grafische kaart van het commando van de laatste alarmen en função do tempo

Leitura e escrita no ThingSpeak

O Canal do ThingSpeak e criado com um um identificador único (Channel ID) que possibilita sua identificação para envio e leitura de dados. Na aba "API Keys" is beschikbaar als chaves para escrita (schrijf API-sleutel) en leitura (lees API-sleutel) de dados no canal. Além disso, também são disponibilizadas as API Requests (HTTP get requests) que também podem ser usadas para envio e requisição de dados.

O identificador do canal e as chaves serão usadas posteriormente no código do microcontrolador. Já as API-verzoeken serão utilizadas na programação do aplicativo Android.

Stap 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 sistema foi desenvolvido utilizando o MIT App Inventor. O MIT App Inventor is een gratis webomgeving en kan worden toegevoegd aan de integratie van toepassingen voor het Massachusetts Institute of Technology (MIT). Ele permite que iniciantes a programação criem aplicativos para Android en iOS.

Voor het eerst, geen kritiek op MIT App Inventor, kritiek op projeto com nome IotProject_SmokeDetector.

Na tela de Designer é possível montar as telas do aplicativo, selecionando os componentes necessários (botões, labels, imagens, etc) geen menu laterale esquerdo (Palette). Para cada um dos componentes selecionados, é possível alterar configurações de cores, tamanho, posição, entre outras geen menu laterale direito (Eigenschappen).

Na tela Blocks é feita toda a logic de programação do aplicativo. Een programação é feita através de blocos, facilitando o desenvolvimento para iniciantes.

Explicação do código

Er zijn verschillende locais inicializadas: alarmData en sensorData.

Een cada 1 segundo (definido pelo Clock1), of aplicativo faz um um request the dados no canal ThingSpeak attravés da URL de leitura de dados que pode ser copiada aba "API Keys". Quando os dados são retornados, o dado do sensor correspondente à concentração de gás CO2 é mostrado op tela do aplicativo. Já o dado do alarme é testado:

  1. Zie een alarmerende gebeurtenis (alarmData = 1), of een aplicativo mostra en usuário a mensagem "Atenção! Sua casa está em perigo!" e o botão desligar alarme (Button1) é habilitado.
  2. Se o alarme não estiver acionado (alarmData = 0), o aplicativo mostra ao usuário a mensagem "No se preocupe! Sua casa não está em perigo." e o botão desligar alarme (Button1) é desabilitado.

Wat betreft de alarmmelding (Button1) for clicado, of aplicativo escreverá 1 no campo Field3: alarmmelding voor geen ThingSpeak, indicatie voor alarmmeldingen voor activiteiten. O dado é enviado oa ThingSpeak através da URL para escrita de dados que pode ser copiada aba "API Keys".

Stap 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: verbinding en pino AD0 met modulaire ESP8266
  • Pino GND: verbinding met oa GND met modulaire ESP8266
  • Pino Vcc: aangesloten op pino VIN met modulaire ESP8266

LED groen

  • Aansluiting voor weerstand van 200Ω geen pino D5 met module ESP8266
  • Conectar of anodo do LED (positivo - maior perna) op outra perna do weerstand
  • Conectar of catodo do LED (negativo - menor perna) geen GND naar module ESP8266

LED verlichting

  • Sluit aan op 200 meter geen pino D7 met modulaire ESP8266.
  • Conectar of anodo do LED (positivo - maior perna) op outra perna do weerstand
  • Conectar of catodo do LED (negativo - menor perna) geen GND naar module ESP8266

Stap 5: Programação Do Microcontrolador

O microcontroller voor modulaire ESP8266 voor het gebruik van programma's en IDE voor Arduino (voor het downloaden van aqui).

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

Fluxo do-opstelling:

  • Inicializa a porta serial
  • Inicializa os uitgangen (pinos dos leds)
  • Aansluiten op rode WiFi
  • Begin van ThingSpeak

Fluxo do-loop:

  • Lees meer over sensor MQ135
  • Verifica se a concentração de gás CO2 ultrapassa of limite definido (ideaal: CO2 <= 700 ppm)

    • Liga o alarme (LED vermelho), desliga o LED de status (verde) en envia notificação pelo Telegram se o valor estiver acima do limite
    • Desliga o alarme (LED vermelho) en liga o LED de status (verde) se o valor estiver abaixo do limite
  • Lê o dado de "comando 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 e de comando para o ThingSpeak a cada 20 segundos

Het is een beschrijving van het cada um dos principais módulos com o respectivo código para teste.

Verbinding maken met wifi

Abra a IDE do Arduino, vá em File->Preferences eadicione em Extra Board Manager-URL's een URL

Em seguida, vá em Tools->Boards->Boards Manager digite ESP8266, clique em geïnstalleerde en fechar.

É necessário definir 2 variáveis para conexão to rede:

  • WIFI_SSID: nome da rede WiFi que você deseja conectar seu sistema
  • WIFI_PASSWORD: senha da rede

Voor het testen van de verbinding met WiFi, kopieer of codigo abaixo, verander als variáveis para conexão WIFI lijst voor het uploaden van de module ESP8266.

#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 WiFiClient client; // Função que faz a conexão wifi void ConnectToWiFi(void){ // Tenta conectar oa wifi Serial.println("Conectando à rede WiFi"); WiFi.begin(WIFI_SSID, WIFI_PASSWORD); while (WiFi.status() != WL_CONNECTED) {vertraging (500); Serieel.print("."); } Serieel.println(""); Serial.println ("WiFi-verbinding is voltooid!"); Serial.println("IP-adres: "); Serial.println(WiFi.localIP()); } // Setup da placa void setup(){ Serial.begin(115200); vertraging (50); // Aansluiten oa wifi ConnectToWiFi(); }

Lendo dados do sensor MQ135

Voor meer informatie over de sensor MQ135, wordt eerst een biblioteca MQ135.h e aanvulling op de IDE van Arduino gebruikt in het menu Skecth->Include Library->Add. ZIP Library.

Depois, copie of codigo abaixo en faça upload geen módulo ESP8266 através do cabo micro-usb. O código realiseert een concentratie van CO2 em ppm en 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); vertraging (50); } // Loop principal void loop () { // Faz leitura do sensor MQ135 gasSensor = MQ135 (SMOKE_SENSOR); sensorValue = gasSensor.getPPM(); Serial.print("Concentraat van CO2 (ppm): "); Serial.println(sensorValue); }

Escrevendo en lendo dados do ThingSpeak

Primeiro, adicione een Biblioteca do ThingSpeak geen Arduino IDE. Vá em Tools->Boards->Boards Manager digite ThingSpeak, clique em installatie en fechar.

Een gratis versie van ThingSpeak, upload de dados apenas a cada 20 segundos, por isso, no código deve-se test é o momento correto de enviar os dados.

Voor comunicar com o ThingSpeak é necessário definir as variáveis abaixo:

  • myChannelNumber: número do canal criado no ThingSpeak
  • myWriteAPIKey: chave de escrita do canal do ThingSpeak
  • myReadAPIKey: chave de leitura do canal do ThingSpeak

Voor de communicatie van ThingSpeak, kopieer de code, verander de wijzigingen voor de verbinding met de andere lijst die u kunt uploaden en upload geen programma ESP8266.

#include #include /************************* ALTERE AS DEFINIES 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 entre envios de dados oa ThingSpeak /************************* ALTERE AS VARIÁVEIS ABAIXO ******************** ******/ unsigned long myChannelNumber = 0000000; // Número do canal do ThingSpeak const char * myWriteAPIKey = "uw schrijf-api-sleutel"; // Chave de escrita do canal do ThingSpeak const char * myReadAPIKey = "uw gelezen api-sleutel"; // Chave de leitura do canal do ThingSpeak unsigned long lastTime; niet-ondertekende lange currentTime; WiFiClient-client; // 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 oa wifi Serial.println("Conectando à rede WiFi"); WiFi.begin(WIFI_SSID, WIFI_PASSWORD); while (WiFi.status() != WL_CONNECTED) {vertraging (500); Serieel.print("."); } Serieel.println(""); Serial.println ("WiFi-verbinding is voltooid!"); Serial.println(WiFi.localIP()); } // Setup da placa void setup(){ Serial.begin(115200); vertraging (50); // Aansluiten oa wifi ConnectToWiFi(); // Inicializa ThingSpeak lastTime = 0; ThingSpeak.begin(klant); } // Loop principal void loop () { currentTime = millis (); // stel een bepaald tempo in // Lê dados do ThingSpeak int value = ThingSpeak.readIntField (myChannelNumber, 1, myReadAPIKey); Serial.println("Dado no campo 1 do ThingSpeak:"); Serial.println(waarde); // Verificatie van het moment waarop het is gebeurd, waaronder ThingSpeak if ((currentTime - lastTime > THINGSPEAK_WRITE_INTERVAL)) { ThingSpeak.setField (1, 100); ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey); lastTime = huidigeTijd; } vertraging (20000); }

Enviando notificaties pelo Telegram

Primeiro, adicione een Biblioteca do Telegram geen Arduino IDE. Vá em Tools->Boards->Boards Manager digite UniversalTelegramBot, clique em installatie en fechar.

Abra of Telegram e siga as proximas etapas para criar um Bot. Primeiro, koop por botfather e clique nele. A janela a seguir deve abrir e você será solicitado a clicar no botão Iniciar. Digite /newbot en siga als instructies voor criar seu bot. Dê a ele um nome e nome de usuário. Se o seu bot voor 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.

Voor het testen van de berichtgeving via telegram, kopieer of code, verander de definities voor de verbinding WIFI en voor communicatie via Telegram (BOT_TOKEN en CHAT_ID) en upload geen bericht ESP8266.

#include #include #include /************************* ALTERAR DEFINIES 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 # definieer CHAT_ID "CHANGEYOURCHATID" // ID chat doen telegram X509List cert (TELEGRAM_CERTIFICATE_ROOT); WiFiClientSecure clientSecure; UniversalTelegramBot-bot (BOT_TOKEN, clientSecure); // Envia notificação oa Telegram void SendTelegramNotification (String-bericht) { bot.sendMessage (CHAT_ID, bericht, ""); Serial.println(bericht); } // Função que faz a conexão wifi void ConnectToWiFi(void){ // Configura root certificaat para api.telegram.org configTime(0, 0, "pool.ntp.org"); clientSecure.setTrustAnchors(&cert); // Tenta conectar oa wifi Serial.println("Conectando à rede WiFi"); WiFi.begin(WIFI_SSID, WIFI_PASSWORD); while (WiFi.status() != WL_CONNECTED) {vertraging (500); Serieel.print("."); } Serieel.println(""); Serial.println ("WiFi-verbinding is voltooid!"); Serial.println("IP-adres: "); Serial.println(WiFi.localIP()); } // Setup da placa void setup(){ Serial.begin(115200); vertraging (50); // Aansluiten oa wifi ConnectToWiFi(); // Testa notificação pelo telegram SendTelegramNotification ("Testando envio de notificação."); }

Aanbevolen: