Talaan ng mga Nilalaman:

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

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

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

Introdução

Ang Sistema Detector ng Fumaça ay binubuo ng lahat ng mga ito 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 ng kanilang microcontrolador que se comunica com a nuvem pela rede WiFi, upang makita ang ilang mga sensor mula sa sensor. O proprietário 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
  • João Paulo Tadeu Borges Paiva
  • Juliana Guimarães Soares Buére
  • Willan Alexander Condor Asenjo

Hakbang 1: Materiais Utilizados

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

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

  • Ang WiFi WiFi ESP8266 NodeMcu ESP-12: Maglagay ng chip ng ESP8266 (comunicação WiFi), lahat ng interface ng usb-serial at umayos sa 3.3V. Isang programa ng pode ser feita usando ng isang IDE na gawin ang Arduino, através da comunicação via cabo micro-usb.
  • Ang Sensor de Gás MQ-135 para sa 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, and também fumaça ou álcool.
  • Pinangunahan vermelho
  • Pinangunahan verde
  • 2 Resistores 200Ω
  • Protoboard at jumpers para sa koneksyon ng pagsubok na gawin ang proteksyon

Hakbang 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 é um serviço de plataforma IoT para sa armazenar at recuperar ay gagamitin ng protokol na HTTP at MQTT pela Internet upang mai-local ko ito. ThingSpeak permite agregar, visualizar at analisar fluxos de magiging 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 sa mga projetos mula sa iyo upang ma-access ang mga comerciais, quatro tipos diferentes de licença anual são oferecidos: Standard, Academic, Student at Home.

Configuração de um canal no ThingSpeak

Narito ang lahat ng mga conta no ThingSpeak, é kinakailangan ng criar um canal. Os canais armazenam os dados enviados de um determinado projeto. Cada canal inclui 8 campos que podem conter qualquer tipo de dados, mais 3 campos para maging de localização e 1 para maging de status. Depois de coletar dados em um canal, você pode usar os aplicativos ThingSpeak para analisá-los e visualizá-los.

Para sa iyong projeto, maaari kang umunlad sa IoTProject-SmokeDetector at 3 mga kampo para sa mga sumusunod:

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

Sa pamamagitan ng "Pribadong Pagtingin" ay maaari kang tumawag bilang 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 indikador de led para sa indicação de alarme
  • 1 gráfico com os magiging de comando de desligar alarme em função do tempo

Leitura e escrita no ThingSpeak

O canal do ThingSpeak é criado com um identificador único (Channel ID) que posibilita sua identificação para envio e leitura de magiging. Sa pamamagitan ng "Mga Key ng API" ay hindi na ito naisasagot bilang mga pamamahala (Isulat ang API Key) at ang pagbasa (Basahin ang API Key) na walang kanal. Alem disso, tambem são disponibilizadas bilang mga API Request (HTTP makakuha ng mga kahilingan) que também podem ser usadas para sa envio at kinakailangan na maging.

O identificador gawin ang kanal at bilang chaves serão usadas posteriormente no código do microcontrolador. Bilang kahilingan ng API, gagamitin ang mga programa upang gawin ang Android.

Hakbang 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 sa monitoramento para sa sistema ng paggamit ng MIT App Inventor. O MIT App Inventor ay isang kalakal sa web gratuito at de código aberto para desenvolvimento integrado de aplicativos mantido pelo Massachusetts Institute of Technology (MIT). Pinahihintulutan ang mga iniciantes na programa na mag-apruba para sa Android at iOS.

Para sa iba pang mga app para sa MIT App Inventor, maaari mong gawin ito sa IotProject_SmokeDetector.

Sa tela de Designer ay maaari mong gawin bilang mga tela na gagamitin, piliin ang mga sangkap na kinakailangan (botões, label, larawan, atbp) walang menu lateral esquerdo (Palette). Para sa iba pang mga sangkap ng selecionados, ito ay maaaring baguhin ang pag-configure ng mga core, tamanho, posição, entre outras walang menu lateral direito (Mga Katangian).

Na mga bloke ng Blocks é feita toda a lógica de programação do aplicativo. Ang isang programação é feita através de blocos, nangangasiwa sa desenvolvimento para iniciantes.

Explicação do código

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

Ang isang cada 1 segundo (tiyak na tawag Clock1), o aplicativo faz um request de magiging no canal ThingSpeak através da URL de leitura de magiging que pode ser copiada na aba "API Keys". Quando os lilo são retornados, o sensor ng sensor na tumutugma sa concentração de gás CO2 é mostrado na tela do aplicativo. Maaari kang mag-alala sa pagsubok:

  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) ay habilitado.
  2. Se o alarme não estiver acionado (alarmData = 0), o aplicativo mostra ao usuário a mensagem "Nao se preocupe! Sua casa não está em perigo." e o botão de desligar alarme (Button1) ay desabilitado.

Quando o botão de desligar alarme (Button1) para sa clicado, o aplicativo escreverá 1 walang campo Field3: comando desligar criado no ThingSpeak, indigay que o comando de desligar alarme foi acionado. O dado é enviado ao ThingSpeak através da URL para escrita de magiging que pode ser copiada na aba "API Keys".

Hakbang 4: Montagem Do Protótipo

Montagem Do Protótipo
Montagem Do Protótipo

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

Sensor 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
  • Makipag-ugnay sa LED (positivo - mai-perna) sa labas ng resistor
  • Conectar o catodo do LED (negativo - menor perna) walang GND gawin ang iyong ESP8266

LED vermelho

  • Conectar uma perna doresistor de 200Ω no pino D7 do módulo ESP8266.
  • Makipag-ugnay sa LED (positivo - mai-perna) sa labas ng resistor
  • Conectar o catodo do LED (negativo - menor perna) walang GND gawin ang iyong ESP8266

Hakbang 5: Programação Do Microcontrolador

O microcontrolador do módulo ESP8266 ding programa na magagamit ng isang IDE na gawin ang Arduino (email o pag-download ng aqui).

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

Pag-setup ng Fluxo:

  • Inicializa isang porta serial
  • Inicializa os outputs (pinos dos leds)
  • Makipag-ugnay sa WiFi
  • Inicializa o ThingSpeak

Fluxo do loop:

  • Nangangailangan ng sensor MQ135
  • Tukuyin ang isang concentração de gás CO2 ultrapassa o limite definido (ideal: CO2 <= 700 ppm)

    • Liga o alarme (LED vermelho), desliga o LED de status (verde) at higit na mababanggit 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
  • Mag-isip ng "comando desligar alarme" gawin ang 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

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

Conectando na rede WiFi

Abra a IDE do Arduino, vá em File-> Mga Kagustuhan sa karagdagang Mga Tagapamahala ng Mga URL ng URL isang URL

Sa gayon, sa pamamagitan ng Mga Tool-> Mga Board-> Mga Board Manager ay inilagay ang ESP8266, pinagsama-sama ang mga ito.

Ang kinakailangan ay tumutukoy sa 2 pagkakaiba-iba para sa koneksyon:

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

Para sa pagsubok sa WiFi, kopya ng browser, baguhin bilang pagkakaiba-iba para sa koneksyon sa WIFI listadas acima e faça upload no módulo ESP8266.

#include / ***** ***** ******** ALTERE AS DEFINIÇÕES ABAIXO ***************** ***** / #define WIFI_SSID "IYONG WIFI SSID" // Nome da rede wifi #define WIFI_PASSWORD "IYONG WIFI PASSWORD" // Senha da rede wifi WiFiClient client; // Função que faz a conexão wifi void ConnectToWiFi (void) {// Tenta conectar ao wifi Serial.println ("Conectando à rede WiFi"); WiFi.begin (WIFI_SSID, WIFI_PASSWORD); habang (WiFi.status ()! = WL_CONNected) {pagkaantala (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi conectado com sucesso!"); Serial.println ("IP obtido:"); Serial.println (WiFi.localIP ()); } // Setup da placa void setup () {Serial.begin (115200); antala (50); // Conecta ao wifi ConnectToWiFi (); }

Lendo dados do sensor MQ135

Para sa iba pang mga sensor ng MQ135, ang unang bersyon ng MQ135.h e adicioná-la na IDE gawin Arduino através gawin menu Skecth-> Isama ang Library-> Magdagdag. ZIP Library.

Depois, copie o código abaixo at faça upload no módulo ESP8266 através do cabo micro-usb. O real estate a leitura da concentração de CO2 em ppm e imprime os valores lidos walang serial monitor.

# isama ang "MQ135.h" #define SMOKE_SENSOR A0 // IO do sensor de fumaça float sensorValue; // Setup da placa void setup () {Serial.begin (115200); antala (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); }

Escrevendo e lendo magiging do ThingSpeak

Primeiro, adicione a Biblioteca do ThingSpeak no Arduino IDE. Mga Tool sa loob ng-> Mga Lupon-> Mga Tagapamahala ng Mga Lupon sa iyong ThingSpeak, clique em installar at fechar.

Ang isang dalubhasa na gawin ang ThingSpeak, mag-upload ng isang apada sa loob ng 20 segundos, kung saan, walang código deve-se testar se é momento correto de enviar os magiging.

Para sa comunicar com o ThingSpeak ay kailangan mong tukuyin bilang 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

Para sa teste de comunicação com o ThingSpeak, copie o código abaixo, baguhin bilang variáveis para sa koneksyon ng redeveis listadas acima at faça upload no módulo ESP8266.

# isama ang # isama / ***** ********* / #define WIFI_SSID "IYONG WIFI SSID" // Nome da rede wifi #define WIFI_PASSWORD "IYONG 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 mahabang myChannelNumber = 0000000; // Número do canal do ThingSpeak const char * myWriteAPIKey = "iyong pagsulat ng api key"; // Chave de escrita do canal do ThingSpeak const char * myReadAPIKey = "your read api key"; // Chave de leitura do canal do ThingSpeak unsigned long lastTime; unsigned mahabang kasalukuyangTime; Client ng WiFiClient; // 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 ao wifi Serial.println ("Conectando à rede WiFi"); WiFi.begin (WIFI_SSID, WIFI_PASSWORD); habang (WiFi.status ()! = WL_CONNected) {pagkaantala (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi conectado com sucesso!"); Serial.println (WiFi.localIP ()); } // Setup da placa void setup () {Serial.begin (115200); antala (50); // Conecta ao wifi ConnectToWiFi (); // Inicializa ThingSpeak lastTime = 0; ThingSpeak.begin (client); } // Loop principal void loop () {currentTime = millis (); // seta o tempo atual // Lê dados do ThingSpeak int value = ThingSpeak.readIntField (myChannelNumber, 1, myReadAPIKey); Serial.println ("Dado no campo 1 do ThingSpeak:"); Serial.println (halaga); // Verifica se é o momento de enviar maging ao ThingSpeak if ((currentTime - lastTime> THINGSPEAK_WRITE_INTERVAL)) {ThingSpeak.setField (1, 100); ThingSpeak.writeFields (myChannelNumber, myWriteAPIKey); lastTime = kasalukuyangTime; } pagkaantala (20000); }

Enviando notificação pelo Telegram

Primeiro, adicione isang Biblioteca do Telegram no Arduino IDE. Sa mga Tool-> Mga Board-> Mga Board Manager ay inilalagay sa UniversalTelegramBot, clique em instalar at fechar.

Abra o Telegram e siga bilang próximas etapas para criar um Bot. Primeiro, kumuha ng por botfather e clique nele. Isang janela a seguir deve abrir e você será solicitado a clicar no botão Iniciar. Digite / newbot at siga bilang instruções para sa criar seu bot. Makipag-usap sa iyo tungkol sa iyo. Tingnan ang bot para sa criado com sucesso, tinaguriang lahat ng mensagem com um link para sa 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 convert sa com esse bot e digite / getid. Tutuunan ang lahat ng respeto sa iyong ID ng usuário. Salve o ID, porque você precisará dele para enviar de notificações.

Para sa teste do envio de notificação pelo telegram, copie o código abaixo, baguhin bilang variáveis de definições para conexão WIFI at para sa comunicação com o Telegram (BOT_TOKEN e CHAT_ID) upang makapag-upload ng walang gabay sa ESP8266.

#include #include #include / ***** ******* / #define WIFI_SSID "IYONG WIFI SSID" // Nome da rede wifi #define WIFI_PASSWORD "IYONG WIFI PASSWORD" // Senha da rede wifi #define BOT_TOKEN "CHANGEYOURTOKEN" // Token do bot do telegram # tukuyin ang CHAT_ID "CHANGEYOURCHATID" // ID do chat do telegram 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 (mensahe); } // 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 ao wifi Serial.println ("Conectando à rede WiFi"); WiFi.begin (WIFI_SSID, WIFI_PASSWORD); habang (WiFi.status ()! = WL_CONNected) {pagkaantala (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi conectado com sucesso!"); Serial.println ("IP obtido:"); Serial.println (WiFi.localIP ()); } // Setup da placa void setup () {Serial.begin (115200); antala (50); // Conecta ao wifi ConnectToWiFi (); // Testa notificação pelo telegram SendTelegramNotification ("Testando envio de notificação."); }

Inirerekumendang: