DFRobot ONPOWER Raspberry Pi UPS hat is an uninterruptible power supply(UPS) expansion board for Raspberry Pi 3 Model B+/ 4 Model B development boards. This is a power management device specially designed for the Raspberry Pi. It can continue to supply power to the Raspberry Pi for a certain period of time in the case of an external power failure to avoid problems such as system damage and data loss caused by sudden power failure. The ONPOWER Raspberry Pi UPS hat supports USB TYPE-C power input, compatible with TYPE-C QC2.0/QC3.0, Huawei FCP and the other multiple rapid charge protocol. It can reduce the charging time while maintaining the maximum power output of 5V@3A. A 3000mAh 18650 battery can keep the system uptime for 3~4 hours, ensuring data security, but also enough to meet the needs of Raspberry Pi's daily use and mobile application scenarios. The hat has a mounting hole for DC fan, it can maintain the device running temperature. DFRobot ONPOWER Raspberry Pi UPS hat has an onboard RTC module, which we can set the time and control Raspberry Pi's power on and off via the software regularly. Cooperate with the mainboard's self-start function, it can realize timing boot/shutdown. DFRobot ONPOWER Raspberry Pi UPS expansion board uses a MAX17043 dedicated power detection chip, which is compatible with most lithium batteries on the market. The chip has its own algorithm, with the onboard LED, it can directly display the battery power capacity, and you can also get the power supply status through the serial port command.
- Support TYPE-C QC2.0/QC3.0, Huawei FCP and the other multiple rapid charge protocol
- Maximum 5V@3A Power output
- Support 18650, lithium ion, polymer lithium battery
- Onboard RTC, support software timing boot/shutdown
- Support LED battery capacity display and serial port information query
- Input Voltage: TYPE-C QC2.0/QC3.0 Rapid charge (5V/2A; 9V/2A; 12V/1.5A)
- Power Supply Interface: USB TYPE C
- Battery Type: 3.7V lithium battery, 18650 lithium battery (Recommended more than 3000mAh)
- Output Power: 5V@3A
- Standby Power Consumption: <10mA
- Communication Interface: I2C
- Product Size: 65mm56mm13mm
Note: Please note the battery capacity, at least 3000mAh. Higher will be better.
- The fan can be fixed under the UPS board with M3x12 screws and M3 nuts (the side where the fan interface located)
- Insert the XH2.54 2x20P long pin header from the back side (the side where the fan interface located)
- Insert the female side of the row into the pin side of the Raspberry Pi, see the figure above for details.
UPS RTC(Real Time Clock) Tutorial
ONPOWER UPS HAT communicates with the Raspberry Pi through the I2C interface. We can set the time and the alarm, read the real time clock, and make timing on/off. Please download DFRobot UPS Python library, and put this folder on the desk of the Raspbian system.
Open the I2C interface of the Raspberry Pi and enter through the terminal: sudo raspi-config
Select Interfacing Options-> I2C->Enable
After we opened I2C interface，RTC can work now！
Change directory to DFRobot UPS Python Library Location：cd /home/pi/Desktop/DFRobot_raspberrypi_ups/python/examples/ups
Enter Help Command, check all commands and explanations: python ups.py -p help
Examples: Synchronize the system time：python ups.py -p get_time
There are many commands in UPS, please try more.
UPS Fan Tutorial
ONPOWER UPS HAT use BCM26(wiringPi code GPIO25；Physical pin 37) to control the fan.
Open Thonny Python IDE, copy and paste the code, when the SoC temperature is higher than 55 degree, turn on the fan. When it is lower than 48 degree，turn off the fan.
from RPi import GPIO from time import sleep GPIO.setmode(GPIO.BCM) # USD BCM Pin mode channel = 26 # BCM26(Physical pin 37) start_temp = 55 # Startup threshold: 55(℃) end_temp = 48 # Shutdown threshold: 48(℃) GPIO.setup(channel, GPIO.OUT, initial = GPIO.LOW) # Initialize control pin is_high = GPIO.LOW # GPIO Status flag try: while True: # Get SoC temperature temp = open('/sys/class/thermal/thermal_zone0/temp') temp = int(temp.read()) / 1000 if temp > start_temp and not is_high: # When the SoC temperature exceeds the startup threshold and the fan is off GPIO.output(channel, GPIO.HIGH) # Turn on the fan is_high = GPIO.HIGH # Mark the fan status as on elif temp < end_temp and is_high: # When the SoC temperature is below the shutdown threshold and the fan is on GPIO.output(channel, GPIO.LOW) # Turn off the fan is_high = GPIO.LOW # Mark the fan status as off sleep(10) # 10s except: pass # Reset this pin when exiting GPIO.cleanup(channel)
Get ONPOWER UPS HAT from DFRobot Store or DFRobot Distributor.
Turn to the Top