İçindekiler:

MQTT Kullanarak Kablosuz Basınç Sensörü Verilerini Yayınlama: 7 Adım
MQTT Kullanarak Kablosuz Basınç Sensörü Verilerini Yayınlama: 7 Adım

Video: MQTT Kullanarak Kablosuz Basınç Sensörü Verilerini Yayınlama: 7 Adım

Video: MQTT Kullanarak Kablosuz Basınç Sensörü Verilerini Yayınlama: 7 Adım
Video: Ziraat Vakti - IoT (Nesnelerin İnterneti)'nin Tarımda Kullanımı 11.Gün 2024, Kasım
Anonim
MQTT Kullanarak Kablosuz Basınç Sensörü Verilerini Yayınlama
MQTT Kullanarak Kablosuz Basınç Sensörü Verilerini Yayınlama

ESP32 veESP 8266, IoT alanında çok tanıdık SoC'lerdir. Bunlar IoT projeleri için bir nevi nimettir. ESP 32, entegre WiFi ve BLE'ye sahip bir cihazdır. Sadece SSID'nizi, parolanızı ve IP yapılandırmalarınızı verin ve bunları buluta entegre edin. İşte bu talimatta, IoT platformu, MQTT, Captive portalları vb. Gibi IoT'nin bazı temel terimleri üzerinde düşüneceğiz.

  • Çok basit bir deyişle IoT Mimarisi, gömülü bir cihazdan ve cihazı buluta yerleştirmek için IoT platformundan oluşur. Burada sensör verilerini görselleştirmek için UbiDots IoT platformunu kullanıyoruz.
  • IP ayarlarını ve Kullanıcı kimlik bilgilerini yönetmek, kullanıcı için bir baş ağrısı olabilir. Kullanıcı WiFi kimlik bilgilerini değiştirmek isterse ne olur? Kullanıcı DHCP/Statik IP ayarlarını değiştirmek isterse ne olur? ESP32'nin her zaman yanıp sönmesi güvenilir değildir ve bu sorunların çözümü bile değildir. Bu nedenle, WiFi kimlik bilgilerini ve diğer yapılandırmaları kaydetmek için esir portalından geçeceğiz.
  • MQTT artık IoT dünyasında çok yaygın bir terim haline geliyor. hızlı, sağlam ve yalın mimarisi nedeniyle Yayınla ve Abone Ol tarafından istek ve yanıtları (HTTP) aşmıştır.

İşte bu talimatta, göstereceğiz.

  • Captive Portal kullanarak WiFi ve MQTT kimlik bilgilerinin verilmesi.
  • UbiDots'a birden fazla Sensör verisi yayınlama ve abone olma.
  • Kablosuz Basınç ve Sıcaklık Sensöründen Sensör verilerinin okunması
  • ESP32'den bir web formu barındırma.
  • SPIFFS ESP32'den Okuma ve Yazma.

Adım 1: Donanım ve Yazılım Spesifikasyonu

Donanım Spesifikasyonu

  • ESP32 WiFi/BLE
  • Kablosuz Basınç ve Sıcaklık Sensörü

Yazılım özellikleri

  • Arduino IDE'si
  • XCTU
  • Labview Yardımcı Programı

Adım 2: Kablosuz Basınç ve Sıcaklık Sensörleri

Kablosuz Basınç ve Sıcaklık Sensörleri
Kablosuz Basınç ve Sıcaklık Sensörleri
Kablosuz Basınç ve Sıcaklık Sensörleri
Kablosuz Basınç ve Sıcaklık Sensörleri
Kablosuz Basınç ve Sıcaklık Sensörleri
Kablosuz Basınç ve Sıcaklık Sensörleri

Özellikleri

  • Endüstriyel Sınıf Sensörü Uzun Menzilli Kablosuz Basınç Sıcaklık Sensörü
  • Çalışma Aralığı 0 ila 14000 mbar -40° ila +85°C (-40° ila 185°F)
  • Yapılandırılabilir Dahili Hesaplama Basınç Çözünürlüğü 0,012 - 0,065 mbar
  • Yapılandırılabilir Dahili Hesaplama Sıcaklık Çözünürlüğü 0,002 - 0,012 °C
  • Doğruluk ±2,5 mbar, ±2 °C
  • Mutlak Basınç, Nispi Basınç ve Nispi İrtifa Değişimi çıktıları
  • Yerleşik Anten ile 2 Mil Görüş Alanı
  • Yüksek Kazançlı Antenler ile 28 Mil'e Kadar Üstün LOS Menzili
  • Raspberry Pi, Microsoft® Azure®, Arduino ve Daha Fazlasına Arayüz
  • DigiMesh® kullanarak Kablosuz Mesh Ağı

Labview Yardımcı Programı ve XCTU Kullanarak Kablosuz Basınç ve Sıcaklık Sensörünü Yapılandırma

Sensör iki modda çalışır

  • Konfigürasyon Modu: Pan Kimliğini, gecikmeyi, yeniden deneme sayısını vb. yapılandırın. Bununla ilgili daha fazla bilgi bu talimatın kapsamı dışındadır ve bir sonraki talimatta açıklanacaktır.
  • Run Mode: Cihazı Run modunda çalıştırıyoruz. Ve bu değeri analiz etmek için Labview Yardımcı Programını kullanıyoruz.

Bu Labview kullanıcı arayüzü, değerleri güzel grafiklerde gösterir. Mevcut ve geçmiş değerleri gösterir. Labview kullanıcı arayüzünü indirmek için bu bağlantıya gidebilirsiniz. Çalıştırma moduna gitmek için açılış sayfası menüsünden Çalıştır simgesine tıklayın.

3. Adım: WiFi'ye bağlanma

WiFi'ye bağlanma
WiFi'ye bağlanma
WiFi'ye bağlanma
WiFi'ye bağlanma

WiFi kimlik bilgilerini kaydetmek ve IP ayarları arasında gezinmek için esir portalını kullanıyoruz. Tutsak portalla ilgili ayrıntılı tanıtım için aşağıdaki talimata göz atabilirsiniz.

Sabit portal bize Statik ve DHCP ayarları arasında seçim yapma seçeneği sunar. Sadece Statik IP, Alt Ağ Maskesi, ağ geçidi gibi kimlik bilgilerini girin ve Kablosuz Sensör Ağ Geçidi bu IP üzerinde yapılandırılacaktır.

Kullanılabilir WiFi ağlarını ve orada RSSI'yi gösteren bir listenin bulunduğu bir web sayfası barındırılıyor. WiFi ağını ve şifresini seçin ve gönder'i girin. Kimlik bilgileri EEPROM'a kaydedilecek ve IP ayarı SPIFFS'ye kaydedilecektir. Bununla ilgili daha fazla bilgi bu talimatta bulunabilir.

Adım 4: ESP32'de UbiDots Kurulumu

ESP32'de UbiDots Kurulumu
ESP32'de UbiDots Kurulumu

Burada sıcaklık ve Nem verilerini almak için ESP 32 cihazı ile Kablosuz Basınç ve Sıcaklık Sensörleri kullanıyoruz. MQTT protokolünü kullanarak verileri UbiDots'a gönderiyoruz. MQTT, istek ve yanıt yerine yayınla ve abone ol mekanizmasını takip eder. HTTP'den daha hızlı ve güvenilirdir. Bu aşağıdaki gibi çalışır.

  • Sensörlerden veri alma, Sensör okumalarını yayınlama, MQTT konusuna abone olma gibi görevleri Zamanlamak için Görev Zamanlayıcı'yı kullanıyoruz.
  • İlk olarak, Görev Zamanlayıcı başlık dosyalarını ekleyin, bu örnektir ve görevleri planlar.
  • İki farklı kontrol işlemine atıfta bulunan iki görev planladık.

#define _TASK_TIMEOUT#Zamanlayıcıyı dahil et; //---------Görevler------------// Görev tSensor(4 * TASK_SECOND, TASK_FOREVER, &taskSensorCallback, &ts, false, NULL, &taskSensorDisable); Görev tWiFi(10* TASK_SECOND, TASK_FOREVER, &taskWiFiCallback, &ts, false, NULL, &taskWiFiDisable);

  • Görev 1, sensör değerini okumak içindir, bu görev 10 saniyelik zaman aşımına ulaşana kadar 1 saniye boyunca çalışır.
  • Task1 zaman aşımına ulaştığında Yerel Wifi ve MQTT brokerine bağlanıyoruz.
  • Şimdi Görev 2 etkinleştirildi ve Görev 1'i devre dışı bırakıyoruz
  • Görev 2, sensör verilerini UbiDots MQTT aracısına yayınlamak içindir, bu görev 20 saniyelik zaman aşımına ulaşana kadar 20 saniye boyunca çalışır
  • Task2 zaman aşımına ulaştığında Task 1 tekrar etkinleştirilir ve Task2 devre dışı bırakılır. Burada yine güncellenmiş değeri alıyoruz ve süreç devam ediyor.

I2C Sensör Verilerini Okuma

Kablosuz Sıcaklık ve Nem Sensörlerinden 29 baytlık bir çerçeve alıyoruz. Bu çerçeve, gerçek sıcaklık ve Nem verilerini almak için manipüle edilir

if (Seri1.kullanılabilir())

{ data[0] = Seri1.read(); gecikme(k); if(data[0]==0x7E) { while (!Serial1.available()); for (i = 1; i< 36; i++) { data = Serial1.read(); gecikme(1); } if(data[15]==0x7F) /////// alınan verinin doğru olup olmadığını kontrol etmek için { if(data[22]==0x06) //////// sensör tipinden emin olun doğru { int cTemp = ((((veri[24]) * 256) + veri[25])); int16_t abs_pressure = ((((uint16_t)(veri[26])<<8)| veri[27])*0,001); int rlt_pressure = ((((veri[28]) * 256) + veri[29])*0,001); int16_t delta_alt = ((((uint16_t)(veri[30])<<8)| veri[31])*0.01); yüzer pil = ((veri[18] * 256) + veri[19]); şamandıra voltajı = 0.00322 * pil; Serial.print("Sensör Numarası"); Serial.println(veri[16]); Serial.print("Sensör Tipi"); Serial.println(veri[22]); Serial.print("Firmware Sürümü"); Serial.println(veri[17]); Serial.print("Sıcaklık Santigrat Olarak:"); Seri.print(cTemp); Serial.println("C"); Serial.print("Mutlak Basınç:"); Serial.println(abs_basınç); Seri.print(" mbar"); Serial.print("Bağıl Basınç:"); Serial.println(rlt_basınç); Serial.print("mbar"); Serial.print("Delta Rakımı:"); Serial.println(delta_alt); Serial.print("metre"); Serial.print("ADC değeri:"); Serial.println(pil); Serial.print("Pil Voltajı:"); Serial.print(voltaj); Serial.println("\n"); if (voltaj < 1) { Serial.println("Pili Değiştirme Zamanı"); } } }else{ for (i = 0; i< 36; i++) { Serial.print(data); Seri.print(", "); gecikme(1); }} } }

UbiDots MQTT API'sine bağlanma

MQTT işlemi için başlık dosyasını ekleyin

#Dahil etmek

müşteri adı, komisyoncu adresi, belirteç kimliği gibi MQTT için diğer değişkenleri tanımlayın

#define TOKEN "BBFF-************************************" // Ubidots TOKEN'iniz#define MQTT_CLIENT_NAME "*********************************"

char mqttBroker = "things.ubidots.com";

karakter yükü[100]; karakter konusu[150]; // belirteç kimliği belirtecini depolamak için değişken oluştur

Adım 5: Sensör Okumalarını UbiDots'ta Yayınlama

Sensör Okumalarını UbiDots'ta Yayınlama
Sensör Okumalarını UbiDots'ta Yayınlama

Farklı sensör verilerini depolamak için değişkenler oluşturun ve konuyu depolamak için bir char değişkeni oluşturun

#define VARIABLE_LABEL_TEMPF "tempF" // Etiket değişkenini atama#define VARIABLE_LABEL_TEMPC "tempC" // Değişken etiketini atama #define VARIABLE_LABEL_BAT "bat" #define VARIABLE_LABEL_HUMID "nemli" // Değişken etiketini atama

karakter konusu1[100];

karakter konusu2[100]; karakter konusu3[100];

verileri belirtilen MQTT konusuna yayınlayın, yük { "tempc": {value: "tempData"}} gibi görünecek

sprintf(konu1, "%s", ""); sprintf(konu1, "%s%s", "/v1.6/cihazlar/", DEVICE_LABEL); sprintf(yük, "%s", ""); // Yükü temizler sprintf(yük, "{"%s\":", VARIABLE_LABEL_TEMPC); // sprintf(payload, "%s{"value\":%s}", payload, str_cTemp) değerini ekler; // sprintf(yük, "%s}", payload) değerini ekler; // Sözlük parantezlerini kapatır Serial.println(payload); Serial.println(client.publish(topic1, payload) ? "yayınlandı": "yayınlanmadı"); //Aynısını diğer konu için de yapın

client.publish(), verileri UbiDots'ta yayınlar

Adım 6: Verileri Görselleştirme

Verileri Görselleştirme
Verileri Görselleştirme
  • Ubidots'a gidin ve hesabınıza giriş yapın.
  • Üstte listelenen Veri sekmesinden Gösterge Tablosuna gidin.
  • Şimdi yeni widget'ları eklemek için "+" simgesine tıklayın.
  • Listeden bir widget seçin ve bir değişken ve cihazlar ekleyin.
  • Sensör verileri, farklı widget'lar kullanılarak gösterge tablosunda görselleştirilebilir.

7. Adım: Genel Kod

HTML ve ESP32 için Over kodu bu GitHub deposunda bulunabilir.

Kredi

  • ncd ESP32 koparma kartı.
  • ncd Kablosuz Basınç ve Sıcaklık Sensörleri
  • pubsubclient
  • UbiDot'lar
  • Görev Zamanlayıcısı

Önerilen: