📡 اینترنت اشیاء با MQTT (ESP32)

ESP32 عدد پتانسیومتر را به داشبورد MQTT می‌فرستد و با دکمه‌های داشبورد LED را روشن و خاموش می‌کند.

سطح: چالشی ⭐⭐⭐ · مود: آردوینو (سه‌بعدی + کد)

قطعات لازم

کد کامل پروژه

// ESP32 + MQTT: send the knob to a dashboard and switch the LED from it.
// Run it, then open the «اینترنت اشیاء» (IoT) tab under the code.
#include <WiFi.h>
#include <PubSubClient.h>

const char* ssid = "MyHome";
const char* password = "12345678";
const char* broker = "broker.local";   // the simulator's own broker

const int LED = 4;
const int KNOB = 34;

WiFiClient espClient;
PubSubClient client(espClient);
unsigned long lastSend = 0;

// Runs when a message arrives on a topic we subscribed to.
void callback(char* topic, byte* payload, unsigned int length) {
  String message = "";
  for (unsigned int i = 0; i < length; i++) message += (char)payload[i];
  Serial.println("message on " + String(topic) + ": " + message);
  if (message == "ON") digitalWrite(LED, HIGH);
  if (message == "OFF") digitalWrite(LED, LOW);
}

void reconnect() {
  while (!client.connected()) {
    Serial.println("connecting to MQTT...");
    if (client.connect("esp32-kid")) {
      client.subscribe("home/led");
      client.publish("home/status", "online");
    } else {
      delay(1000);
    }
  }
}

void setup() {
  Serial.begin(115200);
  pinMode(LED, OUTPUT);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) delay(200);
  Serial.println("Wi-Fi connected");
  client.setServer(broker, 1883);
  client.setCallback(callback);
}

void loop() {
  if (!client.connected()) reconnect();
  client.loop();
  if (millis() - lastSend > 1000) {
    lastSend = millis();
    int percent = map(analogRead(KNOB), 0, 4095, 0, 100);
    client.publish("home/knob", String(percent).c_str());
  }
}

چطور اجرایش کنم؟

  1. شبیه‌ساز تینکرکد فارسی را باز کن و «مود آردوینو» را انتخاب کن.
  2. از پنل «نمونه‌ها»، «اینترنت اشیاء با MQTT (ESP32)» را بارگذاری کن — مدار و کد با هم می‌آیند.
  3. دکمه‌ی اجرا ▶ را بزن و خروجی Serial و رفتار قطعات را تماشا کن.
  4. حالا کد را تغییر بده — عددها، پین‌ها، ترتیب — و دوباره اجرا کن!
این پروژه را رایگان در شبیه‌ساز اجرا کن 🤖