İçindekiler:
- Adım 1: Donanım ve Yazılım Spesifikasyonu
- Adım 2: Kablosuz Basınç ve Sıcaklık Sensörleri
- 3. Adım: WiFi'ye bağlanma
- Adım 4: ESP32'de UbiDots Kurulumu
- Adım 5: Sensör Okumalarını UbiDots'ta Yayınlama
- Adım 6: Verileri Görselleştirme
- 7. Adım: Genel Kod
Video: MQTT Kullanarak Kablosuz Basınç Sensörü Verilerini Yayınlama: 7 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:19
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
Ö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 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
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
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
- 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:
Node-RED Kullanarak Kablosuz Titreşim ve Sıcaklık Sensörü Verilerini Excel'e Gönderme: 25 Adım
Node-RED Kullanarak Kablosuz Titreşim ve Sıcaklık Sensörü Verilerini Excel'e Gönderme: NCD'nin Uzun Menzilli IoT Endüstriyel kablosuz titreşim ve sıcaklık sensörü ile tanışın, kablosuz ağ yapısı kullanımı 2 mil menzile sahiptir. Hassas bir 16-bit titreşim ve sıcaklık sensörü içeren bu cihaz, trans
Node-RED Kullanarak Kablosuz Titreşim ve Sıcaklık Verilerini Google E-Tablolarına Gönderme: 37 Adım
Node-RED Kullanarak Kablosuz Titreşim ve Sıcaklık Verilerini Google E-Tablolar'a Gönderme: Kablosuz ağ yapısı kullanımıyla 2 mil menzile sahip NCD'nin Uzun Menzilli IoT Endüstriyel kablosuz titreşim ve sıcaklık sensörüyle tanışın. Hassas bir 16-bit titreşim ve sıcaklık sensörü içeren bu cihaz, trans
IoT Uzun Menzilli Kablosuz Sıcaklık ve Nem Sensörü Verilerini Google Sayfasına Gönderme: 39 Adım
IoT Uzun Menzilli Kablosuz Sıcaklık ve Nem Sensörü Verilerini Google Sayfasına Gönderme: Burada NCD'nin Sıcaklık ve Nem sensörünü kullanıyoruz, ancak adımlar herhangi bir ncd ürünü için eşit kalıyor, bu nedenle başka ncd kablosuz sensörleriniz varsa, gözlemlemekten çekinmeyin yanında yanında. Bu metnin stopu ile yapmanız gereken
UbiDots-ESP32 Bağlama ve Çoklu Sensör Verilerini Yayınlama: 6 Adım
UbiDots-Bir ESP32 Bağlama ve Çoklu Sensör Verilerini Yayınlama: ESP32 ve ESP 8266, IoT alanında çok tanıdık SoC'lerdir. Bunlar, IoT projeleri için bir tür nimet. ESP 32, entegre WiFi ve BLE'ye sahip bir cihazdır. Sadece SSID'nizi, şifrenizi ve IP yapılandırmalarınızı verin ve her şeyi
Google Grafiklerini Kullanarak Kablosuz Sensör Verilerini Görselleştirme: 6 Adım
Google Grafiklerini Kullanarak Kablosuz Sensör Verilerini Görselleştirme: Makinenin arıza süresini en aza indirmek için makinelerin tahmine dayalı analizi çok gereklidir. Düzenli kontrol, makinenin çalışma süresini iyileştirmeye yardımcı olur ve buna bağlı olarak hata toleransını artırır. Kablosuz Titreşim ve Sıcaklık sen