İçindekiler:

Projeto IoT - Sistema Dedektör De Fumaça: 5 Adım
Projeto IoT - Sistema Dedektör De Fumaça: 5 Adım

Video: Projeto IoT - Sistema Dedektör De Fumaça: 5 Adım

Video: Projeto IoT - Sistema Dedektör De Fumaça: 5 Adım
Video: DIY Radar With Ultrasonic Sensor And Chat-GPT Generated Arduino Code | Coders Cafe 2024, Temmuz
Anonim
Projeto IoT - Sistema Dedektör De Fumaça
Projeto IoT - Sistema Dedektör De Fumaça

giriş

O Sistema Dedektör de Fumaça, IoT'nin nesnelerinin tümünün izinlerini almak veya denetlemek ve alarmları denetlemek için tüm çözümleri içerir. O projeto é baseado em um mikrokontrolör que se comunica com a nuvem pela rede WiFi, enviando os sinais algılamak için sensör de fumaça. Tescilli ikametgah, ortak izleme sistemi ve başvuruları ve başvuruları Telegram aracılığıyla bildirimler alın.

Desenvolvedores

  • Bruno Gonçalves Pereira
  • João Paulo Tadeu Borges Paiva
  • Juliana Guimarães Soares Buere
  • Willan Alexander Condor Asenjo

Adım 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:

  • Modül WiFi ESP8266 NodeMcu ESP-12: ESP8266 (WiFi iletişim ağı), uma arabirimi usb seri e um düzenleyici 3.3V. Arduino için bir IDE programı, kablo mikro-usb aracılığıyla iletişim kuruyor.
  • Gaz Toksikleri için MQ-135 Sensörü: O Gazlar için MQ-135 çeşitli sensörler için sensörler, çeşitli gazlar için sensörler, amônia, dióxido de carbono, benzeno, nítrico, e também fumacool.
  • Led vermelho
  • led verde
  • 2 Direnç 200Ω
  • Protoboard ve jumper'lar, ilk kullanım için teste tabi tutuluyor

Adım 2: ThingSpeak Yapın

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, platformun IoT'sinin desteğiyle ve yeniden yapılandırmayla ilgili olarak, HTTP ve MQTT protokollerini kullanarak, İnternet'i yerel olarak yeniden yapılandırıyor. ThingSpeak, toplanmaya, görselleştirmeye ve analize izin verir fluxos de dados na nuvem.

O ThingSpeak, ücretsiz olarak ücretsiz olarak dağıtılabilir (en fazla 8000 mensagens için yaklaşık 3 milhões de mensagens). Ana projeler ve başvurular, dörtlü tipos farklı lisanslar için yıllık lisans: Standart, Akademik, Öğrenci ve Ev.

Configuração de um canal no ThingSpeak

Após criar uma con no ThingSpeak, é necessário criar um canal. Os canais armazenam os dados enviados de um determinado projeto. Cada kanalı dahil 8 kampüs que podem conter qualquer tipo de dados, mais 3 campos para dados de localização ve 1 para dados de status. Depois de coletar, em um canal, você pode usar os uygulamaları ve ThingSpeak para analistisá-los ve visualizá-los.

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

  • Alan 1: Gaz Konsantresi
  • Alan 2: Alarm
  • Alan 3: Komando desligar

Na aba "Private View" é olass criar olarak görselleştirmeler de cada um dos campos criados. Neste projeto, foram criados:

  • 1 gráfico com os, gazın yoğunlaştığı tempoda CO2 em função
  • 1 gösterge de led para indicação de alarme
  • 1 gráfico com os dados de comando desligar alarme em função tempo yapmak

Leitura e escrita hiçbir ThingSpeak

O canal do ThingSpeak é criado com um identificador único (Kanal Kimliği) que possibilita sua identificação para envio e leitura de dados. "API Anahtarları", hiçbir kanal olmadan (API Anahtarını Yaz) e leitura (API Anahtarını Oku) olarak kullanılabilir. Além disso, API İstekleri olarak também são disponibilizadas (HTTP alma istekleri) que também podem ser usadas para envio e requisição de dados.

O identificador canal e as chaves serão usadas posteriormente no código do microcontrolador yapmak. API olarak Já, Android'in uygulama programlarında kullanılması için istekte bulunur.

3. Adım: Aplicativo - MIT App Inventor

Uygulama - MIT Uygulama Mucidi
Uygulama - MIT Uygulama Mucidi
Uygulama - MIT Uygulama Mucidi
Uygulama - MIT Uygulama Mucidi
Uygulama - MIT Uygulama Mucidi
Uygulama - MIT Uygulama Mucidi
Uygulama - MIT Uygulama Mucidi
Uygulama - MIT Uygulama Mucidi

MIT App Inventor'ın sistematiği için izleme ve izleme uygulamaları. O MIT App Inventor, web ortamını ücretsiz olarak hazırlar ve dahası, daha fazla bilgi için, Massachusetts Teknoloji Enstitüsü'nün (MIT) entegrasyonunu sağlar. Android ve iOS için programlanabilir uygulamalar için izin verilir.

MIT App Inventor'ı, IotProject_SmokeDetector'ı kullanmaya başlama.

Telas'ın uygulamaları, bileşenlerini seçme (botões, etiketler, görseller, vb.) için herhangi bir menü yanal esquerdo (Palet) olmadığı için Designer é possível montar. Para cada um dos bileşenleri seçimler, é olası alt yapı yapılandırmaları, tamanho, posição, entre outras no lateral direito (Özellikler).

Bloklar ve uygulamalar, bugün için bir mantık yürütmektedir. Bir programacão é feita através de blocos, facilitando veya desenvolvimento para iniciantes.

Açıklama

Şunlar için geçerlidir: alarmData ve sensorData.

Bir cada 1 segundo (tanımlanmış pelo Clock1), o aplicativo faz um istek de dos no canal ThingSpeak, URL'nin gerçek zamanlı olarak kullanılmasına izin verir "API Anahtarları". Gaz CO2'yi en iyi şekilde değerlendiren sensör yazışmaları ve uygulamaları. Alarme é testado do o dado:

  1. En iyi alarm verisi (alarmData = 1), "Atenção! Sua casa está em perigo!" En kötü alarm durumu (Button1) ve habilitado.
  2. En büyük alarm verisi (alarmData = 0), "Alarm yok! Sorun değil." Alarmı ortadan kaldır (Düğme1) ve desabilitado.

Clicado için alarmı kontrol et (Düğme1), o aplicativo escreverá 1 no campo Field3: ThingSpeak yok, ThingSpeak yok, alarmı kontrol et. "API Anahtarları" için URL'yi en iyi şekilde kullanın.

4. Adım: Montaj Protótipo

Montagem Do Protótipo
Montagem Do Protótipo

O protótipo foi montado, hiçbir protokole uygun gösterge yok.

Sensör MQ135

  • Pino AO: conectado ao pino AD0 módulo ESP8266 yapmak
  • Pino GND: conectado ve GND modül ESP8266 yapmak
  • Pino Vcc: conectado ao pino VIN yapmak modulo ESP8266

LED verde

  • Conectar uma perna rezistör de 200Ω pino yok D5 do módulo ESP8266
  • Conectar veya anodo do LED (pozitif - maior perna) ve harici direnç
  • Conectar veya catodo do LED (negatif - menor perna) GND do módulo yok ESP8266

LED vermelho

  • Conectar uma perna doresistor de 200Ω pino yok D7 modül ESP8266.
  • Conectar veya anodo do LED (pozitif - maior perna) ve harici direnç
  • Conectar veya catodo do LED (negatif - menor perna) GND do módulo yok ESP8266

Adım 5: Programação Do Mikrodenetleyici

O mikrodenetleyici, ESP8266'yı programlamak için bir IDE Arduino'yu kullanır (ön yüz veya indirme aqui).

O código yazı tipi tam kullanımlı projeto pode yok ser baixado nihai hedef eğitimi yok (Iot_project.ino). Temel işlevler için temel ilkeler: kurulum ve döngü.

Fluxo kurulumu yapın:

  • Inicializa bir porta seri
  • Inicializa os çıkışları (pinos dos ledleri)
  • Conecta à rede WiFi
  • Inicializa o ThingSpeak

Fluxo do döngüsü:

  • Lê os dados do sensörü MQ135
  • Yoğunlaştırılmış gaz CO2 ultrapassa veya sınırlı tanımlı doğrulama (ideal: 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 alarm (LED vermelho) e liga o 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)

  • Envia dados sensörü yapın, alarme e de comando para o ThingSpeak a cada 20 segundos yapın

Abaixo'nun tanımladığı bir program, tüm koşulların esaslarını içerir.

Kablosuz bağlantı ve kablosuz bağlantı

Abra a IDE do Arduino, vá em Dosya->Tercihler eadicione em Ek Kurul Yöneticisi URL'leri bir URL

Em seguida, vá em Araçlar->Panolar->Boards Manager digite ESP8266, clique em instalar e fechar.

Gereksinimler için 2 değişkenli değişken:

  • WIFI_SSID: WiFi sorgusunu yeniden adlandırın
  • WIFI_PASSWORD: tekrar tekrar

Teste de conex, WiFi, abaixo için kopyala, çeşitli değişikliklerle değiştir WIFI listeleri, acima ve faça ESP8266 yükleme yok.

#include /************************ DEFINIÇÕES ABAIXO OLARAK DEĞİŞTİRİLMİŞTİR ******************* *******/ #define WIFI_SSID "WIFI SSID'İNİZ" // Wifi yeniden tanımla #WIFI_PASSWORD tanımla "WIFI ŞİFRENİZ" // Wi-Fi WiFiClient istemcisini yeniden kullan; // Wi-Fi bağlantısının geçersiz olması için Wi-Fi bağlantısının olmaması(void){ // Tenta conectar ao wifi Serial.println("Conectando à rede WiFi"); WiFi.begin(WIFI_SSID, WIFI_PASSWORD); while (WiFi.status() != WL_CONNECTED) { gecikme(500); Seri.print("."); } Serial.println(""); Serial.println("WiFi bağlantısı başarılı!"); Serial.println("IP obtido: "); Serial.println(WiFi.localIP()); } // Boşluk kurulumu için kurulum(){ Serial.begin(115200); gecikme(50); // Wi-Fi Bağlantısı ConnectToWiFi(); }

Lendo dados sensörü MQ135 yapmak

MQ135 sensörünün temel işlevleri, MQ135.h ve IDE için bir kitaplık geliştirme, Arduino'ya ilişkin özellikler menüsü Skect->Include Library->Add. ZIP Library.

Depois, kopyala o código abaixo ve faça, hiçbir modül yüklemeden ESP8266 mikro-usb'ye izin verir. CO2 ve ppm için en önemli değerlerin seri monitör olmamasını sağlamak.

#include "MQ135.h" #define SMOKE_SENSOR A0 // IO do sensor de fumaça float sensorValue; // Boşluk kurulumu için kurulum(){ Serial.begin(115200); gecikme(50); } // Döngü ana boşluk döngüsü(){ // Hareketli sensör MQ135 gasSensor = MQ135(SMOKE_SENSOR); sensorValue = gasSensor.getPPM(); Serial.print("Concentracao de CO2 (ppm): "); Serial.println(sensorValue); }

Escrevendo e lendo dados ThingSpeak yapmak

Primeiro, Adicione a Biblioteca do ThingSpeak no Arduino IDE. Vá em Tools->Boards->Boards Manager digite ThingSpeak, clique em instalar e fechar.

ThingSpeak'in ücretsiz bir versiyonu, en iyi şekilde 20 saniye, daha fazla güncelleme, en iyi güncellemeler için enviar os dados yükleme yok.

Para comunicar com o ThingSpeak é necessário definir as variáveis abaixo:

  • myChannelNumber: número do canal criado no ThingSpeak
  • myWriteAPIKey: ThingSpeak'i canal yapmak için can atıyor
  • myReadAPIKey: canal do ThingSpeak yapmak

ThingSpeak ile iletişim kurun, kopyalayın, kopyalayın.

#include #include /**************************** DEFINIÇÕES ABAIXO OLARAK DEĞİŞTİR ****************** *********/ #define WIFI_SSID "SİZİN WIFI SSID'İNİZ" // Wifi kodunu yeniden tanımlayın #WIFI_PASSWORD tanımlayın "WIFI ŞİFRENİZ" // Wi-Fi'yi yeniden tanımlayın #THINGSPEAK_WRITE_INTERVAL 20000 // Aralığı em ms giriş envios de dados ao ThingSpeak /************************** VARIÁVEIS ABAIXO ****************** OLARAK DEĞİŞTİR ********/ imzasız uzun myChannelNumber = 0000000; // ThingSpeak yapmak için Número do canal const char * myWriteAPIKey = "yazma api anahtarınız"; // ThingSpeak const char * myReadAPIKey = "okuma API anahtarınız"; // Chave de leitura do canal do ThingSpeak unsigned long lastTime; imzasız uzun currentTime; WiFiClient istemcisi; // Kablosuz bağlantıyı geçersiz kıl ConnectToWiFi(void){ // api.telegram.org için kök sertifika yapılandırma configTime(0, 0, "pool.ntp.org"); clientSecure.setTrustAnchors(&cert); // Tenta conectar ve wifi Serial.println("Conectando à rede WiFi"); WiFi.begin(WIFI_SSID, WIFI_PASSWORD); while (WiFi.status() != WL_CONNECTED) { gecikme(500); Seri.print("."); } Serial.println(""); Serial.println("WiFi bağlantısı başarılı!"); Serial.println(WiFi.localIP()); } // Boşluk kurulumu için kurulum(){ Serial.begin(115200); gecikme(50); // Wi-Fi Bağlantısı ConnectToWiFi(); // Inicializa ThingSpeak lastTime = 0; ThingSpeak.begin(istemci); } // Döngü ana geçersiz döngü(){ currentTime = millis(); // Tempo atual'ı ayarlayın // ThingSpeak yapmak için Lê dados int değeri = ThingSpeak.readIntField(myChannelNumber, 1, myReadAPIKey); Serial.println("Dado no campo 1 do ThingSpeak:"); Seri.println(değer); // ThingSpeak if((currentTime - lastTime > THINGSPEAK_WRITE_INTERVAL)) { ThingSpeak.setField(1, 100); ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey); lastTime = currentTime; } gecikme (20000); }

Enviando notificação pelo Telgraf

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. Primeiro, klik nele'den satın alın. Bir janela a seguir deve abrir e você será solicitado a clicar no botão Iniciar. Digite /newbot e siga as criar seu bot için talimatlar. En iyi şey değil. criado com sucesso için Se o seu bot, 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 con do Telegram, pequise IDBot. Inicie uma conversa com esse bot e digite/getid. Kullanıcıların kimlik bilgilerini kullanın. Salve o ID, porque você precisará dele para enviar de notificações.

Telgrafı envio destifica e n e n e n e e l e n e k e n e n e n e n e n e k e l e n e k e l e n e k e l e n e n e n e n e n e n e n e d e n e n e n e n e e n e n e n e n e n e lendir.

#include #include #include /********************* ALTERAR TANIMLAMALAR ABAIXO ******************* *******/ #define WIFI_SSID "SİZİN WIFI SSID'İNİZ" // Wifi'yi yeniden tanımlayın #WIFI_PASSWORD "WIFI ŞİFRENİZ" // Wi-Fi'yi yeniden tanımlayın #define BOT_TOKEN "CHANGEYOURTOKEN" // Token do telgraf yapmak # CHAT_ID tanımla "CHANGEYOURCHATID" // Sohbet yapma kimliği X509List sertifikası(TELEGRAM_CERTIFICATE_ROOT); WiFiClientSecure clientSecure; UniversalTelegramBot bot(BOT_TOKEN, clientSecure); // Envia notificação ao Telegram void SendTelegramNotification(String mesajı) { bot.sendMessage(CHAT_ID, mesaj, ""); Serial.println(mesaj); } // Wifi bağlantısının geçersiz olması ConnectToWiFi(void){ // api.telegram.org için kök sertifika yapılandırması configTime(0, 0, "pool.ntp.org"); clientSecure.setTrustAnchors(&cert); // Tenta conectar ve wifi Serial.println("Conectando à rede WiFi"); WiFi.begin(WIFI_SSID, WIFI_PASSWORD); while (WiFi.status() != WL_CONNECTED) { gecikme(500); Seri.print("."); } Serial.println(""); Serial.println("WiFi bağlantısı başarılı!"); Serial.println("IP obtido: "); Serial.println(WiFi.localIP()); } // Placa void setup(){ Serial.begin(115200); gecikme(50); // Wi-Fi Bağlantısı ConnectToWiFi(); // Testa notificação pelo telegram SendTelegramNotification("Testando envio de notificação."); }

Önerilen: