Isi kandungan:

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

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

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

Memperkenalkan

O Sistema Detector de Fumaça terdiri daripada 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 sinaisis detados por um sensor de fumaça. 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

Langkah 1: 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:

  • Módulo WiFi ESP8266 NodeMcu ESP-12: Placa de desenvolvimento que combina o chip ESP8266 (comunicação WiFi), uma antara muka usb-serial e um regulador de tensão 3.3V. Programação pode ser feita usando a IDE do Arduino, através da comunicação melalui cabo micro-usb.
  • Sensor de Gás MQ-135 untuk Gases Tóxicos: O Sensor de Gás MQ-135 um 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.
  • Dipimpin vermelho
  • Led verde
  • 2 Menahan 200Ω
  • Protoboard e jumpers para conexão e teste do protótipo

Langkah 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 untuk armazenar dan recuperar dados usando o protocolo HTTP e MQTT pela Internet ou por meio de uma rede tempatan. ThingSpeak izin setuju, visualizar e 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 aproximadamente 8000 mensagens por dia). Para projetos maiores ou aplicações comerciais, quatro tipos diferentes de licença anual são oferecidos: Standard, Akademik, Pelajar dan Rumah.

Configuração de um canal no ThingSpeak

Apss criar uma conta no ThingSpeak, semestinya kanal um terusan. 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 dados de localização e 1 para dados de status. Depois de coletar dados em um kanal, você pode usar os aplicativos ThingSpeak para para analisá-los e visualizá-los.

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

  • Medan 1: Concentração de gás
  • Medan 2: Penggera
  • Bidang 3: Comando desligar

Na aba "Pemandangan Peribadi" adalah mungkin sebagai visualizações de cada um dos campos criados. Neste projeto, foram criados:

  • 1 gráfico com os dados de konsentraçã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 canal do ThingSpeak é criado com um identificador único (Saluran ID) que possibilita sua identificação para envio e leitura de dados. Na aba "Key API" são disponibilizadas as chaves para escrita (Write API Key) e leitura (Read API Key) de dados no kanal. Além disso, também são disponibilizadas as API Requests (HTTP get request) 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. Sebagai API meminta serão utilizadas na programação do aplicativo Android.

Langkah 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 juga 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). Sebilangan besar maklumat yang diperlukan untuk programação criem aplicativos untuk Android dan iOS.

Para começar, após criar uma conta no MIT App Inventor, criou-se um projeto com o nome IotProject_SmokeDetector.

Na tela de Designer mungkin montar sebagai telas do aplicativo, selecionando os komponenesários (botões, label, imagens, etc) tiada menu esquerdo lateral (Palet). Para cada um dos komponenes selecionados, é possível alterar configurações de cores, tamanho, posição, entre outras no menu laterito direito (Properties).

Na tela Blok adalah feita toda a lógica de programação do aplicativo. Programação é feita através de blocos, kemudahan untuk desenvolvimento para iniciantes.

Explicação do código

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

A cada 1 segundo (definido pelo Clock1), o aplicativo faz um request de dados no kanal ThingSpeak através da URL de leitura de dados que pode ser copiada na aba "Kekunci API". Quando os dados são retornados, o dado do sensor koresponden à konsentração de gás CO2 adalah mostrado na tela do aplicativo. Já o dado do alarme adalah 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) adalah 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) adalah desabilitado.

Quando o botão de desligar alarme (Button1) untuk clicado, o aplicativo escreverá 1 no 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 "Kekunci API".

Langkah 4: Montagem Do Protótipo

Montagem Do Protótipo
Montagem Do Protótipo

O protótipo juga montado no protoboard comple indicado 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
  • Conectar o anodo do LED (positivo - maior perna) na outra perna do perintang
  • Conectar o catodo do LED (negativo - 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 (positivo - maior perna) na outra perna do perintang
  • Conectar o catodo do LED (negativo - menor perna) no GND do módulo ESP8266

Langkah 5: Programação Do Microcontrolador

O microcontrolador do módulo ESP8266 juga programado menggunakan IDE do Arduino (faça o download aqui).

O código fonte Completeo utilizado no projeto pode ser baixado tiada tutorial deste akhir (Iot_project.ino). O código tem duas funções Principais: persediaan dan gelung.

Penyediaan Fluxo do:

  • Inicializa sebuah siri porta
  • Keluaran Inicializa os (pinos dos leds)
  • WiFi koneksi
  • Inicializa o ThingSpeak

Gelung Fluxo do:

  • LES os dados do sensor MQ135
  • Verifica se acentração de gás CO2 ultrapassa o 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
  • Contohnya "comando desligar alarme" lakukan 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 ThingTuturkan cada 20 segundos

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

WiFi konectando na rede

Abra a IDE do Arduino, vá em File-> Preferences eadicione em Tambahan Lembaga Pengurus URL URL

Em seguida, v Tools em> Boards-> Boards Manager digite ESP8266, klik dan instalar.

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

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

Para teste de conexão WiFi, copie o código abaixo, sepenuhnya sebagai variáveis para conexão WIFI listadas acima e faça upload no módulo ESP8266.

#include / ************************ ALTERE SEBAGAI DEFINISI ABAIXO ******************* ******* / #definisikan WIFI_SSID "SSID WIFI ANDA" // Nome da rede wifi #define WIFI_PASSWORD "WIFI PASSWORD ANDA" // Senha da rede wifi WiFiClient klien; // 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); sementara (WiFi.status ()! = WL_CONNECTED) {kelewatan (500); Cetakan bersiri ("."); } Serial.println (""); Serial.println ("WiFi conectado com sucesso!"); Serial.println ("IP obtido:"); Serial.println (WiFi.localIP ()); } // Persediaan kosong da placa () {Serial.begin (115200); kelewatan (50); // Conecta ao wifi ConnectToWiFi (); }

Lendo dados do 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-> Add. ZIP Library.

Depois, copie o código abaixo e faça upload no módulo ESP8266 através do cabo micro-usb. O código realiza a leitura dacentração de CO2 em ppm dan imprime os valores lidos tiada monitor bersiri.

#include "MQ135.h" #tentukan SMOKE_SENSOR A0 // IO do sensor de fumaça float sensorValue; // Persediaan kosong da placa () {Serial.begin (115200); kelewatan (50); } // Gelung kekosongan utama gelung () {// 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, adicione a Biblioteca do ThingSpeak no Arduino IDE. Vá em Tools-> Boards-> Boards Manager digite ThingSpeak, klik dan instalar.

Satu versi terbaik yang dilakukan, aceita memuat naik de dados apenas a cada 20 segundos, por isso, no código deve-se testar se la momento correto de enviar os dados.

Para comunicar com o ThingSpeak diperlukan untuk definisi sebagai 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 teste de comunicação com o ThingSpeak, copie o código abaixo, sepenuhnya sebagai variáveis para conexão na rede e sebagai variáveis listadas acima e faça upload no módulo ESP8266.

#include #include / ************************ ALTERE SEBAGAI DEFINISI ABAIXO ***************** ********* / #definisikan WIFI_SSID "SSID WIFI ANDA" // Nome da rede wifi #define WIFI_PASSWORD "KATA KATA WIFI ANDA" // Senha da rede wifi #define THINGSPEAK_WRITE_INTERVAL 20000 // Intervalo em ms entre envios de dados ao ThingSpeak / ************************ ALTERE SEBAGAI VARIÁVEIS ABAIXO ****************** ******** / myChannelNumber panjang yang tidak ditandatangani = 0000000; // Número do canal do ThingSpeak const char * myWriteAPIKey = "kunci api tulis anda"; // Chave de escrita do canal do ThingSpeak const char * myReadAPIKey = "kunci api baca anda"; // Chave de leitura do canal melakukan ThingSpeak lama tidak ditandatangani LastTime; masa semasa yang tidak ditandatangani; Pelanggan WiFiClient; // Função que faz a conexão wifi batal ConnectToWiFi (void) {// Sijil root Configura untuk api.telegram.org configTime (0, 0, "pool.ntp.org"); clientSecure.setTrustAnchors (& sijil); // Tenta conectar ao wifi Serial.println ("Conectando à rede WiFi"); WiFi.begin (WIFI_SSID, WIFI_PASSWORD); sementara (WiFi.status ()! = WL_CONNECTED) {kelewatan (500); Cetakan bersiri ("."); } Serial.println (""); Serial.println ("WiFi conectado com sucesso!"); Serial.println (WiFi.localIP ()); } // Persediaan kosong da placa () {Serial.begin (115200); kelewatan (50); // Conecta ao wifi ConnectToWiFi (); // Inicializa ThingSpeak lastTime = 0; ThingSpeak.begin (pelanggan); } // Gelung kekosongan utama gelung () {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 (nilai); // Verifica se é o momento de enviar dados ao ThingSpeak if ((currentTime - lastTime> THINGSPEAK_WRITE_INTERVAL)) {ThingSpeak.setField (1, 100); ThingSpeak.writeFields (myChannelNumber, myWriteAPIKey); lastTime = currentTime; } kelewatan (20000); }

Enviando notificação pelo Telegram

Primeiro, adicione a Biblioteca do Telegram no Arduino IDE. Vá em Tools-> Boards-> Boards Manager digite UniversalTelegramBot, klik dan instalar.

Abra o Telegram e siga sebagai próximas etapas para criar um Bot. Primeiro, dapatkan dari botfather dan klik. A janela a seguir deve abrir e você será solicitado a clicar no botão Iniciar. Digite / newbot e siga sebagai instrumen para criar seu bot. Dê a ele um nome e nome de usuário. Se o seu bot untuk 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, IDBot pesquise. Inicie uma percakapan 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, sepenuhnya sebagai 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 DEFINISI ABAIXO ******************* ******* / #define WIFI_SSID "SSID WIFI ANDA" // Nome da rede wifi #define WIFI_PASSWORD "PASIF WIFI ANDA" // Senha da rede wifi #define BOT_TOKEN "CHANGEYOURTOKEN" // Token do bot do telegram # tentukan CHAT_ID "CHANGEYOURCHATID" // ID lakukan sembang do telegram X509List cert (TELEGRAM_CERTIFICATE_ROOT); WiFiClientSecure clientSecure; Bot UniversalTelegramBot (BOT_TOKEN, clientSecure); // Envia notificação ao Telegram batal SendTelegramNotification (String message) {bot.sendMessage (CHAT_ID, message, ""); Serial.println (mesej); } // Função que faz a conexão wifi batal ConnectToWiFi (void) {// Sijil root Configura untuk api.telegram.org configTime (0, 0, "pool.ntp.org"); clientSecure.setTrustAnchors (& sijil); // Tenta conectar ao wifi Serial.println ("Conectando à rede WiFi"); WiFi.begin (WIFI_SSID, WIFI_PASSWORD); sementara (WiFi.status ()! = WL_CONNECTED) {kelewatan (500); Cetakan bersiri ("."); } Serial.println (""); Serial.println ("WiFi conectado com sucesso!"); Serial.println ("IP obtido:"); Serial.println (WiFi.localIP ()); } // Persediaan kosong da placa () {Serial.begin (115200); kelewatan (50); // Conecta ao wifi ConnectToWiFi (); // Testa notificação pelo telegram SendTelegramNotification ("Testando envio de notificação."); }

Disyorkan: