Raspberry Pi UPS Power Supply ของ SunFounder เป็นชุด UPS (Uninterruptible Power Supply) หรือ เครื่องสำรองไฟที่สมบูรณ์แบบสำหรับ Raspberry Pi 3/4 รุ่น B/B+ พร้อมบอร์ด PiPower, แบตเตอรี่ขนาด 2,000 mAh และอุปกรณ์เสริมทั้งหมดที่จำเป็นสำหรับการประกอบติดตั้ง นอกจากนี้ยังสามารถใช้งานร่วมกับบอร์ดขนาด Raspberry Pi อื่นๆ ที่รองรับอินพุต DC 5V เช่น Banana Pi BPI-M5 , Libre Computer ROC-RK3328-CC และบอร์ด SBC อื่นๆ ที่คล้ายกัน
ฉันเคยซื้อชุดแบตเตอรี่ Raspberry Pi เพื่อตรวจสอบเมื่อหลายปีก่อน เพื่อทดสอบการทำงานเป็นเครื่องสำรองไฟ (UPS) ด้วย แต่มันก็ไม่สมบูรณ์แบบ เพราะบางครั้งบอร์ดจะรีบูตระหว่างการจำลองไฟฟ้าดับ ตั้งแต่นั้นมา มีชุด UPS จำนวนมากเปิดตัวสู่ตลาด แต่ฉันยังไม่ได้ทดสอบเลย เมื่อ SunFounder ติดต่อ CNX Software เพื่อขอรีวิว “Raspberry Pi UPS Power Supply” ฉันจึงใช้โอกาสนี้และรายงานข้อมูลในรีวิวนี้
คุณสมบัติที่สำคัญของ Raspberry Pi UPS Power Supply
- เอาต์พุตโมดูล UPS – 5V/3A ผ่านพอร์ต USB Type-A
- การชาร์จแบตเตอรี่ – สูงสุด 5V/2A MAX
- สามารถจ่ายไฟให้กับ Raspberry Pi และชาร์จแบตเตอรี่ได้พร้อมกัน
- แหล่งจ่ายไฟ – 5V/3A ผ่านพอร์ต USB Type-C
- แบตเตอรี่ – 7.4V/2,000mAh. อายุแบตเตอรี่: 3-4 ชั่วโมง
- การป้องกันแบตเตอรี่ – การป้องกันการชาร์จเกิน/การคายประจุไฟฟ้า, การชาร์จแบบสมดุล และการป้องกันความร้อนสูงเกินไป
- อื่น ๆ
- สวิตช์เปิด/ปิด
- ไฟ LED
- ไฟ LED สำหรับการชาร์จ
- 4x ไฟ LED ระดับแบตเตอรี่
- Header เชื่อมต่อเพื่อตรวจสอบสถานะแบตเตอรี่
- ขนาด – 90 x 56 x 24 มม.
แกะกล่องชุดคิท “PiPower”
บนเว็บไซต์จะเรียกอุปกรณ์นี้ว่า “SunFounder Raspberry Pi UPS Power Supply” ชุดอุปกรณ์ที่ฉันได้รับเป็นแบรนด์ PIPOWER
ด้านล่างของกล่องจะแสดงข้อมูลสเปคและข้อมูลการติดต่อบริษัทบางส่วน
ชุดคิทประกอบด้วยบอร์ด PiPower, ไขควง, น็อต, ตัวยึด standoffs และสาย cable ties รวมถึงสาย USB-C และ micro USB แบบสั้น, เทปกาวสองหน้า, แผ่นอะคริลิก คู่มือเริ่มต้นใช้งาน และ แบตเตอรี่
คู่มือเริ่มต้นการใช้งานมีรายการอุปกรณ์เสริมในชุด อธิบายคุณสมบัติหลักของบอร์ด PiPower และอธิบายวิธีประกอบชุด UPS และติดตั้งเข้ากับบอร์ด Raspberry Pi นอกจากนี้ยังuเอกสารออนไลน์
PiPower ใช้เทคโนโลยี IP2326 lithium battery charging IC เป็นฐานการพัฒนา ด้านล่างของบอร์ดมีพื้นที่สำหรับแบตเตอรี่, Terminal 3 ขาสำหรับอินพุตแบตเตอรี่, สวิตช์เปิด/ปิด, GPIO header สำหรับการตรวจสอบสถานะแบตเตอรี่ และ Headers เชื่อมต่อที่ให้เข้าถึงไฟ 5V และ GND เพื่อจ่ายไฟให้กับอุปกรณ์ภายนอก
GPIO ให้สัญญาณต่อไปนี้
- GND – Ground
- BT_LV – พินแรงดันแบตเตอรี่ แรงดันของพินนี้เท่ากับ 1/3 ของแรงดันแบตเตอรี่
- IN_DT – พินตรวจจับอินพุต ใช้เพื่อตรวจสอบว่ามีอินพุตไฟ USB หรือไม่ ถ้ามีพินนี้จะส่งสัญญาณสูงออกมา
- CHG – พินแสดงสถานะการชาร์จ พินนี้สูงเมื่อกำลังชาร์จ
- LO_DT – พินแสดงสถานะแรงดันต่ำ, พินนี้มีหน้าที่ตรวจสอบระดับแบตเตอรี่ที่ต่ำลง (voltage) หากแบตเตอรี่มีระดับแรงดันที่สูงเพียงพอ พินนี้จะมีระดับสัญญาณต่ำ แต่ถ้าพบว่าระดับแบตเตอรี่ต่ำลง พินนี้จะมีระดับสัญญาณสูง
- EN – พินสัญญาณสวิตช์ พิน EN สามารถเชื่อมต่อกับสวิตช์ภายนอกได้ เพื่อให้ PiPower ถูกปิดเมื่อพินถูกตั้งค่าเป็น จะทำงานก็ต่อเมื่อ PiPower เปิดอยู่เท่านั้น
- GND – Ground
- LED – พินแสดงสถานะพลังงาน เอาต์พุต 5V เมื่อเปิดเครื่อง หมายเหตุ : ต้องเพิ่มตัวต้านทานเมื่อเชื่อมต่อ LED ภายนอก
- GND – Ground
ระดับ BT_LV ต้องการอินพุตแบบแอนะล็อกบนโฮสต์ แต่ไม่มีใน Raspberry Pi สิ่งนี้สามารถแก้ไขได้ด้วยชิป ADC เพิ่มเติม หรือโดยใช้บอร์ด SBC อื่นที่เข้ากันได้และมีพินอินพุตแบบแอนะล็อกสำรอง
ประกอบชุด Raspberry Pi UPS Power Supply
มาประกอบชุดอุปกรณ์กันเถอะ ขั้นแรกเราจะต้องติดเทปกาวที่ตำแหน่งของแบตเตอรี่ ติดตั้งแบตเตอรี่ที่ด้านบนและเชื่อมต่อกับบอร์ด แล้วใช้เคเบิลไทร์รวบสายไฟเข้ากับบอร์ด
ใช้ standoff และน็อตที่ให้มาติดตั้ง Raspberry Pi 4 SBC ที่ด้านบนของบอร์ด PiPower
ขั้นตอนต่อไปคือติดตั้งแผ่นอะคริลิกที่ด้านล่างของแบตเตอรี่ ดูเหมือนจะเป็นอุปกรณ์เสริม แต่จะช่วยให้แบตเตอรี่อยู่แน่นกับที่ หากเวลาผ่านไปเทปกาวอาจจะหมดสภาพ
ขั้นตอนสุดท้ายคือการเชื่อมต่อสาย USB Type-A กับ Type-C ที่ให้มาระหว่างบอร์ดเอาต์พุตของบอร์ด PiPower และอินพุตไฟเลี้ยงของบอร์ด Raspberry Pi 4
เรายังสามารถบัดกรี Header สำหรับการตรวจสอบแบตเตอรี่ได้ ซึ่งเราจะลองในภายหลัง
การทดสอบโหมด “Dumb”
ก่อนที่เราจะทดสอบฟังก์ชันในโหมด “Dumb” ของ SunFounder Raspberry Pi UPS Power Supply ซึ่งไม่มีการตรวจสอบสถานะแบตเตอรี่
ฉันตรวจสอบแล้วว่า PiPower ถูกปิดเพื่อชาร์จแบตเตอรี่ให้เต็ม คุณจะเห็นไฟ LED สีแดงเปิดขึ้นเมื่อกำลังชาร์จและปิดเมื่อชาร์จเต็ม ใช้เวลาประมาณหนึ่งชั่วโมง แต่เนื่องจากมีแรงดันคงเหลือในแบตเตอรี่บ้างแล้ว การทดสอบที่เกิดขึ้นหลังจากการใช้พลังงานจนหมดใช้เวลาประมาณ 2 ชั่วโมง 15 นาทีในการชาร์จแบตเตอรี่เต็ม โปรดทราบว่าฉันใช้แหล่งจ่ายไฟ 5V/3A อย่างเป็นทางการจาก Raspberry Pi Foundation
ตอนนี้เราสามารถเลื่อนสวิตช์เพื่อเปิด PiPower และ Raspberry Pi 4 ได้ ไฟ LED สีเขียวจะเปิดขึ้น และเรายังสามารถเห็น LED ระดับพลังงาน 4 ดวงเปิดขึ้นทั้งหมด
จากนั้นฉันทดสอบเวลาคายประจุระหว่างที่ไม่ได้ใช้งานเชื่อมต่อกับจอแสดงผลและ Ethernet ที่เชื่อมต่อกับ SBC การทดสอบล้มเหลวเพราะใช้งานได้นานกว่าที่คาดไว้ และฉันเผลอหลับไปก่อนที่แบตเตอรี่จะหมด… ในการทดสอบครั้งที่สอง ฉันพบว่าแบตเตอรี่สามารถทำงานได้ประมาณ 5 ชั่วโมง 30 ต่อการชาร์จหนึ่งครั้ง ไฟ LED แสดงระดับการชาร์จอาจทำให้สับสนได้ เนื่องจากฉันสังเกตเห็นว่าไฟ LED ดวงแรกจะดับหลังจากผ่านไปเกือบ 3 ชั่วโมง จะมีความจุประมาณ 75% แบตเตอรี่จะอยู่ได้นานขึ้นอีกประมาณ 2 ชั่วโมง 30 ชั่วโมงเท่านั้น ถ้ามีการซ่อมแซมการไฟฟ้าจะใช้เวลาระหว่างเวลา 8:30 น. ถึง 16:30 น. บางครั้งใช้เวลา 8 ชั่วโมงเต็ม และการสำรองไฟ 5 ชั่วโมง 30 นาทีอาจจะไม่เพียงพอ แต่อาจจะเอาเทคนิคการประหยัดพลังงานบางอย่างสำหรับ Raspberry Pi Zero 2W มาใช้ได้ถ้าจำเป็น
ฉันทำการทดสอบการคายประจุซ้ำอีกครั้งหลังจากชาร์จเต็มในสภาวะโหลดหนักด้วยคำสั่ง stress -c 4 และแบตเตอรี่ใช้งานได้ 3 ชั่วโมงตามที่ระบุไว้ในข้อมูลจำเพาะ ฉันตรวจสอบไฟ LED ด้วย และไฟ LED ดวงแรกดับหลังจาก 1 ชม. 30 และดวงที่สองดับหลังจาก 1 ชม. 15 เพิ่มเติม และในครั้งต่อไปที่ฉันตรวจสอบ (ประมาณทุกๆ 15 นาที) จนแบตเตอรี่ถูกใช้งานหมด
ทุกครั้งที่ฉันเปิดหรือปิดอินพุตพลังงานผ่าน USB สัญญาณแรงดันไฟฟ้าต่ำจะแสดงเป็นเวลาประมาณหนึ่งหรือสองวินาทีใน Raspberry Pi OS ฉันคิดว่านี่เป็นสภาวะปกติเนื่องจากเวลาที่ใช้ในการตรวจจับการลดพลังงานบนพอร์ต USB ก่อนที่จะสลับไปใช้แบตเตอรี่ สิ่งนี้ทำให้ฉันนึกถึงว่าปัญหาทีเ่กิดขึ้นกับชุดแบตเตอรี่ก่อนหน้านี้เมื่อเชื่อมต่อพัดลมระบายความร้อนหรือฮาร์ดไดรฟ์ USB เนื่องจากการใช้พลังงานที่สูงขึ้น ดังนั้นฉันจึงพยายามจำลองไฟฟ้าดับด้วยฮาร์ดไดรฟ์ USB อีกครั้งภายใต้สถานการณ์ต่างๆ:
- Pi 4 ในสถานะว่างพร้อม USB HDD – ทดลอง 10 ครั้ง ไม่มีปัญหา
- การทดสอบ stress test ของ Pi 4 ด้วย USB HDD – ทดลอง 10 ครั้ง ไม่มีปัญหา
- การทดสอบ stress test ของ Pi 4 ด้วยทดสอบ iozone USB HDD – ทดลอง 10 ครั้ง ไม่มีปัญหา
ดังนั้นชุด SunFounder PiPower UPS kit ทำงานได้ดีกว่าโซลูชันที่ฉันลองใช้เมื่อ 7 ปีก่อนมาก เนื่องจากการสลับระหว่าง USB และพลังงานจากแบตเตอรี่เกิดขึ้นอย่างรวดเร็วเพียงพอแม้ในสถานการณ์โหลดหนักใช้พลังงานสูง
การตรวจสอบแบตเตอรี่ PiPower
เรามาบัดกรี GPIO head เข้ากับบอร์ด PiPower เนื่องจากมีพินตรวจสอบแบตเตอรี่ เราจะใช้พิน LO_DT เพื่อตรวจหาสถานะแรงดันไฟต่ำของแบตเตอรี่ CHG เพื่อตรวจดูว่าแบตเตอรี่กำลังชาร์จอยู่หรือไม่ และพิน IN_DT เพื่อตรวจสอบว่ามีการเชื่อมต่อพลังงานอยู่หรือไม่ นอกจากนี้ยังสามารถตรวจสอบระดับแบตเตอรี่ด้วยพิน BT_LV ได้ แต่ต้องใช้ชิป ADC เพิ่มเติม และฉันจะทำงานกับฮาร์ดแวร์ที่ฉันมีเท่านั้น หากคุณต้องการตรวจสอบโปรเจกต์ UPS สามารถดูตัวอย่างได้บน GitHub
บอร์ด PiPower มีตัวต้านทานสำหรับพินที่เราจะใช้แล้ว ดังนั้นเราจึงสามารถเชื่อมต่อพินโดยตรงกับบอร์ด Raspberry Pi ด้วยสายจัมเปอร์:
- IN_DT เชื่อมต่อกับ GPIO 23
- CHG เชื่อมต่อกับ GPIO 24
- LO_DT เชื่อมต่อกับ GPIO 25
- GND เชื่อมต่อกับ GND
ฉันไม่พบตัวอย่างโค้ดหรือสคริปต์ในเอกสารประกอบ และ SunFounder ยืนยันว่าบริษัทไม่มีสคริปต์ดังกล่าว ดังนั้นฉันจึงเขียนสคริปต์ Python ง่ายๆ ในหน้าต่าง Terminal เพื่อรู้สถานะแบตเตอรี่:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
!/usr/bin/python3 import RPi.GPIO as GPIO import time IN_DT = 23 CHG = 24 LO_DT = 25 GPIO.setmode(GPIO.BCM) GPIO.setup(IN_DT, GPIO.IN) GPIO.setup(CHG, GPIO.IN) GPIO.setup(LO_DT, GPIO.IN) while True: if GPIO.input(IN_DT) == 1: print('USB Power detected') else: print('No USB power. Power failure?') if GPIO.input(CHG) == 1: print('Battery is charging...') else: print('Battery is not charging...') if GPIO.input(LO_DT) == 1: print('Low battery level detected!\n') else: print('The battery has sufficient charge\n') time.sleep(10) GPIO.cleanup() |
นี่คือสถานะที่ปรากฏขณะชาร์จแบตเตอรี่:
1 2 3 4 5 6 7 8 |
pi@raspberry-pi:~ $ ./pipower.py USB Power detected Battery is charging... The battery has sufficient charge USB Power detected Battery is charging... The battery has sufficient charge |
เมื่อชาร์จเต็ม:
1 2 3 4 5 6 7 |
No USB power. Power failure? Battery is not charging... The battery has sufficient charge USB Power detected Battery is not charging... The battery has sufficient charge |
เมื่อถอดแหล่งจ่ายไฟ USB ออกจากบอร์ด:
1 2 3 4 5 6 7 |
No USB power. Power failure? Battery is not charging... The battery has sufficient charge No USB power. Power failure? Battery is not charging... The battery has sufficient charge |
ดังนั้นเรื่องการตรวจจับการนำเข้าพลังงานผ่าน USB และการตรวจจับการชาร์จดูเหมือนจะดีทั้งหมด คุณอาจต้องแก้ไขโค้ดเพื่อส่งอีเมลหรือแจ้งเตือนเมื่อมีไฟฟ้าดับ และอาจปิดบางบริการตามความจำเป็น
สำหรับการตรวจจับระดับแบตเตอรี่ต่ำ ฉันตัดสินใจลงทะเบียนบริการ LINE Notify เพื่อให้ได้รับการแจ้งเตือนเมื่อระดับแบตเตอรี่ในสมาร์ทโฟนและ/หรือสมาร์ทวอทช์ของฉันเหลือน้อย
หลังจากได้ตั้งค่า LINE Notify และรับ Access Token แล้ว ฉันได้แก้ไขโค้ด Python เพื่อส่งการแจ้งเตือนผ่าน LINE เมื่อตรวจพบระดับแบตเตอรี่ต่ำ:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
#!/usr/bin/python3 import RPi.GPIO as GPIO import time import requests #pin definitions IN_DT = 23 CHG = 24 LO_DT = 25 #LINE Notify parameters url = 'https://notify-api.line.me/api/notify' token = '<LINE_access_token_here>' headers = {'content-type':'application/x-www-form-urlencoded','Authorization':'Bearer '+token} GPIO.setmode(GPIO.BCM) GPIO.setup(IN_DT, GPIO.IN) GPIO.setup(CHG, GPIO.IN) GPIO.setup(LO_DT, GPIO.IN) while True: if GPIO.input(IN_DT) == 1: print('USB Power detected') else: print('No USB power. Power failure?') if GPIO.input(CHG) == 1: print('Battery is charging...') else: print('Battery is not charging...') if GPIO.input(LO_DT) == 1: print('Low battery level detected!\n') msg = 'Battery level low!' r = requests.post(url, headers=headers , data = {'message':msg}) print (r.text) else: print('The battery has sufficient charge\n') time.sleep(10) GPIO.cleanup() |
จากนั้นฉันเริ่มปล่อยเมื่อเวลา 21:14 น. โดยไม่ได้ใช้งาน Raspberry Pi 4 และฉันได้รับการแจ้งเตือนที่เกิดซ้ำใน LINE ตั้งแต่เวลา 02:32 น. โทรศัพท์ของฉันอยู่ในโหมดปิดเสียง แต่สมาร์ทวอทช์ใหม่ของฉันทำงาน และมันจะสั่นทุกๆ สองสามวินาที… นั่นหมายความว่าฉันต้องใช้เวลา 5 ชั่วโมง 18 นาทีก่อนที่จะได้รับการแจ้งเตือนระดับแบตเตอรี่ต่ำ ซึ่งยืนยันการทดสอบครั้งแรกของฉัน แต่มีการจับเวลาที่แม่นยำกว่า
สำหรับการทดสอบครั้งต่อไป ฉันต้องการตรวจสอบว่าจะใช้เวลานานแค่ไหนในการชาร์จแบตเตอรี่เมื่อกลับมาทำงานอีกครั้งจากไฟดับและเริ่มทำงานในภาระหนัก (stress) ดังนั้นฉันจึงแก้ไขโค้ดเพื่อส่งการแจ้งเตือนเมื่อชาร์จแบตเตอรี่แล้ว (เช่น ไม่ได้ชาร์จอีกต่อไป):
1 2 3 4 5 6 7 8 |
if GPIO.input(CHG) == 1: print('Battery is charging...') else: print('Battery is not charging...') msg = 'Battery is not charging anymore' r = requests.post(url, headers=headers , data = {'message':msg}) print (r.text) time.sleep(50) |
โค้ดนี้ไม่รับประกันในเรื่องของแบตเตอรี่ที่ชาร์จเต็มเมื่อตรวจพบ “not charging” เนื่องจากมันยังอาจถูกเรียกใช้เมื่ออินพุตพลังงาน USB ไม่ทำงาน แต่จะมีผลสำหรับการทดสอบนี้ ต้องใช้เวลาสักครู่ในการชาร์จแบตเตอรี่ภายใต้ภาระหนัก การชาร์จแบตเตอรี่ใช้เวลานาน ตั้งแต่ฉันเริ่มการชาร์จและเรียกใช้คำสั่ง “ stress -c 4 ” เมื่อเวลาประมาณ 08:33 น. และฉันสังเกตว่าไฟ LED แสดงระดับการชาร์จ 4 ดวงติดสว่างเมื่อฉันตรวจสอบเวลาประมาณ 11.30 น. แต่หลังจากรอจนถึง 15:33 น. (หรือ 7 ชั่วโมง) และยังไม่ได้รับการแจ้งเตือนใดๆ เลย ฉันตัดสินใจหยุดการทดสอบ stress test และหลังจากนั้นไม่กี่นาทีฉันก็ได้รับการแจ้งเตือนว่า “not charging”
บทสรุป
“PiPower” Raspberry Pi UPS Power Supply เป็นโซลูชันเครื่องสำรองไฟ (UPS) ด้วยราคาที่ไม่แพง ใช้งานง่ายและทำงานได้ดีและเป็นทางเลือกที่ดีถ้าคุณต้องการโซลูชันที่สามารถให้ Raspberry Pi ทำงานต่อได้ในกรณีที่มีไฟฟ้าขัดข้อง นอกจากนี้ยังมีพินการตรวจสอบแบตเตอรี่สำหรับระดับแบตเตอรี่ (แอนะล็อก), การตรวจระดับแบตเตอรี่ต่ำ (ดิจิตอล), การตรวจการนำเข้าพลังงานผ่าน USB และการตรวจการชาร์จ แต่จำเป็นต้องมีการบัดกรี (ง่าย) และบริษัทไม่มีสคริปต์หรือปลั๊กอิน (เช่นการแสดงสถานะแบตเตอรี่ในแถบการแจ้งเตือนบน Raspberry Pi OS) ดังนั้นคุณต้องเขียนโค้ดด้วยตัวเอง
ฉันขอขอบคุณ SunFounder ที่ส่ง “Raspberry Pi UPS Power Supply” มาให้ตรวจสอบ สามารถซื้อได้ในราคา $25.99(880฿) ในร้านค้าออนไลน์ พร้อมส่วนลด 10% สำหรับผู้ซื้อรายแรกๆ และใน Amazon ราคา $29.90(1,000฿) พร้อมส่วนลดพิเศษอีก 10% เมื่อทำเครื่องหมายถูกในช่องที่กำหนด
แปลจากบทความภาษาอังกฤษ : Review of SunFounder Raspberry Pi UPS Power Supply
บรรณาธิการข่าวและบทความภาษาไทย CNX Software ได้มีความสนใจในด้านเทคโนโลยี โดยเฉพาะ Smart Home และ IoT