Daftar Isi:

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

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

Video: Projeto IoT - Detektor Sistema De Fumaça: 5 Langkah
Video: Instalação de infra ( detector de fumaça) para equipamento de combate a incêndio. 2024, November
Anonim
Projeto IoT - Detektor Sistema De Fumaça
Projeto IoT - Detektor Sistema De Fumaça

Perkenalan

O Sistema Detector de Fumaça terdiri dari solusi IoT dan objetivo de permitir o monitoramento de alarmes de incêndio de residencias 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. O proprietário da residência consegue monitorar o sistem através de um aplicativo dan terima pemberitahuan melalui 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 Utilados

Materiais Utilados
Materiais Utilados
Materiais Utilados
Materiais Utilados
Materiais Utilados
Materiais Utilados
Materiais Utilados
Materiais Utilados

Semua materi dapat digunakan untuk membangun foram projeto:

  • Módulo WiFi ESP8266 NodeMcu ESP-12: Tempatkan kombinasi chip ESP8266 (WiFi komunikasi), antarmuka uma serial usb dan pengatur tegangan 3.3V. Sebuah programação pode ser feita usando a IDE do Arduino, através da comunicação melalui cabo micro-usb.
  • Sensor dari Gás MQ-135 untuk Gas Toxicos: O Sensor de Gás MQ-135 é um módulo capaz de detectar vários tipos de gas tóxicos como amônia, dióxido de carbono, benzeno, óxido nítrico, dan também fumaça ou.
  • dipimpin vermelho
  • dipimpin verde
  • 2 Resistor 200Ω
  • Protoboard dan jumper para conexão e teste do protótipo

Langkah 2: Mengonfigurasição Lakukan ThingsSpeak

Mengonfigurasição Melakukan HalBicara
Mengonfigurasição Melakukan HalBicara
Mengonfigurasição Melakukan HalBicara
Mengonfigurasição Melakukan HalBicara
Mengonfigurasição Melakukan HalBicara
Mengonfigurasição Melakukan HalBicara

O ThingSpeak é um serviço de plataforma IoT para armazenar dan recuperar dados usando o protokol HTTP dan MQTT pela Internet ou por meio de uma rede lokal. ThingSpeak izinkan agregar, visualizar e Analisis 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: Standar, Akademik, Pelajar dan Rumah.

Konfigurasikan kanal de um no ThingSpeak

Após criar uma conta no ThingSpeak, é necessário criar um canal. Os canais armazenam os dados enviados de um determinado projeto. Kanal Cada termasuk 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:

  • Bidang 1: Concentração de gás
  • Bidang 2: Alarm
  • Bidang 3: Komando desligar

Na aba "Pemandangan Pribadi" é 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 indikator yang dipimpin untuk menunjukkan tanda bahaya
  • 1 gráfico com os dados de comando de desligar alarme em função do tempo

Leitura e escrita no ThingSpeak

Canal do ThingSpeak é criado com um identificador nico (Channel ID) que possibilita sua identificação para envio e leitura de dados. Tidak ada "Kunci API" untuk disponibilizadas sebagai chaves para escrita (Tulis Kunci API) e leitura (Baca Kunci API) tidak ada 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. Já sebagai permintaan API serão utilizadas na programação melakukan aplikasi Android.

Langkah 3: Aplicativo - MIT App Inventor

Aplicativo - Penemu Aplikasi MIT
Aplicativo - Penemu Aplikasi MIT
Aplicativo - Penemu Aplikasi MIT
Aplicativo - Penemu Aplikasi MIT
Aplicativo - Penemu Aplikasi MIT
Aplicativo - Penemu Aplikasi MIT
Aplicativo - Penemu Aplikasi MIT
Aplicativo - Penemu Aplikasi MIT

Aplikasi untuk memantau sistem untuk penggunaan desenvolvido o MIT App Inventor. O MIT App Inventor dan dapatkan gratis web gratis untuk semua desenvolvimento integrado de aplicativos mantido pelo Massachusetts Institute of Technology (MIT). Tidak ada izin untuk memulai program aplikasi untuk Android dan iOS.

Untuk datang, untuk mencari tahu tentang MIT App Inventor, mencari tahu proyek com o nome IotProject_SmokeDetector.

Na tela de Designer é possível montar sebagai telas do aplicativo, selecionando os componentes necessários (botões, label, imagens, dll) tidak ada menu lateral esquerdo (Palette). Para cada um dos componentes selecionados, é possível alterar configurações de cores, tamanho, posição, entre outras no menu lateral direito (Properti).

Na tela Blocks é feita toda a lógica de programação do aplicativo. Sebuah programação é feita através de blocos, facilitando o desenvolvimento para iniciantes.

Penjelasan lakukan código

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

A cada 1 segundo (definido pelo Clock1), atau aplikasi yang diminta dari dados no canal 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 lakukan sensor koresponden konsentrasi gas CO2 dan paling banyak aplikasi. 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 (Tombol1) é 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 de desligar alarme (Tombol1) é desabilitado.

Quando o botão de desligar alarme (Tombol1) 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 "Kunci API".

Langkah 4: Montagem Do Protótipo

Montagem Do Protótipo
Montagem Do Protótipo

O protótipo foi montado tidak ada protoboard sesuai indikasi dan figura.

Sensor MQ135

  • Pino AO: conectado ao pino AD0 lakukan módulo ESP8266
  • Pino GND: conectado ao GND lakukan módulo ESP8266
  • Pino Vcc: conectado ao pino VIN melakukan módulo ESP8266

LED verde

  • Conectar uma perna do resistor de 200Ω no pino D5 do módulo ESP8266
  • Conectar atau anodo do LED (positivo - maior perna) dan outra perna do resistor
  • Conectar o catodo do LED (negativo - menor perna) tidak ada GND do módulo ESP8266

LED vermelho

  • Conectar uma perna doresistor de 200Ω no pino D7 melakukan módulo ESP8266.
  • Conectar atau anodo do LED (positivo - maior perna) dan outra perna do resistor
  • Conectar o catodo do LED (negativo - menor perna) tidak ada GND do módulo ESP8266

Langkah 5: Program, Lakukan Mikrokontroler

O mikrokontroler lakukan módulo ESP8266 untuk program dan gunakan IDE untuk Arduino (faça o download aqui).

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

Fluxo lakukan pengaturan:

  • Inisialisasi serial porta
  • Inisialisasi output os (pinos dos leds)
  • Conecta rede WiFi
  • Inisialisasi dari ThingSpeak

Perulangan fluks:

  • Lebih baik melakukan sensor MQ135
  • Verifikasi konsentrasi CO2 ultrapassa o limite definido (ideal: CO2 <= 700 ppm)

    • Liga o alarme (LED vermelho), desliga o LED de status (verde) dan 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" lakukan ThingSpeak

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

  • Envia dados do sensor, do alarme e de comando para o ThingSpeak a cada 20 detik

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

Koneksi dengan WiFi

Abra a IDE lakukan Arduino, vá em File-> Preferences eadicione em Tambahan Board Manager URL URL

Seguida, vá em Tools->Boards->Boards Manager digite ESP8266, klik instal dan fechar.

perlu ditentukan 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

Untuk menguji koneksi WiFi, menyalin dan mengubahnya sebagai variáveis untuk koneksi WIFI listadas acima dan faça upload no módulo ESP8266.

#include /************************ ALTERE AS DEFINIES ABAIXO ******************* *******/ #menentukan WIFI_SSID "SSID WIFI ANDA" // Menyebutkan ulang wifi #menentukan WIFI_PASSWORD "PASSWORD WIFI ANDA" // Menentukan ulang wifi klien WiFiClient; // 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); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi terhubung dengan sukses!"); Serial.println("IP obtido: "); Serial.println(WiFi.localIP()); } // Setup da placa void setup(){ Serial.begin(115200); penundaan(50); // Koneksi dan wifi ConnectToWiFi(); }

Lendo dados melakukan sensor MQ135

Para ler os dados melakukan sensor MQ135, pengembangan utama biblioteca MQ135.h e adicioná-la IDE lakukan Arduino através lakukan menu Skect->Include Library->Add. ZIP Library.

Depois, copy o código abaixo dan faça upload no módulo ESP8266 através lakukan cabo micro-usb. O código realiza a leitura da konsentrasi CO2 em ppm dan imprime os valores lidos tidak ada monitor serial.

#sertakan "MQ135.h" #define SMOKE_SENSOR A0 // IO lakukan sensor de fumaça float sensorValue; // Setup da placa void setup(){ Serial.begin(115200); penundaan (50); } // Loop principal void loop(){ // Faz leitura melakukan sensor MQ135 gasSensor = MQ135(SMOKE_SENSOR); sensorValue = gasSensor.getPPM(); Serial.print("Konsentrasi CO2 (ppm): "); Serial.println(Nilai sensor); }

Escrevendo dan lendingo dados lakukan Hal Bicara

Primeiro, adicione a Biblioteca melakukan ThingSpeak no Arduino IDE. Vá em Tools->Boards->Boards Manager digite ThingSpeak, klik instal dan fechar.

Jawaban gratis untuk 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: nomor canal criado no ThingSpeak
  • myWriteAPIKey: chave de escrita do canal do ThingSpeak
  • myReadAPIKey: chave de leiura do canal do ThingSpeak

Para teste de comunicao o ThingSpeak, copy 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 DEFINIES ABAIXO ***************** *********/ #define WIFI_SSID "SSID WIFI ANDA" // Nome da rede wifi #define WIFI_PASSWORD "PASSWORD WIFI ANDA" // Senha da rede wifi #define THINGSPEAK_WRITE_INTERVAL 20000 // Intervalo em ms entre envios de dados ao ThingSpeak /************************ ALTERE AS VARIVEIS ABAIXO ****************** ********/ unsigned long myChannelNumber = 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 leiura do canal do ThingSpeak unsigned long lastTime; waktu lama saat ini tidak ditandatangani; Klien WiFiClient; // Função que faz a conexão wifi void ConnectToWiFi(void){ // Konfigurasi root certificate untuk 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) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi terhubung dengan sukses!"); Serial.println(WiFi.localIP()); } // Setup da placa void setup(){ Serial.begin(115200); penundaan(50); // Koneksi dan wifi ConnectToWiFi(); // Inicializa ThingSpeak lastTime = 0; ThingSpeak.begin(klien); } // Loop prinsip void loop(){ currentTime = milis(); // seta o tempo aktual // Lakukan hal-hal yang penting nilai = ThingSpeak.readIntField(myChannelNumber, 1, myReadAPIKey); Serial.println("Dado no campo 1 melakukan ThingSpeak:"); Serial.println(nilai); // Verifikasikan momen untuk mengetahui hal-hal yang dibicarakan if((Waktu saat ini - Waktu Terakhir > THINGSPEAK_WRITE_INTERVAL)) { ThingSpeak.setField(1, 100); ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey); waktu terakhir = waktu saat ini; } penundaan (20000); }

Enviando notificação pelo Telegram

Primeiro, adicione a Biblioteca melakukan Telegram no Arduino IDE. Vá em Tools->Boards->Boards Manager digit UniversalTelegramBot, klik instal dan fechar.

Abra o Telegram e siga sebagai próximas etapas para criar um Bot. Primeiro, dapatkan 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 sebagai instruções untuk 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 pemberitahuan possa enviar.

Em seguida, em sua conta do Telegram, cela 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.

Untuk mengetahui pemberitahuan pelo telegram, salinan dari kode abaixo, ubah sebagai variáveis de definições para conexão WIFI e untuk komunikasi dengan Telegram (BOT_TOKEN e CHAT_ID) dan faça upload no módulo ESP8266.

#include #include #include /********************* ALTERAR DEFINIES ABAIXO ******************* *******/ #define WIFI_SSID "YOUR WIFI SSID" // Nome da rede wifi #define WIFI_PASSWORD "ANDA WIFI PASSWORD" // Senha da rede wifi #define BOT_TOKEN "CHANGEYOURTOKEN" // Token do bot do telegram # define CHAT_ID "CHANGEYOURCHATID" // ID melakukan chat do telegram X509List cert(TELEGRAM_CERTIFICATE_ROOT); WiFiClientSecure clientSecure; Bot UniversalTelegramBot(BOT_TOKEN, clientSecure); // Envia notificação ao Telegram void SendTelegramNotification(String message) { bot.sendMessage(CHAT_ID, message, ""); Serial.println(pesan); } // Bersenang-senang dengan koneksi wifi void ConnectToWiFi(void){ // Mengonfigurasi sertifikat root untuk 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) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi terhubung dengan sukses!"); Serial.println("IP obtido: "); Serial.println(WiFi.localIP()); } // Setup da placa void setup(){ Serial.begin(115200); penundaan(50); // Koneksi dan wifi ConnectToWiFi(); // Testa notificação pelo telegram SendTelegramNotification("Testando envio de notificação."); }

Direkomendasikan: