IoT cihazları harika şeyler yapabilir, ancak denklemin önemli bir parçası nasıl iletişim kurduklarıdır. Bunu bir ESP-01 modülü ile yönetebilirsiniz.
Bütçenizin kısıtlı olması, gelişmiş Kendin Yap projelerini üstlenemeyeceğiniz anlamına gelmez. IoT projelerinizi büyütmek için küçük, uygun fiyatlı ve kullanışlı bir WiFi modülü arıyorsanız, ESP-01 modülü harika bir seçimdir. Ancak, özellikle IoT geliştirme konusunda yeniyseniz, böyle bir modülü MQTT gibi hafif bir protokolle entegre etmek zor olabilir.
ESP-01 kartını tek başına programlamak, ESP8266 serisinin diğer modüllerine kıyasla zor olabilir. Ancak, modülü kullanmaya başlamak için ihtiyacınız olan tüm donanım ve yazılım kurulumunun temellerini ve ayrıca MQTT'yi basit ve prosedürel bir şekilde nasıl kuracağınızı gözden geçirelim.
Yönetim Kurulunu Tanımak
ESP8266 ESP-01, IoT uygulamaları için tasarlanmış son derece entegre bir SoC olan ESP8266EX yongasıyla birlikte gelen küçük ve kompakt bir WiFi modülüdür.
Modül, TCP/IP protokol yığınına sahip tek çipli bir kablosuz mikrodenetleyici içerir ve bir kablosuz ağa bağlanabilme veya bir erişim noktası olarak işlev görme yeteneğine sahiptir. ESP-01 modülü ayrıca GPIO pinlerine, güç ve toprağa ve UART arayüzüne erişim sağlayan 2x4 pin başlığına sahiptir.
Donanımı Kurma
Modül hiç bir şekilde breadboard dostu değildir. Kolaylık sağlamak için, önceden oluşturulmuş bir uzatma kartı satın alabilir veya atlama kabloları ve bir devre tahtası kullanarak eski moda yolu kullanabilirsiniz.
Programlama deneyiminizi kolaylaştırabilecek özel bir programlayıcı, ESP8266 Seri Modül Kartı vardır. Bu rotayı tercih ederseniz, DIY HOBİ bir programlayıcı (USB'den TTL'ye CH340G Dönüştürücü Modül Adaptörü dahil) kullanarak bir programın ESP-01 modülüne nasıl flash edileceğine dair kullanışlı bir öğreticiye sahiptir.
Ancak yine de modülü bir Arduino kartı kullanarak programlayabilirsiniz. Referans için aşağıdaki devre şemasına bakın.
Cazip görünse de, pimin sağladığından daha fazla akım gerektirdiğinden, genellikle modülü doğrudan Arduino'nun 3.3v pimine bağlamanızı önermiyoruz. Bunun yerine, Arduino'yu bağlayın 5V LM1117/LD117 gibi bir 3,3 V voltaj regülatörüne bağlayın, ardından regülatörden WiFi modülüne güç verin.
bağlama VCC Ve CH_PD ESP'nin pimleri 5V Arduino'nun pimi. Modülün bağlanması 5V güç ona zarar verebilir.
Tüm kapasitörler 10uF ve direnç bir 1K direnç.
yazılım gereksinimleri
ESP-01 modülü, Arduino platformunda yaygın olarak kullanılır. Bu nedenle, özellikle Arduino C'ye aşina iseniz, yazılımı kurmak oldukça basittir. Ancak, Raspberry'ye daha aşina iseniz, bol miktarda var. Raspberry Pi IoT projeleri deneyebilirsin.
Bunlar temel gereksinimlerdir:
- Bir MQTT aracısı veya sunucusu (Mosquitto veya CloudMQTT gibi).
- ESP8266 çekirdek kitaplığına sahip bir Arduino IDE.
- Arduino için PubSubClient kitaplığı.
Yerel olarak kendi MQTT sunucunuza sahip olmanın projelerinizde size esneklik sağladığını unutmamalısınız.
Gerekli Kitaplıkların Kurulumu
Öncelikle, Arduino IDE'yi bilgisayarınıza indirin ve kurun. Kurulduktan sonra, Arduino IDE'yi açın ve şu adrese gidin: Dosya > Tercihler.
İçinde Ek Pano Yöneticisi URL'leri alanına şu URL'yi girin:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Tıklamak TAMAM Tercihler penceresini kapatmak için
Sonraki, şuraya git: Aletler > Pano > Pano Yöneticisi.
Sonra ara esp8266 ve esp8266 kart paketini kurun—bu, ESP-01 modülü için gerekli tüm kitaplıkları içerir.
PubSubClient kitaplığını yüklemek için şu adrese gidin: Kroki > Kitaplığı Dahil Et > Kitaplıkları Yönet.
Aramak PubSubClient ve yüklemek için kitaplığa tıklayın.
Gerekli tüm kitaplıkları kurduktan sonra, ESP-01 modülünü programlamaya başlayabilirsiniz. Yine de dikkat edilmesi gereken bir şey, Wifi.h kütüphanede bulunan veya indirilen ESPWifi.h kütüphane ve eskizinize dahil edin.
ESP-01 ile MQTT Broker Arasında Bağlantı Kurma
MQTT aracısı, MQTT istemcileri arasında aracı görevi gören bir sunucudur. İstemcilerin bir yayınla-abone ol modeli aracılığıyla birbirlerine mesaj gönderip almalarını sağlar.
ESP-01 modülünüzü bir MQTT aracısına bağlamak için aracının IP adresini ve bağlantı noktası numarasını kodunuzda belirtmeniz gerekir. Aracıya ESP-01 modülünüzü tanımlayan benzersiz bir müşteri kimliği de sağlamanız gerekecektir.
İlk olarak, eskizinizin en üstüne gerekli kitaplıkları ekleyin
#katmak <ESP8266WiFi.H>
#katmak <PubSubClient.H>
Ardından, WiFi ve MQTT bağlantı ayrıntılarını tanımlayın.
sabitkarakter* sid = "SSID'NİZ";
sabitkarakter* şifre = "ŞİFRENİZ";
sabitkarakter* mqtt_server = "SİZİN_MQTT_SUNUCUSUNUZ";
Yer tutucuları kendi WiFi ve MQTT bağlantı bilgilerinizle değiştirmeyi unutmayın.
Bundan sonra, bir WiFi istemcisi oluşturun ve yerel WiFi ağınıza bağlanın:
WiFiClient espClient;
geçersizkurulum_wifi(){
gecikme (10);
WiFi.begin (ssid, şifre);
sırasında (WiFi.status() != WL_CONNECTED) {
gecikme (500);
}
}
Bu işlev çağrılmalıdır kurmak() eskizinizin işlevi.
Ardından, bir MQTT istemcisi oluşturmanız ve MQTT aracınıza bağlanmanız gerekir:
PubSubClient müşteri(özellikle İstemci);
geçersizyeniden bağlan(){
sırasında (!client.connected()) {
eğer (istemci.bağlantı("ESP01", mqtt_user, mqtt_password)) {
// Bir konuya abone ol
müşteri.abone ol("deneme/konu");
} başka {
gecikme (5000);
}
}
}
MQTT aracınıza bağlandıktan sonra, konuları yayınlamaya ve bu konulara abone olmaya başlayabilirsiniz.
ESP-01'den MQTT Broker'a Veri Yayınlama
Artık ESP01 modülünüzü MQTT aracısına başarıyla bağladığınıza göre, ESP-01'den aracıya nasıl veri yayınlayabileceğinize bakalım.
Verileri yayınlamak için client.publish() bir mesaj yayınlama işlevi Konu içi başlık.
istemci.yayınla("Konu içi", "ESP-01'den Merhaba");
Bu, "ESP-01'den Merhaba" mesajını Konu içi başlık.
Ayrıca sensör verilerini ESP-01'den aracıya yayınlayabilirsiniz. Örneğin, ESP-01'inize bağlı bir sıcaklık sensörünüz varsa, sıcaklık verilerini aşağıda gösterildiği gibi aracıya yayınlayabilirsiniz.
batmadan yüzmek sıcaklık = 25.5;
Sicim sıcaklıkDizesi = Sicim(sıcaklık);
karakter sıcaklıkChar[5];
sıcaklıkDizesi.toCharArray(sıcaklıkChar, 5);
istemci.yayınla("Sıcaklık", sıcaklıkChar);
Bu, sıcaklık verilerini Sıcaklık başlık.
Veriler, projenizin gereksinimlerine bağlı olarak bir döngüde veya düzenli aralıklarla yayınlanabilir. Aracıyı çok fazla veriyle doldurmadığınızdan ve makul bir aralıkta yayınladığınızdan emin olun.
MQTT Konularına Abone Olma ve ESP-01'de Veri Alma
Bir konuya abone olmak için, client.subscribe() işlev. Aşağıdaki durumumuz için müşteri şuna abone olur: konu dışı başlık.
müşteri.abone ol("konu dışı");
Bir konuya abone olduğunuzda, o konuda yayınlanan mesajları client.loop() işlevi döngü() Aşağıdaki çizimdeki işlev:
geçersizdöngü(){
eğer (!müşteri.bağlı()) {
yeniden bağlan();
}
müşteri.döngü();
}
Bu, sürekli olarak yeni mesajları kontrol edecek ve yeni bir mesaj alındığında geri arama işlevini yürütecektir.
Alınan mesajları işlemek için aşağıda gösterilene benzer bir geri arama işlevi tanımlayın:
geçersizgeri çağırmak(karakter* başlık, bayt* yük, imzasız int uzunluk){
// Alınan mesajı yazdır
Seri.Yazdır("Konuyla ilgili mesaj alındı: ");
Seri.Yazdır(başlık);
Seri.Yazdır(". İleti: ");
için (int ben=0;BenSeri.Yazdır((karakter)yük[Ben]);
}
Seri.println();
}
Bu işlev, abone olunan konuda yeni bir mesaj alındığında çağrılır. Alınan mesajı Seri Monitöre yazdıracaktır.
QoS (Hizmet Kalitesi) Düzeylerini ve Güvenlik Özelliklerini Kullanma
İsteklerin işlenmesinde kullanılan en önemli tekniklerden biri, MQTT mesajlarınız için QoS (Quality of Service) seviyelerinin kullanılmasıdır. QoS seviyeleri, aracının ve abonelerin mesajlarınızı nasıl işlemesi gerektiğini tanımlar. Üç QoS seviyesi vardır: 0, 1 ve 2.
Mesajlar yalnızca bir kez gönderildiğinden ve aboneye teslim edileceği garanti edilmediğinden, QoS seviyesi 0 en az güvenilir olanıdır. QoS seviye 1, mesajlar en az bir kez gönderildiğinden ve aboneye en az bir kez iletilmesi garanti edildiğinden daha güvenilirdir. Mesajlar tam olarak bir kez gönderildiğinden ve aboneye tam olarak bir kez teslim edilmesi garanti edildiğinden, QoS seviye 2 en güvenilir olanıdır. Cihazlarınızın nasıl iletişim kurduğu diğer Yaygın Nesnelerin İnterneti (IoT) güvenlik sorunları ve düzeltmeleri üstünde kalmak istiyorsun.
QoS seviyelerini kullanmak için, mesajları yayınlarken istediğiniz seviyeyi belirtebilirsiniz. client.publish() işlev:
istemci.yayınla("başlık", "Selam Dünya!", 1);
Bu mesajı yayınlayacak Selam Dünya! için başlık QoS seviyesi ile konu 1.
Başka bir gelişmiş teknik kullanmaktır. Son İstek ve Ahit (LWT) mesajlar. LWT mesajları, bir istemcinin bağlantısı beklenmedik şekilde kesildiğinde aracı tarafından gönderilen mesajlardır. Bunun, çevrimdışı cihazları algılamak veya bir cihazın bağlantısı kesildiğinde eylemleri tetiklemek için önemli olduğuna inanıyoruz.
LWT mesajlarını kullanmak için aracıya bağlanırken LWT mesajını belirtebilirsiniz. client.setWill() işlev:
client.setWill("durum", "çevrimdışı", 1, doğru);
Bu, LWT mesajını şu şekilde ayarlayacaktır: çevrimdışı üzerinde durum QoS düzeyi 1 olan konu ve saklama bayrağı şu şekilde ayarlanmış: doğru.
Bir Sonraki IoT Projeniz İçin Hazırlanın
ESP-01 modülü, IoT projeleri için uygun fiyatlı ve kompakt bir çözümdür ve MQTT ile birlikte kullanılması projenizi bir sonraki seviyeye taşıyabilir. İlk kurulum göz korkutucu olabilse de, hafif iletişim ve yüksek ölçeklenebilirlik gibi MQTT'nin faydaları, onu değerli bir yatırım haline getirir.