İçindekiler:
- Adım 1: Donanım ve Yazılım Spesifikasyonu
- 2. Adım: Bir Esir Portalı Oluşturma
- 3. Adım: WiFi ve UbiDots Kimlik Bilgilerini Sağlama
- Adım 4: Sensör Okumalarını UbiDots'ta Yayınlama
- Adım 5: Verileri Görselleştirme
- Adım 6: Genel Kod
Video: UbiDots-ESP32 Bağlama ve Çoklu Sensör Verilerini Yayınlama: 6 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 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
- 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, 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
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
- 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:
Sensör Verilerini Ekran LCD ile Görüntüleme: 5 Adım
Sensör Verilerini Ekran LCD ile Görüntüleme: Bu projede Arduino ile bir ekranda 2 sensörden gelen verileri görüntülemeliyiz. Bu projenin uygulaması bir serada nem ve sıcaklığın izlenmesidir
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
MQTT Kullanarak Kablosuz Basınç Sensörü Verilerini Yayınlama: 7 Adım
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, şifrenizi ve IP yapılandırmalarınızı verin ve her şeyi sisteme entegre edin
Arduino Sensör Verilerini İşleme Kullanarak MYsql'e Kaydetme: 6 Adım
Arduino Sensör Verilerini İşleme Kullanarak MYsql'e Kaydetme: Dürüst olmak gerekirse, Arduino verilerini doğrudan MySQL'e depolamak zordur, böylece Arduino IDE bağımlılığında Arduino IDE'ye benzer, ancak birçok farklı kullanıma sahip olan İşleme IDE'sini kullandım ve kodlayabilirsiniz. java.Not:Arduino seri monitörünü çalıştırmayın
Bir IPhone Uygulaması E-Kitabını Kendi Kendine Yayınlama: 6 Adım
Bir IPhone Uygulaması E-kitabını Kendim Yayınlıyorum: Benim adım Noble Smith ve yayınlanmış bir oyun yazarıyım, ödüllü film Kahramanı'nın (Netflix) yardımcı yapımcısıyım, yayımlanmış bir romancıyım (Çingenelerden Çalınan iTunes sesli kitabı) ve yazarım. e-kitap iPhone uygulaması Warrior (iTunes App Store). Getti…