فهرست مطالب:

NodeMCU MQTT Iot Project - کلید تغییر: 4 مرحله
NodeMCU MQTT Iot Project - کلید تغییر: 4 مرحله

تصویری: NodeMCU MQTT Iot Project - کلید تغییر: 4 مرحله

تصویری: NodeMCU MQTT Iot Project - کلید تغییر: 4 مرحله
تصویری: MQTT Protocol with NodeMCU ESP8266 Tutorial 2024, جولای
Anonim
Image
Image

کیت شروع کننده OSOYOO NodeMCU IOT

لطفاً ما را در فیس بوک دنبال کنید ، مورد جدید منتشر شده ما را بیابید و ایده و فیلم خود را در مورد نحوه استفاده خلاقانه از محصولات خود به اشتراک بگذارید. می توانید از ما پول نقد بگیرید یا هدیه بگیرید! فیس بوک:

یوتیوب:

در این درس ، ما یک دکمه سوئیچ را به NodeMCU متصل می کنیم و وضعیت سوئیچ را به یک کارگزار MQTT ارسال می کنیم. وقتی دکمه فشرده می شود ، NodeMCU وضعیت دکمه را "فشرده" برای کارگزار MQTT منتشر می کند و مشتری MQTT مشترک این پیام ها می شود. هنگامی که دکمه فشاری آزاد می شود ، "فشرده نشده" ارسال می شود.

مرحله 1: آماده سازی

نمودار اتصال
نمودار اتصال

سخت افزار:

برد NodeMCU x 1

تغییر دکمه x 1

مقاومت 1K x 1

تخته نان x 1

سیم های بلوز

نرم افزار:

Arduino IDE (نسخه 1.6.4+)

ESP8266 Package Board و Serial Port Driver

مشتری MQTT (MQTTBox اینجا)

کتابخانه آردوینو: PubSubClient

مرحله 2: نمودار اتصال

در این درس ، ما از D2 (GPIO4) برای کنترل سوئیچ استفاده می کنیم ، لطفاً سخت افزار را مطابق نمودار اتصال تنظیم کنید.

توجه: مقاومت 1k به عنوان مقاومت کششی استفاده می شود ، در چنین مداری ، هنگامی که سوئیچ بسته است ، ورودی NodeMCU دارای مقدار منطقی بالایی است ، اما هنگامی که سوئیچ باز است ، مقاومت کششی ولتاژ ورودی را می کشد به زمین (مقدار صفر منطقی) ، از حالت نامشخص در ورودی جلوگیری می کند.

مرحله 3: کد

کد
کد
کد
کد

کد زیر را در Arduino IDE کپی کنید:

