SBPi - aka: My "Solar Boinc Pi" build log - Page 1
Forum section: electronics / general

author: nzc
author_rank: Newbie
timestamp: May 03, 2016, 07:54:30 pm
content: Hi There,This will be my first post on the forum so let me introduce myself quickly:My name is Csaba and I'm from Transilvania. I'm a full time Programmer and have a few hobbies like having fun with musical instruments (Guitar and Piano). Electronics was and is my biggest hobby since I learned to solder when I was around 3 years old. I'm a big fan of you Dave's and following you on Youtube for years now.I used SETI@Home 10 years ago for a few months but realized that I can't do any "useful" contribution, because under normal workload I couldn't afford to share resources of my workstation and had to let it run overnight to finish the tasks prior deadline. After this my opinion was that is always cheaper to build/adopt a custom solution that can be much more efficient to solve this kind of tasks then using ordinary PC idle times. Not mentioning that it will keep the CPU 100% all the time that may hurt on the electricity bill and accelerate hardware wear (ordinary PC's just aren't built to run 24/7 on 100% load like servers do).After I saw Dave's "Find Aliens With Your Raspberry Pi" video I quickly grabbed my abandoned Pi B that was sitting in the bottom of a drawer since I upgraded to V2 and setup SETI@home on it. I was running the Pi at stock speed and quickly assembled a small script that may log the CPU temperature every minute so I can check if the continuous 100% load may cause overheating.http://pastebin.com/f7M60fVjTurned out that the CPU temperature stabilized around 46 degree Celsius (21C ambient) at 700Mhz stock speed.Opened up the raspi-config utility and checked the overclock ( 8 ) section, where I selected the Modest option, that may overclock the CPU to 800Mhz without overvolt. Also improvised a not so elegant but (turned out) efficient heat sink by folding a 10cm long 1cm wide metal sheet into a "triangle" and gently ziptight on top of the CPU. Now the CPU temperature is stable around 43C at 800Mhz clock. I wanted to add some thermal conductive paste between the CPU and heat sink but currently I don't have any.The not so elegant heat sink:After it was done I remembered about the past experience with SETI/Boinc (that just described earlier) and started to wondered "how could I make it efficient"?Let's transform this into a serious hobby project, because I have a hardware that I don't use anymore and don't mind to allocate 100% of it's resources, but if I could power it via solar panel and battery then basically it may cost nothing to run, except the investment in those additional parts. However after a quick math those additional costs doesn't worth it more then letting to run via the mains.I already have a small solar panel that come with the outdoor Christmas lights and it charges 3xAA rechargable batteries. The problem is that the control circuit is built to charge the batteries during daylight and turning on the output power only at night.I also found a 2200mAh rated phone charger, in the same drawer, that I won last year at a conference from the <epam> guys. So I have another part that I've never used so I can make it useful. After disassembled it found a TP4213 ASIC in it (http://www.datasheetcafe.com/tp4213-datasheet/)Bummer, there is a "but" again. The phone charger can't have both the input and output turned on in the same time (when charging the battery it will cut the output). No problem I thought, I can wire the solar panel directly to the battery with a single diode in series to avoid feeding back the solar panel from the battery. ( I'm not at home with solar panels, so correct me if I'm wrong and the panel can be connected directly to the battery. )Another bummer. After taking a closer look on the TP4213 specs found out that the input voltage should be between 4.3V ~ 5.5V so wiring the solar panel directly to the battery may not only cook the battery but also the boost converter (I measured the solar panel output by holding it close to a 20W desk lamp and measured 8V output). The magic drawer didn't helped me out this time. I found an XL6009 based adjustable DC-DC converter, but unfortunately is implemented only in boost configuration so it's a no go.Also I'm aware that this solution may be far from optimal, because it has no control over the battery and over the solar panel load.As I mentioned earlier I have no experience with solar panels, but I remember that a few years ago a colleague of mine, who has done and does experiment with solar panels, told me that you need a control circuit that optimizes the load to get out the max from solar panels, because if I drain more then it can provide it will "collapse" and supply only a fraction of it's real capacity. Maybe I misunderstood or not remembering correctly, but feel free to correct me please.The backup plan is to return to the original control board of the solar panel and figure out how can I bypass the output switching to be always on. Another plus is that the original board may have the panel and battery management implemented (or not considering that it's an outdoor unit for Christmas lights, that is used for ~2 weeks per year in winter time when there is not so much sunlight and most likely freezing cold) and also can keep the 3xAA 2800mAh batteries to the additional 2200mAh cellphone charger. An this is where the XL6009 based DC-DC boost converter come handy, because the panel output with it's original board will most likely (need to confirm by measuring it as soon I solder it back) supply less then 5V, because it's designed to drive a few LED's wired in parallel (just hope it will not go below 3V).The original solar panel management board:In time I was composing this log entry I did a test to see how much the Pi with Boinc will go with the phone charger battery pack, and the result turned out to be roughly around 2 hours and 40 minutes that resulted 1.27% progress on a SETI taskBefore starting on the battery:After the battery was drained:BTW: if you want me to describe how I setup the Boinc Manager to remotely connect to the Boinc client running on Pi from a PC just let me know and I'll make a quick tutorial about it.That is it for today, more progress to follow soon, just stay tooned.

author: nzc
author_rank: Newbie
timestamp: May 04, 2016, 11:06:02 am
content: TODO List:Solve the solar power supply issue:Plan BSupply enough power for the Pi to run a few hours per day. Future measurements and tests will tell if it's enough to complete SETI tasks before deadline.Measure the output of the original configuration of the solar panel with it's management board and 3xAA 2800mAh batteriesAs expected the output is 3.6VIn case the output is above 3V use the XL6009 based DC-DC converter to supply the required 5V for the PITurned out that the original management board is actually a joke and couldn't supply the required current through it's output transistor (asPhoton939anticipated it correctly) and the DC-DC converter just went crazy as soon the Pi was connected to itIn case the output is less then 3V try to mod the management board to increase it above 3V and use the XL6009 based DC-DC converter to feed the PI with the required 5VBack to Plan AMinimize power consumption:Optimize WiFi power management - implement a script that can smartly toggle the WiFi dongle based on the Boinc-client job status (off if it's computing, on if it's transferring)Bypass the "power hungry" built in stabilizer using the GPIO or USB method to power the Pi (Note: need to make sure the supply is stable enough)Software optimizations:Disable unnecessary processes that are running all the time, but aren't essential to run boinc (cron, ssh server, etc)Experiment with Linux kernel configurations and builds to find the one that best fits boinc with this configuration

author: Photon939
author_rank: Regular Contributor
timestamp: May 04, 2016, 12:55:59 pm
content: The Raspi with full cpu load will use a fair bit of power, I am highly doubtful the small solar panel from the lights can support running the Raspi real time.This means that even with good sun and a good spot for the panel you would not get much runtime per day. Assuming the Raspi is chewing ~600mA at 5vdc you're burning through 72 watt hours per day. If your solar panel puts out say 100mA at the 8v open circuit you described it would generate 6.4 watt hours with 8 hours of direct sunlight. You will also lose some power in charging efficiency in the batteries and any boost circuits. Assuming no losses if your panel puts out 100mA you will get ~2.13 hours of runtime after a full day of sun.I would trash the circuit board that came with the solar light - even if you could make it do what you want the transistors are not built to handle the large load of a Raspi.You will need a lithium battery charge controller and a boost converter to provide a switchable 5v usb output. It may be possible to modify your power bank to provide one these functions separately if you can identify what signals it uses to switch from charging to output.Then rig up something where it only starts the output for the Pi when the battery is fully charged to get maximum runtime.

author: nzc
author_rank: Newbie
timestamp: May 04, 2016, 02:03:46 pm
content: Quote from: Photon939 on May 04, 2016, 12:55:59 pmI think you are right related to the runtime hours, bur if it can run 1-2 hours per day it's fine for me. Maybe I will not be able to use it for SETI@home but may come in handy for other stuff that doesn't require so much processing power and uptime.Quote from: Photon939 on May 04, 2016, 12:55:59 pmYeah, I just took a closer look at the control board and looks like the "logic" is only for the pushbutton controller. As I see the solar panel positive terminal is wired to the battery with diode in series all the time (the negative terminal is mounted right to the battery), so no battery and no solar panel management.There is a voltage divider / sense line (bottom left) that is wired to a transistor that in series with another transistor (coming from the pushbutton control) may toggle to output transistor.I'm not afraid of that "power" transistor, no worries if the magic smoke escapes.Quote from: Photon939 on May 04, 2016, 12:55:59 pmI would not like to go so far with it. Maybe I can try to find a cheep MPPT charge controller @ Shenzhen market, but that may ruin anything, because the idea is to build it from what I have and if requires any additional investment, except my time (that doesn't matter because I'm having fun), then doesn't worth it.Quote from: Photon939 on May 04, 2016, 12:55:59 pmThe Plan B is to keep the original behavior of the panel. The output is off until there is enough light to charge the batteries (keep the panel in charge mode) and fire up the Pi right after the batteries aren't charged anymore (this will not guarantee that they are fully charged, but will provide the maximum capacity they could absorb during the day).To fire up the Pi only when the batteries are fully charged idea may sound logic at first, but it may require additional active parts that would drain current all the time so I'm not sure if it's better then using all that it could obtain in a single daytime.

author: Delta
author_rank: Super Contributor
timestamp: May 04, 2016, 02:40:31 pm
content: Ditch that WiFi dongle and go for a wired network connection. Those WiFi sticks are quite power hungry!

author: nzc
author_rank: Newbie
timestamp: May 04, 2016, 02:56:17 pm
content: Quote from: Delta on May 04, 2016, 02:40:31 pmYep, I'm aware of it and this is why I placed it first in my todo list underMinimize power consumptionsection.Because it's solar powered I don't want any wire so I can change it's placement easily.Luckily Seti@Home requires internet connection only at the beginning to download the task and at the end to submit the report (we are talking about a few MB's of traffic, so this operation may take less then 1 minute).

author: Photon939
author_rank: Regular Contributor
timestamp: May 04, 2016, 04:50:27 pm
content: Depending on your skill level, you could probably handle everything with a microcontroller. I have experimented with some low power stuff on an atmega328 and in sleep mode running the 32khz oscillator for a periodic wakeup it only consumed a few uA. Wake up, do some ADC readings, update outputs, go back to sleep.With a MCU available it becomes very easy to control the battery charging and when it decides to switch on the load. It's up to you how fancy you want to go with things like MPPT and power conversion but each step causes a loss of efficiency. It doesn't make much sense to do MPPT at such a low power level, you start to run into problems where the energy expended by driving the mosfet gate and MCU running constantly that it consumes a decent chunk of your available power.

author: nzc
author_rank: Newbie
timestamp: May 04, 2016, 05:12:13 pm
content: Quote from: Photon939 on May 04, 2016, 04:50:27 pmThanks for the advice. I have experience with ATmega328 (I own a few Arduino Duemilanove and Uno boards).Just did a few test and I think you nailed it with the output transistor. As a test I wired it up to the battery bank but after a few minutes the bank just shut down the charging. I may try to wire it directly to the Pi (the bank charging current is rated to be 1A, so maybe I will have more luck by connecting it directly to the Pi)Quote from: Photon939 on May 04, 2016, 04:50:27 pmYes, the MPPT stuff was sort of a joke

author: nzc
author_rank: Newbie
timestamp: May 24, 2016, 06:00:36 pm
content: I stopped posting to this log, but that didn't mean I wasn't working on this project.Long story short, I have the final version deployed.What I did:1. Wired the solar panel (with a diode in series) directly to the battery of the power bank2. Powered the Pi via GPIO from the power bank 5v output3. Implemented a startup script that will wait 4 minutes after the system is booted then shut down the wifi dongle. This means that if the task is completed it will wait until the battery is discharged and only on the beginning of next power cycle will upload the results and download a new task.