תוכן עניינים:

NodeMCU MQTT Iot Project - לחצן מתג: 4 שלבים
NodeMCU MQTT Iot Project - לחצן מתג: 4 שלבים

וִידֵאוֹ: NodeMCU MQTT Iot Project - לחצן מתג: 4 שלבים

וִידֵאוֹ: NodeMCU MQTT Iot Project - לחצן מתג: 4 שלבים
וִידֵאוֹ: GPIO Toggle Switch via PI + MQTT / NodeMCU + DHT11 Temp + Humidity sensor over wifi + MQTT 2024, יולי
Anonim
Image
Image

ערכת התחלה של OSOYOO NodeMCU IOT

אנא עקוב אחרינו בפייסבוק, מצא את הפריט החדש ששוחרר ושתף את הרעיון והסרטון שלך כיצד להשתמש במוצרינו באופן יצירתי. אתה יכול לקבל מאיתנו החזר כספי או מתנה! Facebook:

יוטיוב:

בשיעור זה, נחבר כפתור מתג ל- NodeMCU, ונשלח את מצב המתג לברוקר MQTT. כאשר לוחצים על הכפתור, NodeMCU יפרסם את מצב הלחצן "נלחץ" לברוקר MQTT ולקוח MQTT ירשם להודעות אלה. כאשר שחרור כפתור הלחיצה יישלח "לא נלחץ".

שלב 1: הכנה

תרשים חיבור
תרשים חיבור

חוּמרָה:

לוח NodeMCU x 1

לחצן מתג x 1

הנגד 1K x 1

לוח לחם x 1

חוטי מגשר

תוֹכנָה:

Arduino IDE (גרסה 1.6.4+)

חבילת לוח ESP8266 ומנהל ההתקן הטורי

לקוח MQTT (MQTTBox כאן)

ספריית Arduino: PubSubClient

שלב 2: תרשים חיבור

בשיעור זה אנו משתמשים ב- D2 (GPIO4) לשליטה במתג, אנא הגדר את החומרה בהתאם לגרף החיבור.

הערה: הנגד 1k משמש כנגד משיכה למטה, במעגל כזה, כאשר המתג סגור, קלט NodeMCU הוא בעל ערך לוגי גבוה, אך כאשר המתג פתוח, הנגד הנפתח מושך את מתח הכניסה. עד הקרקע (ערך אפס לוגי), ומונע מצב לא מוגדר בכניסה.

שלב 3: קוד

קוד
קוד
קוד
קוד

העתק את הקוד למטה ל- Arduino IDE:

/ * _ _ _ _ _ _ _ _ _ _ * / _ / / _) / _ / | | | | / _ / / _ / / _) _ / | / *| | _ | | _ | | _ | | | _ | | | _ | | | _ | ((_ | | _ | | | | | * / _/ (_/ / _/ / _ | / _/ / _ (_) _) _/ | _ | _ | _ | * (_/ * השתמש ב- NodeMCU שלח סטטוס לחצן מתג ללקוח MQTT באמצעות WiFi * כתובת אתר הדרכה: * CopyRight www.osoyoo.com */ #include #include

int BUTTON_PIN = D2; הכפתור // מחובר לפין GP1 D1

// עדכן אותם עם ערכים המתאימים לרשת שלך. const char*ssid = "********"; // שים את ה- wifi ssid שלך כאן const char*password = "********"; // שים את סיסמת ה- wifi שלך כאן. const char* mqtt_server = "broker.mqttdashboard.com"; // const char* mqtt_server = "iot.eclipse.org";

WiFiClient espClient;

לקוח PubSubClient (espClient); long lastMsg = 0; הודעת char [50];

void setup_wifi () {

עיכוב (100); // אנו מתחילים בחיבור לרשת WiFi Serial.print ("התחברות ל-"); Serial.println (ssid); WiFi.begin (ssid, סיסמא); בעוד (WiFi.status ()! = WL_CONNECTED) {עיכוב (500); Serial.print ("."); } randomSeed (מיקרו ()); Serial.println (""); Serial.println ("WiFi מחובר"); Serial.println ("כתובת IP:"); Serial.println (WiFi.localIP ()); }

שיחה חוזרת בטלה (char* topic, byte* מטען, אורך אינט לא חתום)

{} // סיים את ההתקשרות החזרה

חיבור מחדש של ריק () {

// לולאה עד שאנו מחוברים מחדש בזמן (! 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, עשה פקודת subscribe אם יש client.subscribe ("OsoyooCommand"); } אחר {Serial.print ("נכשל, rc ="); Serial.print (client.state ()); Serial.println ("נסה שוב בעוד 5 שניות"); // המתן 5 שניות לפני השהיית ניסיון חוזר (5000); }}}} // לסיים את החיבור מחדש ()

הגדרת בטל () {

Serial.begin (115200); setup_wifi (); client.setServer (mqtt_server, 1883); client.setCallback (callback); pinMode (BUTTON_PIN, INPUT); }

לולאת חלל () {

אם (! client.connected ()) {התחבר מחדש (); } client.loop (); זמן רב עכשיו = מיליס (); סטטוס int; // שלח הודעה כל 2 שניות אם (עכשיו - lastMsg> 2000) {lastMsg = עכשיו; status = digitalRead (BUTTON_PIN); String msg = "מצב לחצן:"; if (status == HIGH) {msg = msg+ "לחץ"; הודעת צ'ארה [58]; msg.toCharArray (הודעה, 58); Serial.println (הודעה); // לפרסם נתוני חיישנים לברוקר MQTT client.publish ("OsoyooData", הודעה); } אחר {msg = msg+ "לא ללחוץ"; הודעת צ'ארה [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: תוכל להשתמש בכתובת ה- URL של מתווך MQTT או בכתובת ה- IP שלך כדי להגדיר מעל ערך mqtt_server. תוכל גם להשתמש בשרת MQTT מפורסם בחינם כדי לבדוק את הפרויקט כגון "broker.mqtt-dashboard.com", "iot.eclipse.org" וכו '.

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

3) הגדרות לקוח MQTT אם מתווך MQTT שלך דורש זיהוי לקוח, שם משתמש וסיסמה, עליך לשנות

אם (client.connect (clientId.c_str ()))

ל

אם (client.connect (clientId, userName, passWord)) // שים כאן את clientId/userName/passWord שלך

אם לא, פשוט שמור אותם כברירת מחדל. לאחר שתעשה זאת, בחר את סוג הלוח המתאים וסוג היציאה כמפורט להלן, ולאחר מכן העלה את הסקיצה ל- NodeMCU.

  • לוח: "NodeMCU 0.9 (מודול ESP-12)"
  • תדר המעבד: "80MHz" גודל הבזק:"
  • 4M (3M SPIFFS)”
  • מהירות העלאה:”115200 ″
  • יציאה: בחר יציאה סידרית משלך עבור NodeMCU שלך

שלב 4: הגדרות לקוח MQTT

הגדרות לקוח MQTT
הגדרות לקוח MQTT
הגדרות לקוח MQTT
הגדרות לקוח MQTT

אם אינך יודע כיצד להגדיר לקוח MQTT, בקר במאמר האחרון שלנו:

הגדרות נושאים: נושא לפרסום: OsoyooCommand

נושא להרשמה: OsoyooData

תוצאת ריצה

לאחר ההעלאה, אם שם נקודה חמה וסיסמת Wi -Fi תקינים והמתווך MQTT מחובר, פתח את הצג הטורי, תראה את התוצאה הבאה: המשך ללחוץ על כפתור זה, הצג הסידורי יפיק "סטטוס לחצן: נלחץ" כל 2 שניות; לאחר שחרור כפתור זה, הצג הסידורי יפיק "2 לחצן מצב: לא נלחץ" כל 2 שניות.

מוּמלָץ: