smôl Power Board LiPo Hookup Guide
Introduction
smôl is a new board format and, as the name suggests, they're really small!
The smôl Power Board LiPo is an intelligent power board for smôl. It provides 3.3V power for your smôl stack from a Li-Ion / Li-Polymer battery and has a built-in charger and fuel gauge.
Each smôl board measures just 1.60" by 0.42" (40.6mm by 10.7mm). We made the boards just wide enough so we could squeeze USB-C and 16-way Flexible Printed Circuit (FPC) connectors on there. Some of the boards have components on both top and bottom layers which again helps keep the boards small.
smôl boards are designed to stack one on top of the other, using 16-way 0.5mm-pitch FPCs to provide the interconnect from one board to the next. Each board has an IN FPC connector on the bottom layer and an OUT FPC connector on the top layer. The boards stack in a zig-zag daisy chain; signals and power are passed from one board to the next up and down the chain through the FPCs.
Required Materials
As a minimum, you're going to need a Lithium-Ion / Lithium-Polymer rechargeable battery to go with your power board:
The Power Board LiPo is part of the smôl ecosystem. Why not pair it with one of the smôl Processor Boards and a Peripheral Board?
Don't forget that you will need Flexible Printed Circuits to connect your smôl boards together. You're going to need one FPC per board. Our 36mm FPC is the perfect length if you want the smôl boards to stack neatly, one on top of the other.
Need to do some prototyping with smôl? Or want to connect your smôl stack to a Qwiic board? The smôl Header is perfect for that:
Suggested Reading
This is the hookup guide for the smôl Power Board LiPo. Click the button below if you want to find out more about smôl itself.
We recommend taking a look through the following tutorials if you are not familiar with the concepts covered in them:
Battery Technologies
Hardware Overview
In this section we'll cover what this board does and what is included on the smôl Power Board LiPo.
What Does This Board Do?
What does this board do? Excellent question! Let's answer that right now.
Many SparkFun boards, especially our Thing Plus boards, come with a Li-Ion battery connector and built-in charger so you can power your project from a rechargeable battery. smôl is no different. The smôl Power Board LiPo is equipped with: one of our standard JST-PH battery connectors; an MCP73831 Li-Ion and Li-Polymer charger; and a MAX17048 I2C battery fuel gauge. But it also comes with an on-board ATtiny841 AVR microcontroller. This is an intelligent power board!
The main job of the Power Board is to provide power for your smôl ecosystem. smôl is designed to be both small in size and small on current draw. The Power Board plays a critical role in reducing the current draw of smôl as much as possible.
When you want your project to go into a low power or deep sleep state, it is standard practice to put your processor into the lowest power state it offers. But you may find that the current draw is still something like 100µA to 500µA depending on which processor you are using. Then there is the quiescent current drawn by the voltage regulator. The quiescent current is the current drawn by the regulator when it is on but has no load attached. Again, it varies from regulator to regulator but you may find this adds another 55µA to your current draw. Those little currents add up and reduce your battery life considerably.
With smôl, we took a new approach. The Power Board takes control and provides the 3.3V power for the whole smôl stack. When instructed to by the Processor Board, the on-board ATtiny microcontroller will turn off that power completely and then put itself into a low power sleep state for a pre-defined interval. Sleep intervals from a few 10's of milliseconds to several days are possible. We have used the fantastic Otii Arc Power Analyzer to help us reduce the sleep current to just 6µA. Yes, you read that right, 6 microamps! smôl makes it possible for your battery life to be measured in months not days!
Battery Connector
By far the biggest component on the board is the JST-PH connector for the battery.
MCP73831 Li-Ion and Li-Polymer Charger
Like our Thing Plus boards, the smôl Power Board LiPo comes with a MCP73831 Li-Ion and Li-Polymer Charger IC. We've set the charge current to 100mA to prevent the board drawing too much current through the Flexible Printed Circuit interconnect and to make it safe to use small Li-Ion batteries like our 400mAh battery.
The yellow CHG LED will light up when the battery is charging from USB power via the Processor Board.
MAX17048 Fuel Gauge
Like our Thing Plus C - ESP32 WROOM, the smôl Power Board LiPo comes with a MAX17048 I2C Fuel Gauge IC. The processor board can communicate with the power board via I2C and read the battery voltage, State-of-Charge and other parameters.
ATtiny841 AVR Microcontroller
The smôl Power Board LiPo is an intelligent power board. The on-board ATtiny841 microcontroller can monitor the battery voltage, State-of-Charge and other parameters. When the Processor Board requests it to, the ATtiny841 will turn off the smôl 3.3V power completely and place itself into deep sleep for a pre-defined interval. This is what makes it possible to reduce the sleep current to just 6µA.
Our SparkFun smôl Power Board Arduino Library does all of the heavy lifting for you, making it easy to communicate with the ATtiny through simple function calls.
A Note About Temperature Sensing
The ATtiny841 has a built-in temperature sensor, which can be accessed via the SparkFun smôl Power Board Arduino Library. However, the quoted typical accuracy of the sensor is ±10°C. Yes, plus or minus ten degrees C. The sensor measurement requires external calibration to be useful.
Voltage Regulators
The smôl Power Board LiPo has two 3.3V regulators on-board: an AP2112K-3.3V and a STLQ015-3.3V.
The AP2112K-3.3V is one of our favorite regulators. It provides 3.3V at up to 600mA with a typical voltage drop of 250mV. The AP2112K provides 3.3V to the smôl stack and can be switched off completely by the ATtiny841 processor. This avoids the regulator's 55µA quiescent current draw depleting your battery.
The STLQ015-3.3V is a new friend. It provides 3.3V at up to 150mA with a typical voltage drop of 112mV. The STLQ015 provides 3.3V power for the ATtiny841 microcontroller (only) and has a truly tiny quiescent current draw of 1.4µA.
FPC Connections
Like all of our smôl boards, the Power Board LiPo is equipped with two 16-way 0.5mm-pitch Flexible Printed Circuit connectors. FPCs are used to link the smôl boards together in a daisy-chain.
The pin-out for the smôl Power Board LiPo is as follows:
Connector Pin No. | Signal Name | Function | Notes |
---|---|---|---|
1 | PROC_PWR_EN | Processor Power Enable | The power board pulls this signal low to disable the voltage regulator on the power board |
2 | 3V3 | 3.3V Power Rail | |
3 | GND | Power Ground / 0V | |
4 | SCLK | SPI Clock | Not used |
5 | COPI | SPI Controller Out Peripheral In | Not used |
6 | CIPO | SPI Controller In Peripheral Out | Not used |
7 | CS0 | SPI Chip Select 0 | Not used |
8 | CS1 | SPI Chip Select 1 | Not used |
9 | CS2 | SPI Chip Select 2 | Not used |
10 | GPIO0 | General Purpose Input / Output 0 | Not used |
11 | GPIO1 | General Purpose Input / Output 1 | Not used |
12 | SDA | I2C Data | Used for ATtiny841 and Fuel Gauge communication |
13 | SCL | I2C Clock | Used for ATtiny841 and Fuel Gauge communication |
14 | GND | Power Ground / 0V | |
15 | 3V3 | 3.3V Power Rail | |
16 | V_USB | USB Power Rail (5V) | USB power is used to recharge the battery |
The IN and OUT pin connections are identical on the smôl Power Board LiPo. (That's not always true on smôl Peripheral Boards. Check the appropriate Peripheral Board Hookup Guide for full details.)
The order in which you connect smôl boards is important. However, because the Power Board LiPo only uses I2C communication, it can be placed anywhere in the stack. Please see the smôl Hookup Guide for more details.
smôl Specifics
Interface:
- Interface: I2C
- ATtiny841 Default Address: 0x50
- MAX17048 Fuel Gauge Address: 0x36
PROC_PWR_EN:
- PROC_PWR_EN:
- The power board pulls PROC_PWR_EN low to disable the regulator on the processor board
Arduino Example: Battery Voltage
If you are using the smôl ESP32 Processor Board, you are going to want to install the CP210x USB Driver and Arduino Boards Package for the ESP32 first. Please see the smôl ESP32 Hookup Guide for more details.
The smôl Power Boards have their own Arduino Library to make communicating with the board as simple as calling a function. You can install the library through the Arduino IDE Library Manager by searching for SparkFun smol power. Alternatively, you can grab the library from GitHub or can download it as a zip file by clicking the button below:
You are also going to need to install the SparkFun MAX1704x Fuel Gauge Arduino Library. Again, you can install this library through the Arduino IDE Library Manager by searching for SparkFun MAX1704x. Alternatively, you can grab the library from GitHub or can download it as a zip file by clicking the button below:
The Power Board library contains a set of tried-and-tested examples which will work with both the smôl Power Board LiPo and the smôl Power Board AAA. There is only one line of code to change when switching from one to the other.
The following code is a simplified version of Example2_BatteryVoltage. Upload the code onto your processor board and open the Serial Monitor or a terminal emulator at 115200 baud to see the output.
language:c
#include <Wire.h>
#include <SparkFun_MAX1704x_Fuel_Gauge_Arduino_Library.h> // Click here to get the library: http://librarymanager/All#SparkFun_MAX1704x_Fuel_Gauge_Arduino_Library
#include <SparkFun_smol_Power_Board.h> //Click here to get the library: http://librarymanager/All#SparkFun_smol_Power_Board
smolPowerLiPo myPowerBoard;
void setup()
{
Serial.begin(115200);
while (!Serial)
; // Wait for the user to open the Serial console
Serial.println(F("smôl Power Board example"));
Serial.println();
Wire.begin();
if (myPowerBoard.begin() == false) // Begin communication with the power board using the default I2C address (0x50) and the Wire port
{
Serial.println(F("Could not communicate with the power board. Please check the I2C connections. Freezing..."));
while (1)
;
}
float voltage = myPowerBoard.getBatteryVoltage(); // Read the battery voltage from the fuel gauge
Serial.print(F("The battery voltage reads as: "));
Serial.println(voltage);
if (voltage == -99.0)
{
Serial.println(F("A voltage of -99.0V indicates an error."));
}
}
void loop()
{
//Nothing to do here
}
Troubleshooting
If your smôl stack is not communicating, it is probably in deep sleep. When the Power Board is commanded into deep sleep by the Processor Board, the only way it will wake it up again is when the sleep interval expires. You cannot wake or reset the system via the USB interface.
Removing and re-inserting the battery connection will reset the power board and wake it up again.
We did not include a reset button on the smôl Power Board to keep the board as small as possible. However, you can reset it via the ISP programming test points on the bottom of the board. Briefly connect RESET to GND to reset the board.
Resources and Going Further
For more information about the smôl Power Board LiPo, check out the following links:
smôl Power Board LiPo Documentation:
- Schematic
- Eagle Files
- GitHub Hardware Repo
- SparkFun smôl Power Board Arduino Library
- Arduino Examples
Li-Ion / Li-Polymer Charger:
- Datasheet (MCP73831)
Battery Fuel Gauge:
- Datasheet (MAX17048)
Microcontroller:
- Datasheet (ATtiny841)
smôl Documentation: