Power Pack Pro

From Geekworm Wiki
Jump to navigation Jump to search

Raspberry pi power pack Pro versoin
Raspberry pi power pack UPS HAT Pro versoin


This is a power expansion Board especially designed for Raspberry Pi, which enables to use the Raspberry Pi with a moveable power source. It's more convenient to use external 3.7V Lithium battery or 3.7V 18650 Lithium battery;




  • Supports I2C Output with Capacity & Voltage Reading Function
  • Supports Raspberry pi or Android & Apple Phone or Pad or other electronic device charging;
  • Supports charging while discharging,(Very stable, the maximum output current can up to 1.8A while charging, but the chip heat will become larger. maybe you can place a external heatsilk on clip.)
  • With 4 LED power indicator;
  • Standard dimension of Raspberry Pi HAT;
  • Two power supply modes: GPIO power output and Micro USB power out (you can use OTG cable to connect it);
  • Removable battery, The external lithium battery requirements: 3.7V lithium battery;

  • Built-in power path management, perfect support charging While discharging.
  • Intelligent 3-stage charging (trickle, constant current, constant voltage), it can effectively extend the battery life.

  • Maximum discharge current: 2A, Maximum charge current: 1.8A;
  • Output protection: over current, short circuit, under voltage protection;
  • Input protection: over voltage, overcharge, under voltage protection;

Check I2C on Rasbperry pi

check if there is a I2C device;

sudo i2cdetect -y 1
i2cdump -y 1 0x62

0x62 is device address. You can see:0x0A address register default value is 0xC0

i2cset -y 1 0x62 0x0A 0x00

Wake-up the device I2C function; MODE register address 0x0A set to 0x00

i2cdump -y 1 0x62;

VCELL(cell voltage) address:0x02 - 0x03

PS: 0x62 is the device address of I2C device(CW2015 power monitoring chip)

How to read the voltage values that saved by chip register?

sudo i2cget -y 1 0x62 0x02 w

get the value 0xf82f; swap high and low byte to get 0x2ff8;

0x2ff8 converted to decimal number is 12280;

12280 * 305 = 3745400 uV

3745400/1000000 = 3.7454V

PS: 305 is a fixed value (Fix factor value);

How to read the remaining capacity (percentage) estimated by the chip?

1. Read the integer part of the battery percentage;

sudo i2cget -y 1 0x62 0x4 b

the resulting value is 0x11;

Converted to 10 decimalism is 17, then the remaining capacity is 17%;

2. Read the fractional part of the battery percentage

sudo i2cget -y 1 0x62 0x5 b

the resulting value is 0x95;

Converted to decimalism is 149;

Then the fractional part is 149/256 = 0.58;

So the chip estimated remaining capacity (percentage) is 17.58%.


Add your comment
Geekworm Wiki welcomes all comments. If you do not want to be anonymous, register or log in. It is free.

Anonymous user #2

27 months ago
Score 0++
I don't understand why i2c doesn't want to work. It does not find any devices on the i2c bus at all.


42 months ago
Score 0++


Could I ask you for advice, which modification will be needed in to the PCB to make this UPS start automatically after back the power after fully discharge the battery.

Best Regards


Anonymous user #1

42 months ago
Score 0++
Solution: I will use the transistor to simulate the switch button pressed. I will connect to power the Raspberry pi board and also the UPS board.