สารบัญ:

Projeto IoT - Sistema Detector De Fumaça: 5 ขั้นตอน
Projeto IoT - Sistema Detector De Fumaça: 5 ขั้นตอน

วีดีโอ: Projeto IoT - Sistema Detector De Fumaça: 5 ขั้นตอน

วีดีโอ: Projeto IoT - Sistema Detector De Fumaça: 5 ขั้นตอน
วีดีโอ: IoT Smoke Detector using MQ135 Gas Sensor, Nodemcu ESP8266, and Blynk Application 2024, กรกฎาคม
Anonim
Projeto IoT - ตัวตรวจจับ Sistema De Fumaça
Projeto IoT - ตัวตรวจจับ Sistema De Fumaça

แนะนำตัว

O Sistema Detector de Fumaça ประกอบไปด้วย 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 เซ็นเซอร์ 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

  • บรูโน่ กอนซัลเวส เปเรยร่า
  • João Paulo Tadeu Borges Paiva
  • จูเลียนา กิมาไรส์ โซอาเรส บูเร
  • วิลแลน อเล็กซานเดอร์ คอนดอร์ อาเซนโจ

ขั้นตอนที่ 1: Materiais Utilizados

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

ระบบปฏิบัติการ utilizados para construção do projeto foram:

  • Módulo WiFi ESP8266 NodeMcu ESP-12: บอร์ด desenvolvimento que combina o ชิป ESP8266 (WiFi ทั่วไป) อินเทอร์เฟซ uma usb-serial และตัวควบคุม tensão 3.3V A programação pode ser feita usando a IDE do Arduino, através da comunicação ผ่าน cabo micro-usb
  • เซ็นเซอร์ของ Gás MQ-135 สำหรับก๊าซ Tóxicos: O เซ็นเซอร์ของ 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 tombém fumacoola ou.
  • นำ vermelho
  • Led verde
  • 2 ตัวต้านทาน 200Ω
  • Protoboard และจัมเปอร์สำหรับ conexão e teste do protótipo

ขั้นตอนที่ 2: กำหนดค่า Do ThingSpeak

กำหนดค่า Do ThingSpeak
กำหนดค่า Do ThingSpeak
กำหนดค่า Do ThingSpeak
กำหนดค่า Do ThingSpeak
กำหนดค่า Do ThingSpeak
กำหนดค่า Do ThingSpeak

O ThingSpeak é um serviço de plataforma IoT para armazenar e recuperar dados usando o protocolo HTTP e MQTT อินเทอร์เน็ต ou por meio de uma rede local. ThingSpeak อนุญาติ agregar, visualizar และ 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: มาตรฐาน วิชาการ นักเรียนและบ้าน

Configuração de um canal ไม่มี ThingSpeak

Após criar uma conta no ThingSpeak, é necessário criar um canal. Os canais armmazenam os dados enviados de um determinado projeto. ระบบปฏิบัติการ คลอง Cada รวม 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.

สำหรับ este projeto, foi criado um canal com nome IoTProject-SmokeDetector e 3 campos para envio de dados:

  • สนามที่ 1: Concentração de gás
  • สนาม 2: Alarme
  • ฟิลด์ 3: Comando desligar

Na aba "Private View" é possível criar เป็น visualizações de cada um dos campos criados Neste projeto, ฟอรัม criados:

  • 1 กราฟิก com os dados de concentração de gás CO2 em função do tempo
  • 1 ตัวบ่งชี้ led สำหรับ indicação de alarme
  • 1 กราฟิก com os dados de comando de desligar alarme em função do tempo

Leitura e escrita no ThingSpeak

คลองทำ ThingSpeak é criado com um identificador único (Channel ID) que possibilita sua identificação para envio e leitura de dados. Na aba "API Keys" ใช้แทน chaves para escrita (เขียนคีย์ API) และ leitura (อ่านคีย์ API) ของ dados ไม่มีคลอง Além disso, também são disponibilizadas as API Requests (HTTP รับคำขอ) 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á เป็น API ที่ร้องขอ serão utilizadas na programação do aplicativo Android

ขั้นตอนที่ 3: แอปพลิเคชัน - 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

แอปพลิเคชันสำหรับการตรวจสอบระบบสำหรับใช้งานบนเดสก์ท็อป ใช้งานหรือ MIT App Inventor O MIT App Inventor é um ambiente เว็บฟรี e de código aberto para desenvolvimento integrado de aplicativos mantido pelo Massachusetts Institute of Technology (MIT) อนุญาตให้ใช้ que iniciantes na programação criem aplicativos สำหรับ Android และ iOS

Para começar, após criar uma conta no MIT App Inventor, criou-se um projeto com หรือ IotProject_SmokeDetector.

เกี่ยวกับ Designer é possível montar as telas do aplicativo, selecionando os componentes necessários (botões, labels, imagens ฯลฯ) ไม่มีเมนูด้านข้าง esquerdo (จานสี) Para cada um dos componentes selecionados, é possível alterar configurações de cores, tamanho, posição, entre outras no menu lateral direito (คุณสมบัติ).

บล็อก é feita toda a lógica de programação do aplicativo. A programação é feita através de blocos, สิ่งอำนวยความสะดวก o desenvolvimento para iniciantes.

คำอธิบาย docódigo

Duas variáveis locais são inicializadas: alarmData และ sensorData.

a cada 1 segundo (definido pelo Clock1), o aplicativo faz um request de 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 do sensor ผู้สื่อข่าว à concentração de gás CO2 é Mostrado na tela do aplicativo. Já o dado do alarme é testado:

  1. ระวัง 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) é นิสัย
  2. Se o alarme não estiver acionado (alarmData = 0), o aplicativo mostra ao usuário a mensagem "ไม่ 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) สำหรับ 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 "API Keys".

ขั้นตอนที่ 4: Montagem Do Protótipo

Montagem Do Protótipo
Montagem Do Protótipo

O protótipo foi montado no protoboard Conforme indicado na figura. ต้นแบบ

เซนเซอร์ MQ135

  • Pino AO: conectado ao pino AD0 ทำโมดูล ESP8266
  • Pino GND: เชื่อมต่อ ao GND ทำโมดูล ESP8266
  • Pino Vcc: conectado ao pino VIN do módulo ESP8266

LED สีเขียว

  • Conectar uma perna do ตัวต้านทาน 200Ω ไม่มี pino D5 ทำโมดูล ESP8266
  • Conectar หรือ anodo do LED (positivo - maior perna) กับตัวต้านทานภายนอก
  • Conectar o catodo do LED (เชิงลบ - เมเนอร์เพอร์นา) no GND do módulo ESP8266

ไฟ LED สีแดง

  • Conectar uma perna doresistor de 200Ω no pino D7 do módulo ESP8266.
  • Conectar หรือ anodo do LED (positivo - maior perna) กับตัวต้านทานภายนอก
  • Conectar o catodo do LED (เชิงลบ - เมเนอร์เพอร์นา) no GND do módulo ESP8266

ขั้นตอนที่ 5: Programação Do Microcontrolador

O microcontrolador do módulo ESP8266 foi programado utilizando a IDE do Arduino (faça o ดาวน์โหลด aqui)

O código fonte สมบูรณ์ 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 ทำการตั้งค่า:

  • Inicializa a porta serial
  • เอาต์พุต Inicializa os (ไฟ LED pinos dos)
  • Conecta à rede WiFi
  • Inicializa o ThingSpeak

Fluxo ทำลูป:

  • Lê os dados do sensor MQ135
  • ตรวจสอบความถูกต้องของ CO2 ultrapassa o limite definido (อุดมคติ: CO2 <= 700 ppm)

    • Liga o alarme (LED vermelho), desliga o LED de status (verde) e envia notificação pelo โทรเลขถึงความกล้าหาญ estiver acima do Limite
    • Desliga o alarme (LED vermelho) และ liga o LED de status (verde) se o valor estiver abaixo do limite
  • Lê o dado de "comando desligar alarme" ทำ ThingSpeak

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

  • Envia dados do sensor, do alarme e de comando para o ThingSpeak a cada 20 เซกันดอส

Abaixo será descrita a programação de cada um dos principais módulos com o เคารพใน código para teste

เชื่อมต่อด้วย WiFi

Abra a IDE สำหรับ Arduino, vá em File->Preferences eadicione em Additional Board Manager URLs a URL

Em seguida, vá em Tools->Boards->Boards Manager digite ESP8266, clique em instalar e fechar. ตัวจัดการบอร์ด

จำเป็น definir 2 variáveis para conexão na rede:

  • WIFI_SSID: nome da rede WiFi ใช้งานได้จริง
  • WIFI_PASSWORD: เซ็นฮา ดา รีเด

สำหรับการทดสอบ WiFi ที่ใช้งานร่วมกันได้, คัดลอกหรือคัดลอก, เปลี่ยนแปลงตามตัวเลือกสำหรับ WiFi รายการที่มีอยู่แล้วและไม่ต้องอัปโหลดโมดูล ESP8266

#include /************************ แก้ไขตามคำจำกัดความ ABAIXO ******************* *******/ #define WIFI_SSID "YOUR WIFI SSID" // Nome da rede wifi #define WIFI_PASSWORD "YOUR WIFI PASSWORD" // ใช้ wifi ไคลเอนต์ WiFi ใหม่; // Função que faz a conexão wifi void ConnectToWiFi (เป็นโมฆะ){ // Tenta conectar ao wifi Serial.println ("Conectando à rede WiFi"); WiFi.begin(WIFI_SSID, WIFI_PASSWORD); ในขณะที่ (WiFi.status () != WL_CONNECTED) { ล่าช้า (500); Serial.print("."); } Serial.println(""); Serial.println("การเชื่อมต่อ WiFi สำเร็จ!"); Serial.println("IP obtido: "); Serial.println(WiFi.localIP()); } // ตั้งค่า da placa void setup(){ Serial.begin(115200); ล่าช้า (50); // Conecta ao wifi ConnectToWiFi (); }

Lendo dados ทำเซ็นเซอร์ MQ135

เซ็นเซอร์สำหรับเซ็นเซอร์ MQ135, การใช้งานเบื้องต้น, การใช้งานและห้องสมุด, MQ135.h และ IDE สำหรับ Arduino ในเมนู 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 da concentração de CO2 em ppm e imprime ระบบปฏิบัติการ valores lidos ไม่มีจอภาพแบบอนุกรม

#include "MQ135.h" #define SMOKE_SENSOR A0 // IO ทำเซ็นเซอร์ de fumaça float sensorValue; // ตั้งค่า da placa void setup(){ Serial.begin(115200); ล่าช้า (50); } // วนรอบโมฆะหลัก () { // Faz leitura do sensor MQ135 gasSensor = MQ135 (SMOKE_SENSOR); sensorValue = gasSensor.getPPM(); Serial.print("ความเข้มข้นของ CO2 (ppm): "); Serial.println (ค่าเซ็นเซอร์); }

Escrevendo e Lendo dados do ThingSpeak

Primeiro ขอแนะนำ Biblioteca do ThingSpeak no Arduino IDE Vá em Tools->Boards->Boards Manager digite ThingSpeak, clique em instalar e fechar. ตัวจัดการบอร์ด

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 โมเมนโต correto de enviar os dados

Para comunicar com o ThingSpeak é necessário definir เป็น 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, เปลี่ยนแปลงเป็น variáveis para conexão na rede e as variáveis listadas acima e faça upload no módulo ESP8266

