nanoFramework.Iot.Device.Axp192 1.2.889

Prefix Reserved
dotnet add package nanoFramework.Iot.Device.Axp192 --version 1.2.889
                    
NuGet\Install-Package nanoFramework.Iot.Device.Axp192 -Version 1.2.889
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="nanoFramework.Iot.Device.Axp192" Version="1.2.889" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="nanoFramework.Iot.Device.Axp192" Version="1.2.889" />
                    
Directory.Packages.props
<PackageReference Include="nanoFramework.Iot.Device.Axp192" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add nanoFramework.Iot.Device.Axp192 --version 1.2.889
                    
#r "nuget: nanoFramework.Iot.Device.Axp192, 1.2.889"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package nanoFramework.Iot.Device.Axp192@1.2.889
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=nanoFramework.Iot.Device.Axp192&version=1.2.889
                    
Install as a Cake Addin
#tool nuget:?package=nanoFramework.Iot.Device.Axp192&version=1.2.889
                    
Install as a Cake Tool

AXP192 - Enhanced single Cell Li-Battery and Power System Management IC

Documentation

-Product documentation can be found here. -Registers can be found here (Chineese only, note: bing translator make miracle).

  • This sensor is used in the M5Stick. Initialization code for this device can be found here.

Usage

// Make sure you configure properly the I2C pins, here example for ESP32
Configuration.SetPinFunction(22, DeviceFunction.I2C1_CLOCK);
Configuration.SetPinFunction(21, DeviceFunction.I2C1_DATA);

I2cDevice i2cAxp192 = new(new I2cConnectionSettings(1, Axp192.I2cDefaultAddress));
Axp192 power = new Axp192(i2cAxp192);

Important: make sure you read th documentation of your battery and setup the proper charging values, stop current. Overcharging your battery may damage it.

Using the button

One button is available and can be setup to track short and long press:

// This part of the code will handle the button behavior
power.EnableButtonPressed(ButtonPressed.LongPressed | ButtonPressed.ShortPressed);
power.SetButtonBehavior(LongPressTiming.S2, ShortPressTiming.Ms128, true, SignalDelayAfterPowerUp.Ms32, ShutdownTiming.S10);

The status is kept in the registers up to the next status read. You can then have both a short and a long press, you can get the status like this:

var status = power.GetButtonStatus();
if ((status & ButtonPressed.ShortPressed) == ButtonPressed.ShortPressed)
{
    Debug.WriteLine("Short press");
}
else if ((status & ButtonPressed.LongPressed) == ButtonPressed.LongPressed)
{
    Debug.WriteLine("Long press");
}

Battery status

You can get various elements regarding the battery status:

Debug.WriteLine($"Battery:");
Debug.WriteLine($"  Charge curr  : {power.GetBatteryChargeCurrent().Milliamperes} mA");
Debug.WriteLine($"  Status       : {power.GetBatteryChargingStatus()}");
Debug.WriteLine($"  Dicharge curr: {power.GetBatteryDischargeCurrent().Milliamperes} mA");
Debug.WriteLine($"  Inst Power   : {power.GetBatteryInstantaneousPower().Milliwatts} mW");
Debug.WriteLine($"  Voltage      : {power.GetBatteryVoltage().Volts} V");
Debug.WriteLine($"  Is battery   : {power.IsBatteryConnected()} ");

Advanced features

The AXP192 can charge the battery, get and set charging current, cut off voltage, has protection for temperature. Most feature can be access or setup. You can check out the sample to get more details on how to set those advance features.

Note: this binding uses UnitsNet for the units like Voltage, Amperes.

Here is an example reading the current, voltage:

Debug.WriteLine($"Temperature : {power.GetInternalTemperature().DegreesCelsius} °C");
Debug.WriteLine($"Input:");
// Note: the current and voltage will show 0 when plugged into USB.
// To see something else than 0, you should output those data on a serial port for example
// Or display on the screen.
Debug.WriteLine($"  Current   : {power.GetInputCurrent().Milliamperes} mA");
Debug.WriteLine($"  Voltage   : {power.GetInputVoltage().Volts} V");
Debug.WriteLine($"  Status    : {power.GetInputPowerStatus()}");
Debug.WriteLine($"  USB volt  : {power.GetUsbVoltageInput().Volts} V");
Debug.WriteLine($"  USB Curr  : {power.GetUsbCurrentInput().Milliamperes} mA");

Coulomb counter

The AXP192 has a Coulomb counter where the value is in mili Amperes per hour (this one is not yet using UnitsNet). You first have to enable the Counter and then you can read the value. It is recommended to let some time between the moment you enable and read the data. Features to reset, stop the count are available as well

power.EnableCoulombCounter();
// Do something here
// You can then read periodically the Coulomb counter:
Debug.WriteLine($"Coulomb: {power.GetCoulomb()} mA/h");
Product Compatible and additional computed target framework versions.
.NET Framework net is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (4)

Showing the top 4 NuGet packages that depend on nanoFramework.Iot.Device.Axp192:

Package Downloads
nanoFramework.M5Core2

This package includes the nanoFramework.M5Core2 assembly for .NET nanoFramework C# projects.

nanoFramework.M5StickC

This package includes the nanoFramework.M5StickC assembly for .NET nanoFramework C# projects.

nanoFramework.M5StickCPlus

This package includes the nanoFramework.M5StickCPlus assembly for .NET nanoFramework C# projects.

nanoFramework.Tough

This package includes the nanoFramework.Tough assembly for .NET nanoFramework C# projects.

GitHub repositories (2)

Showing the top 2 popular GitHub repositories that depend on nanoFramework.Iot.Device.Axp192:

Repository Stars
nanoframework/Samples
🍬 Code samples from the nanoFramework team used in testing, proof of concepts and other explorational endeavours
nanoframework/nanoFramework.M5Stack
:package: Board support package for M5Stack, M5StickC and M5StickCPlus for .NET nanoFramework
Version Downloads Last Updated
1.2.889 187 7/28/2025
1.2.869 796 4/2/2025
1.2.864 308 4/2/2025
1.2.852 517 3/11/2025
1.2.846 331 3/10/2025
1.2.822 972 2/26/2025
1.2.775 1,102 2/4/2025
1.2.772 157 2/4/2025
1.2.759 395 1/31/2025
1.2.755 289 1/31/2025
1.2.743 376 1/20/2025
1.2.737 167 1/13/2025
1.2.718 329 12/30/2024
1.2.696 477 12/16/2024
1.2.673 897 10/23/2024
1.2.656 885 10/3/2024
1.2.639 728 9/6/2024
1.2.631 369 8/28/2024
1.2.613 710 8/9/2024
1.2.601 321 7/26/2024
1.2.590 467 7/17/2024
1.2.573 728 6/19/2024
1.2.570 188 6/14/2024
1.2.560 430 5/29/2024
1.2.548 439 5/15/2024
1.2.536 679 4/15/2024
1.2.514 753 3/22/2024
1.2.494 655 2/28/2024
1.2.474 773 1/24/2024
1.2.462 297 1/5/2024
1.2.458 299 12/20/2023
1.2.436 732 11/10/2023
1.2.403 979 10/6/2023
1.2.396 448 9/27/2023
1.2.384 519 9/6/2023
1.2.378 691 8/16/2023
1.2.369 706 8/2/2023
1.2.363 399 7/28/2023
1.2.357 479 7/19/2023
1.2.354 475 7/14/2023
1.2.345 874 6/21/2023
1.2.341 533 6/14/2023
1.2.337 495 6/7/2023
1.2.335 265 6/2/2023
1.2.329 825 5/26/2023
1.2.313 797 5/12/2023
1.2.302 583 5/10/2023
1.2.297 582 5/3/2023
1.2.273 2,140 3/17/2023
1.2.267 1,244 3/10/2023
1.2.263 1,167 3/8/2023
1.2.259 1,255 2/27/2023
1.2.256 916 2/24/2023
1.2.253 880 2/22/2023
1.2.222 2,197 1/9/2023
1.2.219 434 1/9/2023
1.2.208 2,870 1/3/2023
1.2.203 1,471 12/28/2022
1.2.153 4,101 11/5/2022
1.2.141 4,054 10/25/2022
1.2.122 1,698 10/12/2022
1.2.114 1,633 10/8/2022
1.2.95 5,155 9/22/2022
1.2.87 4,877 9/15/2022
1.2.73 1,669 9/8/2022
1.2.63 2,668 9/3/2022
1.2.47 1,771 8/15/2022
1.2.40 2,003 8/6/2022
1.2.38 1,683 8/5/2022
1.2.28 4,861 8/1/2022
1.2.13 3,950 7/24/2022
1.2.10 1,703 7/23/2022
1.1.145.58726 3,089 7/7/2022
1.1.133.52556 5,878 6/30/2022
1.1.127.28388 2,818 6/28/2022
1.1.121.35854 2,019 6/26/2022
1.1.113.2032 2,826 6/23/2022
1.1.102.51394 2,598 6/15/2022
1.1.99.36719 1,711 6/14/2022
1.1.74.7591 8,483 5/31/2022
1.1.72.29765 1,121 5/31/2022
1.1.67.25390 1,820 5/27/2022
1.1.66.33470 1,464 5/26/2022
1.1.64.21380 1,508 5/26/2022
1.1.54.28879 2,900 5/23/2022
1.1.40 4,202 5/5/2022
1.1.1 13,280 4/14/2022
1.0.308 1,535 4/12/2022
1.0.302 4,704 3/31/2022
1.0.300 589 3/31/2022
1.0.288-preview.113 241 3/25/2022
1.0.288-preview.103 241 3/21/2022
1.0.288-preview.99 241 3/18/2022
1.0.288-preview.98 219 3/18/2022
1.0.288-preview.93 246 3/15/2022
1.0.288-preview.86 273 3/8/2022
1.0.288-preview.77 245 2/27/2022
1.0.288-preview.75 221 2/26/2022
1.0.288-preview.65 238 2/18/2022
1.0.288-preview.63 235 2/16/2022
1.0.288-preview.61 231 2/12/2022
1.0.288-preview.58 229 2/10/2022
1.0.288-preview.53 221 2/9/2022
1.0.288-preview.41 274 1/31/2022
1.0.288-preview.29 295 1/28/2022
1.0.288-preview.20 304 1/27/2022
1.0.288-preview.19 237 1/27/2022
1.0.288-preview.18 252 1/27/2022
1.0.288-preview.5 261 1/24/2022
1.0.288-preview.1 268 1/21/2022
1.0.272 345 1/10/2022
1.0.259 1,127 12/9/2021
1.0.258 433 12/7/2021
1.0.235 376 11/1/2021
1.0.234 282 11/1/2021
1.0.218 717 10/18/2021
1.0.191 484 9/29/2021
1.0.167 472 9/15/2021