สารบัญ:
- ขั้นตอนที่ 1: MQTT คืออะไรและทำงานอย่างไร
- ขั้นตอนที่ 2: Raspberry Pi
- ขั้นตอนที่ 3: วิธีตั้งค่าที่อยู่ IP แบบคงที่
- ขั้นตอนที่ 4: NodeMCU
- ขั้นตอนที่ 5: Python Script
- ขั้นตอนที่ 6: การเชื่อมต่อและแผนภาพวงจร
- ขั้นตอนที่ 7: ผลลัพธ์
วีดีโอ: Raspberry Pi คุยกับ ESP8266 โดยใช้ MQTT: 8 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
ในโครงการนี้ ฉันจะอธิบายว่าโปรโตคอล MQTT คืออะไรและใช้อย่างไรในการสื่อสารระหว่างอุปกรณ์ จากนั้นในการสาธิตเชิงปฏิบัติ ฉันจะสาธิตวิธีการตั้งค่าไคลเอนต์และระบบโบรคเกอร์ โดยที่โมดูล ESP8266 รวมถึงการพูดคุย RPi ถึงกันหรือส่งข้อความเมื่อกดปุ่ม
วัสดุที่จำเป็น
1. Raspberry Pi 3
2. NodeMCU
3. LED
4. ปุ่ม
5. ตัวต้านทาน (10k, 475 โอห์ม)
ขั้นตอนที่ 1: MQTT คืออะไรและทำงานอย่างไร
MQTT
MQTT เป็นโปรโตคอลการถ่ายโอนข้อมูลระหว่างเครื่อง (M2M) MQTT ถูกสร้างขึ้นโดยมีเป้าหมายในการรวบรวมข้อมูลจากอุปกรณ์จำนวนมาก จากนั้นจึงส่งข้อมูลนั้นไปยังโครงสร้างพื้นฐานด้านไอที มันมีน้ำหนักเบาและเหมาะอย่างยิ่งสำหรับการตรวจสอบระยะไกล โดยเฉพาะอย่างยิ่งในการเชื่อมต่อ M2M ที่ต้องใช้รหัสขนาดเล็กหรือที่แบนด์วิดท์เครือข่ายมีจำกัด
MQTT ทำงานอย่างไร
MQTT เป็นโปรโตคอลการเผยแพร่/สมัครรับข้อมูลที่อนุญาตให้อุปกรณ์ขอบเครือข่ายเผยแพร่ไปยังนายหน้า ลูกค้าเชื่อมต่อกับโบรกเกอร์นี้ ซึ่งจะเป็นสื่อกลางในการสื่อสารระหว่างอุปกรณ์ทั้งสอง อุปกรณ์แต่ละเครื่องสามารถสมัครรับข้อมูลหรือลงทะเบียนหัวข้อเฉพาะได้ เมื่อลูกค้ารายอื่นเผยแพร่ข้อความในหัวข้อที่สมัคร นายหน้าจะส่งต่อข้อความไปยังลูกค้าที่สมัครรับข้อมูล
MQTT เป็นแบบสองทิศทางและคงไว้ซึ่งการรับรู้เซสชันแบบเก็บสถานะ หากอุปกรณ์ edge-of-network ขาดการเชื่อมต่อ ไคลเอนต์ที่สมัครรับข้อมูลทั้งหมดจะได้รับแจ้งด้วยคุณสมบัติ “Last Will and Testament” ของเซิร์ฟเวอร์ MQTT เพื่อให้ไคลเอนต์ที่ได้รับอนุญาตในระบบสามารถเผยแพร่ค่าใหม่กลับไปที่ edge-of- อุปกรณ์เครือข่าย รักษาการเชื่อมต่อแบบสองทิศทาง
โครงการแบ่งออกเป็น 3 ส่วน
ประการแรก เราสร้างเซิร์ฟเวอร์ MQTT บน RPi และติดตั้งบางไลบรารี
ประการที่สอง เราจะติดตั้งไลบรารี่ใน Arduino IDE เพื่อให้ NodeMCU ทำงานกับ MQTT อัปโหลดโค้ด และตรวจสอบว่าเซิร์ฟเวอร์ทำงานหรือไม่
สุดท้าย เราสร้างสคริปต์ใน Rpi อัปโหลดโค้ดที่จำเป็นใน NodeMCU และเรียกใช้สคริปต์ python เพื่อควบคุมไฟ LED จากทั้งฝั่งเซิร์ฟเวอร์และฝั่งไคลเอ็นต์ ที่นี่เซิร์ฟเวอร์คือ RPi และไคลเอนต์คือ NodeMCU
ขั้นตอนที่ 2: Raspberry Pi
1. ในการติดตั้งเซิร์ฟเวอร์และไคลเอ็นต์ MQTT ล่าสุดใน RPi หากต้องการใช้ที่เก็บใหม่ คุณควรนำเข้าคีย์การลงนามแพ็กเกจที่เก็บก่อน
wget https://repo.mosquitto.org/debian/mosquitto-repo.gpg.keysudo apt-key เพิ่ม mosquitto-repo.gpg.key
2. ทำให้พื้นที่เก็บข้อมูลพร้อมสำหรับ apt
cd /etc/apt/sources.list.d/
3. ขึ้นอยู่กับรุ่นของ Debian ที่คุณใช้
sudo wget https://repo.mosquitto.org/debian/mosquitto-wheezy.listsudo wget
sudo wget
sudo apt-get update
4. ติดตั้งเซิร์ฟเวอร์ Mosquitto โดยใช้คำสั่ง
sudo apt-get ติดตั้งยุง
หากคุณได้รับข้อผิดพลาดในการติดตั้ง Mosquitto เช่นนี้
#################################################################
แพ็คเกจต่อไปนี้มีการพึ่งพา unmet:mosquitto: ขึ้นอยู่กับ: libssl1.0.0 (>= 1.0.1) แต่ไม่สามารถติดตั้งได้ ขึ้นอยู่กับ: libwebsockets3 (>= 1.2) แต่ไม่สามารถติดตั้งได้ E: ไม่สามารถแก้ไขปัญหาได้ คุณมีปัญหา แพ็คเกจ
#################################################################
จากนั้นใช้คำสั่งนี้เพื่อแก้ไขปัญหา
sudo apt --fix-broken install
5. หลังจากติดตั้งเซิร์ฟเวอร์ MQTT แล้ว ให้ติดตั้งไคลเอนต์โดยใช้คำสั่ง
sudo apt-get ติดตั้ง mosquitto-clients
คุณสามารถตรวจสอบบริการโดยใช้คำสั่ง
สถานะ systemctl mosquitto.service
เนื่องจากเซิร์ฟเวอร์และไคลเอนต์ MQTT ของเราได้รับการติดตั้ง ตอนนี้เราสามารถตรวจสอบได้โดยใช้การสมัครและเผยแพร่ สำหรับการสมัครและเผยแพร่ คุณสามารถตรวจสอบคำสั่งหรือเยี่ยมชมเว็บไซต์ตามที่ระบุด้านล่าง
ยุง Sub
ผับยุง
ในการติดตั้งไลบรารี paho-mqtt ให้ใช้คำสั่งด้านล่าง
sudo pip ติดตั้ง paho-mqtt
พะโฮ
ขั้นตอนที่ 3: วิธีตั้งค่าที่อยู่ IP แบบคงที่
ไปที่ไดเร็กทอรี cd /etc และเปิดไฟล์ dhcpcd.conf โดยใช้ตัวแก้ไขใดก็ได้ ในตอนท้าย ให้เขียนสี่บรรทัดนี้
อินเตอร์เฟส eth0 สแตติก ip_address=192.168.1.100 // ip ที่คุณต้องการใช้
อินเทอร์เฟซ wlan0
ip_address แบบคงที่=192.168.1.68
เราเตอร์แบบคงที่ = 192.168.1.1 // เกตเวย์เริ่มต้นของคุณ
โดเมนคงที่_name_servers=192.168.1.1
หลังจากนั้นให้บันทึกและรีบูต pi ของคุณ
ขั้นตอนที่ 4: NodeMCU
ติดตั้งไลบรารีที่จำเป็นใน Arduino IDE สำหรับ NodeMCU
1. ไปที่ Sketch ==> รวมไลบรารี ==> จัดการไลบรารี
2. ค้นหา mqtt และติดตั้งไลบรารีโดย Adafruit หรือคุณสามารถติดตั้งไลบรารีใดก็ได้
3. มันขึ้นอยู่กับห้องสมุด sleepydog ดังนั้นเราจึงต้องการห้องสมุดนี้ด้วย
โปรแกรมได้รับข้างต้นเพียงเพื่อตรวจสอบว่าใช้งานได้หรือไม่ ที่นี่ฉันไม่ได้สร้างสคริปต์ใด ๆ ใน RPi เราแค่ใช้คำสั่งเพื่อสมัครและเผยแพร่ เราจะสร้างสคริปต์สำหรับการควบคุมในภายหลัง
mosquitto_pub -h raspberrypi -t "/ leds/pi" -m "ON"
mosquitto_pub -h raspberrypi -t "/ leds/pi" -m "ปิด"
mosquitto_pub -h raspberrypi -t "/ leds/pi" -m "TOGGLE"
mosquitto_pub -h raspberrypi -t "/ leds/esp8266" -m "เปิด"
mosquitto_pub -h raspberrypi -t "/ leds/esp8266" -m "ปิด"
mosquitto_pub -h raspberrypi -t "/leds/esp8266" -m "TOGGLE"
-h == > ชื่อโฮสต์-t == > หัวข้อ
-m == > ข้อความ
หลังจากตรวจสอบโปรแกรม Mqtt_check แล้ว ให้อัปโหลดโปรแกรมที่สมบูรณ์ใน NodeMCU
ขั้นตอนที่ 5: Python Script
ดังที่ได้กล่าวไว้ข้างต้น เราจำเป็นต้องมีสคริปต์หลามสำหรับการควบคุมไฟ LED โดยใช้ปุ่ม ดังนั้น เราจะสร้างสคริปต์ สคริปต์ได้รับข้างต้น
เมื่อคุณเรียกใช้สคริปต์ สคริปต์ของคุณควรมีลักษณะตามที่แสดงในรูปภาพ หากรหัสผลลัพธ์ไม่ใช่ศูนย์ แสดงว่าเป็นข้อผิดพลาด คุณสามารถตรวจสอบข้อผิดพลาดบนเว็บไซต์ paho ได้
ขั้นตอนที่ 6: การเชื่อมต่อและแผนภาพวงจร
การเชื่อมต่อของปุ่ม LED กับ NodeMCU
NodeMCU === > ButtonGnd === > Gnd
3.3V === > PIN1
GPIO4 (D2) === > PIN2
NodeMCU === > LED
Gnd === > แคโทด (-ve)
GPIO5 (D1) === > แอโนด(+ve)
การเชื่อมต่อของปุ่ม LED พร้อม RPi
RPi === > ButtonGnd === > PIN1
GPIO 23 === > PIN2
RPi === > LED
Gnd == > แคโทด (-ve)
GPIO 24 === > แอโนด(+ve)
ขั้นตอนที่ 7: ผลลัพธ์
ตรวจสอบให้แน่ใจว่าสคริปต์ของคุณกำลังทำงานอยู่ มิฉะนั้นจะไม่สามารถควบคุม led โดยใช้ปุ่มได้
แนะนำ:
MAX7219 LED Matrix MQTT โดยใช้ Esp8266: 6 ขั้นตอน
MAX7219 LED Matrix MQTT การใช้ Esp8266: ฉันกำลังพยายามเชื่อมต่อจอแสดงผล LED MAX7219 ของฉันกับเซิร์ฟเวอร์ MQTT และได้รับข้อความจากการสมัครสมาชิก MQTT เพื่อแสดง แต่ฉันไม่ได้รับรหัสที่เหมาะสมบนอินเทอร์เน็ต ดังนั้นฉันจึงเริ่มสร้างรหัสของตัวเอง …และผลออกมาค่อนข้างดี…คุณสามารถได
Neopixel Ws2812 Rainbow LED เรืองแสงพร้อม M5stick-C - เรียกใช้ Rainbow บน Neopixel Ws2812 โดยใช้ M5stack M5stick C โดยใช้ Arduino IDE: 5 ขั้นตอน
Neopixel Ws2812 Rainbow LED เรืองแสงพร้อม M5stick-C | เรียกใช้ Rainbow บน Neopixel Ws2812 โดยใช้ M5stack M5stick C การใช้ Arduino IDE: สวัสดีทุกคนในคำแนะนำนี้ เราจะเรียนรู้วิธีใช้ neopixel ws2812 LED หรือแถบนำหรือเมทริกซ์นำหรือวงแหวน LED พร้อมบอร์ดพัฒนา m5stack m5stick-C พร้อม Arduino IDE และเราจะทำ ลายรุ้งกับมัน
การควบคุมวิทยุ RF 433MHZ โดยใช้ HT12D HT12E - การสร้างรีโมทคอนโทรล Rf โดยใช้ HT12E & HT12D ด้วย 433mhz: 5 ขั้นตอน
การควบคุมวิทยุ RF 433MHZ โดยใช้ HT12D HT12E | การสร้างการควบคุมระยะไกล Rf โดยใช้ HT12E & HT12D ด้วย 433mhz: ในคำแนะนำนี้ฉันจะแสดงวิธีสร้างรีโมทคอนโทรล RADIO โดยใช้โมดูลตัวรับส่งสัญญาณ 433mhz พร้อมการเข้ารหัส HT12E & IC ถอดรหัส HT12D ในคำแนะนำนี้ คุณจะสามารถส่งและรับข้อมูลโดยใช้ส่วนประกอบราคาถูกมาก เช่น HT
การตรวจจับผู้บุกรุก HiFive1 Arduino พร้อมการแจ้งเตือน MQTT โดยใช้ ESP32 หรือ ESP8266: 6 ขั้นตอน
การตรวจจับผู้บุกรุก HiFive1 Arduino พร้อมการแจ้งเตือน MQTT โดยใช้ ESP32 หรือ ESP8266: HiFive1 เป็นบอร์ดที่ใช้ RISC-V ที่เข้ากันได้กับ Arduino ตัวแรกที่สร้างขึ้นด้วย FE310 CPU จาก SiFive บอร์ดนี้เร็วกว่า Arduino UNO ประมาณ 20 เท่า แต่เหมือนกับบอร์ด UNO ที่ไม่มีการเชื่อมต่อไร้สาย โชคดีที่มีราคาไม่แพงหลาย
การควบคุม WiFi ของ Model Train โดยใช้ MQTT: 9 ขั้นตอน
การควบคุม WiFi ของ Model Train โดยใช้ MQTT: มีระบบโมเดล TT Scale Train แบบเก่า ฉันมีแนวคิดว่าจะควบคุม locos แยกกันอย่างไร เมื่อคำนึงถึงสิ่งนี้ ฉันได้ก้าวไปอีกขั้นและค้นพบว่าสิ่งที่จำเป็นไม่เพียงแต่ควบคุมรถไฟเท่านั้น แต่มีข้อมูลเพิ่มเติมเกี่ยวกับ