#include #include /************************ แก้ไขตามคำจำกัดความ 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 ao ThingSpeak /************************ เปลี่ยนเป็น VARIÁVEIS ABAIXO ****************** ********/ myChannelNumber แบบยาวที่ไม่ได้ลงชื่อ = 0000000; // Número do canal do ThingSpeak const char * myWriteAPIKey = "คีย์ API เขียนของคุณ"; // Chave de escrita do canal do ThingSpeak const char * myReadAPIKey = "คีย์ api อ่านของคุณ"; // Chave de leitura do canal do ThingSpeak ไม่ได้ลงนามเป็นเวลานาน; ปัจจุบันเวลายาวที่ไม่ได้ลงนาม; ไคลเอนต์ WiFiClient; // Função que faz a conexão wifi void ConnectToWiFi(void){ // กำหนดค่าใบรับรองรูทสำหรับ 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); ในขณะที่ (WiFi.status () != WL_CONNECTED) { ล่าช้า (500); Serial.print("."); } Serial.println(""); Serial.println("การเชื่อมต่อ WiFi สำเร็จ!"); Serial.println(WiFi.localIP()); } // ตั้งค่า da placa void setup(){ Serial.begin(115200); ล่าช้า (50); // Conecta ao wifi ConnectToWiFi (); // Inicializa ThingSpeak lastTime = 0; ThingSpeak.begin(ไคลเอนต์); } // วนรอบโมฆะหลัก () { currentTime = มิลลิวินาที (); // seta o tempo atual // Lê dados ทำ ThingSpeak int value = ThingSpeak.readIntField(myChannelNumber, 1, myReadAPIKey); Serial.println("Dado no campo 1 ทำ ThingSpeak:"); Serial.println(ค่า); // ยืนยันความถูกต้องของช่วงเวลาสำคัญจาก dados ao ThingSpeak if((currentTime - lastTime > THINGSPEAK_WRITE_INTERVAL)) { ThingSpeak.setField(1, 100); ThingSpeak.writeFields (myChannelNumber, myWriteAPIKey); LastTime = เวลาปัจจุบัน; } ล่าช้า (20000); }

การแจ้งเตือน Enviando pelo Telegram

Primeiro โปรดสนใจ Biblioteca do Telegram ไม่มี Arduino IDE Vá em Tools->Boards->Boards Manager digite UniversalTelegramBot, clique em instalar e fechar. ตัวจัดการบอร์ด

Abra หรือ Telegram e siga as próximas etapas para criar um Bot. Primeiro จัดหา 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 เป็นคำแนะนำสำหรับ criar seu bot Dê a ele um nom e nome de usuário. อะ เล อุม โนม อี โนม เดอ อูซูเอริโอ Se o seu bot สำหรับ criado com sucesso, você receberá uma mensagem com um link para acessar o bot e o token do bot ยกเว้นโทเค็น porque você precisará dele para que o ESP8266 possa enviar notificações

Em seguida, em sua conta do Telegram, เพสกี้ IDBot Inicie uma conversa com es 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. ความช่วยเหลือ

สำหรับการทดสอบสภาพแวดล้อมการแจ้งเตือน pelo โทรเลข, สำเนาหรือ código abaixo, เปลี่ยนแปลงตามคำจำกัดความของคำจำกัดความ WIFI และการติดต่อสื่อสารผ่านโทรเลข (BOT_TOKEN e CHAT_ID) และไม่มีการอัปโหลดโมดูล ESP8266

#include #include #include /************************ คำจำกัดความที่เปลี่ยนแปลง 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 # กำหนด CHAT_ID "CHANGEYOURCHATID" // ID do chat ทำโทรเลข X509List cert (TELEGRAM_CERTIFICATE_ROOT); ไคลเอนต์ WiFiClientSecureSecure; บอท UniversalTelegramBot (BOT_TOKEN, clientSecure); // Envia notificação ao Telegram void SendTelegramNotification (ข้อความสตริง) { bot.sendMessage (CHAT_ID, ข้อความ, ""); Serial.println (ข้อความ); } // Função que faz a conexão wifi โมฆะ ConnectToWiFi (เป็นโมฆะ) { // กำหนดค่าใบรับรองรูทสำหรับ 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); ในขณะที่ (WiFi.status () != WL_CONNECTED) { ล่าช้า (500); Serial.print("."); } Serial.println(""); Serial.println("การเชื่อมต่อ WiFi สำเร็จ!"); Serial.println("IP obtido: "); Serial.println(WiFi.localIP()); } // ตั้งค่า da placa void setup(){ Serial.begin(115200); ล่าช้า (50); // Conecta ao wifi ConnectToWiFi (); // Testa notificação pelo telegram SendTelegramNotification("Testando envio de notificação"); }

แนะนำ: