smôl Power Board AAA Hookup Guide
Introduction
smôl is a new board format and, as the name suggests, they're really small!
The smôl Power Board AAA is an intelligent power board for smôl. It is designed to provide 3.3V power for your smôl stack from one or two AAA or AA alkaline (non-rechargeable) batteries. If you need a rechargeable solution, check out the smôl Power Board LiPo.
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 battery holder or JST-PH cable to go with your power board:
The Power Board AAA 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 AAA. 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 AAA.
What Does This Board Do?
What does this board do? Excellent question! Let's answer that right now.
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. This board has a TPS61200 switching regulator on it and is designed to boost the voltage from one or two AAA or AA alkaline cells up to 3.3V. But it also comes with an ATtiny43 AVR microcontroller on it. This is an intelligent power board for the smôl ecosystem!
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 12µA. Yes, you read that right, 12 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.
ATtiny43U AVR Microcontroller
The smôl Power Board AAA is an intelligent power board. The on-board ATtiny43U microcontroller can monitor the battery voltage and other parameters. When the Processor Board requests it to, the ATtiny43 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 12µA.
The ATtiny43U may seem a strange choice, but actually it is the perfect choice for this board. We use it because it has a built-in boost converter and can operate directly from voltages as low as 0.7V. It does not need a separate voltage regulator.
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 ATtiny43 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 Regulator
The smôl Power Board AAA has a TPS61200 switching regulator on-board. That's the same regulator we use on our LiPower - Boost Converter. It can deliver approximately 550mA when boosting 1.5V up to 3.3V, and approximately 1500mA when boosting 3.0V up to 3.3V. It can be switched off completely by the ATtiny43U microcontroller, avoiding the 55µA quiescent current draw.
FPC Connections
Like all of our smôl boards, the Power Board AAA 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 AAA 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 ATtiny43U communication |
13 | SCL | I2C Clock | Used for ATtiny43U 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 AAA. (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 AAA 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
- ATtiny43U Default Address: 0x50
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. The smôl Power Board AAA does not have a fuel gauge on it, but the library does need it to provide support for the smôl Power Board LiPo. 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 AAA and the smôl Power Board LiPo. 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
smolPowerAAA 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)
;
}
// Select VCC as the voltage reference - see the full example for more details
myPowerBoard.setADCVoltageReference(SFE_SMOL_POWER_USE_ADC_REF_VCC);
float voltage = myPowerBoard.getBatteryVoltage(); // Read the battery voltage from the ATtiny43U
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 AAA, check out the following links:
smôl Power Board AAA Documentation:
- Schematic
- Eagle Files
- GitHub Hardware Repo
- SparkFun smôl Power Board Arduino Library
- Arduino Examples
Boost Regulator:
- Datasheet (TPS61200)
Microcontroller:
- Datasheet (ATtiny43U)
smôl Documentation: