The Solar-Powered Ribbit Pro is built around the nRF9151 with a linear solar charger IC. The current version (v4) relies on an external power source, such as an AC-DC wall adapter, and features the ESP32 as its central MCU. However, the ESP32 is limited to local Wi-Fi and BLE for data uploads to the cloud.
To overcome this limitation, an add-on LTE module like the EC200 or similar modules have been integrated alongside the ESP32 to enable direct cloud connectivity over LTE/LTE-M/NB-IOT.
Transitioning to a solar panel as the primary power source would make the device self-sustainable. Designing an efficient power budget and carefully selecting an appropriate solar panel are critical to ensure consistent operation. One of the primary factors influencing the design is the device's update interval, which ranges from a fast rate of 1 minute to slower intervals of 6–12 hours or more.
The power budget must account for both the minimum and maximum update intervals, with a recommended safety margin of 2x to accommodate variables such as local weather conditions affecting sunlight availability, dust accumulation on the panel, temperature fluctuations, battery capacity degradation over cycles, and other environmental factors.
Key Considerations to get started:1. Cost, Simplicity & Scalability
2. Reliability and Proven solutions
3. Ease of setup and config
Block DiagramThe system accepts input from both a solar panel and a USB-C port. When a 5V USB-C power source is connected, the power mux prioritizes this input, enabling charging through the 5V USB-C connection.
- Battery selection: 18650 cylindrical cell is preferred than Li-Po pouch battery as the system would be used in harsh environments
- BMS(Battery Management System): On Board BMS IC takes care of battery with Over discharge & Over charge protection
- nRF9151 is powered directly from battery as it can operate in the voltage conditions of 3V - 5.5V
- Battery SoC is estimated by reading battery voltage through resistor divider with a switch to conserve leakage current on standby
- Solar Panel voltage is measured using a voltage divider with a switch similar to battery sense to monitor the power health status
- (Optional) USB-UART bridge (CP2102) for data logging and debug purposes (IC U3)
- Ultra low quiescent current LDO (XC6220B331MR-G) for 3v3 voltage to power the peripheral devices, and onboard GNSS LNA (Need for external GNSS module is mitigated)
- A DC-DC Boost converter (MT3608L) for 5V to power the external peripheral devices wherever necessary as auxiliary supply available in the pinout
- Option for selecting the peripheral output voltage through jumper is made available to select from 3v3 or 5V (Default: 3v3)
- Solar panel can be a waterproof external mount or a bare panel which can be mounted on Ribbit Frog enclosure (To be evaluated to determine the most effective approach) - if an external panel is selected then a adapter cable can be used, based on the type like alligator clips or Barrel jack etc., to the JST connector on board
- Antenna: GNSS Quectel YG0005AA(Onboard), LTE - Quectel YFCA002
- SIM Card Slot: nano SIM card slot with flip open type at the back of PCB
- RGB LED (WS2812B) and a USER button, could be assigned with custom functions in software
- Charge Indication: Jumper "LED" at the back side of the PCB to enable/disable the charger status indication on PCB - CHARGING(RED) and DONE(GREEN)
- PCB: FR4, 4 Layer, approx. 69x22.8 mm, Pin compatibility with Adafruit Feather ESP32
- Bill of Materials (BOM): Components cost on PCB < 50USD
- Solar Panel: 5V or 6V, 2W (1-2units) :: Example: link1,link2,
- Battery: 18650 or Li-Po pouch of ~2000-2500mAH :: Example: link1,link2
While the board includes a CP2102N or CH9102F (low cost alternative) USB-to-UART bridge for serial logging and development, this component is intended solely for initial board bring-up and debugging. To keep the production version lean and cost-effective, the CP2102 can be marked as DNP (Do Not Populate) during manufacturing.
For programming and debugging, standard SWD and UART lines are broken out to Feather-compatible headers. This makes it easy to connect an external SWD/JTAG programmer and UART interface, enabling firmware flashing and logging without relying on onboard USB circuitry.
Once the firmware is initially flashed using an external programmer via header pins, the software can be designed to support OTA (Over-the-Air) updates minimizing the need for physical access during future updates or maintenance.
Assumptions and Approximations:Active Power Consumption (Avg. Current): ~60mA
Sensors: ~50mA
DPS310: ~1mA
SCD30: ~19mA
MCU(Total average current): ~10mA (2x than the calculated value from online profiler)
Online-power-profiler-for-lte reference: https://devzone.nordicsemi.com/power/w/opp/3/online-power-profiler-for-lte
Currently the link is for nRF9160, assuming nRF9151's power profile is same or better than nRF9160 - it is considered.
Note: For same config over NB-IOT it is 6.95mA
Sleep Power Consumption (Avg Current)
Sensors: ~5µA (As the power is completely shut off through a load switch)
MCU(PSM Floor Current): ~15µA
Note: With Temperature and Humidity, sleep current can go a bit higher because of thermal noise and leakage
Active Duration:
Per transmission (e.g., per minute/hour/6 hours):
Battery Capacity and LifetimeBattery Life (hours)=Battery Capacity (mAh) / Average Current (mA)
for 2000mAh Battery:
lets consider 50uA sleep current with battery SOC degradation 20%,
MCU Active: 10mA
Sensors: 45mA
Misc: 20mA
Total: 75mA
~150mA (Factor of x2) of active Mode current (including sensors enabled with 5V_OUT) for 20 seconds ON duration
Battery Life,
Update Every Minute: ≈ 42 hours
Update Every Hour: ≈ 75 days
Update Every 6 Hours: ≈ 11 months
From online battery life calculator with all parameters: https://www.omnicalculator.com/other/battery-life
Solar Panel and IC RecommendationSolar Panel Selection:
- Assume 3-4 hours of peak sunlight daily
- A 6V, 2W panel would be an ideal fit
Solar Charger IC selection:
- Parameters for selection: MPPT required or not?, Linear or Switching, Low cost, better component availability, popular in community and resource availability, available as evaluation boards or modules for testing
- IC which has MPPT function is usually efficient but for low power applications it wouldn't be, due to increased components count, higher quiescent current, overall cost increase & space utilization
- Input Voltage up to 6V, with JST-PH connector (J2)
- 2 similar solar panels can be connected in parallel with schottky diode ORing to increase the power
- Panels can also be mounted on the surface of the ribbit enclosure with the V1 or V2 Ribbit Enclosure - which makes it a single unit with lesser wires
- CN3165 is a right fit as it is cost effective, simple and popular low power solar application : DFROBOT Breakout Board (IC U5)
- Alternatively, the TP4056 is a good option, even though it is not specifically designed for solar applications. Since both ICs have similar pin configurations, the design accommodates both, allowing either one to be selected during assembly and marked as "do not place(DNP)" if not used. (IC U4)
- Note: Charge Current is set by Rset resistor (R16) and should be calculated as per the IC datasheet, solar panel and battery capacity.
Thank you to PCBWay for providing PCBA services and sponsoring this project. With a fast turnaround time and seamless interaction, the quality of the boards was excellent. 🎉⭐
In the initial PCB design, I mistakenly disabled VDD_GPIO on the nRF9151 during deep sleep. As a temporary workaround, a small jumper was added to the PCB. This issue has been properly addressed and corrected in the latest PCB revision.
Programming:The nRF9151 DK board and PPK Kit were awarded, and I want to thank the entire team 🎉 - Hackster, Nordic Semiconductor, and Ribbit Network for making the initial concept validation quicker and more efficient. The Power Profiler Kit is an excellent tool for monitoring ultra-low current in real-time, complete with a logging feature.
I developed few test examples with the help of nordic dev zone community and my firmware developer friend to test the various functionality of the custom board like UART, GNSS, RGB LED, 5V & Load Enable, ADC Monitor for battery and Solar, SIM detection, I2C scan, USB detect, Deep Sleep. These were very vital to check hardware connections, RF performance, deep sleep, power performance etc.,
I've uploaded all the hex codes in git repo. Source codes will publish soon..
I used the nRF9151 DK board to program the Custom board as per this document Pg. 23.
Using nRF Connect desktop app, I installed Board Configurator, Power Profiler, Programmer, Serial Terminal, Cellular Monitor
Board Configurator: Select nRF9151 DK board >> Change the VDD to 3.3V to match the VDD-GPIO of the target custom board (Since custom board is battery powered)
Programmer:
Its recommended to update the chip to latest firmware binaries, Download it from this link>>Add the entire ZIP file >>Write
After that to upload individual code for testing or final hex file of the code select the device >> Add File >>Erase & Write
or through VS code IDE
Power Profiler:
Connect the PPK Kit 2, as per this guide connect to custom board either through source or ampere mode to monitor and log the power consumption.
I've used the v4 enclosure - as it is compact and made for adafruit esp32 feather. I designed a frame to hold the PCB, Battery, M2x10mm bolts, Barrel jack with JST-PH connector and LTE Antenna
Removed/Cut few parts in the enclosure, added a hole to fit in the barrel jack for solar panel (a bit extruded as it interfered with internal electronics).
A 69x66mm, 6V solar panel can be mounted directly on a larger enclosure, as shown in the image—similar to the Ribbit v1 design. This setup is ideal for situations where using an external solar panel isn't feasible, as it relies on an onboard solar panel instead.
References:- How to Power Profile your cellular IoT application:
- How to measure power consumption on the nRF9160 SiP:
- Solar Charger for Microcontrollers:
Comments