İçindekiler:

UbiDots-ESP32 Bağlama ve Çoklu Sensör Verilerini Yayınlama: 6 Adım
UbiDots-ESP32 Bağlama ve Çoklu Sensör Verilerini Yayınlama: 6 Adım

Video: UbiDots-ESP32 Bağlama ve Çoklu Sensör Verilerini Yayınlama: 6 Adım

Video: UbiDots-ESP32 Bağlama ve Çoklu Sensör Verilerini Yayınlama: 6 Adım
Video: How to use ESP32 WiFi and Bluetooth with Arduino IDE full details with examples and code 2024, Kasım
Anonim
UbiDots-ESP32 Bağlama ve Çoklu Sensör Verilerini Yayınlama
UbiDots-ESP32 Bağlama ve Çoklu 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 Sıcaklık ve Nem Sensörlerinden 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 ve Yazılım Spesifikasyonu
Donanım ve Yazılım Spesifikasyonu
  • ESP32 WiFi/BLE
  • Kablosuz Sıcaklık ve Nem Sensörü

Yazılım özellikleri

Arduino IDE'si

2. Adım: Bir Esir Portalı Oluşturma

Tutsak Portal Oluşturma
Tutsak Portal Oluşturma
Tutsak Portal Oluşturma
Tutsak Portal Oluşturma
Tutsak Portal Oluşturma
Tutsak Portal Oluşturma

Tutsak portal, yeni bağlanan kullanıcılara ağ kaynaklarına daha geniş erişim izni verilmeden önce görüntülenen bir web sayfasıdır. Burada DHCP ve Statik IP Ayarları arasında seçim yapabileceğiniz üç web sayfası sunuyoruz. IP adresini ESP'ye iki şekilde tanımlayabiliriz.

  • DHCP IP adresi- IP adresini cihaza dinamik olarak atamanın bir yoludur. ESP'nin varsayılan IP adresi 192.168.4.1'dir.
  • Statik IP adresi - ağ cihazımıza kalıcı bir IP Adresi atama. cihaza statik IP sağlamak için IP adresini, ağ geçidi adresini ve alt ağ maskesini tanımlamamız gerekir.

İlk web sayfası 192.168.1.77 adresinde barındırılmaktadır. Burada Kullanıcıya, DHCP ve Statik IP ayarları arasında seçim yapması için radyo düğmeleri sağlanır. Bir sonraki web sayfasında, daha fazla ilerlemek için IP ile ilgili bilgileri sağlamamız gerekiyor.

HTML Kodu

Web sayfaları için HTML kodu bu Github deposunda bulunabilir. HTML web sayfaları yapmak için Sublime veya notepad++ gibi herhangi bir IDE veya metin düzenleyiciyi kullanabilirsiniz.

  • Önce DHCP ve Statik IP Ayarları arasında seçim yapmak için iki radyo düğmesi içeren bir HTML web sayfası oluşturun.
  • Şimdi yanıtınızı göndermek için düğmeyi oluşturun
  • Radyo düğmelerine bir ad verin.
  • ESP Web sunucusu sınıfı bu isimleri argüman olarak alacak ve bu argümanları kullanarak radyo düğmelerinin yanıtını alacaktır.
  • Şimdi cevabı cihaza göndermek için bir ' GÖNDER ' butonu ekleyin. Diğer web sayfalarında metin kutularımız var.
  • Metin kutusuna ad değerini ve Giriş türünü verin ve yanıtı göndermek için ' GÖNDER ' için bir gönder düğmesi ekleyin.
  • Metin alanının içeriğini sıfırlamak için bir 'SIFIRLA' düğmesi oluşturun.

3. Adım: WiFi ve UbiDots Kimlik Bilgilerini Sağlama

WiFi ve UbiDots Kimlik Bilgileri Sağlama
WiFi ve UbiDots Kimlik Bilgileri Sağlama

Ana sorun, WiFi kimlik bilgilerini yönetirken ortaya çıkar. Bunun için WiFiMulti kütüphanemiz olmasına rağmen, cihaza birden fazla SSID ve şifre verebileceğimiz ve cihaz mevcut ağa bağlanacaktır. Ancak, mevcut ağ WiFiMulti listesinde değilse ne olur? ESP32 cihazının sürekli yanıp sönmesi güvenilir bir çözüm değildir.

Bu sorunu çözmek için, kullanıcının mevcut ağın SSID'sini ve Parolasını gönderebileceği bir web sayfası barındırıyoruz. Aşağıdaki gibi çalışır.

  • Web sayfası, kullanıcı tarafından sabit portaldan seçilen statik IP veya DHCP IP'de barındırılır.
  • Bu Web Sayfası, cihazı UbiDots'a bağlamak için SSID, şifre ve UBIDOTS belirteç kimliğini girmek için metin alanları içerir.
  • Giriş alanlarına yerel WiFi'nizin SSID'sini ve şifresini girin, UbiDot'un belirteç kimliğini girin ve GÖNDER'e girin
  • Bu kimlik bilgileri ESP32'nin EEPROM'una kaydedilir
  • 60 saniye sonra Cihaz otomatik olarak AP ile bağlantısını kesecek
  • Cihazı bir sonraki açışınızda, Kullanıcının bu prosedürü izlemesi gerekmez, Cihaz otomatik olarak kullanıcı kimlik bilgilerini EEPROM'dan alır ve sensör okumalarını UbiDots'a yayınlamaya devam eder.

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

Burada sıcaklık ve Nem verilerini almak için ESP 32 cihazı ile Kablosuz Sıcaklık ve Nem 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#include

Zamanlayıcı ts;

//---------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

uint8_t verisi[29];

data[0] = Seri1.read(); gecikme(k); //başlangıç baytı için kontrol et if(data[0]==0x7E) { while (!Serial1.available()); for (i = 1; i< 29; i++) { data = Serial1.read(); gecikme(1); } if(data[15]==0x7F) /////// alınan verilerin doğru olup olmadığını kontrol etmek için { if(data[22]==1) //////// sensör tipinden emin olun doğru {

nem = ((((veri[24]) * 256) + veri[25]) /100.0); nem /=10.0; cTempint = (((uint16_t)(veri[26])<<8)| veri[27]); cTemp = (kayan)cTempint/100.0; cTemp /= 10.0; fTemp = cTemp * 1.8 + 32; fTemp /= 10.0; pil = rastgele(100, 327); voltaj = pil/100; nodeId = veri[16];}

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 (EEPROM'dan belirteç kimliğini alıyoruz)

#define MQTT_CLIENT_NAME "ClientVBShightime123"

char mqttBroker = "things.ubidots.com";

char yükü[100];char konusu[150];

// belirteç kimliğini depolamak için değişken oluştur

Dize belirteci kimliği;

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 5: Verileri Görselleştirme

Verileri Görselleştirme
Verileri Görselleştirme
Verileri Görselleştirme
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.

Adım 6: Genel Kod

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

Kredi

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

Önerilen: