Spisu treści:
- Krok 1: Wykorzystanie materiałów
- Krok 2: Konfiguracja Do ThingSpeak
- Krok 3: Aplicativo - Wynalazca aplikacji MIT
- Krok 4: Montagem Do Protótipo
- Krok 5: Programação Do Microcontrolador
Wideo: Projeto IoT - Sistema Detector De Fumaça: 5 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:26
Wprowadzenie
O Sistema Detector de Fumaça składa się z uma solução IoT com o objetivo de allowir o monitormento 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 sensor de fumaça. O proprietário da residência consegue monitorar o sistema através de um aplicativo e recebe notificações za pośrednictwem telegramu 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 Kondor Asenjo
Krok 1: Wykorzystanie materiałów
Os materiais utilizados para construção do projeto foram:
- Moduł WiFi ESP8266 NodeMcu ESP-12: Placa desenvolvimento que combina o chip ESP8266 (komunikacja WiFi), interfejs uma usb-serial i regulator napięcia 3.3V. Programação pode ser feita usando IDE do Arduino, através da comunicação przez cabo micro-usb.
- Czujnik gazów MQ-135 dla gazów toksyk: O Czujnik gazów MQ-135 i moduł wykrywania różnych rodzajów gazów toksykalnych, amoniaku, dwutlenku węgla, benzenu, dwutlenku węgla, i também fumaça lub ál.
- Led vermelho
- Led zielono
- 2 rezystory 200Ω
- Protoboard e jumpers para conexão e teste do protótipo
Krok 2: Konfiguracja Do ThingSpeak
O ThingSpeak jest usługą platformy IoT dla armazenar i odzyskiwania użytkowników lub protokołu HTTP i MQTT w Internecie lub w celu odzyskania lokalnego. ThingSpeak allowe agregar, visualizar e 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 lub 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 i 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:
- Pole 1: Concentração de gas
- Pole 2: Alarmy
- Pole 3: Komando desligar
Na aba „Private View” é possível criar jako visualizações de cada um dos campos criados. Neste projeto, foram criados:
- 1 grafico com os dados de concentração de gaz CO2 w função do tempo
- 1 indicador de led para indicação de alarme
- 1 grafico com os dados de comando de desligar alarme em função do tempo
Leitura e escrita no ThingSpeak
O canal do ThingSpeak é cruado com um um identificador único (Channel ID) que mozliwosci identificação para envio e leitura de dados. Na „Klucze API” są udostępniane jako klucze do escrita (zapis klucza API) i leitura (odczyt klucza API) bez kanału. Alem 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 jak chaves serão usadas posteriormente no código zrobić microcontrolador. Já as API żąda serão utilizadas na programação do aplicativo Android.
Krok 3: Aplicativo - Wynalazca aplikacji MIT
O aplicativo do monitorowania systemu obsługi narzędzi lub aplikacji MIT App Inventor. O MIT App Inventor jest darmowy i bezpłatny dostęp do Internetu dla integracji aplikacji w Massachusetts Institute of Technology (MIT). Pozwolą Ci na rozpoczęcie programu criem aplicativos dla Androida i iOS.
Aby uzyskać dostęp do aplikacji MIT App Inventor, należy użyć nazwy IotProject_SmokeDetector.
Na tela de Designer é possível montar as telas do aplicativo, selecionando os componentes necessários (butes, labels, imagens, itp.) bez 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 (Właściwości).
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.
Explicação do código
Duas variáveis locais são inicializadas: alarmData e sensorData.
A cada 1 drugi (definido pelo Clock1), lub aplicativo faz um żądanie dados bez kanału ThingSpeak atrave URL z informacją o dados, które są kopiowane z „API Keys”. Quando os dados são retornados, o dado do sensor korespondente à concentração de gaz CO2 é mostrado na tela do aplicativo. 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 (przycisk 1) é 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 (przycisk 1) é desabilitado.
Quando o botão de desligar alarme (przycisk 1) for clicado, o aplicativo escreverá 1 no campo Field3: comando desligar criado no ThingSpeak, indicando que o comando de desligar alarme foi acionado. O dado e enviado ao ThingSpeak através z adresu URL, aby znaleźć dados, które są kopiowane z „API Keys”.
Krok 4: Montagem Do Protótipo
O protótipo foi montado no protoboard conforme indicado na figura.
Czujnik MQ135
- Pino AO: połącz ao pino AD0 do modułu ESP8266
- Pino GND: połącz ao GND z modułem ESP8266
- Pino Vcc: conectado ao pino VIN do modułu ESP8266
LED zielony
- Conectar uma perna do rezystora de 200Ω bez pino D5 do modułu ESP8266
- Conectar o anodo do LED (positivo - maior perna) na outra perna do rezystor
- Conectar o catodo do LED (negativo - menor perna) no GND do módulo ESP8266
dioda LED
- Conectar uma perna doresistor de 200Ω no pino D7 do modułu ESP8266.
- Conectar o anodo do LED (positivo - maior perna) na outra perna do rezystor
- Conectar o catodo do LED (negativo - menor perna) no GND do módulo ESP8266
Krok 5: Programação Do Microcontrolador
O mikrokontroler do modułu ESP8266 za pomocą programu IDE do Arduino (faça lub download aqui).
O código fonte completo użyj bez projektu pode, który nie jest ostatecznym samouczkiem przeznaczenia (Iot_project.ino). O código tem duas funções principais: setup e loop.
Konfiguracja Fluxo:
- Inicializa porta serial
- Inicializa os wyjścia (pinos dos diody)
- Połącz z rede WiFi
- Inicjalizacja o ThingSpeak
Pętla Fluxo do:
- Lê os dados do czujnika MQ135
-
Verifica se a concentração de gas CO2 ultrapassa o limite definido (idealnie: 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 limite
- Desliga o alarme (LED vermelho) e liga o LED de status (verde) se o valor estiver abaixo do limite
-
Le 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 sekund
Abaixo será descrita a programaçãoo de cada um dos principais módulos com o respectivo código para teste.
Połącz się z ponownym Wi-Fi
Pobierz IDE do Arduino, w Plik->Preferencje edytuj z dodatkowych adresów URL menedżera tablicy URL
Em seguida, vá em Tools->Boards->Boards Manager digite ESP8266, clique em installar 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 módulo ESP8266.
#include /************************* ZMIEŃ JAKO DEFINIES ABAIXO ******************** *******/ #define WIFI_SSID "TWÓJ SSID WIFI" // Nadaj nazwę ponownej sieci Wi-Fi #define WIFI_PASSWORD "TWOJE HASŁO WIFI" // Usuń ponownie klienta Wi-Fi WiFiClient; // Função que faz a conexão wifi void ConnectToWiFi(void){ // Tenta conectar ao wifi Serial.println("Połącz z rede WiFi"); WiFi.begin (WIFI_SSID, WIFI_PASSWORD); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("Połączenie Wi-Fi z sukcesem!"); Serial.println("Obtido IP: "); Serial.println(WiFi.localIP()); } // Konfiguracja da placa void setup(){ Serial.begin(115200); opóźnienie(50); // Połącz z Wi-Fi ConnectToWiFi(); }
Lendo dados zrobić czujnik MQ135
Aby uzyskać dostęp do czujnika MQ135, należy najpierw opracować bibliotekę MQ135.h i dodać IDE do Arduino w 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 concentração de CO2 z ppm i imprime os valores lidos bez seryjnego monitora.
#include "MQ135.h" #define SMOKE_SENSOR A0 // IO do sensor de fumaça float sensorValue; // Ustaw da placa void setup(){ Serial.begin(115200); opóźnienie(50); } // Pętla główna void loop(){ // Wyłączenie czujnika MQ135 gasSensor = MQ135(SMOKE_SENSOR); sensorValue = gasSensor.getPPM(); Serial.print("Stężenie CO2 (ppm): "); Serial.println(WartośćCzujnika); }
Escrevendo i pożyczko dados do ThingSpeak
Primeiro, adicione do Biblioteca do ThingSpeak bez Arduino IDE. Vá em Tools->Boards->Boards Manager digite ThingSpeak, clique em installar 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 jako variáveis abaixo:
- myChannelNumber: liczba 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, kopia 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 /************************* ZMIEŃ JAKO OKREŚLONE ABAIXO ***************** *********/ #define WIFI_SSID "YOUR WIFI SSID" // Nome da rede wifi #define WIFI_PASSWORD "YOUR WIFI PASSWORD" // Oczekuj rede wifi #define THINGSPEAK_WRITE_INTERVAL 20000 // Intervalo em ms entre envios de dados ao ThingSpeak /************************* ZMIEŃ JAKO VARIÁVEIS ABAIXO ******************** ********/ unsigned long myChannelNumber = 0000000; // Número do canal do ThingSpeak const char * myWriteAPIKey = "twój klucz api zapisu"; // Chave de escrita do canal do ThingSpeak const char * myReadAPIKey = "twój klucz api odczytu"; // Chave de leitura do canal do ThingSpeak unsigned long lastTime; unsigned long currentTime; Klient WiFiClient; // Função que faz a conexão wifi void ConnectToWiFi(void){ // Skonfiguruj certyfikat główny dla api.telegram.org configTime(0, 0, "pool.ntp.org"); clientSecure.setTrustAnchors(&cert); // Tenta conectar ao wifi Serial.println("Połącz z rede WiFi"); WiFi.begin (WIFI_SSID, WIFI_PASSWORD); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("Połączenie Wi-Fi z sukcesem!"); Serial.println(WiFi.localIP()); } // Konfiguracja da placa void setup(){ Serial.begin(115200); opóźnienie(50); // Połącz z Wi-Fi ConnectToWiFi(); // Zainicjuj ThingSpeak lastTime = 0; RzeczMów.początek(klient); } // Pętla główna void loop(){ currentTime = millis(); // seta o tempo atual // Lê dados do ThingSpeak int value = ThingSpeak.readIntField(myChannelNumber, 1, myReadAPIKey); Serial.println("Dado no campo 1 do ThingSpeak:"); Serial.println(wartość); // Weryfikuj moment, w którym możesz zaprosić dados do ThingSpeak if((currentTime - lastTime > THINGSPEAK_WRITE_INTERVAL)) { ThingSpeak.setField(1, 100); ThingSpeak.writeFields(mójNumerKanału, myWriteAPIKey); ostatniCzas = bieżącyCzas; } opóźnienie(20000); }
Enviando notificação pelo Telegram
Primeiro, adicione do Biblioteca do Telegram no Arduino IDE. Vá em Tools->Boards->Boards Manager digite UniversalTelegramBot, kliknij em instalar e fechar.
Abra lub Telegram e Siga as proximas etapas para criar um Bot. Primeiro, procure por botfather e clique nele. A janela seguir deve abrir e você será solicitado a clicar no botão Iniciar. Digite / newbot e siga jako instruções para criar seu bot. De a ele um nome e nome de usuário. Seo 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.
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 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 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 bota do telegramu # define CHAT_ID "CHANGEYOURCHATID" // ID do czatu do telegramu X509List cert(TELEGRAM_CERTIFICATE_ROOT); WiFiClientSecure klientSecure; UniversalTelegramBot bot (BOT_TOKEN, clientSecure); // Envia notificação ao Telegram void SendTelegramNotification(String message) { bot.sendMessage(CHAT_ID, message, ""); Serial.println(wiadomość); } // Função que faz a conexão wifi void ConnectToWiFi(void){ // Skonfiguruj certyfikat główny dla api.telegram.org configTime(0, 0, "pool.ntp.org"); clientSecure.setTrustAnchors(&cert); // Tenta conectar ao wifi Serial.println("Połącz z rede WiFi"); WiFi.begin (WIFI_SSID, WIFI_PASSWORD); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("Połączenie Wi-Fi z sukcesem!"); Serial.println("Obtido IP: "); Serial.println(WiFi.localIP()); } // Konfiguracja da placa void setup(){ Serial.begin(115200); opóźnienie(50); // Połącz z Wi-Fi ConnectToWiFi(); // Testa notificação pelo telegram SendTelegramNotification("Testando envio de notificação."); }
Zalecana:
Pequeno Projeto De Uma Casa Inteligente: 5 kroków
Pequeno Projeto De Uma Casa Inteligente: O projekt que faremos é de uma casa inteligente. Possui basicamente dois grupos de funcionalidades:· De monitormento de iluminação e temperatura dos cômodos.· De monitormente de lista de alimentos e nível de água filtrda na geladeira.Não escrever
Projeto Kakao: Um Colete De Comunicação Alternatywa: 8 kroków
Projeto CoCoa: Um Colete De Comunicação Alternativa: Projekt CoCoA to kamizelka do noszenia podłączona do Internetu, która umożliwia łączenie dotykowych symboli alternatywnej komunikacji, aby pomóc osobom z zaburzeniami mowy lub niewerbalnymi. O Colete de Comunicação Alternativa (CoCoA) consi
Guia Do Sensor De Gás E Fumaça MQ-2 Com Arduino: 5 kroków
Guia Do Sensor De Gás E Fumaça MQ-2 Com Arduino: Este guia mostra como criar um detektor 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 gas MQ-2O sensor de fumaça MQ-2 é sensível à fu
Projeto Lumos: 8 kroków
Projeto Lumos: O projekt Lumos składa się z konstrukcji sterowania oświetleniem, połączonego ze smartfonem, połączonego z mesma rede móvel lub WiFi. Para control a luminária foi desenvolvido um aplicativo Android, que allowe apagar e acender a luz utilizando alem
Samouczek Do Projeto Final Do Curso IoT Aplicada a Smart Home Inatel / Novembro 2017: 4 kroki (ze zdjęciami)
Tutorial Do Projeto Final Do Curso IoT Aplikacja do inteligentnego domu Inatel / Listopad 2017: Brak projektu związanego z wykorzystaniem platformy hibrydy, jest to konieczne, aby uzyskać dostęp do powtarzalnych platform natywnych dla Androida lub IOS. Używaj um computador tipo notebook com windows 10. Essa plataforma chama-se Ionic, q