İçindekiler:
- 1. Adım: AWS Hesabını Ayarlama
- 2. Adım: Donanım ve Yazılım Spesifikasyonları
- Adım 3: Kablosuz Titreşim ve Sıcaklık Sensörleri
- Adım 4: ESP32 AWS Ürün Yazılımı
- Adım 5: Kablosuz Titreşim ve Sıcaklık Sensöründen Sensör Verilerinin Alınması
- 6. Adım: AWS'ye Bağlanma
- 7. Adım: AWS'de Verileri Görselleştirme
- Adım 8: Genel Kod
Video: MQTT Kullanan Kablosuz Sıcaklık Sensörlü AWS IoT'ye Başlarken: 8 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:19
Daha önceki Instructable'larda Azure, Ubidots, ThingSpeak, Losant gibi farklı bulut platformlarından geçtik. Neredeyse tüm bulut platformlarında sensör verilerini buluta göndermek için MQTT protokolünü kullanıyorduk. MQTT, HTTP protokolüne göre avantajları ve faydaları hakkında daha fazla bilgi için bu talimata başvurabilirsiniz.
Bu talimatta, bir başka ve en tanıdık bulut platformu olan Amazon Web Services'i yakınlaştıracağız. Birçoğunuz AWS, diğer adıyla Amazon Web Services ve AWS tarafından sağlanan bulut işlevselliği hakkında bilgi sahibi olabilirsiniz. Uzun yıllardır web geliştirmenin özü olmuştur. IoT uygulamalarının ölçeğinin artmasıyla birlikte AWS, AWSIOT çözümünü ortaya çıkardı. AWSIoT, IoT uygulamalarımızı barındırmak için güvenilir bir çözümdür.
Bu talimatı izleyerek:
- IoT uygulamanız için AWS hesabı oluşturabileceksiniz
- ESP32'yi AWS IoT çekirdeğine bağlayabileceksiniz
- MQTT ve HTTP protokolünü kullanarak mesaj gönderin ve alın
- AWS'de gönderilen verileri görselleştirin
1. Adım: AWS Hesabını Ayarlama
AWS hesabını kurmak oldukça kolaydır. Sadece birkaç sertifika yüklemeniz, ona ilkeler eklemeniz, Cihazı kaydetmeniz ve AWS'de sensör veri mesajlarını almaya başlamanız yeterlidir.
AWS hesabını kurmak için bu öğreticiyi izleyin.
2. Adım: Donanım ve Yazılım Spesifikasyonları
Yazılım özellikleri
Bir AWS hesabı
Donanım Spesifikasyonu
- ESP32
- Kablosuz Sıcaklık ve Titreşim Sensörü
- Zigmo Ağ Geçidi alıcısı
Adım 3: Kablosuz Titreşim ve Sıcaklık Sensörleri
Bu, kablosuz ağ mimarisi kullanarak 2 Mil aralığına kadar övünen Uzun Menzilli Endüstriyel IoT kablosuz titreşim ve sıcaklık sensörüdür. 16 bitlik Titreşim ve Sıcaklık sensörünü içeren bu sensör, kullanıcı tanımlı aralıklarla son derece hassas titreşim verilerini iletir. Aşağıdaki özelliklere sahiptir:
- ±32g Menzilli Endüstriyel Sınıf 3 eksenli Titreşim Sensörü
- RMS, MAX ve MIN g Titreşimini hesaplar
- Alçak Geçiren Filtre Kullanarak Gürültü Giderme
- 12.800 Hz'e kadar Frekans Aralığı (Bant Genişliği)
- 25, 600Hz'e kadar Örnekleme Hızı
- 2 Mil Kablosuz Menzilli Şifreli İletişim
- Çalışma Sıcaklığı Aralığı -40 ila +85 °C
- Duvara Monte veya Mıknatıs Monteli IP65 Dereceli MuhafazaVisual Studio ve LabVIEW için Örnek Yazılım
- Harici Prob Seçenekli Titreşim Sensörü
- 4 AA Pilden 500.000'e Kadar İletimBirçok Ağ Geçidi ve Modem Seçeneği Mevcuttur
Adım 4: ESP32 AWS Ürün Yazılımı
AWS'ye bağlanmak ve verileri göndermeye başlamak için aşağıdaki adımları izleyin
- AWS kitaplığını aşağıdaki Github deposundan indirin
- repoyu klonlayın ve AWS_IOT dosyasını Arduino dizininin kitaplık klasörüne yerleştirin
git klon
Şimdi kodu inceleyelim:
- Bu uygulamada, WiFi kimlik bilgilerini kaydetmek ve IP ayarları arasında gezinmek için sabit bir portal kullandık. 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 5: Kablosuz Titreşim ve Sıcaklık Sensöründen Sensör Verilerinin Alınması
Kablosuz Sıcaklık ve Titreşim Sensörlerinden 54 baytlık bir çerçeve alıyoruz. Bu çerçeve, gerçek sıcaklık ve Titreşim verilerini almak için manipüle edilir.
ESP32, Seri kullanım için üç UART'a sahiptir
- RX0 GPIO 3, TX0 GPIO 1
- RX1 GPIO9, TX1 GPIO 10
- RX2 GPIO 16, TX2 GPIO 17
ve 3 donanım Seri bağlantı noktası
- Seri
- Seri1
- Seri2
İlk olarak, Hardware Serial başlık dosyasını başlatın. Burada RX2 ve TX2 aka kullanacağız. Seri verileri almak için ESP32 kartının GPIO 16 ve GPIO 17 pinleri.
#Dahil etmek
# RXD2'yi tanımla 16 # TXD2'yi tanımla 17
Serial2.begin(115200, SERIAL_8N1, RXD2, TXD2); // pinler 16 rx2, 17 tx2, 19200 bps, 8 bit parite yok 1 stop bit
Aşağıdaki adımlar, gerçek sensör değerlerini elde etmenize yardımcı olacaktır.
- Sıcaklık, nem, pil ve diğer sensör değerlerini depolamak için değişkenler oluşturun
- Donanım serisi için Rx, tx pini, baud hızı ve eşlik bitlerini ayarlayın
- İlk olarak, Serial1.available() kullanarak okunacak bir şey olup olmadığını kontrol edin.
- 54 baytlık bir çerçeve alacağız.
- Başlangıç baytı olan 0x7E'yi kontrol edin.
- Titreşim verileri, 3 eksen için RMS değerinden, 3 eksen için minimum değerlerden, 3 eksen için maksimum değerlerden oluşur.
- sıcaklık ve pil değerleri 2 bayt veri içerecektir
- sensör adını, tipini, sensör sürümünü alın 1 bayt veri içerecek ve oradan ilgili adresten alınabilir
if (Serial2.available()) { Serial.println("Seriyi Oku"); data[0] = Serial2.read(); gecikme(k); if(data[0]==0x7E) { Serial.println("Paket Var"); while (!Serial2.available()); for (i = 1; i< 55; i++) { data = Serial2.read(); gecikme(1); } if(data[15]==0x7F) /////// alınan verilerin doğru olup olmadığını kontrol etmek için { if(data[22]==0x08) //////// sensör tipinden emin olun doğru { rms_x = ((uint16_t)(((veri[24])<<16) + ((veri[25])<<8) + (veri[26]))/100); rms_y = ((uint16_t)(((veri[27])<<16) + ((veri[28])<<8) + (veri[29]))/100); rms_z = ((uint16_t)(((veri[30])<<16) + ((veri[31])<<8) + (veri[32]))/100); int16_t max_x = ((uint16_t)(((veri[33])<<16) + ((veri[34])<<8) + (veri[35]))/100); int16_t max_y = ((uint16_t)(((veri[36])<<16) + ((veri[37])<<8) + (veri[38]))/100); int16_t max_z = ((uint16_t)(((veri[39])<<16) + ((veri[40])<<8) + (veri[41]))/100);
int16_t min_x = ((uint16_t)(((veri[42])<<16) + ((veri[43])<<8) + (veri[44]))/100); int16_t min_y = ((uint16_t)(((veri[45])<<16) + ((veri[46])<<8) + (veri[47]))/100); int16_t min_z = ((uint16_t)(((veri[48])<<16) + ((veri[49])<<8) + (veri[50]))/100);
cTemp = ((((veri[51]) * 256) + veri[52])); yüzer pil = ((veri[18] * 256) + veri[19]); voltaj = 0.00322 * pil; Serial.print("Sensör Numarası"); Serial.println(veri[16]); senseNumber = 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("X ekseninde RMS titreşimi:"); Seri.print(rms_x); Seri.println(" mg"); Serial.print("Y ekseninde RMS titreşimi:"); Seri.print(rms_y); Seri.println(" mg"); Serial.print("Z ekseninde RMS titreşimi:"); Seri.print(rms_z); Seri.println(" mg");
Serial.print("X ekseninde minimum titreşim:");
Seri.print(min_x); Seri.println(" mg"); Serial.print("Y ekseninde minimum titreşim:"); Seri.print(min_y); Seri.println(" mg"); Serial.print("Z ekseninde minimum titreşim:"); Seri.print(min_z); Seri.println(" mg");
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< 54; i++) { Serial.print(data); Seri.print(", "); gecikme(1); } } } }
6. Adım: AWS'ye Bağlanma
- AWSIoT hub ile bağlantı kurmak için AWS_IOT.h, WiFi.h başlık dosyalarını dahil edin
- Ana Bilgisayar Adresinizi, politika adı olacak Müşteri Kimliğinizi ve şey adı olacak konu adını girin
//***********AWS Kimlik Bilgileri*************//char HOST_ADDRESS="a2smbp7clzm5uw-ats.iot.us-east-1.amazonaws.com"; char CLIENT_ID= "ncdGatewayPolicy"; char TOPIC_NAME= "ncdGatewayThing";
JSON'unuzu saklamak için bir char değişkeni oluşturun, bu durumda JSON'u depolamak için bir format oluşturduk
const char *format = "{"SensorId\":\"%d\", \"messageId\":%d, \"rmsX\":%d, \"rmsY\":%d, \"rmsZ \":%d, \"cTemp\":%d, \"voltaj\":%.2f}";
AWS_IOT sınıfının bir örneğini oluşturun
AWS_IOT esp; //AWS_IOT sınıfının örneği
Şimdi aşağıdaki yöntemi kullanarak AWSIoT hub'ına bağlanın
void reconnectMQTT(){ if(hornbill.connect(HOST_ADDRESS, CLIENT_ID)== 0) { Serial.println("AWS'ye Bağlı"); gecikme(1000);
if(0==hornbill.subscribe(TOPIC_NAME, mySubCallBackHandler))
{ Serial.println("Abonelik Başarılı"); } else { Serial.println("Abonelik Başarısız, Öğe Adını ve Sertifikaları Kontrol Edin"); süre(1); } } else { Serial.println("AWS bağlantısı başarısız, HOST Adresini Kontrol Edin"); süre(1); }
gecikme(2000);
}
sensör verilerini her 1 dakikada bir yayınlayın
if(tick >= 60) // her 5 saniyede bir konuya yayınla { tick=0; karakter yükü[PAYLOAD_MAX_LEN]; snprintf(yük, PAYLOAD_MAX_LEN, format, senseNumber, msgCount++, rms_x, rms_y, rms_z, cTemp, voltaj); Serial.println(yük); if(hornbill.publish(TOPIC_NAME, payload) == 0) { Serial.print("İleti Yayınla:"); Serial.println(yük); } else { Serial.println("Yayınlanamadı"); } } vTaskDelay(1000 / portTICK_RATE_MS); kene++;
7. Adım: AWS'de Verileri Görselleştirme
- AWS hesabınıza giriş yapın.
- Araç çubuğunun sol köşesinde Hizmetler sekmesini bulacaksınız
- Bu sekmeye tıklayın ve Nesnelerin İnterneti başlığı altında IoT Core'u seçin.
- QoS'yi seçin ve hayır. abonelere gönderilen mesajların sayısı. Konu adını girin.
Adım 8: Genel Kod
Genel kodu bu Github Deposunda bulabilirsiniz.
Kredi
- Arduino Json'ı
- Kablosuz Sıcaklık ve Nem Sensörleri
- ESP32
- PubSubClient
Önerilen:
Uzun Menzilli Kablosuz Sıcaklık ve Titreşim Sensörlerine Başlarken: 7 Adım
Uzun Menzilli Kablosuz Sıcaklık ve Titreşim Sensörlerine Başlarken: Bazen titreşim birçok uygulamada ciddi sorunların nedenidir. Makine milleri ve yataklarından sabit disk performansına kadar, titreşim makine hasarına, erken değiştirmeye, düşük performansa neden olur ve doğruluk üzerinde büyük bir darbeye neden olur. İzleme
MQ135 ve MQTT Üzerinden Dış Sıcaklık ve Nem Sensörlü Hava Kalitesi Monitörü: 4 Adım
MQ135 ve MQTT Üzerinden Dış Sıcaklık ve Nem Sensörlü Hava Kalitesi Monitörü: Test amaçlıdır
Ultrasonik Sensörlü ve Temassız Sıcaklık Sensörlü Arduino Arabirimi: 8 Adım
Ultrasonik Sensör ve Temassız Sıcaklık Sensörü ile Arduino Arabirimi: Günümüzde, Yapımcılar, Geliştiriciler, projelerin prototiplerinin hızlı bir şekilde geliştirilmesi için Arduino'yu tercih ediyor. Arduino, kullanımı kolay donanım ve yazılıma dayalı açık kaynaklı bir elektronik platformdur. Arduino'nun çok iyi bir kullanıcı topluluğu var. Bu projede
HC12 Kablosuz Modülü Kullanan Kablosuz Arduino Robotu: 7 Adım
HC12 Kablosuz Modülünü Kullanan Kablosuz Arduino Robotu: Merhaba arkadaşlar, tekrar hoş geldiniz. Bir önceki yazımda, H Köprü Devresinin ne olduğunu, L293D motor sürücü IC'sini, yüksek akım motor sürücülerini sürmek için bindirme L293D Motor sürücü IC'sini ve kendi L293D motor Sürücü Kartınızı nasıl tasarlayıp yapabileceğinizi,
Arduino İle 2.4Ghz NRF24L01 Modülünü Kullanan Kablosuz Uzaktan Kumanda - Nrf24l01 Quadcopter için 4 Kanal / 6 Kanal Verici Alıcı - Rc Helikopter - Arduino Kullanan Rc Uçak: 5 Adım (Resimlerle)
Arduino İle 2.4Ghz NRF24L01 Modülünü Kullanan Kablosuz Uzaktan Kumanda | Nrf24l01 Quadcopter için 4 Kanal / 6 Kanal Verici Alıcı | Rc Helikopter | Arduino Kullanan Rc Uçak: Bir Rc araba çalıştırmak için | Quadcopter | dron | RC uçak | RC tekne, her zaman bir alıcı ve vericiye ihtiyacımız var, RC QUADCOPTER için 6 kanallı bir verici ve alıcıya ihtiyacımız olduğunu ve bu tür TX ve RX'in çok maliyetli olduğunu varsayalım, bu yüzden bir tane yapacağız