สารบัญ:

ระบบตรวจสอบและควบคุมสภาพอากาศในร่ม Raspberry Pi: 6 ขั้นตอน
ระบบตรวจสอบและควบคุมสภาพอากาศในร่ม Raspberry Pi: 6 ขั้นตอน

วีดีโอ: ระบบตรวจสอบและควบคุมสภาพอากาศในร่ม Raspberry Pi: 6 ขั้นตอน

วีดีโอ: ระบบตรวจสอบและควบคุมสภาพอากาศในร่ม Raspberry Pi: 6 ขั้นตอน
วีดีโอ: Raspberry Pi Rain Radar & Weather Dashboard 2024, พฤศจิกายน
Anonim
Raspberry Pi ระบบตรวจสอบและควบคุมสภาพอากาศในร่ม
Raspberry Pi ระบบตรวจสอบและควบคุมสภาพอากาศในร่ม
Raspberry Pi ระบบตรวจสอบและควบคุมสภาพอากาศในร่ม
Raspberry Pi ระบบตรวจสอบและควบคุมสภาพอากาศในร่ม

ผู้คนต้องการความสะดวกสบายภายในบ้านของพวกเขา เนื่องจากสภาพอากาศในพื้นที่ของเราอาจไม่เหมาะกับเรา เราจึงใช้เครื่องใช้หลายอย่างเพื่อรักษาสภาพแวดล้อมภายในอาคารให้แข็งแรง เช่น เครื่องทำความร้อน เครื่องทำความเย็น เครื่องเพิ่มความชื้น โหมดสัมผัสสิ่งแวดล้อมและควบคุมตนเอง อย่างไรก็ตาม:

  • หลายคนมีราคาแพงเกินไป / ไม่คุ้มกับเงินที่จ่ายไป
  • วงจรไฟฟ้าของพวกเขาหักได้ง่ายกว่าและเปลี่ยนได้ยากกว่าชิ้นส่วนเครื่องจักรกลทั่วไป
  • อุปกรณ์ต้องได้รับการจัดการโดยแอปของผู้ผลิต เป็นเรื่องปกติที่จะมีอุปกรณ์อัจฉริยะสองสามเครื่องในบ้านของคุณและแต่ละเครื่องมีแอพของตัวเอง โซลูชันของพวกเขาคือการรวมแอปเข้ากับแพลตฟอร์มต่างๆ เช่น Alexa, Google Assistant และ IFTTT เพื่อให้เรามีตัวควบคุมแบบ "รวมศูนย์"
  • สิ่งสำคัญที่สุดคือผู้ผลิตมีข้อมูลของเรา และ Google/Amazon/IFTTT/ฯลฯ มีข้อมูลของเรา เราไม่ คุณอาจไม่สนใจความเป็นส่วนตัว แต่บางครั้งเราทุกคนอาจต้องการดูรูปแบบความชื้นในห้องนอนของคุณ เช่น เพื่อตัดสินใจว่าจะเปิดหน้าต่างเมื่อใด

ในบทช่วยสอนนี้ ฉันสร้างต้นแบบของตัวควบคุมสภาพอากาศในร่มที่ใช้ Raspberry Pi ที่มีราคาค่อนข้างต่ำ RPi สื่อสารกับอุปกรณ์ต่อพ่วงผ่านอินเทอร์เฟซ SPI/I2C/USB:

  • เซ็นเซอร์บรรยากาศใช้ในการเก็บอุณหภูมิ ความชื้น และความกดอากาศ
  • เซ็นเซอร์คุณภาพอากาศที่มีความแม่นยำสูงให้ข้อมูลฝุ่นละอองในบรรยากาศ (PM2.5 และ PM10) ที่ใช้ในการคำนวณดัชนีคุณภาพอากาศ (AQI)

ตัวควบคุมจะประมวลผลข้อมูลที่ได้มาและทริกเกอร์การทำงานของอุปกรณ์โดยส่งคำขอไปยังบริการอัตโนมัติของ IFTTT Webhook ซึ่งควบคุมปลั๊ก WiFi Smart ที่รองรับ

ต้นแบบถูกสร้างขึ้นในลักษณะที่สามารถเพิ่มเซ็นเซอร์ เครื่องใช้ และบริการอัตโนมัติอื่นๆ ได้อย่างง่ายดาย

ขั้นตอนที่ 1: ฮาร์ดแวร์

ฮาร์ดแวร์
ฮาร์ดแวร์
ฮาร์ดแวร์
ฮาร์ดแวร์
ฮาร์ดแวร์
ฮาร์ดแวร์

ฮาร์ดแวร์ที่แนะนำในการสร้างสิ่งนี้:

  1. Raspberry Pi (รุ่นใดก็ได้) พร้อม WiFi ฉันสร้างสิ่งนี้โดยใช้ RPi B+ RPi ZeroW ทำได้ดีและมีราคา ~15$
  2. เซ็นเซอร์ BME280 สำหรับอุณหภูมิ ความชื้น ความกดอากาศ ~5$
  3. โมดูลเซนเซอร์ตรวจจับคุณภาพอากาศ Nova SDS011 เลเซอร์ PM2.5/PM10 ความแม่นยำสูง ~25$
  4. จอแสดงผล LED/LCD ฉันใช้หน้าจอ OLED ขนาด 2.23 นิ้ว SSD1305 ~15$
  5. WiFi/ZigBee/Z-Wave Smart Sockets บางตัว 10-20$ ต่อคน
  6. เครื่องฟอกอากาศ, เครื่องทำความชื้น, เครื่องลดความชื้น, เครื่องทำความร้อน, เครื่องทำความเย็น ฯลฯ พร้อมสวิตช์ทางกล ตัวอย่างเช่น ฉันใช้เครื่องฟอกอากาศราคาถูกเพื่อทำบทช่วยสอนนี้

ค่าใช้จ่ายทั้งหมดข้างต้นคือ <100$ ซึ่งน้อยกว่าเครื่องกรองอัจฉริยะที่มีราคา 200$ มาก

ขั้นตอนที่ 2: การเดินสาย Raspbery Pi

เดินสาย Raspbery Pi
เดินสาย Raspbery Pi

แผนภาพวงจรแสดงวิธีการต่อ RPi กับเซ็นเซอร์ BME280 โดยใช้อินเทอร์เฟซ I2C และ OLED แสดงผล HAT โดยใช้อินเทอร์เฟซ SPI

สามารถติดตั้ง Waveshare OLED HAT ที่ด้านบนของ GPIO ได้ แต่คุณต้องมีตัวแยกสัญญาณ GPIO เพื่อแชร์กับอุปกรณ์ต่อพ่วงอื่นๆ สามารถกำหนดค่าให้ใช้ I2C ได้โดยการบัดกรีตัวต้านทานที่ด้านหลัง

ข้อมูลเพิ่มเติมเกี่ยวกับ SSD1305 OLED HAT สามารถพบได้ที่นี่

ต้องเปิดใช้งานอินเทอร์เฟซทั้ง I2C และ SPI ใน RPi ด้วย:

sudo raspi-config

เซ็นเซอร์ตรวจจับฝุ่น Nova SDS011 เชื่อมต่อกับ RPi ผ่านพอร์ต USB (ด้วยอะแดปเตอร์ Serial-USB)

ขั้นตอนที่ 3: รวบรวมข้อมูลจากเซ็นเซอร์

ข้อมูลบรรยากาศซึ่งดูค่อนข้างตรงไปตรงมาถูกรวบรวมจากเซ็นเซอร์ BME280 จากสคริปต์หลาม

21-พ.ย.-20 19:19:25 - INFO - ชดเชยการอ่าน (id=6e2e8de5-6bc2-4929-82ab-0c0e3ef6f2d2, เวลาประทับ=2020-11-21 19:19:25.604317 อุณหภูมิ=20.956 °C ความดัน=1019.08 hPa ความชื้น=49.23 % rH)

ข้อมูลเซ็นเซอร์ฝุ่นต้องการการประมวลผลเพิ่มเติมเล็กน้อย โมดูลเซ็นเซอร์ดูดตัวอย่างอากาศบางส่วนเพื่อตรวจจับอนุภาค ดังนั้นควรทำงานชั่วขณะ (30 วินาที) เพื่อให้ได้ผลที่เชื่อถือได้ จากการสังเกตของฉัน ฉันพิจารณาเฉพาะค่าเฉลี่ยของ 3 ตัวอย่างสุดท้าย กระบวนการนี้มีอยู่ในสคริปต์นี้

21-พ.ย.-20 19:21:07 - DEBUG - 0. PM2.5: 2.8, PM10: 5.9

21-Nov-20 19:21:09 - DEBUG - 1. PM2.5: 2.9, PM10: 6.0 21-Nov-20 19:21:11 - DEBUG - 2. PM2.5: 2.9, PM10: 6.0 21- 20 พ.ย. 19:21:13 น. - DEBUG - 3. PM2.5: 2.9, PM10: 6.3 21-Nov-20 19:21:15 - DEBUG - 4. PM2.5: 3.0, PM10: 6.2 21-Nov- 20 19:21:17 - DEBUG - 5. PM2.5: 2.9, PM10: 6.4 21-Nov-20 19:21:19 - DEBUG - 6. PM2.5: 3.0, PM10: 6.6 21-Nov-20 19:21:21 - DEBUG - 7. PM2.5: 3.0, PM10: 6.8 21-Nov-20 19:21:23 - DEBUG - 8. PM2.5: 3.1, PM10: 7.0 21-Nov-20 19:21:25 - DEBUG - 9. PM2.5: 3.2, PM10: 7.0 21-Nov-20 19:21:28 - DEBUG - 10. PM2.5: 3.2, PM10: 7.1 21-Nov-20 19:21:30 น. - DEBUG - 11. PM2.5: 3.2, PM10: 6.9 21-Nov-20 19:21:32 - DEBUG - 12. PM2.5: 3.3, PM10: 7.0 21-Nov-20 19:21:34 - DEBUG - 13 PM2.5: 3.3, PM10: 7.1 21-Nov-20 19:21:36 - DEBUG - 14. PM2.5: 3.3, PM10: 7.1

เซ็นเซอร์ฝุ่นให้ดัชนี PM2.5 และ PM10 เท่านั้นในการคำนวณ AQI เราจำเป็นต้องมีโมดูล python-aqi:

aqi_index = aqi.to_aqi([(aqi. POLLUTANT_PM25, dust_data[0]), (aqi. POLLUTANT_PM10, dust_data[1])])

การรวบรวม การแสดงข้อมูล และการควบคุมอุปกรณ์จะดำเนินการพร้อมกันและไม่พร้อมกัน ข้อมูลถูกบันทึกในฐานข้อมูลท้องถิ่น เราไม่จำเป็นต้องเรียกใช้บ่อยๆ หากสภาพแวดล้อมไม่เปลี่ยนแปลงเร็วเกินไป สำหรับฉันช่วงเวลา 15 นาทีก็เพียงพอแล้ว นอกจากนี้ โมดูลเซ็นเซอร์ฝุ่นยังสะสมฝุ่นอยู่ภายใน เราจึงไม่ควรใช้มากเกินไปเพื่อหลีกเลี่ยงงานทำความสะอาด

ขั้นตอนที่ 4: การตั้งค่าบริการบ้านอัตโนมัติ

การตั้งค่าบริการบ้านอัตโนมัติ
การตั้งค่าบริการบ้านอัตโนมัติ
การตั้งค่าบริการบ้านอัตโนมัติ
การตั้งค่าบริการบ้านอัตโนมัติ

มีแพลตฟอร์ม Home Automation มากมายและควรติดตั้งแพลตฟอร์มที่รองรับโดยซ็อกเก็ตอัจฉริยะที่คุณมี หากคุณกังวลเกี่ยวกับความเป็นส่วนตัว คุณควรตั้งค่าระบบของคุณเอง มิฉะนั้น คุณสามารถใช้แพลตฟอร์มยอดนิยมที่รองรับ WiFi สมาร์ทซ็อกเก็ตส่วนใหญ่ได้ เช่น Google Assistant, Alexa หรือ IFTTT ลองเลือกแพลตฟอร์มซ็อกเก็ตที่มี API เพื่อโต้ตอบ (Webhook นั้นสมบูรณ์แบบสำหรับจุดประสงค์นี้)

ฉันใช้ IFTTT ในบทช่วยสอนนี้เพราะใช้งานง่ายมากแม้สำหรับมือใหม่ แต่โปรดทราบว่า: 1. มีซ็อกเก็ตอัจฉริยะจำนวนมากที่ไม่รองรับ IFTTT และ 2. ในขณะที่ฉันเขียนสิ่งนี้ IFTTT อนุญาตให้คุณสร้างแอปเพล็ต 3 ตัว (งานอัตโนมัติ) ได้ฟรีเท่านั้น ซึ่งเพียงพอสำหรับ 1 เครื่องใช้

นี่คือขั้นตอน:

1. สร้างแอปเพล็ตสองตัวใน IFTTT เพื่อเปิดและปิดเครื่องโดยใช้บริการ Webhook รายละเอียดสามารถพบได้ที่นี่

2. คัดลอกคีย์ API และคัดลอกไปยังสคริปต์หลาม ฉันขอแนะนำให้เก็บไว้ในไฟล์แยกต่างหากเพื่อความปลอดภัย

3. กำหนดตรรกะ/พารามิเตอร์การควบคุมในสคริปต์หลัก

ขั้นตอนที่ 5: ผลลัพธ์

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

ตกลง ตอนนี้เราทดสอบระบบ

จอแสดงผล OLED แสดงอุณหภูมิปัจจุบัน ความชื้น และดัชนีคุณภาพอากาศ (AQI) ที่คำนวณได้ นอกจากนี้ยังแสดงค่าต่ำสุดและสูงสุดในช่วง 12 ชั่วโมงที่ผ่านมา

ข้อมูลอนุกรมเวลาของ AQI ในไม่กี่วันแสดงให้เห็นสิ่งที่น่าสนใจ สังเกตการเพิ่มขึ้นในรูปแบบ AQI หรือไม่? เกิดขึ้นวันละสองครั้ง ยอดเขาเล็กๆ เวลาประมาณ 12:00 น. และยอดเขาสูงประมาณ 19:00 น. คุณคงเดาได้ว่านั่นคือตอนที่เราทำอาหาร กระจายอนุภาคจำนวนมากไปทั่ว เป็นเรื่องที่น่าสนใจที่จะเห็นว่ากิจกรรมประจำวันของเราส่งผลต่อสภาพแวดล้อมในร่มอย่างไร

นอกจากนี้การเพิ่มขึ้นครั้งสุดท้ายของตัวเลขยังสั้นกว่าครั้งก่อนมาก นั่นคือเมื่อเราเพิ่มเครื่องฟอกอากาศในระบบ เครื่องควบคุมสภาพอากาศ RPi ส่งคำขอ PURIFIER_ON เมื่อ AQI>50 และ PURIFIER_OFF เมื่อ AQI<20 คุณสามารถดูทริกเกอร์ IFTTT Webhook ได้ในขณะนั้น

ขั้นตอนที่ 6: บทสรุป

แค่นั้นแหละ!

ข้อมูลที่เก็บรวบรวมยังสามารถใช้เพื่อควบคุมเครื่องทำความร้อนด้วยอากาศ เครื่องทำความเย็น (de) เครื่องเพิ่มความชื้น ฯลฯ คุณเพียงแค่ต้องซื้อซ็อกเก็ตอัจฉริยะเพิ่มเติม และเครื่องใช้ไฟฟ้าเก่าทุกเครื่องจะกลายเป็น "อัจฉริยะ"

หากคุณต้องการควบคุมอุปกรณ์หลายอย่าง คุณอาจต้องพิจารณาอย่างรอบคอบว่าบริการระบบอัตโนมัติในบ้านใดที่คุณต้องการใช้ ฉันขอแนะนำอย่างยิ่งให้ตั้งค่าแพลตฟอร์มระบบอัตโนมัติในบ้านแบบโอเพนซอร์ส แต่ถ้ามันซับซ้อนเกินไป มีวิธีแก้ปัญหาที่ง่ายกว่า เช่น Google Assistant และ IFTTT Webhook หรือใช้ซ็อกเก็ตอัจฉริยะของ Zigbee

การใช้งานต้นแบบนี้อย่างสมบูรณ์สามารถพบได้ในที่เก็บ Github:

github.com/vuva/IndoorClimateControl

มีความสุข !!!

แนะนำ: