สารบัญ:

Raspberry Pi คุยกับ ESP8266 โดยใช้ MQTT: 8 ขั้นตอน
Raspberry Pi คุยกับ ESP8266 โดยใช้ MQTT: 8 ขั้นตอน

วีดีโอ: Raspberry Pi คุยกับ ESP8266 โดยใช้ MQTT: 8 ขั้นตอน

วีดีโอ: Raspberry Pi คุยกับ ESP8266 โดยใช้ MQTT: 8 ขั้นตอน
วีดีโอ: EP.5 | ติดตั้ง MQTT Broker (Mosquitto) บน Raspberry PI 2024, กรกฎาคม
Anonim
Raspberry Pi คุยกับ ESP8266 โดยใช้ MQTT
Raspberry Pi คุยกับ ESP8266 โดยใช้ MQTT

ในโครงการนี้ ฉันจะอธิบายว่าโปรโตคอล 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 แบบคงที่

วิธีตั้งค่าที่อยู่ IP แบบคงที่
วิธีตั้งค่าที่อยู่ 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

NodeMCU
NodeMCU
NodeMCU
NodeMCU
NodeMCU
NodeMCU
NodeMCU
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: ผลลัพธ์

Image
Image
ผลลัพธ์
ผลลัพธ์

ตรวจสอบให้แน่ใจว่าสคริปต์ของคุณกำลังทำงานอยู่ มิฉะนั้นจะไม่สามารถควบคุม led โดยใช้ปุ่มได้

แนะนำ: