Argon check power source?

I’m looking for direction/ideas.

What is the best way to output the current “power status” for an Argon. I would like to know if the Argon is powered via USB or battery at a given time . When on battery, what is the current battery level and if it is charging or not?

For that you could look at this thread

For detection whether external power is present or not, you can use the VUSB pin with voltage divider to keep the input range between 0 & 3.3V.

About charging, I'm not sure whether the CHG LED can be accessed easily but @rickkas7 may know.

Yes, all of those are available on the Argon and Xenon.

#include "Particle.h"

SerialLogHandler logHandler;

char lastMsg[128];
unsigned long lastPublish = 0;

void setup() {
	pinMode(PWR, INPUT);
	pinMode(CHG, INPUT);

void loop() {
	float voltage = analogRead(BATT) * 0.0011224;

	// PWR: 0=no USB power, 1=USB powered
	// CHG: 0=charging, 1=not charging
	char buf[128];
	snprintf(buf, sizeof(buf), "voltage=%.1f PWR=%d CHG=%d", voltage, digitalRead(PWR), digitalRead(CHG));

	if (strcmp(buf, lastMsg) != 0 && millis() - lastPublish > 2000) {
		Particle.publish("battery", buf, PRIVATE);;
		strcpy(lastMsg, buf);
		lastPublish = millis();

They’re available on the Boron as well, but the technique is different because you need to query the PMIC instead.


Thanks @ScruffR @rickkas7 This is spot on!

1 Like

Hi I an using Espruino firmware on Xenon after its end of support. T got the Xenon few days ago and it is fairly new.

I was trying to read the Charge status via reading P1.09 pin when the board is attached with a small 65 mah lipo battery with Li+/GND pin.

I am reading the pin value in a time loop of 1 second and values is toggling when board is powered from USB.

Is it a faulty hardware?


It looks like the /CHG pin on the XC6802 charge controller is only a pull-down. When you read it via GPIO you probably need to enable a software pull-up on P1.09 as there does not appear to be a hardware pull-up on that line. It’s toggling because it’s just floating when fully charged.

Hi Rick, I'm using this code and for the most part it is working great. One thing I am not seeing is when I disconnect the battery, the CHG pin stays low. I only seem to get a change in status when i disconnect and reconnect the usb. Is this intentional?

Also, the CHG LED only seems to come on when charging and the battery voltage is less then 4.0V. Again, intentional?

Thanks, Graham

Is this on the Argon or the Photon 2? Reading the CHG pin on the Photon 2 does not work when disconnecting the USB.

There is a minimum supply voltage and maximum battery voltage for charging to occur.

This on the Argon. Thanks