İçindekiler:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
En büyük para trabalho para níveis de poeira ve gás num dado ambiyans, e karşılaştırmalı değerler, temel değerler ve temeller, e-posta uyarıları dahil olmak üzere, her şey dahil.
Adım 1: Bileşenler
Os seguintes bileşenleri são utilizados:
- DüğümMCU
- Gaz Sensörü MQ-2
- Sensör de Poeira ve Fumaça Dsm501a Arduino
GPIO'nun NodeMCU'su için önemli bir gözlemdir.
2. Adım: Uygulamalar
Os seguintes aplikativos são utilizados:
ThingSpeak: uma plataforma IoT açık kaynak gratuito, que izni yükleme de bilgi ve arka görselleştirme gerçek tempo;
Blynk: akıllı telefonlar (iOS ve Android) ile mikrokontrolörler (Arduino, Node MCU, Raspberry Pi, giriş çıkışları) entegrasyonunu basitleştirmeye izin verir.
3. Adım: Montagem Do Ambiente
Primeiramente, hiçbir ThingSpeak içermez. Siga, sitenin yaptığı gibi:
Em seguida, cue um novo kanal, e defina os parametros que serão recebidos. Você receberá um número de identificação (ID) canal criado em seu e-posta gönder. Este ID é necessário para fazer o yükleme de dados para o seu canal.
Agora, vamos yapılandırıcı o Blynk:
Blynk para o seu Android, e cria uma hiçbir hizmet içermez. Em seguida, cue um novo projeto, e escolha ve plataforma, NodeMCU'nun iç kasası. Bir projeyi onaylayın, enviado para seu e-posta ve autenticação e-posta gönderin.
Adım 4: Programação
NodeMCU projesini kodlamak yerine, Arduino için bir IDE kullanır (veja aqui como configurar:
Primeiramente, vamos incluir bibliotecas para comunicação com o ThingSpeak ve Blynk gerekliliği olarak:
#Dahil etmek
WiFiClient istemcisi; /* Blynk */ #define BLYNK_PRINT Seri #include
En iyi ve en önemli algılayıcılar:
/* Gaz sensörü */#tanımla mq2 A0 //MQ-2 analog
int valor_mq2 = 0;
/* Poeira Sensörü */
#define dsmpin 2 //DSM501A giriş D4 bayt buff[2]; imzasız uzun süre; imzasız uzun başlangıç zamanı; imzasız uzun bitiş zamanı; imzasız uzun sampletime_ms = 1000; işaretsiz uzun düşük nabız doluluk = 0; kayan nokta oranı = 0; yüzer konsantrasyon = 0;
/******************************************************** ** * Recebendo Dados Sensor de Gás yapar ********************************************** *********/ geçersiz getGasData(void) { valor_mq2 = 0; gecikme (1000); int N=9; for(int i = 0; i 130){ Blynk.email("[email protected]", "Gaz Sensörü", "ALERTA de Concentração de Gás!!!"); Serial.println(" enviado de uyarı e-postası"); } } /************************************************************ **** * Recebendo Dados Sensör de Poeira ******************************************** ***********/ void getPoeiraData(void) { süre = pulseIn(dsmpin, LOW); düşük nabız doluluğu += süre; bitiş zamanı = millis(); yüzer yardımcı1, yardımcı2 = 0; if ((bitiş zamanı-başlangıç zamanı) > örnekzaman_ms) { aux1 = (düşük darbeli doluluk-bitiş zamanı+başlangıç zamanı + örnekzaman_ms)/(örnekzamanı_ms*10.0); // Tamsayı yüzdesi 0=>100 aux2 = 0.1*pow(aux1, 2)+(619*aux1)+50; // teknik özellik sayfası eğrisi kullanılarak if (aux1 42){ Blynk.email("[email protected]", "Sensor de Poeira", "ALERTA de Concentração de Poeira!!!"); Serial.println(" enviado e-posta uyarısı"); } } }
Şunu gözlemleyin:
Blynk.email("[email protected]", "Sensor de Poeira", "ALERTA de Concentração de Poeira!!!");
ThingSpeak ile ilgili tüm duyular salvolar, agora vamos envia-los para o ThingSpeak. ThingSpeak ile iletişim, HTTP protokolü, efetuando uma requisição POST kullanımı.
/******************************************************** ** * Enviando os Dados para o ThingSpeak ********************************************** *********/ void sendDataTS(void) { if (client.connect(sunucu, 80)) { String postStr = apiKey; postStr += "&field1="; postStr += Dize(oran); postStr += "&field2="; postStr += String(konsantrasyon); postStr += "&field3="; postStr += Dize(valor_mq2); postStr += "\r\n\r\n"; client.print("POST /HTTP/1.1 güncelleme\n"); client.print("Ana Bilgisayar: api.thingspeak.com\n"); client.print("Bağlantı: kapat\n"); client.print("X-THINGSPEAKAPIKEY: " + apiKey + "\n"); client.print("Content-Type: application/x-www-form-urlencoded\n"); client.print("İçerik-Uzunluk: "); client.print(postStr.length()); client.print("\n\n"); client.print(postStr); gecikme(1000); } müşteri.durdur(); }
Neste código, é montado o cabeçalho da requisição HTTP, adicionando o ID do canal criado (apiKey), e uma string contendo cada um dos parâmetros (canal, com os valores, com os valores) e gaz (konsantre gaz). No ThingSpeak, você pode visualizar as informações em forma de gráficos.
Finalmente, enviamos os mesmos dados para um aplikativo Android com o Blynk:
/******************************************************** ** * Enviando Dados para o Blynk ********************************************* ********/ geçersiz sendDataBlynk() { Blynk.virtualWrite(10, oran); //pin V10 Blynk.virtualWrite(11, konsantrasyon); // pin V11 Blynk.virtualWrite(12, valor_mq2); //sanal pin V12 }
Adım 5: Sonuç
Tamamlandı, en iyi şekilde, çevrimiçi görselleştirme ve görselleştirme ile ilgili tüm temel bilgiler ve çevrimiçi ortamlar, çevrimiçi ortamlar ve gelişmeler.
Arabalar:
- Egon Patrick Marques Silva
- Frederico Clark
- Paola Fróes