Cov txheej txheem:

Projeto IoT - Kev Tshawb Fawb Qhov System De Fumaça: 5 Kauj Ruam
Projeto IoT - Kev Tshawb Fawb Qhov System De Fumaça: 5 Kauj Ruam

Video: Projeto IoT - Kev Tshawb Fawb Qhov System De Fumaça: 5 Kauj Ruam

Video: Projeto IoT - Kev Tshawb Fawb Qhov System De Fumaça: 5 Kauj Ruam
Video: Tswv Yexus lub neej thaum pib txug thaum xaus 2024, Lub Xya hli ntuj
Anonim
Projeto IoT - Lub Tshuab Ntes De Fumaça
Projeto IoT - Lub Tshuab Ntes De Fumaça

Qhia tawm

O Sistema Detector de Fumaça suav nrog 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. 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. Cov tswv lag luam 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: koj puas xav tau ntau tus thwjtim?
  • João Paulo Tadeu Borges Paiva
  • Juliana Guimarães Soares Buére
  • Willan Alexander Condor Asenjo

Kauj Ruam 1: Cov Khoom Siv

Materiais siv
Materiais siv
Materiais siv
Materiais siv
Materiais siv
Materiais siv
Materiais siv
Materiais siv

Os materiais utilizados para construção do projeto foram:

  • M WiFidulo WiFi ESP8266 NodeMcu ESP-12: Placa de desenvolvimento que combina o chip ESP8266 (comunicação WiFi), uma interface usb-serial e um regulador de tensão 3.3V. Ib qho programa pode ser feita usando IDE ua Arduino, através da comunicação ntawm cabo micro-usb.
  • Sensor de Gás MQ-135 para Gases Tóxicos: O Sensor de Gás MQ-135 é um módulo capaz de detectar vários tipos de gases tóxicos como amônia, dióxido de carbono, benzeno, óxido nítrico, e também fumaça ou álcool.
  • Led txoj kev
  • Coj verde
  • 2 Resistors 200Ω
  • Protoboard e jumpers para conexão e teste do protótipo

Kauj ruam 2: Configuração Ua ThingSpeak

Configuração Ua ThingSpeak
Configuração Ua ThingSpeak
Configuração Ua ThingSpeak
Configuração Ua ThingSpeak
Configuração Ua ThingSpeak
Configuração Ua ThingSpeak

O ThingSpeak é um serviço de plataforma IoT para armazenar e recuperar dados usando o cov txheej txheem HTTP e MQTT pela Internet ou por meio de uma rede hauv zos. ThingSpeak tso cai pom zoo, pom kev zoo thiab ua kom pom tseeb 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 aproximadamente 8000 mensagens por dia). Para projetos maiores ou aplicações comerciais, quatro tipos diferentes de licença anual são oferecidos: Txuj Ci, Kev Kawm Ntawv, Tub Ntxhais Kawm thiab Tsev.

Configuração de um channel tsis muaj ThingSpeak

Após criar uma conta no ThingSpeak, é necessário criar um kwj dej. 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 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 para envio de dados:

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

Na aba "Private View" é possível criar as visualizações de 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 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 tsis yog ThingSpeak

O channel ua ThingSpeak é criado com um identificador único (Channel ID) que possibilita sua identificação para envio e leitura de dados. Nyob rau "API Keys" são disponibilizadas li chaves para escrita (Sau API Key) e leitura (Nyeem API Key) de dados tsis muaj kwj dej. Além disso, também são disponibilizadas raws li API Thov (HTTP tau thov) que também podem ser usadas para envio e requisição de dados.

O tus cim tshwj xeeb ua cov kwj dej li chaves serão usadas posteriormente no código do microcontrolador. Já raws li API thov siv cov kev siv thiab cov programação ua cov ntawv thov hauv.

Kauj Ruam 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

Aplicativo para monitoramento do sistema foi desenvolvido utilizando o MIT App Inventor. O MIT App Inventor é um ambiente web gratuito e de código aberto para desenvolvimento integrado de aplicativos mantido pelo Massachusetts Institute of Technology (MIT). Nws tsis tso cai rau cov neeg siv ntawm cov program uas tau tsim rau Android thiab iOS.

Txhawm rau kom ua tiav, ua raws li qhov tsis muaj MIT App Inventor, criou-se um projeto com o nome IotProject_SmokeDetector.

Na tela de Designer é possível montar li telas do aplicativo, selecionando os componentes necessários (botões, daim ntawv lo, duab, thiab lwm yam) tsis muaj cov ntawv qhia zaub mov tom qab esquerdo (Palette). Para cada um dos componentes selecionados, é possível alterar configurações de cores, tamanho, posição, entre outras no menu lateral direito (Cov Khoom).

Nyob rau hauv Blocks é feita toda a lógica de programação do aplicativo. A programação é feita através de blocos, ua kom yooj yim los yog desenvolvimento para iniciantes.

Explicação ntawm código

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

A cada 1 segundo (definido pelo Clock1), o aplicativo faz um thov de dados tsis muaj kais ThingSpeak através da URL de leitura de dados que pode ser copiada 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. Koj tus kws kho mob pom zoo rau koj:

  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) rau clicado, o aplicativo escreverá 1 tsis muaj 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 copiada na aba "API Keys".

Kauj Ruam 4: Montagem Do Protótipo

Montagem Ua Protótipo
Montagem Ua Protótipo

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

Sensor MQ135

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

LED xim

  • Conectar uma perna do resistor de 200Ω no pino D5 do módulo ESP8266
  • Sib tham los ntawm anodo rau LED (positivo - maior perna) thiab tawm sab nraud rau resistor
  • Qhia los ntawm catodo rau LED (negativo - menor perna) tsis muaj GND rau módulo ESP8266

LED teeb

  • Qhia txog uma perna doresistor de 200Ω no pino D7 do módulo ESP8266.
  • Sib tham los ntawm anodo rau LED (positivo - maior perna) thiab tawm sab nraud rau resistor
  • Qhia los ntawm catodo rau LED (negativo - menor perna) tsis muaj GND rau módulo ESP8266

Kauj Ruam 5: Kev Kawm Ua Microcontrolador

O microcontrolador do módulo ESP8266 foi programado utilizando a IDE do Arduino (fa oa o download aqui).

O código fonte ua tiav ntawm kev siv tsis muaj cov phiaj xwm phiaj xwm kev ua haujlwm tsis muaj kev qhia zaum kawg (Iot_project.ino). O código tem duas funções Principais: teeb tsa lub voj.

Fluxo teeb tsa:

  • Nyem rau ntawm qhov serial porta
  • Inicializa os outputs (pinos dos leds)
  • Txuas WiFi
  • Ua haujlwm ntawm ThingSpeak

Fluxo ua voj:

  • Lê os dados do sensor MQ135
  • Verifica se a concentração de gás CO2 ultrapassa o limite definido (zoo tshaj: CO2 <= 700 ppm)

    • Liga o alarme (LED vermelho), desliga lossis 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" ua ThingSpeak

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

  • Envia dados ua lub sensor, ua rau e de comando para o ThingSpeak a cada 20 segundos

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

Txuas WiFi

Abra a IDE ua Arduino, los ntawm File-> Preferences eadicione em Tus Thawj Saib Xyuas Haujlwm Ntxiv URLs URL

Yog tias koj xav tau, los ntawm Cov Cuab Yeej-> Cov laug-

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

  • WIFI_SSID: nome da rede WiFi que você deseja conectar seu sistema
  • WIFI_PASSWORD: tam sim no

Para teste de conexão WiFi, theej tawm código abaixo, altere as variáveis para conexão WIFI listadas acima e faça upload no módulo 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 tus thov kev pab; // Função que faz a conexão wifi void ConnectToWiFi (tsis muaj dab tsi) {// Tenta conectar ao wifi Serial.println ("Conectando à rede WiFi"); WiFi.begin (WIFI_SSID, WIFI_PASSWORD); thaum (WiFi.status ()! = WL_CONNECTED) {ncua (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi conectado com sucesso!"); Serial.println ("IP obtido:"); Serial.println (WiFi.localIP ()); } // Teeb tsa teeb tsa tsis muaj dab tsi teeb tsa () {Serial.begin (115200)); ncua (50); // Txuas a wifi txuas ConnectToWiFi (); }

Lendo dados ua sensor MQ135

Para ler os dados do sensor MQ135, primeiramente deve-se baixar a biblioteca MQ135.h e adicioná-la na IDE do Arduino através do menu Skecth-> Include Library-> Ntxiv. ZIP Library.

Depois, theej tawm código abaixo e faça upload no módulo ESP8266 através do cabo micro-usb. O código realiza leitura da concentração de CO2 em ppm e imprime os valores lidos tsis muaj tus saib.

#include "MQ135.h" #define SMOKE_SENSOR A0 // IO ua sensor de fumaça ntab sensorValue; // Teeb tsa teeb tsa tsis muaj dab tsi teeb tsa () {Serial.begin (115200)); ncua (50); } // Loop tus thawj xibfwb void loop () {// Faz leitura do sensor MQ135 gasSensor = MQ135 (SMOKE_SENSOR); sensorValue = gasSensor.getPPM (); Serial.print ("Concentracao de CO2 (ppm):"); Serial.println (sensorValue); }

Escrevendo thiab qiv qiv nyiaj rau ua ThingSpeak

Primeiro, adicione a Biblioteca do ThingSpeak tsis muaj Arduino IDE. Hauv cov cuab yeej-> Cov laug-

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 é necessário definir as variáveis abaixo:

  • myChannelNumber: número ua kwj deg criado tsis muaj ThingSpeak
  • myWriteAPIKey: chave de escrita ua kwj dej ua ThingSpeak
  • myReadAPIKey: chave de leitura ua kwj dej ua 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 variáveis listadas acima e faça upload no módulo ESP8266.

#include #include /******************************** ALTERE AS DEFINIÇÕES ABAIXO ***************** *********/ #define WIFI_SSID "KOJ WIFI SSID" // Nome da rede wifi #define WIFI_PASSWORD "KOJ 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 ntev myChannelNumber = 0000000; // Número ua kwj ua ThingSpeak const char * myWriteAPIKey = "koj sau qhov tseem ceeb api"; // Chave de escrita ua kwj dej ua ThingSpeak const char * myReadAPIKey = "koj nyeem qhov tseem ceeb api"; // Chave de leitura ua kwj dej ua ThingSpeak unsigned ntev lastTime; tsis kos npe ntev tam sim no; WiFiClient tus thov kev pab; // Função que faz a conexão wifi void ConnectToWiFi (void) {// Configura paus daim ntawv pov thawj rau api.telegram.org configTime (0, 0, "pool.ntp.org"); clientSecure.setTrustAnchors (& ntawv pov thawj); // Tenta conectar ao wifi Serial.println ("Conectando à rede WiFi"); WiFi.begin (WIFI_SSID, WIFI_PASSWORD); thaum (WiFi.status ()! = WL_CONNECTED) {ncua (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi conectado com sucesso!"); Serial.println (WiFi.localIP ()); } // Teeb tsa teeb tsa tsis muaj dab tsi teeb tsa () {Serial.begin (115200)); ncua (50); // Txuas a wifi txuas ConnectToWiFi (); // Inicializa ThingSpeak lastTime = 0; ThingSpeak.begin (tus neeg siv khoom); } // Loop tus thawj xibfwb void loop () {currentTime = millis (); // seta o tempo atual // Lê dados ua ThingSpeak int tus nqi = ThingSpeak.readIntField (myChannelNumber, 1, myReadAPIKey); Serial.println ("Dado no campo 1 ua ThingSpeak:"); Serial.println (tus nqi); // Verifica se é o momento de enviar dados ao ThingSpeak yog ((currentTime - lastTime> THINGSPEAK_WRITE_INTERVAL)) {ThingSpeak.setField (1, 100); ThingSpeak.writeFields (myChannelNumber, myWriteAPIKey); lastTime = sijhawm tam sim no; } ncua (20000); }

Enviando notificação pelo Telegram

Primeiro, adicione a Biblioteca do Telegram no Arduino IDE. Hauv cov cuab yeej-> Cov laug-

Abra o Telegram e siga as próximas etapas para criar um Bot. Thawj thawj zaug, muab khoom los ntawm botfather e clique nele. Nws tau sau tseg tias nws yog ib qho tseem ceeb tshaj plaws uas tau hais los saum toj no los ntawm clicar no botão Iniciar. Digite /newbot e siga as instruções para criar seu bot. Ib yam li peb lub npe lossis lub npe ntawm kev siv. Se se se bot rau criado com sucesso, você receberá uma mensagem com um txuas txuas rau 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. Koj tuaj yeem tham nrog tus bot thiab 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 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 # txhais CHAT_ID "CHANGEYOURCHATID" // ID tham nrog xov tooj X509List daim ntawv pov thawj (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 (lus); } // Função que faz a conexão wifi void ConnectToWiFi (void) {// Configura paus daim ntawv pov thawj rau api.telegram.org configTime (0, 0, "pool.ntp.org"); clientSecure.setTrustAnchors (& ntawv pov thawj); // Tenta conectar ao wifi Serial.println ("Conectando à rede WiFi"); WiFi.begin (WIFI_SSID, WIFI_PASSWORD); thaum (WiFi.status ()! = WL_CONNECTED) {ncua (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi conectado com sucesso!"); Serial.println ("IP obtido:"); Serial.println (WiFi.localIP ()); } // Teeb tsa teeb tsa tsis muaj dab tsi teeb tsa () {Serial.begin (115200)); ncua (50); // Txuas a wifi txuas ConnectToWiFi (); // Testa notificação pelo telegram SendTelegramNotification ("Testando envio de notificação."); }

Pom zoo: