สารบัญ:
- ขั้นตอนที่ 1: คู่มือการติดตั้ง
- ขั้นตอนที่ 2: ตู้โชว์ของการควบคุม
- ขั้นตอนที่ 3: รายการชิ้นส่วน/ซอฟต์แวร์ที่ใช้ในโครงการ
- ขั้นตอนที่ 4: I/0 รายการ
- ขั้นตอนที่ 5: แผนภาพการเดินสายไฟ
- ขั้นตอนที่ 6: รหัส Arduino
- ขั้นตอนที่ 7: Raspberry Pi 3 B+
- ขั้นตอนที่ 8: Python
- ขั้นตอนที่ 9: MySQL
- ขั้นตอนที่ 10: Node-Red
วีดีโอ: เรือนกระจก UCL - IIOT: 11 ขั้นตอน
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
โครงการนี้เป็นส่วนขยายของโครงการก่อนหน้าของเรากับ Greenhouse (https://www.instructables.com/id/EAL-EMBEDDED-GREE…)
ในโปรเจ็กต์นี้ เราได้เพิ่มฐานข้อมูล ซึ่งเราบันทึกข้อมูลทั้งหมดของเราแล้วแสดงภาพด้วย node-red เพื่อภาพรวมที่มากขึ้น
เนื้อหาที่เราบันทึกในฐานข้อมูลของเราคือ ความชื้น อุณหภูมิ และความชื้นของดิน ซึ่งแสดงในแผนภาพต่างๆ
นอกจาก dataloggin แล้ว เรายังสามารถควบคุมโปรไฟล์ที่ทำงานอยู่ใน Greenhouse และควบคุมจากระยะไกลได้อีกด้วย
จากนั้นเราก็สามารถควบคุมปั๊มและพัดลมได้ด้วยตนเอง
ขั้นตอนที่ 1: คู่มือการติดตั้ง
ขั้นตอนแรกคือการติดตั้งส่วนประกอบต่างๆ ทั้งหมด
ภายในวงเล็บ () เราได้ระบุตำแหน่งที่ส่วนประกอบเชื่อมต่ออยู่ ตัวอย่างเช่น Arduino เชื่อมต่อกับ Raspberry Pi ผ่านสาย USB
ฮาร์ดแวร์ที่ใช้:
- Arduino (ราสเบอร์รี่ Pi)
- ราสเบอร์รี่ Pi 3 B+
- ไฮโกรมิเตอร์ในดิน (Arduino)
- เซ็นเซอร์ DHT11 (Arduino)
- HG-320 ปั๊มน้ำบาดาล (รีเลย์)
- รีเลย์ 5V (Arduino)
- พัดลมคอมพิวเตอร์ (รีเลย์)
- แหล่งจ่ายไฟ 230V (ปั๊ม)
ซอฟต์แวร์ที่ใช้:
- Raspbian (ระบบปฏิบัติการสำหรับ Raspberry Pi)
- Arduino IDE
- Python (Raspberry Pi) - PySerial- MySQLclient
- Node-Red (Raspberry Pi) - Pythonshell- สรุป - MySQL- Dashboard
- เซิร์ฟเวอร์ MySQL (freemysqlhosting.net)
ก่อนอื่น คุณจะต้องเชื่อมต่อส่วนประกอบฮาร์ดแวร์ ดังนั้นให้ทำตามคำแนะนำนี้เพื่อสร้างเรือนกระจก: คู่มือการติดตั้ง
จากนั้นคุณจะต้องติดตั้ง Raspbian OS บน Raspberry Pi ของคุณ หลังจากนั้นคุณจะต้องติดตั้ง Python แล้วติดตั้งไลบรารี python
ขั้นตอนต่อไปคือการติดตั้ง Node-Red บน Raspberry Pi จากนั้นไปที่ตัวจัดการพาเลทและติดตั้งโมดูลที่ระบุไว้ก่อนหน้านี้
จากนั้นไปที่ไซต์นี้ Free MySQL Server และสร้างเซิร์ฟเวอร์ MySQL ฟรี
เมื่อเสร็จสิ้น คุณก็พร้อมที่จะถ่ายโอนสคริปต์ python ไปยัง Raspberry Pi นำเข้าสคริปต์ Node-Red และอัปโหลดโค้ดสำหรับ Arduino
ขั้นตอนที่ 2: ตู้โชว์ของการควบคุม
ขั้นตอนที่ 3: รายการชิ้นส่วน/ซอฟต์แวร์ที่ใช้ในโครงการ
เราได้ใช้เทคโนโลยีต่อไปนี้เพื่อสร้างเรือนกระจก
- Arduino
- ราสเบอร์รี่ปี่
- โหนด-แดง
- Python
- PHPMyAdmin
ขั้นตอนที่ 4: I/0 รายการ
ขั้นตอนที่ 5: แผนภาพการเดินสายไฟ
ขั้นตอนที่ 6: รหัส Arduino
รหัส Arduino ทำงานโดยการพิมพ์ข้อมูลที่วัดโดยเซ็นเซอร์ไปยังการเชื่อมต่อแบบอนุกรมที่ Raspberry Pi อ่านและถ่ายโอนไปยังฐานข้อมูล
Arduino ยังมีอินพุตดิจิตอลบางตัวที่เชื่อมต่อกับ Raspberry Pi ที่ Arduino อ่านและหากหนึ่งในสามมีค่าสูงโปรไฟล์จะเปลี่ยนเนื่องจากคำสั่ง IF
นอกจากนี้ เราได้อัปเกรดรหัสเพื่อใช้ Millis แทนการหน่วงเวลา ซึ่งช่วยให้อ่านปุ่มและส่วนที่เหลือของรหัสได้ตลอดเวลา แทนที่จะเป็นช่วงเวลาตามการหน่วงเวลาแบบเก่า
ขั้นตอนที่ 7: Raspberry Pi 3 B+
เราใช้ Raspberry Pi 3 B+ เพื่อเชื่อมต่อ Arduino กับอินเทอร์เน็ตและฐานข้อมูล MySQL สิ่งนี้ทำให้เราสามารถจัดเก็บข้อมูลจากเซ็นเซอร์ของเราและสร้างอินเทอร์เฟซแบบภาพสำหรับผู้ใช้ปลายทาง สำหรับอินเทอร์เฟซผู้ใช้ เราใช้ Node-Red กับแผงข้อมูลแดชบอร์ด
แต่ก่อนที่เราจะสามารถแสดงข้อมูลเซ็นเซอร์ของเราบน Node-Red ได้ เราต้องการวิธีอัปโหลดข้อมูลบนฐานข้อมูล MySQL และสำหรับสิ่งนั้น เราจึงสร้างสคริปต์ Python ที่จะทำงานบน Raspberry Pi ของเรา
ขั้นตอนที่ 8: Python
สคริปต์ Python ใช้สำหรับรับข้อมูลจากการสื่อสารแบบอนุกรมที่มาจาก Arduino สคริปต์จะส่งข้อมูลไปยังฐานข้อมูล MySQL
เราใช้สองไลบรารี pyserial และ mysqlclient
ขั้นตอนแรกคือการดาวน์โหลดไลบรารีทั้งสองนี้:
- PySerial
- MySQLclient
PySerial ใช้สำหรับรวบรวมข้อมูลจาก Arduino ผ่านการสื่อสารแบบอนุกรม
อุปกรณ์ = '/dev/ttyUSB0'
arduino = serial. Serial (อุปกรณ์ 9600)
บรรทัดแรกกำลังถูกใช้เพื่อกำหนดพอร์ต COM ของเรา บน Raspberry Pi คือ /dev/ttyUSB0 ที่เราใช้สำหรับ Arduino บรรทัดที่สองใช้สำหรับเปิดพอร์ตอนุกรมไปยัง Arduino เราแค่กำหนดว่าพอร์ต COM ใดและความเร็วของการเชื่อมต่อที่กำลังทำงานอยู่
ส่วนที่เหลือของรหัสกำลังทำงานในวงในขณะที่
ต่อไปเราใช้บล็อกลองและยกเว้นหลายบล็อก ขั้นแรก โค้ดพยายามเรียกใช้ภายในบล็อก Try หากล้มเหลว โค้ดจะรันบล็อก Exception แต่ถ้าบล็อก Try ทำงานได้ดี มันจะไม่เรียกใช้บล็อก Exception แต่มันจะรันโค้ดที่เหลือเท่านั้น
ดังนั้นในบล็อกของ Try เรามีโค้ดที่จะอ่านการสื่อสารแบบอนุกรมแล้วส่งออกไปยังฐานข้อมูล MySQL ของเรา
hygrolist = arduino.readlines(1)
templist = arduino.readlines (2) humidlist = arduino.readlines (3)
ดังนั้นโค้ดด้านบนนี้ใช้สำหรับอ่านบรรทัดในการสื่อสารแบบอนุกรม ตัวเลขที่อยู่ท้ายโค้ดคือการกำหนดบรรทัดที่อ่านในซีเรียล ดังนั้นบรรทัดเหล่านี้จึงถูกจัดหมวดหมู่ในตัวแปรต่างๆ
เมื่อได้รับข้อมูลจาก Arduino เราใช้โมดูล mysqlclient เพื่อส่งข้อมูลไปยังเซิร์ฟเวอร์ MySQL ของเรา
db = _mysql.connect(host="sql7.freemysqlhosting.net", ผู้ใช้="sql7256552", passwd="3ebtbP8FQ2", db="sql7256552")
บรรทัดนี้ใช้สำหรับเชื่อมต่อกับฐานข้อมูล MySQL ของเรา ระบุเซิร์ฟเวอร์ ชื่อผู้ใช้ รหัสผ่าน และฐานข้อมูลที่ควรเชื่อมต่อภายในเซิร์ฟเวอร์ ที่นี่คุณควรระบุการเชื่อมต่อกับฐานข้อมูล MySQL ของคุณ
db.query("INSERTINTO `TempHumid`(`temp`, `humid', `hygro`) ค่า (%s, %s, %s)" % (อุณหภูมิ ชื้น ไฮโกร))
ที่นี่เราใช้การเชื่อมต่อ DB และทำแบบสอบถาม SQL แบบสอบถามระบุว่าต้องใส่ค่าลงในตาราง "TempHumid" จากนั้นจึงใส่ลงในคอลัมน์ "temp", "humid" และ "hygro" ส่วนสุดท้าย “(%s, %s, %s)” คือการจัดรูปแบบสตริงและใช้เพื่อให้ฐานข้อมูลมีรูปแบบที่สามารถอ่านได้
และการดำเนินการทั้งหมดนี้จะถูกใส่เข้าไปในวงในขณะที่เพื่อให้เราได้รับข้อมูลที่ส่งไปยังเซิร์ฟเวอร์ MySQL
หากคุณต้องการดูโค้ดทั้งหมด ให้ดาวน์โหลดสคริปต์ python (TempHumid.py)
ขั้นตอนที่ 9: MySQL
สำหรับเซิร์ฟเวอร์ MySQL เราใช้บริการฟรีบน www.freemysqlhosting.net เราสามารถสร้างเซิร์ฟเวอร์ในเครื่อง Raspberry Pi ได้ แต่เราใช้บริการฟรีเพื่อให้เชื่อมต่อกับระบบคลาวด์/อินเทอร์เน็ตได้อย่างสมบูรณ์
ในการเข้าถึง MySQL คุณต้องไปที่ phpmyadmin.co และเข้าสู่ระบบด้วยข้อมูลประจำตัวจากบัญชี freemysqlhosting ของคุณ
เมื่อคุณเข้าไปข้างใน คุณต้องสร้างตารางชื่อ "TempHumid" ภายในตารางนี้ คุณต้องสร้าง 4 คอลัมน์ที่เรียกว่า "ID", "temp", "humid" และ "hygro" คอลัมน์แรก (ID) คุณต้องทำเครื่องหมายที่ช่อง A_I (การเพิ่มอัตโนมัติ) เพื่อให้คอลัมน์ ID ให้ทุกชุดข้อมูลมี ID ต้องตั้งค่าคอลัมน์ต่อไปนี้ทั้งหมดเป็น INT (จำนวนเต็ม) และตั้งค่ามาตรฐานเป็น NULL
ขั้นตอนที่ 10: Node-Red
ในโครงการของเรา เราใช้ Node-Red เพื่อสร้างส่วนต่อประสานกราฟิก Node-Red ทำงานบน Raspberry Pi และกำลังรวบรวมข้อมูลจากฐานข้อมูล MySQL ของเรา และกำลังแสดงข้อมูลเหล่านี้ด้วยเกจรูปโดนัทและแผนภูมิกราฟิก เพื่อให้ผู้ใช้ปลายทางสามารถตรวจสอบข้อมูลได้ สิ่งที่ฉลาดเกี่ยวกับ Node-Red คือสามารถดูได้บนอุปกรณ์ใด ๆ ซึ่งหมายความว่าไซต์จะถูกปรับขนาดสำหรับอุปกรณ์ที่กำหนดที่กำลังดูเนื้อหา
ในการติดตั้งโปรแกรม Node-Red ให้ดูที่ขั้นตอนที่ 1 และดาวน์โหลดเอกสารชื่อ "Node-Red.docx" จากนั้นคัดลอกและวางข้อความลงใน Node-Red ผ่านฟังก์ชันนำเข้าที่มุมขวาบน
หลังจากนั้นเปลี่ยนการตั้งค่าฐานข้อมูลสำหรับฐานข้อมูล MySQL ของคุณ