สารบัญ:

โครงการ NodeMCU MQTT Iot - ปุ่มสวิตช์: 4 ขั้นตอน
โครงการ NodeMCU MQTT Iot - ปุ่มสวิตช์: 4 ขั้นตอน

วีดีโอ: โครงการ NodeMCU MQTT Iot - ปุ่มสวิตช์: 4 ขั้นตอน

วีดีโอ: โครงการ NodeMCU MQTT Iot - ปุ่มสวิตช์: 4 ขั้นตอน
วีดีโอ: EP18 Arduino IoT มาสร้างระบบการควบคุมการปิดเปิดอุปกรณ์ไฟฟ้าผ่านอินเตอร์เนต ด้วยเวลาเพียง 35 นาที 2024, กรกฎาคม
Anonim
Image
Image

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
การตั้งค่าไคลเอนต์ MQTT
การตั้งค่าไคลเอนต์ MQTT
การตั้งค่าไคลเอนต์ MQTT

หากคุณไม่ทราบวิธีกำหนดค่าไคลเอนต์ MQTT โปรดไปที่บทความล่าสุดของเรา:

การตั้งค่าหัวข้อ:หัวข้อที่จะเผยแพร่: OsoyooCommand

หัวข้อที่จะสมัคร: OsoyooData

ผลการวิ่ง

เมื่ออัปโหลดเสร็จแล้ว หากการตั้งค่าชื่อ wifi hotspot และรหัสผ่านใช้ได้ และโบรกเกอร์ MQTT เชื่อมต่อแล้ว ให้เปิด Serial Monitor คุณจะเห็นผลลัพธ์ต่อไปนี้: กดปุ่มนี้ค้างไว้ Serial Monitor จะแสดงผล “สถานะปุ่ม: Pressed” ทุก 2 วินาที เมื่อปล่อยปุ่มนี้ Serial Monitor จะส่งออก "สถานะปุ่ม: ไม่ได้กด" ทุกๆ 2 วินาที

แนะนำ: