Table des matières:
- Étape 1: Matériel Utilizados
- Étape 2: Configuration de Do ThingSpeak
- Étape 3: Aplicativo - MIT App Inventor
- Étape 4: Montagem Do Protótipo
- Étape 5: Programação Do Microcontrolador
Vidéo: Projeto IoT - Sistema Detector De Fumaça : 5 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:05
Introduction
O Sistema Detector de Fumaça consiste em uma solução IoT com o objetivo de permitir o monitoramento de alarmes de incêndio de residências atraves 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 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 Buere
- Willan Alexandre Condor Asenjo
Étape 1: Matériel Utilizados
Os materiais utilizados para construção do projeto foram:
- Module WiFi ESP8266 NodeMcu ESP-12: Placa de desenvolvimento que combina o chip ESP8266 (comunicação WiFi), uma interface usb-serial et um regulador de tensão 3.3V. A programação pode ser feita usando a IDE do Arduino, atraves da comunicação via cabo micro-usb.
- Sensor de Gás MQ-135 para Gases Tóxicos: 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, e também fumaça ou ál.
- Led vermelho
- Led vert
- 2 Résistances 200Ω
- Protoboard e jumpers para conexão e teste do protótipo
Étape 2: Configuration de Do ThingSpeak
O ThingSpeak é um serviço de plate-forme IoT pour armazenar e recuperar dados usando o protocolo HTTP e MQTT pela Internet ou por meio de uma rede local. ThingSpeak permet d'agréger, de visualiser et d'analyser les flux de données na nuvem.
O ThingSpeak est disponible avec un service gratuit pour les petits projets commerciaux (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, Academic, Student et Home.
Configuração de um canal no ThingSpeak
Após criar uma conta no ThingSpeak, é necessário criar um canal. 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 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:
- Champ 1: Concentração de gás
- Champ 2: Alarme
- Champ 3: Comando desligar
Na aba "Private View" é possível criar comme visualizações de cada um dos campos criados. Neste projeto, foram criados:
- 1 graphique avec les doses de concentration de gaz CO2 en fonction du tempo
- 1 indicateur de led pour indicateur d'alarme
- 1 graphique com os dados de comando de desligar alarm em função do tempo
Leitura e escrita no ThingSpeak
O canal do ThingSpeak é criado com um identificador único (Channel ID) que possibilita sua identificação para envio e leitura de dados. Na aba "API Keys" est disponible comme chaves para escrita (Write API Key) e leitura (Read API Key) de dados no canal. Além disso, também são disponibilizadas as API Requests (HTTP get request) que também podem ser usadas para envio e requíção de dados.
O identificador do canal e as chaves serão usadas posteriormente no código do microcontrolador. Já en tant que requêtes API Serão utilizadas na programação do aplicativo Android.
Étape 3: Aplicativo - MIT App Inventor
O aplicativo para monitoramento do sistema foi desenvolvido utilizando o MIT App Inventor. O MIT App Inventor um ambiente web gratuit e de code aberto para desenvolvimento integrado de aplicativos mantido pelo Massachusetts Institute of Technology (MIT). Ele permite que iniciantes na programação criem aplicativos para Android e iOS.
Pour venir, após criar uma conta no MIT App Inventor, criou-se um projeto com o nome IotProject_SmokeDetector.
Na tela de Designer é possível montar comme telas do aplicativo, selecionando os componentes necessários (botões, labels, imagens, etc) aucun menu esquerdo latéral (Palette). Para cada um dos componentes selecionados, é possível alterar configurações de cores, tamanho, posição, entre outras no menu lateral direito (Propriétés).
Na tela Blocks é feita toda a lógica de programação do aplicativo. A programação é feita atraves de blocos, facilitando o desenvolvimento para iniciantes.
Explication du code
Duas variáveis locais são inicializadas: alarmData et sensorData.
A cada 1 segundo (definido pelo Clock1), o aplicativo faz um request de dados no channel 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 correspondante à concentração de gas CO2 é mostrado na tela do aplicativo. Já o dado do alarm é testado:
- Se o alarm 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 (Bouton1) é habilitado.
- 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 (Bouton1) é déstabilisé.
Quando o botão de desligar alarm (Button1) for clickado, o aplicativo escreverá 1 no campo Field3: comando desligar criado no ThingSpeak, indicando que o commando de desligar alarme foi acionado. O dado é enviado ao ThingSpeak através da URL para escrita de dados que pode ser copied na aba "API Keys".
Étape 4: Montagem Do Protótipo
O protótipo foi montado no protoboard conforme indicado na figura.
Capteur MQ135
- Pino AO: connecté au pino AD0 avec le module ESP8266
- Pino GND: connecté au GND avec le module ESP8266
- Pino Vcc: connecté au pino VIN avec le module ESP8266
LED verte
- Conectar uma perna do résistance de 200Ω no pino D5 do module ESP8266
- Conectar o anodo do LED (positivo - maior perna) na outra perna do résistance
- Conectar o catodo do LED (negativo - menor perna) no GND do módulo ESP8266
Vermelho LED
- Conectar uma perna doresistor de 200Ω no pino D7 do module ESP8266.
- Conectar o anodo do LED (positivo - maior perna) na outra perna do résistance
- Conectar o catodo do LED (negativo - menor perna) no GND do módulo ESP8266
Étape 5: Programação Do Microcontrolador
O microcontrolador do module ESP8266 foi programado utilizando a IDE do Arduino (faça o download aqui).
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 fait la configuration:
- Inicializa a porta serial
- Inicializa os sorties (pinos dos leds)
- Connexion à rede WiFi
- Inicializa o ThingSpeak
Boucle de fluxo:
- Lê os dados do capteur MQ135
-
Verifica se a concentração de gás CO2 ultrapassa o limit definido (idéal: 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 limit
- Desliga o alarme (LED vermelho) e liga o LED de status (verde) se o valor estiver 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 alarm 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 respectivo código para teste.
Connexion Wi-Fi
Abra a IDE do Arduino, vá em File->Preferences eadicione em URLs supplémentaires du gestionnaire de carte une URL
Em seguida, vá em Tools->Boards->Boards Manager digite ESP8266, clique em instalar e fechar.
É necessá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, altere as variáveis para conexão WIFI listadas acima e faça upload no modulo ESP8266.
#include /************************ ALTERE AS DEFINIÇÕES ABAIXO ******************* *******/ #define WIFI_SSID "VOTRE WIFI SSID" // Nome da rede wifi #define WIFI_PASSWORD "VOTRE MOT DE PASSE WIFI" // Senha da rede wifi Client 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 connecté avec succès!"); Serial.println("IP obtido: "); Serial.println(WiFi.localIP()); } // Configuration de la place void setup(){ Serial.begin(115200); retard (50); // Connexion au wifi ConnectToWiFi(); }
Lendo dados do capteur MQ135
Pour les données du capteur MQ135, les premiers développements se trouvent dans une bibliothèque MQ135.
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 os valores lidos no serial monitor.
#include "MQ135.h" #define SMOKE_SENSOR A0 // IO do sensor de fumaça float sensorValue; // Configuration de la place void setup(){ Serial.begin(115200); retard (50); } // Boucle principale void loop(){ // Faz leitura do sensor MQ135 gasSensor = MQ135(SMOKE_SENSOR); sensorValue = gasSensor.getPPM(); Serial.print("Concentration 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, 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 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
Para teste de comunicação com o ThingSpeak, copie o código abaixo, altere as variáveis para conexão na rede e as variáveis listadas acima e faça upload no modulo ESP8266.
#include #include /************************ ALTERE AS DEFINIÇÕES ABAIXO ******************* *********/ #define WIFI_SSID "VOTRE WIFI SSID" // Nome da rede wifi #define WIFI_PASSWORD "VOTRE 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 ****************** ********/ non signé long myChannelNumber = 0000000; // Número do canal do ThingSpeak const char * myWriteAPIKey = "votre clé d'api d'écriture"; // Chave de escrita do canal do ThingSpeak const char * myReadAPIKey = "votre clé api de lecture"; // Chave de leitura do canal do ThingSpeak non signé longtemps lastTime; currentTime long non signé; Client WiFi; // Função que faz a conexão wifi void ConnectToWiFi(void){ // Configurer le certificat racine pour api.telegram.org configTime(0, 0, "pool.ntp.org"); clientSecure.setTrustAnchors(&cert); // Tenta conectar ao wifi Serial.println("Connectando à rede WiFi"); WiFi.begin(WIFI_SSID, WIFI_PASSWORD); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connecté avec succès!"); Serial.println(WiFi.localIP()); } // Configuration de la place void setup(){ Serial.begin(115200); retard (50); // Connexion au wifi ConnectToWiFi(); // Inicializa ThingSpeak lastTime = 0; ThingSpeak.begin(client); } // Boucle principale void loop(){ currentTime = millis(); // définir le tempo atual // Lê dados do ThingSpeak int value = ThingSpeak.readIntField(myChannelNumber, 1, myReadAPIKey); Serial.println("Dado no campo 1 do ThingSpeak:"); Serial.println(valeur); // 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; } retard (20000); }
Enviando notificação pelo Télégramme
Primeiro, adicione a Biblioteca do Telegram no Arduino IDE. Vá em Tools->Boards->Boards Manager digite UniversalTelegramBot, clique em instalar e fechar.
Abra o Telegram e siga as proximas etapas para criar um Bot. Primeiro, procure par botfather e clique nele. A janela a seguir deve ouvrir e você será solicitado 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 pour criado com successo, 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, pesquise 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.
Para teste do envio de notificação pelo telegram, copie o código abaixo, altere as variáveis definições para conexão WIFI e para comunicação com o Telegram (BOT_TOKEN e CHAT_ID) e faça upload no module ESP8266.
#include #include #include /************************ ALTERAR DEFINIÇÕES ABAIXO ******************* *******/ #define WIFI_SSID "VOTRE WIFI SSID" // Nome da rede wifi #define WIFI_PASSWORD "VOTRE WIFI PASSWORD" // Senha da rede wifi #define BOT_TOKEN "CHANGEYOURTOKEN" // Token do bot do telegram # définir CHAT_ID "CHANGEYOURCHATID" // ID faire le chat faire le télégramme X509List cert (TELEGRAM_CERTIFICATE_ROOT); WiFiClientSecure clientSecure; Robot UniversalTelegramBot (BOT_TOKEN, clientSecure); // Envia notificação ao Telegram void SendTelegramNotification(String message) { bot.sendMessage(CHAT_ID, message, ""); Serial.println(message); } // Função que faz a conexão wifi void ConnectToWiFi(void){ // Configurer le certificat racine pour api.telegram.org configTime(0, 0, "pool.ntp.org"); clientSecure.setTrustAnchors(&cert); // Tenta conectar ao wifi Serial.println("Connecter à rede WiFi"); WiFi.begin(WIFI_SSID, WIFI_PASSWORD); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connecté avec succès!"); Serial.println("IP obtido: "); Serial.println(WiFi.localIP()); } // Configuration de la place void setup(){ Serial.begin(115200); retard (50); // Connexion au wifi ConnectToWiFi(); // Testa notificação pelo telegram SendTelegramNotification("Testando envio de notificação."); }
Conseillé:
Pequeno Projeto De Uma Casa Inteligente : 5 étapes
Pequeno Projeto De Uma Casa Inteligente: O projeto que faremos é de uma casa inteligente. Possui basicamente dois grupos de funcionalidades:· De monitoramento de iluminação e temperatura dos cômodos.· De monitoramente de lista de alimentos e nível de água filtrada na geladeira.Não escrever
Guia Do Sensor De Gás E Fumaça MQ-2 Com Arduino: 5 étapes
Guia Do Sensor De Gás E Fumaça MQ-2 Com Arduino: Este guia mostra como criar um detecteur de fumaça que emite um bipe quando detecta gas ou 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
Projeto Fila Fácil : 7 étapes
Projeto Fila Fácil: Em nosso dia a dia vamos diversas vezes em locais onde é necessária uma gestão de senhas de clientes para organizar e agilizar atendimentos. Em alguns estabelecimentos podemos demorar alguns minutos ou até mesmo horas esp
Tutoriel Do Projeto Final Do Curso IoT Aplicada a Smart Home Inatel / Novembro 2017 : 4 étapes (avec photos)
Tutorial Do Projeto 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 recursos de plateformas nativas do Android ou do IOS. Foi utilizado um computador tipo notebook avec windows 10. Essa plataforma chama-se Ionic, q
Démarrer une maison intelligente - Projeto Final : 6 étapes
Démarrer une maison intelligente - Projet final : Projeto apresentado é parte do projeto final do curso de IoT aplicado a Smart Home.O projeto mostrado a seguir é parte do projeto final a ser apresentado no curso de IoT aplicada a Smart Home, que consist de sensores e atuadores conec