ESP-01i MQTT ile Kullanma: IoT Cihazlarını Bağlama ve Kontrol Etme

ESP-01i MQTT ile Kullanma: IoT Cihazlarını Bağlama ve Kontrol Etme

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 temellerinin yanı sıra 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.

ESP-01'i MQTT ile Kullanma: IoT Cihazlarını Bağlama ve Kontrol Etme

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ı izlemeyi tercih ederseniz, DIYHOBI'de 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 öğretici vardır.

Ancak yine de modülü bir Arduino kartı kullanarak programlayabilirsiniz. Referans için aşağıdaki devre şemasına bakın.

ESP-01'i MQTT ile Kullanma: IoT Cihazlarını Bağlama ve Kontrol Etme

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 5V'yi LM1117/LD117 gibi bir 3,3V voltaj regülatörüne bağlayın, ardından WiFi modülünü regülatörden çalıştırın.

ESP'nin VCC ve CH_PD pinlerini Arduino'nun 5V pinine bağlamayın . Modülü 5V güce bağlamak modüle zarar verebilir.

Tüm kapasitörler 10uF'dir ve direnç 1K'lık bir dirençtir.

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, deneyebileceğiniz birçok Raspberry Pi IoT projesi vardır.

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 Dosya > Tercihler'e gidin .

ESP-01'i MQTT ile Kullanma: IoT Cihazlarını Bağlama ve Kontrol Etme

Ek Pano Yöneticisi URL'leri alanına aşağıdaki URL'yi girin:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

Tercihler penceresini kapatmak için Tamam'a tıklayın .

ESP-01'i MQTT ile Kullanma: IoT Cihazlarını Bağlama ve Kontrol Etme

Ardından, Araçlar > Pano > Pano Yöneticisi'ne gidin .

Ardından esp8266'yı arayın ve esp8266 kart paketini kurun; bu, ESP-01 modülü için gerekli tüm kitaplıkları içerir.

ESP-01'i MQTT ile Kullanma: IoT Cihazlarını Bağlama ve Kontrol Etme

PubSubClient kitaplığını yüklemek için Sketch > Include Library > Manage Libraries seçeneğine gidin .

ESP-01'i MQTT ile Kullanma: IoT Cihazlarını Bağlama ve Kontrol Etme

PubSubClient'i arayın ve yüklemek için kitaplığa tıklayın.

ESP-01'i MQTT ile Kullanma: IoT Cihazlarını Bağlama ve Kontrol Etme

Gerekli tüm kitaplıkları kurduktan sonra, ESP-01 modülünü programlamaya başlayabilirsiniz. Yine de unutulmaması gereken bir şey, kütüphanede bulunan Wifi.h'yi kullanabilmeniz veya ESPWifi.h kütüphanesini indirip taslağınıza dahil edebilmenizdir.

ESP-01 ile MQTT Broker Arasında Bağlantı Kurmak

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

#include ESP8266WiFi.h> #include PubSubClient.h>

Ardından, WiFi ve MQTT bağlantı ayrıntılarını tanımlayın.

const char* ssid = "YOUR_SSID"; const char* password = "YOUR_PASSWORD"; const char* mqtt_server = "YOUR_MQTT_SERVER";

Yer tutucuları kendi WiFi ve MQTT bağlantı detaylarınızla değiştirmeyi unutmayın.

Bundan sonra, bir WiFi istemcisi oluşturun ve yerel WiFi ağınıza bağlanın:

WiFiClient espClient; void setup_wifi() {   delay(10);   WiFi.begin(ssid, password);   while (WiFi.status() != WL_CONNECTED) {     delay(500);   } }

Bu işlev, çiziminizin setup() işlevinde çağrılmalıdır .

Ardından, bir MQTT istemcisi oluşturmanız ve MQTT aracınıza bağlanmanız gerekir:

PubSubClient client(espClient); void reconnect() {   while (!client.connected()) {     if (client.connect("ESP01", mqtt_user, mqtt_password)) {       // Subscribe to a topic       client.subscribe("test/topic");     } else {       delay(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, inTopic konusuna bir mesaj yayınlamak üzere client.publish() işlevini kullanın .

client.publish("inTopic", "Hello from ESP-01");

Bu, "ESP-01'den Merhaba" mesajını inTopic konusuna yayınlayacaktır .

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.

float temperature = 25.5; String temperatureString = String(temperature); char temperatureChar[5]; temperatureString.toCharArray(temperatureChar, 5); client.publish("Temp", temperatureChar);

Bu, sıcaklık verilerini Temp konusunda yayınlayacaktır .

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şlevini kullanın. Aşağıdaki durumumuz için, müşteri outTopic konusuna abone olur.

client.subscribe("outTopic");

Bir konuya abone olduğunuzda, aşağıdaki çizimde bulunan loop () işlevindeki client.loop () işlevini kullanarak o konuda yayınlanan mesajları alabilirsiniz :

void loop() {   if (!client.connected()) {     reconnect();   }   client.loop(); }

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:

void callback(char* topic, byte* payload, unsigned int length) {   // Print the received message   Serial.print("Message received on topic: ");   Serial.print(topic);   Serial.print(". Message: ");   for (int i=0;i     Serial.print((char)payload[i]);   }   Serial.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 üzerinde durmak isteyeceğiniz düzeltmelerle uyumludur .

QoS seviyelerini kullanmak için client.publish() işlevini kullanarak mesajları yayınlarken istediğiniz seviyeyi belirtebilirsiniz :

client.publish("topic", "Hello, world!", 1);

Bu , Merhaba dünya mesajını yayınlayacak ! QoS seviye 1 ile konu başlığına .

Diğer bir gelişmiş teknik ise Last Will and Testament (LWT) mesajlarını kullanmaktır . 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, client.setWill() işlevini kullanarak aracıya bağlanırken LWT mesajını belirtebilirsiniz :

client.setWill("status", "offline", 1, true);

Bu, LWT mesajını QoS seviye 1 ve tutma bayrağı true olarak ayarlanmış durum konusunda çevrimdışı olarak ayarlayacaktır .

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.