Sadržaj:

Projeto IoT - Detector Sistema De Fumaça: 5 koraka
Projeto IoT - Detector Sistema De Fumaça: 5 koraka

Video: Projeto IoT - Detector Sistema De Fumaça: 5 koraka

Video: Projeto IoT - Detector Sistema De Fumaça: 5 koraka
Video: ТЕПЕРЬ НЕ ПРОПАДУ 10-ть самоделок ВЫРУЧАТ ГДЕ УГОДНО! 2024, Studeni
Anonim
Projeto IoT - Detector Sistema De Fumaça
Projeto IoT - Detector Sistema De Fumaça

Uvod

O Sistema Detector de Fumaça sastoji se u rješavanju IoT com o objektivu dozvole o monitoringu alarma za uključivanje ostataka atravésa u um aplikacijama Androida. 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 vlasništvu da rezidencija zatraži nadzor nad sustavom através de um aplicativo e recebe notificações putem Telegrama 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 Condor Asenjo

Korak 1: Materiais Utilizados

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

Os materiais utilizados para construção do projeto foram:

  • Módulo WiFi ESP8266 NodeMcu ESP-12: Place de desenvolvimento que combina o chip ESP8266 (comunicação WiFi), um sučelje usb-serijski i s regulatorom od 3.3V. Program podešava ser feita koristeći IDE do Arduino, através da comunicação putem cabo micro-USB-a.
  • 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 gasses tóxicos como amônia, dióxido de carbono, benzeno, óxido nítrico, e também fumaço ou.
  • Led vermelho
  • Led verde
  • 2 Otpori 200Ω
  • Protoboard i skakači para conexão e teste do protótipo

Korak 2: Konfigurirajte Do ThingSpeak

Konfigurirajte Do ThingSpeak
Konfigurirajte Do ThingSpeak
Konfigurirajte Do ThingSpeak
Konfigurirajte Do ThingSpeak
Konfigurirajte Do ThingSpeak
Konfigurirajte Do ThingSpeak

O ThingSpeak é um servisu za plataforma IoT para armazenar i recuperar dados usando o protokolu HTTP e MQTT pela Internet ili por meio de uma rede local. ThingSpeak dozvoljava agregat, vizualizirajući i analizirajući protok podataka u 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 dia). Para projetos maiores ou applicações comerciais, quatro tipos diferentes de licença anual são oferecidos: Standard, Academic, Student i Home.

Konfiguracija kanala bez ThingSpeaka

Após criar uma conta no ThingSpeak, é needário criar um channel. 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 channel, você pode usar os aplicativos ThingSpeak para analisá-los e visualizá-los.

Para este projeto, foi criado um channel com nome IoTProject-SmokeDetector e 3 campos para envio de dados:

  • Polje 1: Concentração de gás
  • Polje 2: Alarm
  • Polje 3: Comando desligar

Na aba "Private View" é je moguće pronaći kao vizualizaciju de cada um dos campos criados. Neste projeto, foram criados:

  • 1 gráfico com os dados de koncentração de gás CO2 em função do tempo
  • 1 indicador de led para indicação de alarme
  • 1 gráfico com os dados de comando de desligar alarme em função do tempo

Leitura e escrita no ThingSpeak

O kanalu ThingSpeak é criado com um identificador único (Channel ID) que possible to sua identificação para envio e leitura de dados. Na "API ključevima" također nema disponibilizada kao chaves para escrita (Write API Key) i leitura (Read API Key) bez kanala. Osim toga, tambi su disponibilizirani kao API zahtjevi (HTTP zahtjevi za primanje), jer tambem podem serdadas para envio e requisição de dados.

O identificador do canal e as chaves serão usadas posteriormente no código do microcontrolador. Já as API zahtijeva korištenje programa za programiranje aplikacija na Androidu.

Korak 3: 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
Aplicativo - MIT App Inventor

O primjeni parametara za nadzor sustava za desenvolvido korištenje programa MIT App Inventor. O MIT App Inventor -u je ambijentalna web stranica besplatna i de Código aberto para desenvolvimento integrado de aplicativos mantido pelo Massachusetts Institute of Technology (MIT). Omogućite pokretanje iniciativnih programa na aplikacijama za Android i iOS.

Za sve one koji žele pristupiti aplikaciji MIT App Inventor, criou-se um projektovati com o nome IotProject_SmokeDetector.

Na tela de Designer je moguće montirati kao primjenjive, odabrane komponente kao neophodne (botove, naljepnice, slike itd.) Bez bočnog izbornika (paleta). Para cada um dos komponente odabire, é possível alterar konfiguracije jezgri, tamanho, posição, entre outras no menu lateral direito (Svojstva).

Na tela Blocks é feita toda a lógica de programação do aplicativo. A programçã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 segundo (definitivno Clock1), ili aplicirajte faz um request de dados no channel ThingSpeak através to URL de leitura de dados que pode ser copiada on aba "API Keys". Quando os dados são retornados, o dado do sensor korespondente à koncentração de gás CO2 é mostrado na tela do aplicativo. Já o dado do alarme é testado:

  1. Pogledajte o alarmu estiver acionado (alarmData = 1), o aplikaciji mostra ao usuário a mensagem "Atenção! Sua casa está em perigo!" e o botão de desligar alarme (Button1) é habilitado.
  2. Pogledajte o alarmu da ne počnete s aktivacijom (alarmData = 0), ili primijenite 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 botão de desligar alarme (Button1) 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 é enviado ao ThingSpeak através da URL para escrita de dados que pode ser kopiju na "API ključeve".

Korak 4: Montagem Do Protótipo

Montagem Do Protótipo
Montagem Do Protótipo

O protótipo foi montado no protoboard conforme indicado na figura.

Senzor MQ135

  • Pino AO: conectado ao pino AD0 do módulo ESP8266
  • Pino GND: spojen na GND s modelom ESP8266
  • Pino Vcc: spojite ao pino VIN na modul ESP8266

LED verde

  • Spojite otpornik na otpornik od 200 Ω bez pina D5 na modulu ESP8266
  • Priključak ili anodo do LED (pozitivna - veća perna) na vanjski otpornik otpornik
  • Priključak ili katodo do LED (negativno - menor perna) nema GND do módulo ESP8266

LED vermelho

  • Spojite uma perna doresistor od 200Ω bez pina D7 do módulo ESP8266.
  • Konektor ili anodo do LED (pozitivna - veća perna) na vanjskom perna do otporniku
  • Priključak ili katodo do LED (negativno - menor perna) nema GND do módulo ESP8266

5. korak: Programirajte mikrokontrolador

O mikrokontrolatoru za upravljanje ESP8266 za program koji koristi IDE do Arduino (faca za preuzimanje 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: postavljanje e petlje.

Fluxo do postavljanje:

  • Inicializa porta serijski
  • Inicializa os izlazi (pinos dos leds)
  • Povežite se putem WiFi -a
  • Inicializa ili ThingSpeak

Fluxo do petlja:

  • Pronađite senzor MQ135
  • Provjerite je li koncentracija CO2 ultrapassa ili ograničeno definitivno (idealno: CO2 <= 700 ppm)

    • Liga o alarmu (LED vermelho), desliga ili LED de status (verde) e envia notificação pelo Telegram se o hrabrosti estiver acima do limite
    • Desliga o alarmu (LED vermelho) e liga ili LED de status (verde) se o valor estiver abaixo do limite
  • 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)

  • Uz senzore, do alarme ili komande za ThingSpeak a cada 20 sekundi

Abaixo será descrita a programção de cada um dos principais módulos com o respectivo código para teste.

Spojite i obnovite WiFi

U IDE-u za Arduino otvorite datoteku-> Preferences eadicione em Dodatne URL-ove upravitelja odbora URL

Postavite, a zatim odaberite Alati-> Ploče-> Upravitelj ploča digite ESP8266, kliknite i instalirajte ih.

É needário definir 2 variáveis para conexão na rede:

  • WIFI_SSID: ime za redefiniranje WiFi veze s glasom radi povezivanja sustava
  • WIFI_PASSWORD: senha da rede

Za povezivanje Wi -Fi -ja, kodiranja ili povezivanja, promijenite kao varijaciju za povezivanje WIFI -ja na popisu datoteka i faksa za prijenos bez ESP8266.

#include /************************ PROMJENI KAO DEFINICIJE ABAIXO ******************* *******/ #define WIFI_SSID "YOUR WIFI SSID" // Ime za rede wifi #define WIFI_PASSWORD "VAŠA WIFI LOZINKA" // Senha da rede wifi WiFiClient klijent; // Função que faz a conexão wifi void ConnectToWiFi (void) {// Tenta conectar ao wifi Serial.println ("Conectando à rede WiFi"); WiFi.započni (WIFI_SSID, WIFI_PASSWORD); while (WiFi.status ()! = WL_CONNECTED) {odgoda (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi conectado com sucesso!"); Serial.println ("IP obtido:"); Serial.println (WiFi.localIP ()); } // Postavljanje da placa void setup () {Serial.begin (115200); kašnjenje (50); // Conecta ao wifi ConnectToWiFi (); }

Lendo dados radi senzor MQ135

Paralelno s senzorima MQ135, najbolje je to učiniti bibliotekom MQ135.h dodavanjem IDE-a u Arduino na izborniku 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 realization a leitura da koncentração de CO2 em ppm e imprime os valores lidos no serijski monitor.

#include "MQ135.h" #define SMOKE_SENSOR A0 // IO do sensor de fumaça float sensorValue; // Postavljanje da placa void setup () {Serial.begin (115200); kašnjenje (50); } // Loop principal void loop () {// Faz leitura do sensor MQ135 gasSensor = MQ135 (SMOKE_SENSOR); sensorValue = gasSensor.getPPM (); Serial.print ("Concentracao de CO2 (ppm):"); Serial.println (sensorValue); }

Escrevendo e lendo dados do ThingSpeak

Primeiro, dodaj u Biblioteku do ThingSpeak bez Arduino IDE -a. Alati-> Ploče-> Upravitelji ploča digitalan ThingSpeak, kliknite i instalirajte ih.

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 é needário definir as variáveis abaixo:

  • myChannelNumber: número do criado kanala bez ThingSpeak -a
  • 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 módulo ESP8266.

#include #include /************************ PROMJENI KAO DEFINICIJE ABAIXO ***************** *********/ #define WIFI_SSID "YOUR WIFI SSID" // Ime za rede wifi #define WIFI_PASSWORD "VAŠA WIFI LOZINKA" // Senha da rede wifi #define THINGSPEAK_WRITE_INTERVAL 20000 // Intervalo em ms entre envios de dados ao ThingSpeak /************************ PROMJENI KAO VARIÁVEIS ABAIXO ****************** ********/ unsigned long myChannelNumber = 0000000; // Numerički kanal za ThingSpeak const char * myWriteAPIKey = "vaš API API ključ"; // Chave de escrita do channel do ThingSpeak const char * myReadAPIKey = "vaš read api ključ"; // Chave de leitura do canal do ThingSpeak unsigned long lastTime; unsigned long currentTime; WiFiClient klijent; // Função que faz a conexão wifi void ConnectToWiFi (void) {// Konfiguracija korijenskog certifikata za api.telegram.org configTime (0, 0, "pool.ntp.org"); clientSecure.setTrustAnchors (& cert); // Tenta conectar ao wifi Serial.println ("Conectando à rede WiFi"); WiFi.započni (WIFI_SSID, WIFI_PASSWORD); while (WiFi.status ()! = WL_CONNECTED) {odgoda (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi conectado com sucesso!"); Serial.println (WiFi.localIP ()); } // Postavljanje da placa void setup () {Serial.begin (115200); kašnjenje (50); // Conecta ao wifi ConnectToWiFi (); // Inicializa ThingSpeak lastTime = 0; ThingSpeak.begin (klijent); } // Petlja glavne petlje void loop () {currentTime = millis (); // seta o tempo atual // Doznajte za ThingSpeak int vrijednost = ThingSpeak.readIntField (myChannelNumber, 1, myReadAPIKey); Serial.println ("Dado no campo 1 do ThingSpeak:"); Serial.println (vrijednost); // Verificira se o trenutku u kojem se može vidjeti da je ThingSpeak if ((currentTime - lastTime> THINGSPEAK_WRITE_INTERVAL)) {ThingSpeak.setField (1, 100); ThingSpeak.writeFields (myChannelNumber, myWriteAPIKey); lastTime = currentTime; } kašnjenje (20000); }

Enviando notificação pelo Telegram

Primeiro, dodatna biblioteka do Telegrama bez Arduino IDE -a. Na raspolaganju su vam Alati-> Ploče-> Upravitelj ploča digitalan UniversalTelegramBot, kliknite i instalirajte ih.

Abra o Telegram e siga as próximas etapas para criar um Bot. Primeiro, nabavite 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 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.

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 defineçõ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 /********************* ALTERARNE DEFINICIJE ABAIXO ******************* *******/ #define WIFI_SSID "YOUR WIFI SSID" // Ime za rede wifi #define WIFI_PASSWORD "YOUR WIFI PASSWORD" // Senha da rede wifi #define BOT_TOKEN "CHANGEYOURTOKEN" // Token do bot do telegram # definirati CHAT_ID "CHANGEYOURCHATID" // ID dopisivati putem telegrama X509List cert (TELEGRAM_CERTIFICATE_ROOT); WiFiClientSecure clientSecure; UniversalTelegramBot bot (BOT_TOKEN, clientSecure); // Envia notificação ao Telegram void SendTelegramNotification (String poruka) {bot.sendMessage (CHAT_ID, poruka, ""); Serial.println (poruka); } // Funkão que faz a conexão wifi void ConnectToWiFi (void) {// Konfiguracija korijenskog certifikata za api.telegram.org configTime (0, 0, "pool.ntp.org"); clientSecure.setTrustAnchors (& cert); // Tenta conectar ao wifi Serial.println ("Conectando à rede WiFi"); WiFi.započni (WIFI_SSID, WIFI_PASSWORD); while (WiFi.status ()! = WL_CONNECTED) {odgoda (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi conectado com sucesso!"); Serial.println ("IP obtido:"); Serial.println (WiFi.localIP ()); } // Postavljanje da placa void setup () {Serial.begin (115200); kašnjenje (50); // Conecta ao wifi ConnectToWiFi (); // Testa notificação pelo telegram SendTelegramNotification ("Testando envio de notificação."); }

Preporučeni: