Custom Electron Solar Panel Connection

It is so that the Electron can go into a deep sleep mode and be woken up at intervals by the external circuit. We're planning on having a library that makes it easy to use that functionality from the user application.


Can I ask a dumb question about this? (Yes, OK, every question I have is dumb…)

I was getting ready to park my Electron outside to start testing how self-sufficient it can be without AC power. I planned on using it with an Adafruit MCP73871 and Voltaic 3.5 Watt, 6 Volt Solar Panel, but if I understand this correctly I could forgo the MCP73871 all together?

Thank you.

1 Like

The BQ24195 is not optimised for charging a LiPo battery from a low-current source but it should still be able to charge a battery from a solar panel as long as the current is >= 100mA @5VDC. For the battery to be able to charge properly at such low currents, you’ll need to make sure that the Electron remains in sleep mode for the majority of the duration.

So long answer short, is it possible? YES . Is it optimal, probably not.

@knoose Would love to hear more about your experience here.


@mohit My electron will mostly be asleep. The plan is to wake up 4 times per hour to read a pressure sensor. Other than that, the electron should remain asleep. Thank you the input!!!

I also added a 20V 47µF Tantalum capacitor between VIN and GND to act as a bypass capacitor.

I will definitely post more when my PCB arrives. I’m ordering it today.

1 Like

@knoose I’d suggest using an input capacitor rated at upwards of 4700uF at VIN and since the voltage rating of the solar panel is 7V, you could use a capacitor rated even at 10V or 15VDC (to reduce the overall size)

1 Like


For my Kiosk project it’d be sleeping most likely from 5pm til 5am, and the solar panels I’m trying right now are above 500mA at 5V.

1 Like

So over the past month I’ve had a 500mA 7V Solar Panel connected to the VIN/GND of my Electron with a 47uF bypass capacitor. I’m using a 6600mAh Lipo Battery in place of the 2200mAh that comes with the Electron. Additionally, my Electron is waking up every 15minutes to take a reading and communicate with the cloud. The chart below is the state of the battery over this period (4/30 - 6/17). Let me know if you have any questions!


Hi @knoose, I see that we share the same goal, I am also starting to build a device which is measuring waterpressure (to get the waterlevel of a pond) every 15 minutes or so, or maybe just when the waterlevel has changed a considerable amount and upload it to the web using particle.publish(), and in between it is supposed to sleep and consume as little power as possible and also keep the data usage below the 1MB limit per month, I know that few months ago there was a problem with the sleep function of the electron because when it “woke” up from sleep it did consume a lot of data usage when connecting back to the mobile system. If I understand your graph right it is showing percentage of charge of the 6600mAh 3,7V battery? where 100% is 4,2V (I guess). Would you mind sharing details of your setup with me? how much was your data usage per month during your test? and do you know your average current consumption, or the sleep consumption and how long time does it take for the Electron to wake up, communicate to the cloud and sleep again? (just fyi, I have been experimenting with some prototypes for measuring this pond, started 10 years ago with walkie talkies sending morse code and now I am using a “LoRa motino” from sending measurements from the intake pond to a Wi-fi connected Photon which uploaded the data to the cloud, and using ultrasonic sensor to sense the waterlevel)

Hey @Mquist, Thanks for the interest in my project. I really wish I had my website/documentation completed as it could be super useful to you. I’ll do my best to answer your questions and if you have anything additional, feel free to continue posting or send me a private message.

First off, the graph above is the output from the fuel.SoC() function. This reading is taken every 15 minutes for 49 days continuously. (except when webhooks have not been working properly). The percentage is the state of the charge for the 3.7V 6600mAh Lipo battery. That maximum value I’ve gotten from this function is 91.488%. I still have to do some of my own tests to see how accurate this value is. I just received an additional supply of Electrons, so I will be testing that shortly.

My setup is for a Rain Gauge, which measure precipitation. The Electron is in a waterproof housing which is contained within the Rain Gauge we designed. We’re using waterproof RJ45 Connectors made by CONEC to communicate with our I2C Differential Pressure Transducer (1PSI). I also designed a simplistic PCB (printed Circuit Board) for the Solar panel/I2C connection.

As for data usage, you’re in luck. I just requested that information from Particle. See the image below:

If you would like to see the time intervals, I’d be happy to share the CSV data file with you. I forget the exact amount of time my code sketch takes to run, but its somewhere between 5-10second. The Electron sleeps for 15 minutes and wakes up to take a reading from the pressure sensor. As we add more nodes, I may have my server message each device every fifteen minutes to wake up and read. I know this is possible, but it’s something that hasn’t transcended the idea phase yet.

Unfortunately, I do not have any specific measurements for power consumption. Once we conduct more lab testing I will have a better idea. Our data is coming from a proof of concept which is in the field some distance away from us. As I work on updating the firmware/ building out our website/server I can share more detailed documentation if you’re interested.

Best of luck!


thanks alot for the info @knoose I will definitely be in contact later, so you managed to send message every 15 Minutes and stay around 200kB per month during May, that is nice to know :slight_smile: … did not know about the fuel.SOC() funtion, thanks for telling me also I did not know that it would be possible to wake up the devices from sleep from a server, would be interested to know if you could manage that :wink: … would you mind sharing your code with me? I don’t need all your code, just would like to see your procedure of waking up --> taking a measurement --> publishing it --> sleeping for 15 minutes, it would give me a great headstart, I am most interested in the “sleep part”, because after reading some posts on the forum it seems to me like it matters a lot how/what sleep procedure you use so it will not need to reconnect and spend “lots” of data each time the electron wakes up. I will then do some LAB testing on the powerconsumption. if you don’t mind please send me your code or a part of it in private message.

@Mquist sorry it’s taken me a few days to respond, I’ve been a bit busy this week.

Waking up the devices is possible, but I don’t think anyone has implemented it. I asked the question previously and it can be found here: Waking up an Electron remotely
Here’s the my main loop of the code where Output is a std::vector and Sleeptime = 900 (for 15 minutes)
Code loop:

void loop(){
  char batt[7];
  // Collect data and publish
  if (collectData(I2C_ADDRESS2)){
    Particle.publish("RG", Output[0] + "," + Output[1] + "," + Output[2]);
  // System.sleep(SLEEP_MODE_DEEP,sleepTime,SLEEP_NETWORK_STANDBY); //Uses lots of data
  System.sleep(D3, RISING, sleepTime, SLEEP_NETWORK_STANDBY);

I had the same worries as you and created a post on that as well: Electron Sleep Mode Clarification

Let me know if you have any other questions or need any help. I’d be happy to help.

@knoose This thread has been just what I’ve needed to get through a block on my project - thank you! I have one, really dumb question: what exactly does the capacitor do when placed across Vin - GND alongside a solar input? And, I have a capacitor rated up to 100 uF and 25V - based on what you used, I think I’m going to try that out. Am I about to lose some eyebrows?


I used the capacitor as a bypass capacitor or decoupling capacitor. Let me know if you have any further questions!

Hi all, I'm also trying to figure out if I can recharge the LiPo through Vin with a low current power source. @mohit, could you or anyone else comment on how long the supply needs to sustain ~100mA @5V to be able to charge the LiPo through the bq24195? Is it possible to supply this in short bursts (say 250ms each second?) or is there perhaps a bit of the delay switching to charge the battery that would make this intermittent current supply not useful?

Alternatively, if I were to opt to try to find a separate charging IC that is optimized for low-current/intermittent charging (maybe this LTC4071?:, could I connect this between GND and the Li+ pin to bypass the BQ24195 for charging purposes?

Thanks for any tips!

I too am trying to charge the battery on an electron from a small solar panel. Like others on this thread, my electron will need to wake up only a few times a day to transmit a small amount of data.

From what I see on the datasheet for the battery management IC the electron comes with, it’s not intended to work with small solar panels. TI doesn’t even bother to document its behavior at less than ~500mA: 500mA is still a pretty big solar panel, at least compared to the electron.

I’ve been considering completely swapping out the battery charging IC the electron comes with with this one and then doing a small batch run via or some competitor. If I’m reading the BQ24230 datasheet correctly, this should allow the battery to charge at input currents down to 25mA (assuming of course the electron is in deep sleep mode). There’s some complication as the pins don’t match up exactly between the two IC’s, but I think I can figure it out (said the software engineer doing hardware for the first time).

I don’t suppose anyone out there has done this yet, but if so, I’d love any brain dump you can give here… or if anyone at particle has some thoughts. This seems like a pretty standard use case for the electron (remote, infrequent monitoring) but maybe I’ve gone off the rails somehow. Thanks.

The current PMIC charging chip will work just fine with small solar panels so there is no need to replace anything.

Here are the specs for the Electron’s input:

When the charging current drops below 50mA the red charging LED on the Electron will turn off and this means charging has stopped since the battery should be at the fully charged voltage of 4~4.2v.

Any of these panels would work wired to the Vin pins.

thanks @RWB

Do you know how the electron will react to being charged with a solar panel that maxes out at 50mA? Specifically, I was considering this one I need basically the smallest form factor I can get to, and the electron only needs to wake up 1-3 times a day to transmit a few bytes of data.

@mfogel I would say the solar panel you’re looking at is too small because under ideal conditions in the summer you can only expect approx 70% of the solar panels rated power output which puts you at 50ma x 70% = 35mA and that’s under ideal conditions. If you do not have the solar cell angled towards direct sunlight then that 35mA charge rate will be lower than 35mA and the same goes for clouds or less than ideal weather.

If you’re using the 2000mA battery that comes with the Electron, then you’ll probably going to need to supply it with more than 35mA to properly charge the battery. The battery wants a certain amount of charge current for proper charging.

You’re going to need a larger solar panel if you want the Electron to stay charged up and online under real-world weather conditions.

Feel free to test and report back if you do want to try the smaller panel but I would suggest the 3w panel since it’s only going to provide 3w x 70% = 2.1 watts under ideal summer conditions.

Keep the Electron and battery behind the shade of the solar panel since direct sunlight on the enclosure will cause high heat and that is not good for the battery or the Electron, and I have heard of the SIM card’s melting on people when not shading the Electron enclosure.


@mfogel : I have been using .5w/9v solar panels from Radioshack. You can find them on amazon for cheap. My electron only runs on a voltage change between pins. Maybe 4 or 5 times a day. These solar panels seem to do the trick. I have noticed that in decent sunlight, the red led on the electron does light up, indicating that it is getting the necessary 50mA, but I haven’t done much testing aside from that as this was only a temporary solution. Hope that helps.

I use a 5 volt/ 25 mA solar panel with great success but you have to bypass the IC by connecting the panel directly to the battery. Then add a small piece of code that keep the
modem on for one hour if the battery volt goes higher than 4.2 volt and if not go directly to sleep again.