สารบัญ:
- ขั้นตอนที่ 1: ส่วนประกอบที่จำเป็น
- ขั้นตอนที่ 2: ภาษาและโปรโตคอล
- ขั้นตอนที่ 3: Eclipse Mosquitto MQTT Broker
- ขั้นตอนที่ 4: การไหลของข้อมูลในโครงการทั้งหมด
- ขั้นตอนที่ 5: การเชื่อมต่อเซ็นเซอร์กับ NodeMCU
- ขั้นตอนที่ 6: การเชื่อมต่อปั๊มน้ำใต้น้ำกับ ESP8266
- ขั้นตอนที่ 7: การติดตั้ง Mosquitto Broker & การรันโปรแกรม Python ใน Raspberry Pi
- ขั้นตอนที่ 8: MQTT ทำงานอย่างไร
- ขั้นตอนที่ 9: การเขียนโปรแกรม NodeMCU และ ESP8266
- ขั้นตอนที่ 10: การออกแบบเว็บเพจและการเชื่อมต่อกับฐานข้อมูล SQL
- ขั้นตอนที่ 11: ทำงานให้เสร็จ
วีดีโอ: ระบบอัตโนมัติของบ้านสีเขียว: 11 ขั้นตอน
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
ระบบอัตโนมัติของโรงเรือนสีเขียวเป็นโครงการที่มีพารามิเตอร์สามตัวของโรงเรือนสีเขียว ได้แก่ ความชื้นในดิน อุณหภูมิ และความชื้น ได้รับการตรวจสอบโดยผู้ใช้จากระยะไกลโดยใช้เว็บเบราว์เซอร์
ขั้นตอนที่ 1: ส่วนประกอบที่จำเป็น
ส่วนประกอบที่จำเป็นบางอย่างที่จำเป็นต้องมีอยู่ด้านล่าง
1. Raspberry PI รุ่น B
2. คณะกรรมการพัฒนา NodeMCU
3. โมดูล ESP8266 Wifi
4. เซ็นเซอร์ความชื้น
5. DHT11 เซ็นเซอร์อุณหภูมิและความชื้น
6. 5V รีเลย์ช่องสัญญาณเดียว
7. 5V ปั้มน้ำใต้น้ำ
8. กระดานขนมปัง
9. โมดูลจ่ายไฟ Bread Board
ขั้นตอนที่ 2: ภาษาและโปรโตคอล
- ภาษา C ใช้สำหรับไมโครคอนโทรลเลอร์
- MQTT Messaging: MQTT ย่อมาจาก MQ Telemetry Transport เป็นโปรโตคอลการส่งข้อความแบบเผยแพร่/สมัครใช้งานที่ง่ายมากและน้ำหนักเบา ออกแบบมาสำหรับอุปกรณ์ที่มีข้อจำกัดและเครือข่ายแบนด์วิดธ์ต่ำ เวลาแฝงสูง หรือไม่น่าเชื่อถือ หลักการออกแบบคือการลดแบนด์วิดท์เครือข่ายและความต้องการทรัพยากรอุปกรณ์ในขณะที่พยายามทำให้มั่นใจถึงความน่าเชื่อถือและการรับประกันระดับหนึ่ง หลักการเหล่านี้ยังทำให้โปรโตคอลในอุดมคติของโลก "เครื่องต่อเครื่อง" (M2M) หรือ "อินเทอร์เน็ตของสิ่งต่างๆ" ที่เกิดขึ้นใหม่ของอุปกรณ์ที่เชื่อมต่อ และสำหรับแอปพลิเคชันมือถือที่มีแบนด์วิดท์และพลังงานแบตเตอรี่อยู่ในระดับสูง
- โปรแกรม Python ใช้สำหรับทำให้การไหลของน้ำและการเชื่อมต่อฐานข้อมูลเป็นไปโดยอัตโนมัติ
ขั้นตอนที่ 3: Eclipse Mosquitto MQTT Broker
ที่นี่ฉันใช้ Mosquitto MQTT Broker เพื่อการสื่อสารข้อความที่ง่ายระหว่างโหนด
Eclipse Mosquitto เป็นโบรกเกอร์ข้อความโอเพ่นซอร์ส (ลิขสิทธิ์ EPL/EDL) ที่ใช้โปรโตคอล MQTT เวอร์ชัน 5.0, 3.1.1 และ 3.1 Mosquitto มีน้ำหนักเบาและเหมาะสำหรับใช้กับอุปกรณ์ทั้งหมดตั้งแต่คอมพิวเตอร์บอร์ดเดี่ยวที่ใช้พลังงานต่ำไปจนถึงเซิร์ฟเวอร์เต็มรูปแบบ
โปรโตคอล MQTT ให้วิธีการที่มีน้ำหนักเบาในการดำเนินการส่งข้อความโดยใช้รูปแบบการเผยแพร่/สมัครรับข้อมูล ทำให้เหมาะสำหรับการส่งข้อความทางอินเทอร์เน็ตของสรรพสิ่ง เช่น เซ็นเซอร์พลังงานต่ำหรืออุปกรณ์พกพา เช่น โทรศัพท์ คอมพิวเตอร์แบบฝัง หรือไมโครคอนโทรลเลอร์
โปรเจ็กต์ Mosquitto ยังมีไลบรารี C สำหรับการใช้งานไคลเอนต์ MQTT และไคลเอนต์บรรทัดคำสั่ง mosquitto_pub และ mosquitto_sub ที่ได้รับความนิยมอย่างมาก
ขั้นตอนที่ 4: การไหลของข้อมูลในโครงการทั้งหมด
ในภาพด้านบนโหนดคือ
- NodeMCU
- ราสเบอร์รี่ PI
- ESP8266
NodeMCU เป็นส่วนตรวจจับของ Green House & ESP8266 เป็นส่วนกระตุ้นซึ่งจ่ายน้ำเมื่อพื้นดินต้องการน้ำตามเซ็นเซอร์
Raspberry PI ประกอบด้วย Mosquitto Broker และไคลเอนต์ Python ที่สมัครรับข้อความที่มาจาก MQTT Broker และจัดเก็บข้อมูลลงในเซิร์ฟเวอร์ SQL
ขั้นตอนที่ 5: การเชื่อมต่อเซ็นเซอร์กับ NodeMCU
เซ็นเซอร์อุณหภูมิและความชื้น DHT11 และเซ็นเซอร์ความชื้นในน้ำสามารถทำงานได้ที่ 3.3 โวลต์
NodeMCU ไม่สามารถจ่ายไฟเกิน 3.3 โวลต์ได้ ดังนั้นเซ็นเซอร์จึงสามารถเชื่อมต่อโดยตรงกับบอร์ดไมโครคอนโทรลเลอร์ NodeMCU
ขั้นตอนที่ 6: การเชื่อมต่อปั๊มน้ำใต้น้ำกับ ESP8266
ปั๊มน้ำใต้น้ำใช้เพื่อจ่ายน้ำเมื่อจำเป็น
ปั๊มน้ำต้องใช้ไฟ 5 โวลต์จึงจะใช้งานได้
จำเป็นต้องใช้รีเลย์ช่องสัญญาณเดียวเพื่อเชื่อมต่อมอเตอร์ เมื่อเปิดใช้งานพิน GPIO2 ของ ESP8266 รีเลย์จะเปิดขึ้นและจ่ายน้ำโดยอัตโนมัติโดยใช้ปั๊มน้ำใต้น้ำ
มีแหล่งจ่ายไฟภายนอกให้กับบอร์ด ESP8266, รีเลย์ & ปั้มน้ำใต้น้ำ
การเชื่อมต่อฮาร์ดแวร์ที่สมบูรณ์ของฉันอยู่ในภาพด้านบน
ขั้นตอนที่ 7: การติดตั้ง Mosquitto Broker & การรันโปรแกรม Python ใน Raspberry Pi
ต่อไปนี้เป็นขั้นตอนในการติดตั้งโบรกเกอร์ Mosquitto ใน Raspberry PI
เปิดเทอร์มินัลแล้วพิมพ์คำสั่งต่อไปนี้
sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
sudo apt-get update
sudo apt-get ติดตั้งยุง
sudo apt-get ติดตั้ง mosquitto-clients
มันควรจะเริ่มยุงโดยอัตโนมัติ
เพื่อหยุดและเริ่มบริการที่ฉันจำเป็นต้องใช้
sudo service stop ยุงลาย
บริการ sudo เริ่มยุง
ไซต์ส่วนใหญ่ที่ฉันค้นพบว่าใช้รูปแบบใด
sudo /etc/init.d/mosquitto หยุด
ขั้นตอนที่ 8: MQTT ทำงานอย่างไร
MQTT เป็นหนึ่งในโปรโตคอลที่ใช้บ่อยที่สุดในโครงการ IoT ย่อมาจาก Message Queuing Telemetry Transport
นอกจากนี้ยังได้รับการออกแบบให้เป็นโปรโตคอลการส่งข้อความขนาดเล็กที่ใช้การดำเนินการเผยแพร่/สมัครสมาชิกเพื่อแลกเปลี่ยนข้อมูลระหว่างไคลเอนต์และเซิร์ฟเวอร์ นอกจากนี้ ขนาดที่เล็ก การใช้พลังงานต่ำ แพ็กเก็ตข้อมูลที่ย่อเล็กสุด และความง่ายในการใช้งาน ทำให้โปรโตคอลในอุดมคติของโลก
เช่นเดียวกับโปรโตคอลอินเทอร์เน็ตอื่น ๆ MQTT ขึ้นอยู่กับไคลเอนต์และเซิร์ฟเวอร์ ในทำนองเดียวกัน เซิร์ฟเวอร์คือผู้ที่รับผิดชอบในการจัดการคำขอของลูกค้าในการรับหรือส่งข้อมูลระหว่างกัน เซิร์ฟเวอร์ MQTT เรียกว่านายหน้า และลูกค้าเป็นเพียงอุปกรณ์ที่เชื่อมต่อ ดังนั้น:
* เมื่ออุปกรณ์ (ลูกค้า) ต้องการส่งข้อมูลไปยังนายหน้า เราเรียกการดำเนินการนี้ว่า "เผยแพร่"
* เมื่ออุปกรณ์ (ลูกค้า) ต้องการรับข้อมูลจากนายหน้า เราเรียกการดำเนินการนี้ว่า "สมัครสมาชิก"
ขั้นตอนที่ 9: การเขียนโปรแกรม NodeMCU และ ESP8266
ต่อไปนี้เป็นซอร์สโค้ดสำหรับบอร์ดไมโครคอนโทรลเลอร์ NodeMCU และ ESP8266
ขั้นตอนที่ 10: การออกแบบเว็บเพจและการเชื่อมต่อกับฐานข้อมูล SQL
หน้าเว็บได้รับการออกแบบโดยใช้ภาษา HTML, CSS และ PHP
PHP ใช้เพื่อแยกการอ่านเซ็นเซอร์จากฐานข้อมูลและแสดงลงในหน้า HTML
โปรแกรมหลามถูกใช้เป็นหัวใจของโครงการนี้
ผลงานที่โปรแกรม python ทำมีดังนี้
- มันสมัครรับหัวข้อที่เซ็นเซอร์ส่งการอ่านเซ็นเซอร์
- มันเผยแพร่คำสั่งเปิด/ปิดปั๊มน้ำให้กับนายหน้า MQTT
- มันเก็บการอ่านเซ็นเซอร์ไว้ในฐานข้อมูล SQL
ในกรณีของฉันโปรแกรม python และฐานข้อมูล SQL มีอยู่ในแล็ปท็อป หน้าเว็บที่ทำงานผ่าน Local Host
ต่อไปนี้เป็นซอร์สโค้ดของโปรแกรม python ของฉัน
ขั้นตอนที่ 11: ทำงานให้เสร็จ
ต่อไปนี้เป็นขั้นตอนในการดำเนินการ
- NodeMCU ทำงานเป็นส่วนตรวจจับและอ่านค่าอุณหภูมิ ความชื้น และระดับความชื้นในดิน
- ส่งการอ่านไปยังโบรกเกอร์ MQTT ในหัวข้อ "หัวข้อที่ 1"
- ในแล็ปท็อป โปรแกรม python กำลังทำงานและสมัครรับข้อมูลหัวข้อ "หัวข้อ 1" กับโบรกเกอร์ MQTT
- เมื่อ NodeMCU ส่งการอ่านแล้ว Mosquitto MQTT Broker จะส่งข้อมูลไปยังโปรแกรม python ทันที
- โปรแกรม Python จะคำนวณว่าต้องการน้ำใน Green House หรือไม่ จากนั้นจะเก็บการอ่านไว้ในฐานข้อมูล SQL
- หากจำเป็นต้องใช้น้ำใน Green House โปรแกรม python จะเผยแพร่ข้อความเปิด/ปิดปั๊มน้ำถึงนายหน้า Mosquitto MQTT ในหัวข้อ "หัวข้อที่ 2"
- ESP8266 ทำงานเป็นตัวกระตุ้น มันสมัครรับข้อมูลในหัวข้อ "หัวข้อ 2" ซึ่งหัวข้อที่โปรแกรม python กำลังเผยแพร่ข้อความ เมื่อโปรแกรม python เผยแพร่ข้อความใด ๆ ข้อความนั้นจะถูกโอนไปยัง ESP8266 ทันที ตามข้อความเปิด/ปิด เครื่องจะเปิด/ปิดปั๊มน้ำแบบจุ่ม
- ขั้นตอนสุดท้ายเพื่อแสดงการอ่านสดในหน้าเว็บ หน้าเว็บดึงข้อมูลจากฐานข้อมูล SQL ซึ่งโปรแกรม python เก็บข้อมูลโดยตรงและแสดงการอ่านในหน้า