پیشرفته⏱ 22 دقیقه مطالعه
MQTT یک پروتکل سبک پیامرسانی است که برای ارتباط بین دستگاههای IoT و سرور طراحی شده. در این مدل، دستگاهها پیام را روی یک «موضوع» (Topic) منتشر (Publish) میکنند و دستگاههای دیگر میتوانند روی همان موضوع مشترک (Subscribe) شوند.
اجزای اصلی MQTT
- Broker: سروری که پیامها را مسیریابی میکند (مثل HiveMQ یا Mosquitto)
- Publisher: دستگاهی که پیام میفرستد (مثلاً ESP32 با داده دما)
- Subscriber: دستگاه یا داشبوردی که پیام را دریافت میکند
- Topic: مسیر رشتهای مثل
home/livingroom/temperature
PYTHON
import network
from machine import Pin
from time import sleep
from umqtt.simple import MQTTClient
# اتصال Wi-Fi (کد کامل در درس ۱۱)
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect("Wokwi-GUEST", "")
while not wlan.isconnected():
sleep(1)
client = MQTTClient("esp32-academy", "broker.hivemq.com")
client.connect()
print("به بروکر MQTT متصل شد")
counter = 0
while True:
counter += 1
payload = "سلام شماره {}".format(counter)
client.publish("esp32-academy/demo", payload)
print("ارسال شد:", payload)
sleep(3)
⚠️ هشدار
بروکرهای عمومی مانند broker.hivemq.com فقط برای آزمایش مناسب هستند؛ برای پروژهٔ واقعی از بروکر اختصاصی یا سرویسهای ابری امن استفاده کنید.
پروژهٔ نهایی این فصل: ایستگاه هواشناسی بیسیم
با ترکیب سنسور DHT22 (درس ۷)، Wi-Fi (درس ۱۱) و MQTT، میتوانید دما و رطوبت را هر چند ثانیه یکبار به یک داشبورد آنلاین ارسال کنید.
🛠️ کارگاه عملی
کارگاه عملی: شبیهسازی بالا را اجرا کنید، به آدرس hivemq.com/demos/websocket-client بروید، به موضوع wokwi-weather سابسکرایب شوید و مقدار سنسور DHT22 را در شبیهساز تغییر دهید تا پیامهای زنده را ببینید.
❓ در الگوی MQTT، دستگاهی که پیام تولید میکند چه نامیده میشود؟
→ درس قبلی: درس ۱۲: راهاندازی وبسرور ساده روی ESP32
شروع فصل بعد: فصل ۶: مباحث پیشرفته: درس ۱۴: وقفهها (Interrupts) و تایمرها ←
طراحی و توسعه: امین شیخ نجدی — glcd.ir