Close
0%
0%

ESP32-S3 PowerFeather

Low-power, Feather-format ESP32 dev board for LiPo/Li-Ion and solar powered IoT projects

Similar projects worth following
Starting from
$30.00
powerfeather has 3 orders / 0reviews
Ships from Philippines

Motivation

Some time ago I had a cellular project that I wanted to do. It was going to be based on the ESP32 plus a NB-IoT/LTE-M modem. Furthermore, it was going to be deployed to a somewhat remote location, with no easy access to wall power. That meant having some sort of LiPo/Li-Ion battery and energy harvesting. Given the deployment location, solar was the best candidate.

I started looking at what modules in the market I can use to build my project. The most popular option seemed to be the Firebeetle 2. It had a couple of good things going for it:

  1. Low deep sleep current (less than 20 uA)
  2. Built-in LiPo/Li-Ion charging circuitry with an on-board TP4056
  3. Good value price-wise

However, it’s lacking in some areas:

  1. Max charging current is 600 mA
  2. Max recommended input voltage is only ~ 5 V
  3. No MPPT of some sort to more efficiently extract power from solar panel

I wanted to use a bigger battery to survive longer days without sun, especially since cellular is a little power hungry. And when the sun does come out, I wanted to charge as fast as possible so a higher max charging current was desirable. Some sort of max power point tracking or MPPT would also be very helpful in this regard. A higher max input voltage increases the solar panel options.  Furthermore, I also wanted some other important power related features, if possible:

  1. Voltage and current monitoring for supply & battery
  2. Battery charge & health monitoring
  3. Battery temperature sensing, temperature-based battery current control
  4. Enabling/disabling connected modules

Unfortunately, I couldn’t find a suitable module that has these features…and so I designed my own. Enter, ESP32-S3 PowerFeather.

Hardware

I designed the ESP32-S3 PowerFeather to be suitable for LiPo/Li-Ion and solar powered projects. It fulfilled the main requirements I had:

  1. Low deep sleep current (less than 20 uA as well)
  2. Max charging current up to 2 A
  3. Input voltage up to 18 V
  4. Not exactly MPPT, but a set maintained voltage can be set to prevent solar panel voltage from collapsing beyond the panel’s rated MPP voltage at near-MPPT performance

Plus, it had my ‘nice-to-have’ features and more:

  • Supply Monitoring
    • Current measurement
    • Voltage measurement
    • Good supply detection
  • Battery Monitoring
    • Voltage measurement
    • Temperature measurement
    • Current measurement (charge/discharge)
    • Charge estimation
    • Health & cycle count estimation
    • Time-to-empty and time-to-full estimation
    • Low charge, high/low voltage alarm
  • Battery Management
    • Enable/disable charging
    • Set max charging current
  • Others
    • 3V3 enable/disable
    • VSQT enable/disable
    • FeatherWing enable/disable via EN pin
    • Power States
      • Ship mode (< 2 uA)
      • Shutdown mode (< 2 uA)
      • Power cycle
    • Battery Protections
      • Undervoltage Detect @2.2 V, Release @2.4 V
      • Overvoltage Detect @4.37 V, Release @4.28 V
      • Overcurrent protection @3A
      • Trickle charging safety timer @1 hr
      • Temperature-based charging current reduction based on JEITA, cutoff at 0 °C and 50 °C.

The monitoring features are especially useful in remotely deployed nodes to keep track if something is wrong and if an action needs to be done. To see how the power features of the ESP32-S3 PowerFeather  compare to the FireBeetle 2 I mentioned above (and some additional hardware), take a look at this spreadsheet.

The extensive power management and monitoring features of the PowerFeather is mainly thanks to the on-board Texas Instruments BQ25628E battery charger IC and Onsemi LC709204F battery fuel gauge. Here is an overview of the important power-related parts of the board:

Software & Documentation

The TI BQ25628E and Onsemi LC709204F can be controlled using their I2C interface, which can get a little complicated. And so, I’ve also made available a helper library called PowerFeather-SDK to help users make use of the features of these chips, and the other power control and monitoring features of the board, more easily.

The PowerFeather-SDK is available on the Arduino Library Registry, as well as the ESP-IDF component registry. It’s...

Read more »

esp32-s3-powerfeather.pdf

ESP32-S3 PowerFeather Schematic

Adobe Portable Document Format - 497.13 kB - 07/07/2024 at 00:29

Preview

  • 1 × Espressif ESP32-S3-WROOM-N16R8 WiFi/BLE SoC with 8 MB flash and 2 MB PSRAM
  • 1 × Texas Instruments BQ25628E Battery Charger IC with I2C control, max 2 A charging, and up to 18 V input
  • 1 × Onsemi LC709204F Low quiescent current battery fuel gauge IC

  • Showcase Video

    powerfeatherdev07/14/2024 at 13:10 0 comments

    The demonstrations in the previous logs, as well as a hardware tour and feature discussions can be found in the ESP32-S3 PowerFeather showcase video:

  • Demo #6 Setting MPP Voltage

    powerfeatherdev07/14/2024 at 13:05 0 comments

    A solar panel can be connected to the external DC power input (VDC pin). In the photo below, a PowerFeather Protowing is used to break the VDC pin out into a barrel connector, to which the solar panel is connected.

    Solar panel and battery connected to ESP32-S3 PowerFeather

    Solar panel and battery connected to ESP32-S3 PowerFeather

    The MPP voltage can be set from 4.6 V to 16.8 V to extract power from a solar panel more efficiently. Start with the figure mentioned in the solar panel, then experiment a little bit - set it a little higher or lower than this value.

    The photos below illustrate the effect of not setting MPP voltage near panel rated MPP voltage, vs. setting it:

    Battery current, supply voltage & current with MPP voltage not set

    Battery current, supply voltage & current with MPP voltage not set

    Battery current, supply voltage & current with MPP voltage set

    Battery current, supply voltage & current with MPP voltage set

    Setting the MPP voltage leads to a significant increase in power extracted from the solar panel and delivered to the battery, illustrated in the table below.

  • Demo #5 Battery Temperature Sensing

    powerfeatherdev07/14/2024 at 13:01 0 comments

    A thermistor can be connected to the ESP32-S3 PowerFeather. This enables the charger IC to give a readout of the battery temperature, and to reduce or cut-off charging current when certain temperatures are hit.

    Thermistor header pin location

    Thermistor header pin location

    The graph below shows the relationship between the max charging current % and the temperature.

    Max charging current % and temperature relationship

    Max charging current % and temperature relationship

    If the user sets max charging current to 1000 mA for example, the charger IC is only able to allow charging to go that high if the battery temperature is within 15 C and 35 C. Outside of this temperature range, the max charging current is capped at a certain percentage, illustrated in the table below:

    The following pictures show this in action (potentiometer is used instead to simulate a thermistor):

    Charging current from 15 C - 35 C: ~ 1 A

    Charging current from 15 C - 35 C: ~ 1 A

    Charging current from 10 C - 15 C: ~ 400 mA

    Charging current from 10 C - 15 C: ~ 400 mA

    Charging current from 0 C - 10 C: ~ 200 mA

    Charging current from 0 C - 10 C: ~ 200 mA

    No charging current below 0 C

    No charging current below 0 C

    Charging current from 35 C - 40 C: ~ 400 mA

    Charging current from 35 C - 40 C: ~ 400 mA

    Charging current from 40 C - 50 C: ~ 200 mA

    Charging current from 40 C - 50 C: ~ 200 mA

    No charging current above 50 C

    No charging current above 50 C

  • Demo #4 Charging Controls

    powerfeatherdev07/14/2024 at 13:00 0 comments

    Charging can be enabled or disabled on-demand. When charging is enabled, the red CHG status LED lights up, and the charging current can be measured.

    Charging enabled, red CHG LED lights up, battery current is positive, non-zero value

    Charging enabled, red CHG LED lights up, battery current is positive, non-zero value

    Having the ability to disable charging is useful when you want to charge the battery less than full capacity to extend its lifespan. For example, you can check if the battery is already more than 80 % charged, and your firmware can disable charging if so.

    The max charging current can also be set from firmware, from 50 mA to 2000 mA. The charger IC will make sure that the charging current never goes too much above this value during the constant-current phase of the charging cycle.

    Max charging current set to 514 mA, charging current ~0.52 A

    Max charging current set to 514 mA, charging current ~0.52 A

    Max charging current set to 1287 mA, charging current ~1.28 A

    Max charging current set to 1287 mA, charging current ~1.28 A

    Max charging current set to the maximum supported (2000 mA), charging current is ~2 A

    Max charging current set to the maximum supported (2000 mA), charging current is ~2 A

    This is useful since the recommended safe charging current is usually related to the battery capacity - usually at 1C. This means that for a 500 mAh battery, it is recommended to not exceed 500 mA of charging current; for a 1000 mAh, 1000 mA of charging current max is recommended, so on and so forth.

  • Demo #3 Enable/Disable 3.3 V Outputs

    powerfeatherdev07/14/2024 at 12:59 0 comments

    The board's two 3.3 V outputs (3.3 V header pin output & STEMMA QT 3.3 V output) can be enabled/disabled independently for power saving.In the photos below, the red LED is powered from the header pin 3.3 V output, and the STEMMA QT module from the STEMMA QT 3.3 V output. Switching on/off the controls on the dashboard, these two devices turn on/off accordingly:

    Header pin 3.3 V output enabled, red LED on

    Header pin 3.3 V output enabled, red LED on

    Header pin 3.3 V output disabled, red LED off

    Header pin 3.3 V output disabled, red LED off

    STEMMA QT 3.3 V output disabled, green LED on STEMMA QT module on

    STEMMA QT 3.3 V output disabled, green LED on STEMMA QT module on

    STEMMA QT 3.3 V output disabled, green LED on STEMMA QT module off

    STEMMA QT 3.3 V output disabled, green LED on STEMMA QT module off

  • Demo # 2 Ship Mode and Deep Sleep Current

    powerfeatherdev07/14/2024 at 12:56 0 comments

    A Nordic Power Profiler Kit II acts as the battery that powers the board while measuring its power consumption.

    Nordic Power Profiler Kit II acting as battery

    The ESP32-S3 module can be put into deep sleep to save power using the Power States -> Deep Sleep button on the dashboard. Typically, current consumed for the entire board when the ESP32-S3 is in deep sleep is less than 20 uA:

    Deep sleep current consumption

    Ship mode is a power state where the battery is electronically disconnected, even if it is physically connected. As a result, current consumption in this power state is very low, under 2 uA typically. It can be entered into using the Power State -> Ship Mode button on the dashboard.

    Ship mode current consumption

  • Demo # 1 Power Inputs

    powerfeatherdev07/14/2024 at 12:54 0 comments

    The ESP32-S3 PowerFeather has three power inputs:

    a. Battery: up to 4.2 V, 2 A via JST PH connector
    b. USB: up to 5 V, 2 A via USB-C connector
    c. External DC: up to 18 V, 2 A via the VDC header pin

    ESP32-S3 PowerFeather power inputs

    ESP32-S3 PowerFeather power inputs

    With just the battery connected, the dashboard shows -0.1 A battery current. The negative value means that it's discharging. Since no USB or external DC power source is connected, the supply information displays 0 V and 0 A.

    Only the battery connected

    Connecting USB power, the supply voltage and current now displays around 5 V and 0.08 A. The battery current drops to 0 A, indicating it's neither charging or discharging.

    USB power + battery connected

    Connecting an external DC source (through a ProtoWing barrel VDC pin breakout in the photo below) supersedes the still connected USB power and it's now used as the supply, reflected by the approximately 18 V and 0.02 A in the supply information.

    18 V external DC source + USB power + battery connected

    It's OK to have all these three sources connected at the same time. The board juggles between them appropriately to prevent brownout reset when connecting/disconnecting power sources, as long as one of the sources is connected at any point in time.

  • Demonstration App

    powerfeatherdev07/14/2024 at 11:54 0 comments

    I created a demo app to explore the power management and monitoring features. It is based on Arduino and uses PowerFeather-SDK. So, follow these instructions to add support for the ESP32-S3 PowerFeather in the Arduino IDE and install the PowerFeather-SDK library.

    Once done, you can download the demo app source code as a ZIP file on GitHub. Extract the ZIP file and open the project in Arduino IDE.

    Demo source code as a ZIP file from GitHub

    Afterwards, install the additional libraries needed by the demo app: ESPAsyncWebServer and ESPUI.

    Additional demo dependencies

    Don't forget to set the target board to "ESP32-S3 PowerFeather". You should now be able to build the demo app and flash it onto your ESP32-S3 PowerFeather like any other Arduino sketch.

    Building the ESP32-S3 PowerFeather demo with Arduino

    Once the demo app is up and running on the ESP32-S3 PowerFeather, it acts as an access point and serves the demo web app. A phone, tablet or computer can connect to this access point, and the demo app can then be loaded by a web browser at the IP address 192.168.1.1.

    Tablet connected to ESP32-S3 PowerFeather AP, loaded demo app on browser

    Tablet connected to ESP32-S3 PowerFeather AP, loaded demo app on browser

    The demo web app is a dashboard displaying information and controls of some power-related parameters of the ESP32-S3 PowerFeather:

    • Battery Information
      - Voltage
      - Charge/Discharge Current
      - Charge Percent
      - Time Left Estimate (time-to-full/time-to-empty)
      - Health Percent Estimate
      - Cycles Estimate
    • Supply Information
      - Voltage
      - Current
    • Battery Temperature Sense
      - Enable Battery Temperature Sense
      - Battery Temperature Display
    • Charging
      - Enable/Disable Charging
      - Max Charging Current (from 50 mA to 2000 mA)
    • 3.3 V Outputs
      - Enable/Disable 3.3 V Header Pin Output
      - Enable/Disable STEMMA QT 3.3V Output
    • Max Power Point
      - Set Max Power Point Voltage (from 4600 mV to 16800 mV)
    • Power States
      - Enter Ship Mode- Enter Deep Sleep

    With the demo app flashed on the ESP32-S3 PowerFeather, we can now perform the demonstrations.

View all 8 project logs

Enjoy this project?

Share

Discussions

Does this project spark your interest?

Become a member to follow this project and never miss any updates