/ * _ _ _ _ _ _ _ _ _ _ * / _ / / _) / _ / | | | | / _ / / _ / / _) _ / | / *| | _ | | _ | | _ | | | _ | | | _ | | | _ | ((_ | | _ | | | | | * * _/ (_/ / _/ / _ | / _/ / _ (_) _) _/ | _ | _ | _ | * (_/ * استفاده از NodeMCU ارسال وضعیت دکمه سوئیچ به مشتری MQTT از طریق WiFi * URL آموزش: * CopyRight www.osoyoo.com */ #include #include

int BUTTON_PIN = D2 ؛ // دکمه به پین GP1 GP1 متصل است

// اینها را با مقادیر مناسب برای شبکه خود به روز کنید. const char*ssid = "********" ؛ // وای فای خود را در اینجا قرار دهید const char*password = "********" ؛ // گذرواژه وای فای خود را در اینجا قرار دهید. const char* mqtt_server = "broker.mqttdashboard.com"؛ // const char* mqtt_server = "iot.eclipse.org"؛

WiFiClient espClient ؛

مشتری PubSubClient (espClient) ؛ long lastMsg = 0؛ char msg [50]؛

void setup_wifi () {

تأخیر (100) ؛ // ما با اتصال به شبکه WiFi Serial.print ("اتصال به") شروع می کنیم. Serial.println (ssid)؛ WiFi.begin (ssid ، رمز عبور) ؛ while (WiFi.status ()! = WL_CONNECTED) {تأخیر (500)؛ Serial.print (".") ؛ } randomSeed (micros ()) ؛ Serial.println ("")؛ Serial.println ("WiFi متصل است") ؛ Serial.println ("آدرس IP:") ؛ Serial.println (WiFi.localIP ()) ؛ }

void callback (char* topic، byte* payload، unsigned int length)

{} // پایان تماس

وصل مجدد باطل () {

// تا زمانی که دوباره متصل نشوید (! client.connected ()) {Serial.print ("تلاش برای اتصال MQTT …") ؛ // ایجاد یک شناسه کلاینت تصادفی String clientId = "ESP8266Client-"؛ clientId += رشته (تصادفی (0xffff) ، HEX) ؛ // تلاش برای اتصال // اگر کارگزار MQTT دارای clientID ، نام کاربری و رمز عبور // لطفاً خط زیر را به if (client.connect (clientId، userName، passWord)) if (client.connect (clientId.c_str ())) تغییر دهید {Serial.println ("متصل") ؛ // به محض اتصال به کارگزار MQTT ، در صورت وجود هرگونه client.subscribe کنید (subscribe) ("OsoyooCommand") ؛ } else {Serial.print ("ناموفق ، rc =")؛ Serial.print (client.state ()) ؛ Serial.println ("در 5 ثانیه دوباره امتحان کنید") ؛ // 5 ثانیه قبل از امتحان مجدد تأخیر (5000) منتظر بمانید. }}} // پایان مجدد اتصال ()

void setup () {

Serial.begin (115200) ؛ setup_wifi ()؛ client.setServer (mqtt_server ، 1883) ؛ client.setCallback (تماس تلفنی) ؛ pinMode (BUTTON_PIN ، INPUT) ؛ }

حلقه خالی () {

if (! client.connected ()) {اتصال مجدد ()؛ } client.loop ()؛ در حال حاضر = millis ()؛ وضعیت int ؛ // ارسال پیام هر 2 ثانیه اگر (در حال حاضر - lastMsg> 2000) {lastMsg = اکنون؛ وضعیت = digitalRead (BUTTON_PIN) ؛ String msg = "وضعیت دکمه:"؛ if (status == HIGH) {msg = msg+ "Pressed"؛ پیام char [58]؛ msg.toCharArray (پیام ، 58) ؛ Serial.println (پیام) ؛ // انتشار داده های حسگر به کارگزار MQTT client.publish ("OsoyooData" ، پیام) ؛ } else {msg = msg+ "Not Press"؛ پیام char [58]؛ msg.toCharArray (پیام ، 58) ؛ Serial.println (پیام) ؛ // انتشار داده های حسگر به کارگزار MQTT client.publish ("OsoyooData" ، پیام) ؛ }}}

کد را متناسب با تنظیمات WiFi و MQTT خود به عنوان عملیات زیر ویرایش کنید: 1) پیکربندی نقطه اتصال: خط کد زیر را پیدا کنید ، ssid و رمز عبور خود را در آنجا قرار دهید.

const char* ssid = "your_hotspot_ssid"؛ const char* password = "your_hotspot_password"؛

2) تنظیم آدرس سرور MQTT: می توانید از آدرس کارگزار MQTT یا آدرس IP خود برای تعیین مقدار mqtt_server استفاده کنید. همچنین می توانید از برخی سرورهای معروف MQTT رایگان برای آزمایش پروژه مانند "broker.mqtt-dashboard.com" ، "iot.eclipse.org" و غیره استفاده کنید.

const char* mqtt_server = "broker.mqtt-dashboard.com"؛

3) تنظیمات مشتری MQTT اگر کارگزار MQTT شما نیاز به شناسه مشتری ، نام کاربری و رمز عبور دارد ، باید تغییر دهید

if (client.connect (clientId.c_str ()))

به

if (client.connect (clientId، userName، passWord)) // clientId/userName/passWord خود را در اینجا قرار دهید

اگر نه ، فقط آنها را به صورت پیش فرض نگه دارید. پس از انجام این کار ، نوع برد مربوطه و نوع پورت را مانند زیر انتخاب کنید ، سپس طرح را در NodeMCU بارگذاری کنید.

  • صفحه:”NodeMCU 0.9 (ماژول ESP-12)”
  • فرکانس پردازنده:”80 مگاهرتز” اندازه فلش:”
  • 4M (3M SPIFFS)”
  • سرعت بارگذاری:”115200
  • پورت: پورت سریال خود را برای NodeMCU خود انتخاب کنید

مرحله 4: تنظیمات مشتری MQTT

تنظیمات مشتری MQTT
تنظیمات مشتری MQTT
تنظیمات مشتری MQTT
تنظیمات مشتری MQTT

اگر نمی دانید چگونه مشتری MQTT را پیکربندی کنید ، لطفاً از آخرین مقاله ما دیدن کنید:

تنظیمات موضوعات: موضوع انتشار: OsoyooCommand

موضوع اشتراک: OsoyooData

نتیجه در حال اجرا

پس از اتمام بارگذاری ، در صورتی که نام وای فای و تنظیم رمز عبور خوب باشد و کارگزار MQTT متصل باشد ، Serial Monitor را باز کنید ، نتیجه زیر را مشاهده خواهید کرد: با فشار دادن این دکمه ، Serial Monitor هر 2 ثانیه "وضعیت دکمه: فشار داده شده" را نشان می دهد. هنگامی که این دکمه را رها می کنید ، Serial Monitor هر 2 ثانیه "وضعیت دکمه: فشار داده نشده" را نشان می دهد.

توصیه شده: