📡 ماموریت ۹۳: انتشار با MQTT

PubSubClient با WiFiClient؛ setServer("broker.local", 1883)، وصل شو و هر ثانیه client.publish("home/knob", ...) کن. client.loop را فراموش نکن.

سطح: چالشی ⭐⭐⭐ · مود: آردوینو — با کد

هدف‌ها

قطعه‌های لازم

▶ همین ماموریت را در شبیه‌ساز امتحان کن
💡 گیر کردی؟ داخل شبیه‌ساز راهنما را ببین، و اگر باز هم نشد دکمه‌ی «برام حلش کن» مدار را برایت می‌چیند تا ببینی چطور کار می‌کند.

جواب کامل

اول خودت امتحان کن! بعد جواب را ببین 👀

سیم‌کشی

  1. ESP32 DevKit (VCC33) ⟷ پتانسیومتر (VCC)
  2. ESP32 DevKit (D34) ⟷ پتانسیومتر (WIPER)
  3. پتانسیومتر (GND) ⟷ ESP32 DevKit (GND1)

کد

// ESP32 MQTT: publish the knob (0..100 %) every second
#include <WiFi.h>
#include <PubSubClient.h>

WiFiClient espClient;
PubSubClient client(espClient);
const int POT = 34;
unsigned long lastSend = 0;

void setup() {
  Serial.begin(115200);
  WiFi.begin("MyHome", "12345678");
  while (WiFi.status() != WL_CONNECTED) delay(200);
  client.setServer("broker.local", 1883);
}

void loop() {
  while (!client.connected()) {
    Serial.println("connecting to MQTT...");
    if (!client.connect("esp32-knob")) delay(1000);
  }
  client.loop();
  if (millis() - lastSend > 1000) {
    lastSend = millis();
    int percent = map(analogRead(POT), 0, 4095, 0, 100);
    client.publish("home/knob", String(percent).c_str());
    Serial.println(percent);
  }
}

ماموریت‌های مشابه

⚡

ماموریت ۹۲: مقدار زنده با WebSocket

💾

ماموریت ۹۴: ذخیره‌ی تنظیمات در حافظه‌ی فلش

🧾

ماموریت ۹۱: API با JSON

🎯

ماموریت ۹۵: کنترل تناسبی سروو

📚 برای یاد گرفتن پایه‌ها سری به دوره‌ی آموزش آردوینو بزن · 🎯 همه‌ی ماموریت‌ها