สารบัญ:
- ขั้นตอนที่ 1: การเตรียมการ
- ขั้นตอนที่ 2: กราฟการเชื่อมต่อ
- ขั้นตอนที่ 3: รหัส
- ขั้นตอนที่ 4: การตั้งค่าไคลเอนต์ MQTT
วีดีโอ: โครงการ NodeMCU MQTT Iot - ปุ่มสวิตช์: 4 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:05
OSOYOO NodeMCU IOT ชุดเริ่มต้น
โปรดติดตามเราบน facebook ค้นหาสินค้าออกใหม่ของเราและแบ่งปันความคิดและวิดีโอของคุณเกี่ยวกับวิธีการใช้ผลิตภัณฑ์ของเราอย่างสร้างสรรค์ คุณสามารถรับเงินคืนหรือของรางวัลจากเราได้!Facebook:
Youtube:
ในบทเรียนนี้ เราจะเชื่อมต่อปุ่มสวิตช์กับ 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 * URL บทช่วยสอน: * CopyRight www.osoyoo.com */ #include #include
int BUTTON_PIN = D2; //ปุ่มเชื่อมต่อกับพิน GPIO D1
// อัปเดตค่าเหล่านี้ด้วยค่าที่เหมาะสมกับเครือข่ายของคุณ const char* ssid = "*****";//ใส่ wifi ssid ของคุณที่นี่ const char* password = "*******";//ใส่รหัสผ่าน wifi ของคุณที่นี่ const char* mqtt_server = "นายหน้า.mqttdashboard.com"; //const ถ่าน* mqtt_server = "iot.eclipse.org";
WiFiClient espClient;
ไคลเอนต์ PubSubClient (espClient); LastMsg = 0; ผงชูรสอักขระ[50];
เป็นโมฆะ 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*, เพย์โหลดไบต์*, ความยาว int ที่ไม่ได้ลงชื่อ)
{ } // วางสายกลับ
เป็นโมฆะเชื่อมต่อใหม่ () {
// วนซ้ำจนกว่าเราจะเชื่อมต่อใหม่ในขณะที่ (!client.connected()) { Serial.print("พยายามเชื่อมต่อ MQTT…"); // สร้างสตริงรหัสไคลเอ็นต์แบบสุ่ม clientId = "ESP8266Client-"; clientId += String(สุ่ม(0xffff), HEX); // พยายามเชื่อมต่อ // หากคุณโบรกเกอร์ MQTT ของคุณมี clientID ชื่อผู้ใช้และรหัสผ่าน // โปรดเปลี่ยนบรรทัดต่อไปนี้เป็น if (client.connect(clientId, userName, passWord)) if (client.connect(clientId.c_str())) { Serial.println ("เชื่อมต่อแล้ว"); //เมื่อเชื่อมต่อกับโบรกเกอร์ MQTT แล้ว ให้สมัครคำสั่งถ้ามี client.subscribe("OsoyooCommand"); } อื่น ๆ { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" ลองอีกครั้งใน 5 วินาที"); // รอ 5 วินาทีก่อนที่จะลองดีเลย์อีกครั้ง (5000); } } } // สิ้นสุดการเชื่อมต่อใหม่ ()
การตั้งค่าเป็นโมฆะ () {
Serial.begin(115200); setup_wifi(); client.setServer(mqtt_server, 1883); client.setCallback(โทรกลับ); โหมดพิน (BUTTON_PIN, อินพุต); }
วงเป็นโมฆะ () {
if (!client.connected()) { เชื่อมต่อใหม่ (); } client.loop(); ยาวแล้ว = millis(); สถานะ int; // ส่งข้อความทุก 2 วินาทีถ้า (ตอนนี้ - lastMsg > 2000) { lastMsg = ตอนนี้; สถานะ=ดิจิตอลอ่าน(BUTTON_PIN); String msg="สถานะปุ่ม: "; if(status==HIGH) { msg= msg+ "กด"; ข้อความถ่าน[58]; msg.toCharArray(ข้อความ, 58); Serial.println (ข้อความ); //เผยแพร่ข้อมูลเซ็นเซอร์ไปยังไคลเอ็นต์โบรกเกอร์ MQTT เผยแพร่ ("OsoyooData", ข้อความ); } อื่น ๆ { msg= msg+ " ไม่กด"; ข้อความถ่าน[58]; msg.toCharArray(ข้อความ, 58); Serial.println (ข้อความ); //เผยแพร่ข้อมูลเซ็นเซอร์ไปยังไคลเอ็นต์โบรกเกอร์ MQTT เผยแพร่ ("OsoyooData", ข้อความ); } } }
แก้ไขรหัสให้พอดีกับการตั้งค่า WiFi และ MQTT ของคุณเองตามการดำเนินการต่อไปนี้:1)การกำหนดค่าฮอตสปอต:ค้นหาบรรทัดโค้ดด้านล่าง ใส่ ssid และรหัสผ่านของคุณเองที่นั่น
const char* ssid = “your_hotspot_ssid”;const char* รหัสผ่าน = “your_hotspot_password”;
2) การตั้งค่าที่อยู่เซิร์ฟเวอร์ MQTT: คุณสามารถใช้ URL นายหน้า MQTT หรือที่อยู่ IP ของคุณเองเพื่อตั้งค่าให้สูงกว่าค่า mqtt_server คุณยังสามารถใช้เซิร์ฟเวอร์ MQTT ฟรีที่มีชื่อเสียงเพื่อทดสอบโครงการ เช่น “broker.mqtt-dashboard.com”, “iot.eclipse.org” เป็นต้น
const char* mqtt_server = “นายหน้า.mqtt-dashboard.com”;
3)การตั้งค่าไคลเอนต์ MQTT หากโบรกเกอร์ MQTT ของคุณต้องการการตรวจสอบรหัสลูกค้า ชื่อผู้ใช้และรหัสผ่าน คุณต้องเปลี่ยน
ถ้า (client.connect(clientId.c_str()))
ถึง
if (client.connect(clientId, userName, passWord)) //ใส่ clientId/userName/passWord ของคุณที่นี่
หากไม่เป็นเช่นนั้น ให้เก็บไว้เป็นค่าเริ่มต้น หลังจากนั้น ให้เลือกประเภทบอร์ดตอบสนองหลักและประเภทพอร์ตด้านล่าง จากนั้นอัปโหลดภาพร่างไปยัง NodeMCU
- บอร์ด:”NodeMCU 0.9 (โมดูล ESP-12)”
- ความถี่ของ CPU:”80MHz”ขนาดแฟลช:”
- 4M (3M SPIFFS)”
- ความเร็วในการอัพโหลด:”115200″
- พอร์ต: เลือกพอร์ตอนุกรมของคุณเองสำหรับ NodeMCU. ของคุณ
ขั้นตอนที่ 4: การตั้งค่าไคลเอนต์ MQTT
หากคุณไม่ทราบวิธีกำหนดค่าไคลเอนต์ MQTT โปรดไปที่บทความล่าสุดของเรา:
การตั้งค่าหัวข้อ:หัวข้อที่จะเผยแพร่: OsoyooCommand
หัวข้อที่จะสมัคร: OsoyooData
ผลการวิ่ง
เมื่ออัปโหลดเสร็จแล้ว หากการตั้งค่าชื่อ wifi hotspot และรหัสผ่านใช้ได้ และโบรกเกอร์ MQTT เชื่อมต่อแล้ว ให้เปิด Serial Monitor คุณจะเห็นผลลัพธ์ต่อไปนี้: กดปุ่มนี้ค้างไว้ Serial Monitor จะแสดงผล “สถานะปุ่ม: Pressed” ทุก 2 วินาที เมื่อปล่อยปุ่มนี้ Serial Monitor จะส่งออก "สถานะปุ่ม: ไม่ได้กด" ทุกๆ 2 วินาที
แนะนำ:
(โครงการ IOT) รับข้อมูลสภาพอากาศโดยใช้ ESP8266 และ Openweather API: 5 ขั้นตอน
(โครงการ IOT) รับข้อมูลสภาพอากาศโดยใช้ ESP8266 และ Openweather API: ในคำแนะนำนี้ เราจะสร้างโครงการ IOT อย่างง่าย ซึ่งดึงข้อมูลสภาพอากาศของเมืองของเราจาก openweather.com/api และแสดงโดยใช้ซอฟต์แวร์การประมวลผล
โครงการ IOT Home Automation DIY #1: 7 ขั้นตอน
โครงการ IOT Home Automation DIY #1: # บทนำ ระบบอัตโนมัติในบ้านเป็นกระบวนการอัตโนมัติของเครื่องใช้ภายในบ้าน เช่น เครื่องปรับอากาศ พัดลม ตู้เย็น หลอดไฟ และรายการต่างๆ ที่ดำเนินไป เพื่อให้สามารถควบคุมได้ด้วยโทรศัพท์ คอมพิวเตอร์ หรือแม้แต่จากระยะไกล โครงการนี้เกี่ยวข้องกับ esp2866
โครงการ IoT อันดับต้นๆ ที่ใช้ ESP8266: 8 ขั้นตอน
โครงการ IoT อันดับต้นๆ ที่ใช้ ESP8266: ปัจจุบัน Machine มีข้อมูลที่ต้องแชร์บนคลาวด์เพื่อวัตถุประสงค์หลายอย่าง เช่น การตรวจสอบ การวิเคราะห์ หรือการเปิดใช้งานแอคทูเอเตอร์ เครื่องจักรกำลังพูดคุยกัน ESP8266 เป็นหนึ่งในโมดูลที่ใช้งานได้ ESP8266 สามารถโพสต์ข้อมูลไปที่ Go
โครงการ Totoro - IoT & MQTT & ESP01: 7 ขั้นตอน (พร้อมรูปภาพ)
โครงการ Totoro - IoT & MQTT & ESP01: โครงการ Totoro เป็นโครงการ IoT ที่ดีที่คุณสามารถคัดลอกในรูปแบบต่างๆ ได้มากมาย การใช้บอร์ด ESP01 กับโปรโตคอล MQTT คุณสามารถสื่อสารสถานะของปุ่มไปยังโบรกเกอร์ MQTT (ใน my case AdafruitIO).คำแนะนำที่เป็นประโยชน์สำหรับ MQTT และ Ad
โครงการ RFID + Color Sensor IoT: 7 ขั้นตอน
โครงการ RFID + Color Sensor IoT: แนวคิดของโครงการนี้คือการให้รางวัลแก่ผู้ที่ดื่มกาแฟจากแก้วและทิ้งอย่างเหมาะสม ยกตัวอย่างบริษัทอย่าง Tim Hortons; ในปี 2014 พวกเขาบันทึกการเสิร์ฟกาแฟ 2 พันล้านถ้วยต่อปี แม้ว่าถ้วยของพวกเขาสามารถรีไซเคิลได้