সুচিপত্র:

প্রজেটো আইওটি - সিস্টেম ডিটেক্টর ডি ফুমানা: 5 টি ধাপ
প্রজেটো আইওটি - সিস্টেম ডিটেক্টর ডি ফুমানা: 5 টি ধাপ

ভিডিও: প্রজেটো আইওটি - সিস্টেম ডিটেক্টর ডি ফুমানা: 5 টি ধাপ

ভিডিও: প্রজেটো আইওটি - সিস্টেম ডিটেক্টর ডি ফুমানা: 5 টি ধাপ
ভিডিও: জাগুয়ার গবাদি পশুকেও ক্ষমা করে না 2024, জুলাই
Anonim
প্রজেটো আইওটি - সিস্টেম ডিটেক্টর ডি ফুমানা
প্রজেটো আইওটি - সিস্টেম ডিটেক্টর ডি ফুমানা

ভূমিকা

O Sistema Detector de Fumaça consiste em uma solução IoT com o objetivo de permitir o monitoramento de alarms 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 via Telegram em caso de ativação do alarme de incêndio।

Desenvolvedores

  • ব্রুনো গোনালভেস পেরেইরা
  • জোয়াও পাওলো তাদেউ বোর্হেস পাইভা
  • জুলিয়ানা গুইমারিস সোয়ারেস বুয়ার
  • উইলান আলেকজান্ডার কন্ডর আসেনজো

ধাপ 1: ম্যাটারিয়াইজ ইউটিলিজাডোস

ম্যাটারিয়াইজ ইউটিলিজাদোস
ম্যাটারিয়াইজ ইউটিলিজাদোস
ম্যাটারিয়াইজ ইউটিলিজাদোস
ম্যাটারিয়াইজ ইউটিলিজাদোস
ম্যাটারিয়াইজ ইউটিলিজাদোস
ম্যাটারিয়াইজ ইউটিলিজাদোস
ম্যাটারিয়াইজ ইউটিলিজাদোস
ম্যাটারিয়াইজ ইউটিলিজাদোস

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

  • Muldulo WiFi ESP8266 NodeMcu ESP-12: Placa de desenvolvimento que combina o chip ESP8266 (comunicação WiFi), uma interface usb-serial e um regulador de tensão 3.3V। A programmeção pode ser feita usando a IDE do Arduino, através 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 muldulo capaz de detectar vários tipos de gases tóxicos como amônia, dióxido de carbono, benzeno, óxido nítrico, e também fuma
  • নেতৃত্বে vermelho
  • নেতৃত্বাধীন
  • 2 প্রতিরোধক 200Ω
  • Protoboard e jumpers para conexão e teste do protótipo

ধাপ 2: কনফিগারেশন ডু থিংসস্পিক

Configuração Do ThingSpeak
Configuração Do ThingSpeak
Configuração Do ThingSpeak
Configuração Do ThingSpeak
Configuração Do ThingSpeak
Configuração Do ThingSpeak

O ThingSpeak é um serviço de plataforma IoT para armazenar e recuperar dados usando o protocolo HTTP e MQTT pela internet ou por meio de uma rede local। ThingSpeak permite 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 ou aproximadamente 8000 mensagens por dia)। প্যারা প্রজেক্টোস মেইওরস আউ এপ্লিকেশনস কমার্সাইস, কোয়াট্রো টিপোস ডিফারেন্টস ডি লাইসেন্স এ্যানুয়াল সেও অফ এরেসিডোস: স্ট্যান্ডার্ড, একাডেমিক, স্টুডেন্ট এবং হোম।

কনফিগুরাও ডি উম খাল নো থিংসস্পিক

Após criar uma conta no ThingSpeak, é needário criar um খাল। Os canais armazenam os dados enviados de um determinado projeto। Cada খাল 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:

  • ক্ষেত্র 1: Concentração de gás
  • ক্ষেত্র 2: অ্যালার্ম
  • মাঠ 3: কোমান্ডো দেশলিগার

Na aba "Private View" é possível criar as visualizações de cada um dos campos criados। নেস্টে প্রজেটো, ফোরাম ক্রাইডোস:

  • 1 gráfico com os dados de concentraçã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 এলার্ম 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 কী" são disponibilizadas as chaves para escrita (API কী লিখুন) e leitura (পড়ুন API কী) de dados no খাল। Al dism 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 as chaves serão usadas posteriormente no código do microcontrolador। J API এপিআই রিকোয়েস্টের জন্য অ্যান্ড্রয়েড অ্যাপলিকেশন ব্যবহার করে।

ধাপ 3: অ্যাপলিক্যাটিভো - এমআইটি অ্যাপ উদ্ভাবক

অ্যাপলিক্যাটিভো - এমআইটি অ্যাপ আবিষ্কারক
অ্যাপলিক্যাটিভো - এমআইটি অ্যাপ আবিষ্কারক
অ্যাপলিক্যাটিভো - এমআইটি অ্যাপ আবিষ্কারক
অ্যাপলিক্যাটিভো - এমআইটি অ্যাপ আবিষ্কারক
অ্যাপলিক্যাটিভো - এমআইটি অ্যাপ আবিষ্কারক
অ্যাপলিক্যাটিভো - এমআইটি অ্যাপ আবিষ্কারক
অ্যাপলিক্যাটিভো - এমআইটি অ্যাপ আবিষ্কারক
অ্যাপলিক্যাটিভো - এমআইটি অ্যাপ আবিষ্কারক

O aplicativo para monitoramento do systeme foi desenvolvido utilizando o MIT App Inventor। হে এমআইটি অ্যাপ উদ্ভাবক অ্যান্ড্রয়েড এবং আইওএস -এর জন্য এই অ্যাপটি ব্যবহার করা যেতে পারে।

Para começar, 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 as telas do aplicativo, selecionando os ingredientses essentialários (botões, labels, imagen, etc.) no menu lateral esquerdo (Palette)। Para cada um dos ingredientses selecionados, é possível alterar configurações de cores, tamanho, posição, entre outras no menu lateral direito (Properties)।

Na tela Blocks é feita toda a lógica de programmação do aplicativo। একটি কর্মসূচী é feita através de blocos, facilitando o desenvolvimento para iniciantes।

Clicdigo এর ব্যাখ্যা

Duas variáveis locais são inicializadas: alarmData e sensorData।

A cada 1 segundo (definido pelo Clock1), o aplicativo faz um request de dados no canal ThingSpeak através da URL de leitura de dados que pode ser copiada na aba "API কী"। Quando os dados são retornados, o dado do sensor correspondente à concentração de gás CO2 é mostrado na tela do aplicativo। Já o dado do alarm é testado:

  1. 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 এলার্ম (Button1) é habilitado।
  2. Se o alarm 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 এলার্ম (Button1) é desabilitado।

Quado 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 copiada na aba "API কী"।

ধাপ 4: Montagem Do Protótipo

Montagem Do Protótipo
Montagem Do Protótipo

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

সেন্সর MQ135

  • Pino AO: conectado ao pino AD0 do módulo ESP8266
  • Pino GND: conectado ao GND do módulo ESP8266
  • Pino Vcc: conectado ao pino VIN do módulo 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) এবং outra perna do resistor
  • কানেক্টর ও ক্যাটোডো ডু এলইডি (নেগেটিভো - মেনোর পারনা) কোন জিএনডি ডু ইডু ইএসপি 8266

LED vermelho

  • Conectar uma perna doresistor de 200Ω no pino D7 do módulo ESP8266।
  • Conectar o anodo do LED (positivo - maior perna) এবং outra perna do resistor
  • কানেক্টর ও কাতোডো ডু এলইডি (নেগেটিভো - মেনোর পারনা) কোন জিএনডি মডুলো ইএসপি 8266

ধাপ 5: মাইক্রোকন্ট্রোলোডার প্রোগ্রাম করুন

O microcontrolador do módulo ESP8266 foi programmado 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।

ফ্লাক্সো সেটআপ করুন:

  • Inicializa একটি পোর্টা সিরিয়াল
  • Inicializa os আউটপুট (pinos dos leds)
  • ওয়াইফাই সংযোগ করুন
  • Inicializa o ThingSpeak

Fluxo do লুপ:

  • Lê os dados do sensor MQ135
  • Verifica se a concentração de gás CO2 ultrapassa o limite definido (আদর্শ: CO2 <= 700 ppm)

    • লিগা হে এলার্ম (এলইডি ভার্মেলহো), ডেসলিগা ও এলইডি ডি স্ট্যাটাস (ভার্ডে) ই এনভিয়া নোটিফিকেশন পেলো টেলিগ্রাম সে ও ভ্যালার এস্টিভার এসিমা ডো লিমিটেড
    • Desliga o এলার্ম (LED vermelho) e liga o LED de status (verde) se o valor estiver abaixo do limite
  • Lê o dado de "comando desligar alarm" do ThingSpeak

    Se o comando = 1, desliga o alarme (LED vermelho) e liga o LED de status (verde)

  • Envia dados do sensor, do a alarm e de comando para o ThingSpeak a cada 20 segundos

Abaixo será descrita a programmação de cada um dos Principais módulos com o respectivo código para teste।

ওয়াইফাই সংযোগ করুন

Abdu a IDE do Arduino, vá em File-> Preferences eadicione em অতিরিক্ত বোর্ড ম্যানেজার ইউআরএল একটি URL

Em seguida, vá em Tools-> Boards-> Boards Manager digite ESP8266, clique em instalar e fechar।

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

  • WIFI_SSID: Nome da rede WiFi que você deseja conectar seu systemema
  • ওয়াইফাই_ পাসওয়ার্ড: সেনহা দা রেড

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।

#অন্তর্ভুক্ত /************************************ ***** // 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); যখন (WiFi.status ()! = WL_CONNECTED) {বিলম্ব (500); সিরিয়াল.প্রিন্ট ("।"); } Serial.println (""); Serial.println ("WiFi conectado com sucesso!"); Serial.println ("IP obtido:"); Serial.println (WiFi.localIP ()); } // সেটআপ দা প্লাকা অকার্যকর সেটআপ () {Serial.begin (115200); বিলম্ব (50); // Conecta ao wifi ConnectToWiFi (); }

Lendo dados do সেন্সর 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।

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।

#অন্তর্ভুক্ত "MQ135.h" #সংজ্ঞায়িত SMOKE_SENSOR A0 // IO do sensor de fumaça float sensorValue; // সেটআপ দা প্লাকা অকার্যকর সেটআপ () {Serial.begin (115200); বিলম্ব (50); } // লুপ প্রিন্সিপাল ভয়েড লুপ () {// ফাজ লেইটুর ডু সেন্সর MQ135 গ্যাসসেন্সর = MQ135 (SMOKE_SENSOR); sensorValue = gasSensor.getPPM (); Serial.print ("Concentracao 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 é essentialá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 módulo ESP8266।

#অন্তর্ভুক্ত করুন #অন্তর্ভুক্ত করুন ******* দাদোস আও থিংসস্পিক ********/ স্বাক্ষরবিহীন দীর্ঘ myChannelNumber = 0000000; // Nromero do Canal do ThingSpeak const char * myWriteAPIKey = "your write api key"; // Chave de escrita do Canal do ThingSpeak const char * myReadAPIKey = "আপনার পড়া api কী"; // চ্যাভ দে লেটুরা ডু ক্যানাল ডু থিংসস্পিক স্বাক্ষরবিহীন দীর্ঘ শেষ সময়; স্বাক্ষরবিহীন দীর্ঘ কারেন্টটাইম; ওয়াইফাই ক্লায়েন্ট ক্লায়েন্ট; // Função que faz a conexão wifi void ConnectToWiFi (void) {// Configura root certificate para api.telegram.org configTime (0, 0, "pool.ntp.org"); clientSecure.setTrustAnchors (& cert); // Tenta conectar ao wifi Serial.println ("Conectando à rede WiFi"); WiFi.begin (WIFI_SSID, WIFI_PASSWORD); যখন (WiFi.status ()! = WL_CONNECTED) {বিলম্ব (500); সিরিয়াল.প্রিন্ট ("।"); } Serial.println (""); Serial.println ("WiFi conectado com sucesso!"); Serial.println (WiFi.localIP ()); } // সেটআপ দা প্লাকা অকার্যকর সেটআপ () {Serial.begin (115200); বিলম্ব (50); // Conecta ao wifi ConnectToWiFi (); // Inicializa ThingSpeak lastTime = 0; ThingSpeak.begin (ক্লায়েন্ট); } // লুপ প্রিন্সিপাল ভয়েড লুপ () {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 (মান); // Verifica se é o momento de enviar dados ao ThingSpeak if ((currentTime - lastTime> THINGSPEAK_WRITE_INTERVAL)) {ThingSpeak.setField (1, 100); ThingSpeak.writeFields (myChannelNumber, myWriteAPIKey); শেষ সময় = বর্তমান সময়; } বিলম্ব (20000); }

Enviando notificação pelo Telegram

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 próximas etapas para criar um Bot। প্রাইমিরো, প্রোকোর পোর বটফাদার ই ক্লিক নেলে। A janela a seguir deve abrir e você será solicitado a clicar no botão Iniciar। Digite /newbot e siga যন্ত্র হিসাবে 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 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 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

#অন্তর্ভুক্ত #অন্তর্ভুক্ত #অন্তর্ভুক্ত #*** *******/ #Difine WIFI_SSID "YOUR WIFI SSID" // Nome da rede wifi #define WIFI_PASSWORD "YOUR WIFI PASSWORD" // Senha da rede wifi #define BOT_TOKEN "CHANGEYOURTOKOKEN" CHAT_ID "CHANGEYOURCHATID" সংজ্ঞায়িত করুন WiFiClientSecure clientSecure; ইউনিভার্সাল টেলিগ্রামবট বট (BOT_TOKEN, clientSecure); // Envia notificação ao Telegram void SendTelegramNotification (স্ট্রিং মেসেজ) {bot.sendMessage (CHAT_ID, message, ""); Serial.println (বার্তা); } // Função que faz a conexão wifi void ConnectToWiFi (void) {// Configura root certificate para api.telegram.org configTime (0, 0, "pool.ntp.org"); clientSecure.setTrustAnchors (& cert); // Tenta conectar ao wifi Serial.println ("Conectando à rede WiFi"); WiFi.begin (WIFI_SSID, WIFI_PASSWORD); যখন (WiFi.status ()! = WL_CONNECTED) {বিলম্ব (500); সিরিয়াল.প্রিন্ট ("।"); } Serial.println (""); Serial.println ("WiFi conectado com sucesso!"); Serial.println ("IP obtido:"); Serial.println (WiFi.localIP ()); } // সেটআপ দা প্লাকা অকার্যকর সেটআপ () {Serial.begin (115200); বিলম্ব (50); // Conecta ao wifi ConnectToWiFi (); // Testa notificação pelo telegram SendTelegramNotification ("Testando envio de notificação।"); }

প্রস্তাবিত: