สารบัญ:

เรือนกระจก UCL - IIOT: 11 ขั้นตอน
เรือนกระจก UCL - IIOT: 11 ขั้นตอน

วีดีโอ: เรือนกระจก UCL - IIOT: 11 ขั้นตอน

วีดีโอ: เรือนกระจก UCL - IIOT: 11 ขั้นตอน
วีดีโอ: รางประตูบานแขวนสไตล์Loft#ซ่อมแซมบ้าน #ไอเดียบ้าน#วิธีติดตั้งประตูรางแขวน @vasin3338 2024, กรกฎาคม
Anonim
เรือนกระจก UCL - IIOT
เรือนกระจก UCL - IIOT

โครงการนี้เป็นส่วนขยายของโครงการก่อนหน้าของเรากับ 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: ตู้โชว์ของการควบคุม

Image
Image

ขั้นตอนที่ 3: รายการชิ้นส่วน/ซอฟต์แวร์ที่ใช้ในโครงการ

เราได้ใช้เทคโนโลยีต่อไปนี้เพื่อสร้างเรือนกระจก

  • Arduino
  • ราสเบอร์รี่ปี่
  • โหนด-แดง
  • Python
  • PHPMyAdmin

ขั้นตอนที่ 4: I/0 รายการ

แผนภาพการเดินสายไฟ
แผนภาพการเดินสายไฟ

ขั้นตอนที่ 5: แผนภาพการเดินสายไฟ

ขั้นตอนที่ 6: รหัส Arduino

รหัส Arduino ทำงานโดยการพิมพ์ข้อมูลที่วัดโดยเซ็นเซอร์ไปยังการเชื่อมต่อแบบอนุกรมที่ Raspberry Pi อ่านและถ่ายโอนไปยังฐานข้อมูล

Arduino ยังมีอินพุตดิจิตอลบางตัวที่เชื่อมต่อกับ Raspberry Pi ที่ Arduino อ่านและหากหนึ่งในสามมีค่าสูงโปรไฟล์จะเปลี่ยนเนื่องจากคำสั่ง IF

นอกจากนี้ เราได้อัปเกรดรหัสเพื่อใช้ Millis แทนการหน่วงเวลา ซึ่งช่วยให้อ่านปุ่มและส่วนที่เหลือของรหัสได้ตลอดเวลา แทนที่จะเป็นช่วงเวลาตามการหน่วงเวลาแบบเก่า

ขั้นตอนที่ 7: Raspberry Pi 3 B+

ราสเบอร์รี่ Pi 3 B+
ราสเบอร์รี่ Pi 3 B+

เราใช้ Raspberry Pi 3 B+ เพื่อเชื่อมต่อ Arduino กับอินเทอร์เน็ตและฐานข้อมูล MySQL สิ่งนี้ทำให้เราสามารถจัดเก็บข้อมูลจากเซ็นเซอร์ของเราและสร้างอินเทอร์เฟซแบบภาพสำหรับผู้ใช้ปลายทาง สำหรับอินเทอร์เฟซผู้ใช้ เราใช้ Node-Red กับแผงข้อมูลแดชบอร์ด

แต่ก่อนที่เราจะสามารถแสดงข้อมูลเซ็นเซอร์ของเราบน Node-Red ได้ เราต้องการวิธีอัปโหลดข้อมูลบนฐานข้อมูล MySQL และสำหรับสิ่งนั้น เราจึงสร้างสคริปต์ Python ที่จะทำงานบน Raspberry Pi ของเรา

ขั้นตอนที่ 8: Python

Python
Python

สคริปต์ Python ใช้สำหรับรับข้อมูลจากการสื่อสารแบบอนุกรมที่มาจาก Arduino สคริปต์จะส่งข้อมูลไปยังฐานข้อมูล MySQL

เราใช้สองไลบรารี pyserial และ mysqlclient

ขั้นตอนแรกคือการดาวน์โหลดไลบรารีทั้งสองนี้:

  1. PySerial
  2. 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
MySQL
MySQL
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 ของคุณ

แนะนำ: