Taula de continguts:
- Pas 1: materials relacionats
- Pas 2: Configureu Do ThingSpeak
- Pas 3: Aplicatiu - Inventor d'aplicacions MIT
- Pas 4: Montagem Do Protótipo
- Pas 5: Programa Microcontrolador
Vídeo: Projeto IoT - Sistema Detector De Fumaça: 5 Steps
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:10
Introdução
O Sistema Detector de Fumaça consisteix en una solució IoT amb l’objectiu de permetre o monitoritzar alarmes d’incés de residències através d’aplicatiu Android. O projectat està basat en un microcontrolador que es comunica amb una nova pantalla Wi-Fi, enviant-se els detectats per sensor de fuma. O propietari da residencia 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.
Desenvolvedors
- Bruno Gonçalves Pereira
- João Paulo Tadeu Borges Paiva
- Juliana Guimarães Soares Buére
- Willan Alexander Condor Asenjo
Pas 1: materials relacionats
Els materials utilitzats per a la construcció del projecte foram:
- Módulo WiFi ESP8266 NodeMcu ESP-12: Placa de desenvolupament que combina o chip ESP8266 (comunicação WiFi), uma interface usb-serial e um regulador de tensão 3.3V. Un programa pot ser utilitzat mitjançant un IDE per Arduino, através de comunicação via cabo micro-usb.
- Sensor de Gás MQ-135 para Gases Tóxicos: O Sensor de Gás MQ-135 és un mòdul capaç de detectar varis tipus de gasos tòxics com a amonia, diòxid de carboni, benzè, òxid nítric, i també fumaça o álcool.
- Led vermell
- Led verd
- 2 resistències 200Ω
- Protoboard e jumpers para conexão e teste do protótipo
Pas 2: Configureu Do ThingSpeak
O ThingSpeak és un servei de plataforma IoT per armazenar i recuperar-los utilitzant protocols HTTP i MQTT pel Internet o per meio de uma rede local. ThingSpeak permet agregar, visualitzar i analitzar els fluxos de dados en nuvem.
O ThingSpeak està disponible com un servei gratuït per a petits projectes no comercials (menys de 3 milions de mensatges per any o aproximadament 8000 mensatges per dia). Per a projectes més grans o aplicacions comercials, quatre tipus diferents de llicència anuals poden oferir-se: Estàndard, Acadèmic, Estudiant i Inici.
Configuració d'un canal sense ThingSpeak
Após criar uma conta no ThingSpeak, is necessary criar um canal. Os canais armazenam os dados enviados de um determinado projeto. Cada canal inclou 8 camps que podem conter qualquer tipus de dados, mais 3 camps per dados de localització i 1 para dados de status. Dipòsits de col·lecció dats em um canal, pot utilitzar els aplicatius ThingSpeak per analitzar-los i visualitzar-los.
Per a aquest projecte, es va crear un canal com a nom IoTProject-SmokeDetector i 3 camps per enviament de dies:
- Camp 1: Concentració de gàs
- Camp 2: Alarma
- Camp 3: Comando desligar
Na aba "Private View" és possible criar com a visualitzacions de cada un dels dos camps. Neste projeto, foram criados:
- 1 gràfic com os dados de concentració de gas CO2 em função do tempo
- 1 indicador de led per a indicació d'alarma
- 1 gràfic com os dados de comando de desligar alarme em função do tempo
Leitura e escrita no ThingSpeak
O canal do ThingSpeak és criat amb un identificador únic (Channel ID) que possibilita la seva identificació per a envio i leitura de dados. Ja hi ha "API Keys" disponibles com a capes per escrit (Write API Key) i leitura (Read API Key) de dados no canal. Tot i així, també està disponible com a API Requests (HTTP get requests) que també podem fer servir per enviament i sol·licitud de dades.
O identificador do canal e as chaves serão usadas posteriorment no code do microcontrolador. Ja que les sol·licituds de l'API s'utilitzen en un programa aplicatiu d'Android.
Pas 3: Aplicatiu - Inventor d'aplicacions MIT
O aplicatiu per al seguiment del sistema desenvolupat mitjançant MIT App Inventor. O MIT App Inventor és un ambient web gratuït i de codi obert per al desenvolupament integrat d’aplicatius mantingut pel Massachusetts Institute of Technology (MIT). Permet iniciar programes de crèdit aplicatius per a Android i iOS.
Per venir, após criar uma conta no MIT App Inventor, criou-se um projecto com o name IotProject_SmokeDetector.
La tela de dissenyador es pot muntar com a aplicatiu, seleccionant components necessaris (botons, etiquetes, imatges, etc.) sense menú lateral dret (Paleta). Per cada um dos components seleccionats, és possible modificar configuracions de nuclis, tamany, posició, entre altres sense menú lateral dret (Properties).
Na tela Blocks és tota una lògica de programa de aplicació. Un programa és feita através de blocs, facilitant o desenvolupant per a iniciantes.
Explicació del codi
Duas variáveis locais são inicializadas: alarmData e sensorData.
A cada 1 segon (definido pelo Clock1), o aplicative faz um request from dados no canal ThingSpeak através da URL de leitura de dados that you can ser copiada na aba "API Keys". Quan os dados são retornados, o dado do sensor correspondente a concentração de gás CO2 és mostrado na tela do aplicativo. Já o dado do alarm es testado:
- Se o alarme estiver acionado (alarmData = 1), o aplicativo mostra al usuario a mensagem "Atenção! Sua casa está em perill!" e o botão de desligar alarme (Button1) is habilitado.
- Se o alarme não estiver acionado (alarmData = 0), o aplicativo mostra ao usuari a mensagem "No es preocupa! Sua casa no està em perill." e o botão de desligar alarme (Button1) és habilitat.
Quan o botó de desligar alarme (Button1) for clicado, o aplicative escreverá 1 no field Field3: comando desligar criado no ThingSpeak, indicant que o ordre de desligar alarmar va ser accionat. O done is enviado ao ThingSpeak através da URL per escrita de dados that you can ser copiada na aba "API Keys".
Pas 4: Montagem Do Protótipo
O protótipo foi montado no protoboard conforme indicado na figura.
Sensor MQ135
- Pino AO: connectado ao pino AD0 do módulo ESP8266
- Pino GND: connectat al GND del mòdul ESP8266
- Pino Vcc: conectado ao pino VIN do módulo ESP8266
LED verd
- Conectar uma perna do resistor de 200Ω no pino D5 do módulo ESP8266
- Conectar o anodo do LED (positivo - maior perna) na altra perna do resistor
- Conectar o catodo do LED (negatiu - menor perna) no GND do módulo ESP8266
LED vermell
- Conectar uma perna doresistor de 200Ω no pino D7 do módulo ESP8266.
- Conectar o anodo do LED (positivo - maior perna) na altra perna do resistor
- Conectar o catodo do LED (negatiu - menor perna) no GND do módulo ESP8266
Pas 5: Programa Microcontrolador
El microcontrolador del mòdul ESP8266 ha estat programat mitjançant un IDE de Arduino (faça o descàrrega aqui).
O codi font complet utilitzat no es pot baixar cap final d'aquest tutorial (Iot_project.ino). O codi temàtic dues funcions principals: setup e loop.
Configuració de Fluxo:
- Inicialitza una porta serial
- Inicialitzar les sortides (pinos dos leds)
- Connecta’t a WiFi
- Inicialitzar o ThingSpeak
Fluxo do loop:
- Lê os dados do sensor MQ135
-
Verifiqueu una concentració de gasos ultrapassa o límit definit (ideal: CO2 <= 700 ppm)
- Liga o alarme (LED vermell), desliga o LED de status (verde) e envia notificação pelo Telegram se o valor estiver acima do limite
- Desliga o alarme (LED vermell) e liga o LED de status (verde) se o valor estiver abaixo do limite
-
Llegeix el "comando desligar alarme" de ThingSpeak
Se o comando = 1, desliga o alarme (LED vermell) e liga o LED de status (verde)
- Envia dados do sensor, do alarme e de comando para o ThingSpeak a cada 20 segons
Abaixo serà descrit a programa de cada um dos principals mòduls com a codi respectiu per a testejar.
Connectant-se a reduir WiFi
Obriu un IDE d'Arduino, feu clic a Fitxer-> Preferències per obtenir URL del gestor de placa addicionals a una URL
Seguiu, vés a Eines-> Taulers-> Boards Manager digite ESP8266, feu clic a instal·lar i fer servir.
És necessari definir 2 varietats per a connexions:
- WIFI_SSID: nom da rede WiFi que desitge connectar el seu sistema
- WIFI_PASSWORD: senha da rede
Per a prova de connexió WiFi, còpia o codi abaix, alt com variàveis per a connexió WIFI llistats acima i faça upload no módulo ESP8266.
#include / ************************ ALTERE AS DEFINIÇÕES ABAIXO ******************* ******* / #define WIFI_SSID "YOUR WIFI SSID" // Nom per redefinir wifi #define WIFI_PASSWORD "YOUR WIFI PASSWORD" // Sense modificar el client WiFiClient wifi; // Funció que fa una connexió wifi void ConnectToWiFi (void) {// Tenta connectar-se al wifi Serial.println ("Conectant à rede WiFi"); WiFi.begin (WIFI_SSID, WIFI_PASSWORD); while (WiFi.status ()! = WL_CONNECTED) {demora (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi connectat amb èxit!"); Serial.println ("IP obtido:"); Serial.println (WiFi.localIP ()); } // Setup da placa void setup () {Serial.begin (115200); retard (50); // Conecta ao wifi ConnectToWiFi (); }
Lendo dados do sensor MQ135
Per ler os dados do sensor MQ135, primerament s’ha de baixar a la biblioteca MQ135.h i afegir-la a 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 da concentración de CO2 em ppm e imprime os valores lidos no serial monitor.
#include "MQ135.h" #define SMOKE_SENSOR A0 // IO do sensor de fumaça float sensorValue; // Setup da placa void setup () {Serial.begin (115200); retard (50); } // Loop principal void loop () {// Fas leitura do sensor MQ135 gasSensor = MQ135 (SMOKE_SENSOR); sensorValue = gasSensor.getPPM (); Serial.print ("Concentracao de CO2 (ppm):"); Serial.println (sensorValue); }
Escrivint i llegint dats de ThingSpeak
Primeiro, adreça a la Biblioteca de ThingSpeak sense Arduino IDE. Vés a Eines-> Taulers-> Taulers Gestor digital ThingSpeak, feu clic a instal·lar i fer servir.
A versão free do ThingSpeak, aceita upload de dados apenas a cada 20 segons, per isso, no code deve-se testar se és o moment correcte de enviar os dados.
Per comunicar-se amb ThingSpeak és necessari definir-lo com a diversos exemples:
- myChannelNumber: número de canal criat sense ThingSpeak
- myWriteAPIKey: chave d'escrita do canal do ThingSpeak
- myReadAPIKey: chave de leitura do canal do ThingSpeak
Para teste de comunicação com o ThingSpeak, copie o code 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 "YOUR WIFI SSID" // Nom per redefinir 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 / ************************* ALTERE AS VARIÁVEIS ABAIXO ****************** ******** / unsigned long myChannelNumber = 0000000; // Número do canal do ThingSpeak const char * myWriteAPIKey = "la vostra clau API d'escriptura"; // Chave de escrita do canal do ThingSpeak const char * myReadAPIKey = "your read api key"; // Chave de leitura do canal do ThingSpeak unsigned long lastTime; llarga hora sense signar; Client WiFiClient; // Funció que fa una connexió wifi void ConnectToWiFi (void) {// Configura el certificat arrel per api.telegram.org configTime (0, 0, "pool.ntp.org"); clientSecure.setTrustAnchors (& cert); // Tenta connectar-se al wifi Serial.println ("Conectant à rede WiFi"); WiFi.begin (WIFI_SSID, WIFI_PASSWORD); while (WiFi.status ()! = WL_CONNECTED) {demora (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi connectat amb èxit!"); Serial.println (WiFi.localIP ()); } // Setup da placa void setup () {Serial.begin (115200); retard (50); // Conecta ao wifi ConnectToWiFi (); // Inicializa ThingSpeak lastTime = 0; ThingSpeak.begin (client); } // bucle principal buit bucle () {currentTime = millis (); // seta o tempo atual // Vull conèixer ThingSpeak int value = ThingSpeak.readIntField (myChannelNumber, 1, myReadAPIKey); Serial.println ("Dado no campo 1 do ThingSpeak:"); Serial.println (valor); // Verifiqueu el moment de enviar-los al ThingSpeak if ((currentTime - lastTime> THINGSPEAK_WRITE_INTERVAL)) {ThingSpeak.setField (1, 100); ThingSpeak.writeFields (myChannelNumber, myWriteAPIKey); última hora = hora actual; } retard (20000); }
Enviando notificação pelo Telegram
Primeiro, adicione a Biblioteca do Telegram no Arduino IDE. Veure Eines-> Taules-> Gestor de taules digital UniversalTelegramBot, feu clic i instal·leu-lo.
Abra o Telegram e siga as próximas etapas para criar um Bot. Primeiro, procure per botfather e clique nele. A janela a seguir deve open and você serà sol·licitat a un clic sense botó Iniciar. Digite / newbot e siga as instruções para criar seu bot. Dê a ele um nome e nome de usuário. Se o seu bot for criado com sucesso, você receberá uma mensagem com um link per accessar o bot e o token do bot. Salve o token, perquè você precisará dele para que o ESP8266 possa enviar notificacions.
Em seguida, em la seva compte de Telegram, pesquise IDBot. Inicie uma conversa com esse bot e digite / getid. Você receberá uma resposta com seu ID de usuari. Salve o ID, perquè você precisará dele per enviar de notificacions.
Para teste do envio de notificaciónçã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 # defineix CHAT_ID "CHANGEYOURCHATID" // ID fa xat fer telegrama X509List cert (TELEGRAM_CERTIFICATE_ROOT); WiFiClientSecure clientSecure; Bot UniversalTelegramBot (BOT_TOKEN, clientSecure); // Envia notificació al Telegram void SendTelegramNotification (missatge de cadena) {bot.sendMessage (CHAT_ID, missatge, ""); Serial.println (missatge); } // Funció que fa una connexió wifi void ConnectToWiFi (void) {// Configura el certificat arrel per api.telegram.org configTime (0, 0, "pool.ntp.org"); clientSecure.setTrustAnchors (& cert); // Tenta connectar-se al wifi Serial.println ("Conectant à rede WiFi"); WiFi.begin (WIFI_SSID, WIFI_PASSWORD); while (WiFi.status ()! = WL_CONNECTED) {demora (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi connectat amb èxit!"); Serial.println ("IP obtido:"); Serial.println (WiFi.localIP ()); } // Setup da placa void setup () {Serial.begin (115200); retard (50); // Conecta ao wifi ConnectToWiFi (); // Testa notificação pelo telegram SendTelegramNotification ("Testando envio de notificação."); }
Recomanat:
Pequeno Projeto De Uma Casa Inteligente: 5 Steps
Pequeno Projeto De Uma Casa Inteligente: O projecto que faremos é de uma casa inteligente. Possiblement bàsicament es fan grups de funcionalitats: · De monitorament d’il·luminació i temperatura dos modes. · De monitorament de llista d’aliments i nível d’àigua filtrada en geladeira.Não escrever
Projeto CoCoa: Um Colete De Comunicação Alternativa: 8 Steps
Projecte CoCoa: Um Colete De Comunicação Alternativa: The CoCoA Project és una armilla portable connectada a Internet que permet l’acoblament de símbols tàctils de comunicació alternativa per ajudar les persones amb discapacitat de parla o no verbal
Guia Do Sensor De Gás E Fumaça MQ-2 Com Arduino: 5 Steps
Guia Do Sensor De Gás E Fumaça MQ-2 Com Arduino: Este guia mostra com criar um detector de fumaça que emite um bipe when detecta gás ou fumaça inflamável. Accedeix al meu darrer article: Arduino: tot o que necessito saber [Guia Completo] .O sensor de gás MQ-2O sensor de fumaça MQ-2 é sensível à fu
Detector De Mentiras Con Arduino: 6 Steps
Detector De Mentiras Con Arduino: Hola! El meu nom és Tadeo del canal de Youtube El Taller De TD, en el tutorial d’avui aprendrà a construir un Detector de Mentires amb Arduino que grafica els resultats en temps real en la teva computadora i es fa tan sol amb un par de materials
Detector de fum IOT: actualitzeu el detector de fum existent amb IOT: 6 passos (amb imatges)
Detector de fum IOT: actualitzeu el detector de fum existent amb IOT: Llista de col·laboradors, Inventor: Tan Siew Chin, Tan Yit Peng, Tan Wee Heng Supervisor: Dr. Chia Kim Seng Departament d'Enginyeria Mecatrònica i Robòtica, Facultat d'Enginyeria Elèctrica i Electrònica, Universiti Tun Hussein Onn Malaysia.Distribut