Sommario:
- Passaggio 1: materiale utilizzato
- Passaggio 2: configurazione "Fai cosa parla"
- Passaggio 3: Aplicativo - Inventore dell'app MIT
- Passaggio 4: montaggio del prototipo
- Passaggio 5: Programmazione del microcontrollore
Video: Projeto IoT - Sistema Detector De Fumaça: 5 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 09:59
Introduzione
Il Sistema Detector de Fumaça consiste in una soluzione IoT con l'obiettivo del permesso o il monitoraggio degli allarmi dell'incidente delle residenze attraverso l'applicazione Android. Il progetto è basato su un microcontrollore che comunica con una nuova connessione WiFi, rilevando i sinistri per il sensore di fumo. La proprietà della residenza segue il monitoraggio o il sistema di accesso all'applicazione e la ricezione di notifiche tramite Telegram in caso di attivazione dell'allarme.
Desenvolvedores
- Bruno Gonçalves Pereira
- João Paulo Tadeu Borges Paiva
- Juliana Guimarães Soares Buére
- Willan Alexander Condor Asenjo
Passaggio 1: materiale utilizzato
I materiali utilizzati per la costruzione del progetto sono:
- Modulo WiFi ESP8266 NodeMcu ESP-12: Placa desenvolvimento che combina o chip ESP8266 (comunicazione WiFi), un'interfaccia usb-serial e un regolatore di tensione 3.3V. A programação pode ser feita usando un IDE do Arduino, através da comunicação via cabo micro-usb.
- Sensore di gas MQ-135 per gas tossici: O Sensore di gas MQ-135 è un modulo capace di rilevare vari tipi di gas tossici come ammoniaca, diossido di carbonio, benzene, ossigeno nitrico, e também fumaça o álcool.
- Led vermelho
- Led verde
- 2 resistori 200Ω
- Protoboard e jumpers para conexão e teste do protótipo
Passaggio 2: configurazione "Fai cosa parla"
O ThingSpeak é um serviço de plataforma IoT per armazenar e recuperar dados usando o protocolo HTTP e MQTT pela Internet ou por meio de uma rede local. ThingSpeak permette di aggregare, visualizzare e analizzare i flussi di dati sul nuovo.
O ThingSpeak está disponível comeo um serviço gratuito para pequenos projetos não comerciais (meno di 3 milioni di mensagens per ano o circa 8000 mensagens per giorno). Per progetti più importanti o applicazioni commerciali, quattro tipi diversi di licenza annuale per gli indirizzi: Standard, Academic, Student e Home.
Configurazione di un canale senza ThingSpeak
Após criar uma conta no ThingSpeak, é necessário criar um canal. Os canais armazenam os dados enviados de um determinatodo projeto. Cada canal include 8 campi che podem contro qualque tipo di dati, più 3 campi per dati di localizzazione e 1 per dati di stato. Depois de coletar dados em um canal, você pode usar os aplicativos ThingSpeak para analisá-los e visualizá-los.
Per questo progetto, foi criado um canal com nome IoTProject-SmokeDetector e 3 campi per ogni aspetto:
- Campo 1: Concentração de gás
- Campo 2: Allarme
- Campo 3: Comando desligar
Na aba "Private View" é possível criar as visualizações de cada um dos campos criados. Neste projeto, foram criados:
- 1 grafico com os dados de concentração de gás CO2 em função do tempo
- 1 indicatore di led per indicazione di allarme
- 1 grafico con i dados de comando de desligar alarme em função do tempo
Leitura e escrita no ThingSpeak
O canal do ThingSpeak è criado com um identificatore único (Channel ID) que possibilita sua identificazioneção para envio e leitura de dados. Non ci sono "API Keys" disponibili come chaves per scritto (Write API Key) e leitura (Read API Key) senza alcun canale. Além disso, também são disponibilizadas as API Requests (HTTP get request) che può essere utilizzato per l'ambiente e la richiesta di dati.
O identificatore do canal e as chaves serão usadas posteriormente no código do microcontrolador. Già come le richieste API vengono utilizzate dal programma applicativo Android.
Passaggio 3: Aplicativo - Inventore dell'app MIT
O aplicativo para monitoramento do sistema foi desenvolvido utilizando o MIT App Inventor. O MIT App Inventor è un ambiente web gratuito e codice aberto per il desenvolvimento integrato di applicazioni mantido per il Massachusetts Institute of Technology (MIT). Ele permite que iniciantes na programação criem applicativi per Android e iOS.
Para começar, após criar uma uma conta no MIT App Inventor, criou-se um projeto com o nome IotProject_SmokeDetector.
La tela di Designer è possibile montarla come tela e applicativo, selezionando i componenti necessari (botes, etichette, immagini, ecc.) nessun menu laterale esquerdo (Palette). Per cada um dos componenti selezionati, è possibile modificare la configurazione dei core, tamanho, posição, entre outras nessun menu laterale diretto (Proprietà).
Na tela Blocks é feita toda a lógica de programação do aplicativo. A programação é feita através de blocos, facilitando o desenvolvimento para iniciantes.
Spiegazione del codice
Duas variáveis locais são inicializadas: alarmData e sensorData.
A cada 1 segundo (definido pelo Clock1), o aplicativo faz um request de dodos no canal ThingSpeak através da URL de leitura de dodos che pode ser copiada na aba "API Keys". Quando i dati vengono restituiti, o quando il sensore corrisponde alla concentrazione di gas CO2 è mostrata la tela da applicare. Já o dado do alarme é testado:
- 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) è abilitato.
- Se o alarme não summersr 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) è desabilitado.
Quando o pulsante desligar alarme (Button1) per clicado, o aplicativo escreverá 1 no campo Field3: comando desligar criado no ThingSpeak, indicando que o comando desligar alarme foi acionado. O dado è atteso ao ThingSpeak attraverso l'URL per la scrittura di dati che pode ser copiada na aba "API Keys".
Passaggio 4: montaggio del prototipo
O protótipo foi montado no protoboard conforme indicado na figura.
Sensore MQ135
- Pino AO: collegato a pino AD0 con modulo ESP8266
- Pino GND: collegato a GND del modulo ESP8266
- Pino Vcc: collegato a pino VIN do modulo 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 resistor
- 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 resistor
- Conectar o catodo do LED (negativo - menor perna) no GND do módulo ESP8266
Passaggio 5: Programmazione del microcontrollore
O microcontrollore del modulo ESP8266 per programmare utilizzando un IDE di Arduino (fai o scarica qui).
O código fonte completo 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 fai la configurazione:
- Inicializa a porta serial
- Inicializa os uscite (pinos dos leds)
- Conecta à rede WiFi
- Inizializa o ThingSpeak
Flusso fai il ciclo:
- Come fare il sensore MQ135
-
Verifica se a concentração de gás CO2 ultrapassa o limite definido (ideale: CO2 <= 700 ppm)
- Liga o alarme (LED vermelho), desliga o LED de status (verde) e envia notificação pelo Telegram se o valor summerr acima do limit
- Desliga o alarme (LED vermelho) e liga o LED de status (verde) se o valor summerer abaixo do limit
-
Lê o dado de "comando desligar alarme" do 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á descrita a programação de cada um dos principais módulos com o rispettivo codice para teste.
Conectando na rede WiFi
Abra a IDE do Arduino, vá em File->Preferences eadicione em Additional Board Manager URLs un URL
Segue, vá em Tools->Boards->Boards Manager digite ESP8266, clique em instalar e fechar.
È necessario definire 2 varianti per il confronto:
- WIFI_SSID: nome da rede WiFi que você deseja conectar seu sistema
- WIFI_PASSWORD: senha da rede
Per verificare la connessione WiFi, copiare il codice a barre, modificare le varie versioni per la connessione Wi-Fi elenco di acima e facia upload nessun modulo ESP8266.
#include /************************ ALTERE AS DEFINIES ABAIXO ******************* *******/ #define WIFI_SSID "YOUR WIFI SSID" // Nome da ride wifi #define WIFI_PASSWORD "YOUR WIFI PASSWORD" // Senha da ride 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); while (WiFi.status() != WL_CONNECTED) { ritardo(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connesso con successo!"); Serial.println("Obbligo IP: "); Serial.println(WiFi.localIP()); } // Setup da placa void setup(){ Serial.begin(115200); ritardo(50); // Collega a wifi ConnectToWiFi(); }
Lendo dados do sensore 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.
Deposita, copie o codice abaixo e faça upload no módulo ESP8266 através do cabo micro-usb. O código realiza una riduzione della concentrazione di CO2 in ppm e stampa di valori di lidi senza monitor seriale.
#include "MQ135.h" #define SMOKE_SENSOR A0 // IO do sensor de fumaça float sensorValue; // Setup da placa void setup(){ Serial.begin(115200); ritardo(50); } // Loop principal void loop(){ // Faz leitura do sensor MQ135 gasSensor = MQ135(SMOKE_SENSOR); sensorValue = gasSensor.getPPM(); Serial.print("Concentrazione di 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, clique em instalar e fechar.
Una versione gratuita di 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: número do canal criado no ThingSpeak
- myWriteAPIKey: chave de escrita do canal do ThingSpeak
- myReadAPIKey: chave de leitura do canal do ThingSpeak
Per testare la comunicazione con ThingSpeak, copiare o modificare il codice, modificare le varie versioni per modificare e modificare le varie liste di seguito e caricare il modulo ESP8266.
#include #include /************************ ALTERE AS DEFINIÇÕES 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 /************************ ALTERE AS VARIÁVEIS ABAIXO ****************** ********/ unsigned long myChannelNumber = 0000000; // Número do canal do ThingSpeak const char * myWriteAPIKey = "la tua chiave API di scrittura"; // Chave de escrita do canal do ThingSpeak const char * myReadAPIKey = "la tua chiave API di lettura"; // Chave de leitura do canal do ThingSpeak unsigned long lastTime; unsigned long currentTime; client WiFi Client; // Função que faz a conexão wifi void ConnectToWiFi(void){ // Configura il certificato radice per api.telegram.org configTime(0, 0, "pool.ntp.org"); clientSecure.setTrustAnchors(&cert); // Tenta di connetterti al wifi Serial.println("Connettiti al WiFi"); WiFi.begin(WIFI_SSID, WIFI_PASSWORD); while (WiFi.status() != WL_CONNECTED) { ritardo(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connesso con successo!"); Serial.println(WiFi.localIP()); } // Setup da placa void setup(){ Serial.begin(115200); ritardo(50); // Collega a wifi ConnectToWiFi(); // Inicializa ThingSpeak lastTime = 0; ThingSpeak.begin(client); } // Loop principale void loop(){ currentTime = millis(); // seta o tempo atual // I dati di ThingSpeak int value = ThingSpeak.readIntField(myChannelNumber, 1, myReadAPIKey); Serial.println("Dado no campo 1 do ThingSpeak:"); Serial.println(valore); // Verifica se è il momento di aggiornare i dati relativi a ThingSpeak if((currentTime - lastTime > THINGSPEAK_WRITE_INTERVAL)) { ThingSpeak.setField(1, 100); ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey); lastTime = currentTime; } ritardo (20000); }
Invia notifica per il telegramma
Primeiro, adicione a Biblioteca do Telegram no Arduino IDE. Vá em Tools->Boards->Board Manager digite UniversalTelegramBot, clique em instalar e fechar.
Abra o Telegram e siga as próximas etapas para criar um Bot. Primeiro, procure por botfather e clique nele. A janela a seguir deve abrir e você será sollecitato a clicar no botão 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 para acessar o bot e o token do bot. Salve o token, porque você precisará dele para que o ESP8266 possa enviar notificações.
Segueda, em sua conta do Telegram, indaga su 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.
Per testare l'ambiente di notifica del telegramma, copiare il codice abaixo, modificare le varie definizioni per connessione WIFI e per comunicare con Telegram (BOT_TOKEN e CHAT_ID) e caricare il modulo senza modulo ESP8266.
#include #include #include /******************** ALTERAR DEFINIES 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 # define CHAT_ID "CHANGEYOURCHATID" // ID do chat do telegram X509List cert(TELEGRAM_CERTIFICATE_ROOT); WiFiClientSecure clientSecure; UniversalTelegramBot bot(BOT_TOKEN, clientSecure); // Invia notifica ao Telegram void SendTelegramNotification(String message) { bot.sendMessage(CHAT_ID, message, ""); Serial.println(messaggio); } // Função que faz a conexão wifi void ConnectToWiFi(void){ // Configura il certificato radice per api.telegram.org configTime(0, 0, "pool.ntp.org"); clientSecure.setTrustAnchors(&cert); // Tenta di connetterti al wifi Serial.println("Connettiamo il WiFi"); WiFi.begin(WIFI_SSID, WIFI_PASSWORD); while (WiFi.status() != WL_CONNECTED) { ritardo(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connesso con successo!"); Serial.println("Obbligo IP: "); Serial.println(WiFi.localIP()); } // Setup da placa void setup(){ Serial.begin(115200); ritardo(50); // Collega a wifi ConnectToWiFi(); // Testa notificação pelo telegram SendTelegramNotification("Testando envio de notificação."); }
Consigliato:
Guia Do Sensor De Gás E Fumaça MQ-2 Com Arduino: 5 passaggi
Guia Do Sensor De Gás E Fumaça MQ-2 Com Arduino: Este guia mostra como criar um detector de fumaça que emite um bipe quando rileva gas o fumaça inflamável. Acesse meu último artigo: Arduino: tudo o que você precisa 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 passaggi
Detector De Mentiras Con Arduino: Hola! Mi nombre es Tadeo del canal de Youtube El Taller De TD, en el tutorial de hoy aprenderás a construir un Detector de Mentiras con Arduino que grafica los resultados en tiempo real en tu computadora y se hace tan solo con un par de materiales
Verstelbare Detector Aardmagnetisch Veld: 10 passaggi
Verstelbare Detector Aardmagnetisch Veld: Wat hebben we nodig?- Een fietswiel- Ongeveer 250 metro koperdraad. Wij gebruikten koperlakdraad van 0,50 mm dikte. Dit zorgt voor een goed werkende spoel waar relatief makkelijk stroom doorheen gaat- Draadeind van een meter lang en diametro M6- 2 K
Mi Band Detector con ESP32 BLE: 6 passaggi
Mi Band Detector Utilizzo di ESP32 BLE: Hello Maker m(- -)m Ho letto questo modulo di articolo 陳亮 (moononournation github) su come utilizzare esp32 ble per scansionare il dispositivo, quindi ho dovuto provare questo codice su github Arduino_BLE_Scanner. ora voglio usare la mia Mi Band 3 per sbloccare la porta quando vengo nel mio ufficio
Tutorial Do Projeto Final Do Curso IoT Aplicada a Smart Home Inatel / Novembro 2017: 4 passaggi (con immagini)
Tutorial Do Project Final Do Curso IoT Aplicada a Smart Home Inatel / Novembro 2017: No desenvolvimento desse projeto foi utilizada uma plataforma hibrida, sem a necessidade de acessar os ricorsos de plataformas natives do Android o do IOS. Foi utilizado um computador tipo notebook com windows 10. Essa plataforma chama-se Ionic, q