mysoltrk - a solar tracker, reinvented

A different approach for a solar tracker, alternative movements, to be installed on the outside, to recharge devices

Similar projects worth following
We want to create a new, different version of solar tracker, to increase the yield of solar panels.

Our challenge is create a new device:

- small, suitable for balcony or small gardens
- solid, it must stand outdoors with any weather
- solid, with three support points instead of one
- 3D printed, sufficiently waterproof
- minimal hardware, low cost
- self-tracker device, without GPS or WIFI

We want to install this device outside the windows, balconies, small gardens where there is little space and we want the chance to charge smartphones, power banks or external cameras taking up less space and higher energy production

During lockdown, we've started to study how to build a little solar tracker to charge powerbanks, smartphones or run small fans.

Existing projects use servos (for little solar panels) or linear actuators.

We've found some limitations in projects that use linear actuators: 

  • big/heavy infrastructure to support solar panels
  • they often make use of external batteries to carry out the movements

Here our new approach:

  • the solar panel gain three support points, we think will be more sturdily and wind resistant
  • the panel can be moved to hook sun during the day where the sun gives off more energy

The two-more support point are realized with actuators, they can be placed both on the base or hooked to the pole that supports the panel (like the example).

There are some challenges to face:

  • build cheap actuators
  • build new actuators with a kind of waterproof
  • build a low power board that not use any kind of battery (use only energy from panel)
  • write a software from scratch to implement new alghoritm for movements

Logs published in date order:

  1. A little linear actuator
  2. The construction - part one
  3. The construction - testing movements
  4. The construction - part two
  5. The construction - designing the brain of mysoltrk
  6. Software design: transform an idea into real movements
  7. Ready to go outside: the assembling
  8. Let's go outside to find the sun - first test
  9. Software design: work in progress
  10. In search of the sun: software test in the field
  11. From prototype #2 to #3: here is the PCB board
  12. Prototype #3: PCB completed


Gerber for mysoltrk

x-zip-compressed - 33.39 kB - 09/01/2023 at 10:05



Viewfinder for mysoltrk project

Standard Tesselated Geometry - 4.58 MB - 05/15/2023 at 20:00



Joints for mysoltrk project

Standard Tesselated Geometry - 3.01 MB - 05/02/2023 at 13:14



Complete actuator build for mysoltrk project

Standard Tesselated Geometry - 7.69 MB - 04/20/2023 at 12:55


  • 2 × N20 M3*55 Gear Motor 6V DC Motors for actuator
  • 2 × M3 bolt for actuator assemble
  • 2 × M4 nut and bolt. You can try with M3 but maybe need to use some glue for actuator assemble
  • 2 × M5 nut for actuator assemble
  • 1 × plywood base for stand

View all 18 components

  • Prototype #3: PCB completed

    Fulvio09/15/2023 at 08:05 0 comments

    Hi everyone, we have completed the assembly of the PCB:


    To avoid burning out the circuit, set step-down output to 5.0-5.2V before to mount to PCB !
    (and secure the screw with a bit of glue)

    For this purpose, please use an external power supply as the input, with a voltage value similar to the solar panel being used.

    We also prepared a box, the whole thing looks professional to us :)

    We are busy to build two working prototypes, with two types of solar panels.

    We will update you in the coming days.

  • From prototype #2 to #3: here is the PCB board

    Fulvio09/01/2023 at 10:08 0 comments

    Hi everyone!

    We have completed the development of PCB board, here the result:

    You will find Gerber as usual in "Files" section.

    We will show you the result as soon as we get it home.

  • In search of the sun: software test in the field

    Fulvio08/21/2023 at 19:53 0 comments

    Finally we are ready to present the development result of the last month:

    But, before continuing, we want to thank the jury for choosing our project.
    This is further motivating us. Thank you!

    We have complete the first round of tests, with encouraging results.

    You can find the source code here:

    Let's look at some snippet of code:

    void loop()
        unsigned long startedAt = millis();
        workIsCompleted = false;
        Serial.println("Tracker start");
        while (!workIsCompleted && !isLowVREF())
            if (millis() - startedAt > MAX_MILLISECONDS_WORK)
                Serial.println("Exceeded work time limit");
                workIsCompleted = true;
        Serial.println("Tracker complete");

    The loop() code follow the flow chart that we had shown in the previous log.

    Summing up:

    1. read photoresistors values and calculate movements
    2. move panel
    3. read photoresistors values (again) and calculate next movements
    4. if there are no moves or time is up, go to sleep; otherwise return to step 2
    5. after completing the movements, evaluate whether to turn on the mosfet based on the amount of light read
    6. sleep for a set amount of time
    7. repeat from step 1

    Quite simple isn't it? Well, the hard work is to create a right combination between the reading of the photoresistors, the reading of the pin shunt and of VREF. And a lot of trying..

    But how are the movements performed? Here is an example:

        if (moveUp)
            Serial.println("move UP ^^");
            eos_br = false;
                eos_tr = true;
            eos_bl = false;
                eos_tl = true;

    To implement the upward movement, the two actuators are switched on one at a time. This way you get the desired result without consuming too much.

    Variable "eos_tr" (Top Right), "eos_tl" (Top Left) are used to mark the limit switches. This is useful for movements calculation.

    However, the code has been written for maximum readability and understanding.

    Let's watch together the video made with a DYI esp32cam powered directly by the mysoltrk prototype:

    Sorry for the low quality video. esp32cam provides low resolution images with little detail.

    However we think it is enough to show how it works

    Project completed ? That's all ? Well.. no!

    Thanks to the award received, we now have the opportunity to extend the challenges we set ourselves at the beginning.
    Our plans include the purchase of material useful for the construction of further prototypes

    We want to explore these further aspects:

    • What size of panels can we move with our actuators ?
    • Is there a possibility to use the same technique to move large panels?

    They seem like demanding challenges to us, but given the results we have achieved, we are quite optimistic !

  • Software design: work in progress

    Fulvio08/05/2023 at 15:19 0 comments

    Hi everyone!

    We are quite busy developing solar tracking software.

    The algorithm is almost defined, we are studying some behaviors in the field (directly in the sun)

    Here is a preview of the flowchart, the "loop" function on Arduino code:

    Prototype in action:

    Stay tuned..

  • Let's go outside to find the sun - first test

    Fulvio07/03/2023 at 18:41 0 comments

    After completing the assembly, we had to wait for a sunny day.

    Here is the result of the test with prototype #2 using the code showed on this log:

    At this point we can consider the hardware is working as expected and we can concentrate on the software implementation of the solar tracker.

    Stay tuned!

  • Ready to go outside: the assembling

    Fulvio06/26/2023 at 13:02 0 comments

    These days we have focused on transforming the breadboard circuit into a solderable breadboard circuit, adding a small box to enclose everything.

    Here is the result of prototype #2:

    As you can see, all components used on prototype #1 are in prototype #2. We have added a little led for debug (bottom right) connected to the mosfet pin.

    The circuit inside the box:

    We have added two usb connector for USB IN and USB OUT, fixing with hot glue:

    By connecting the circuit to the actuators, to the photoresistors and to the solar panel we obtain this beautiful result to see:

    Now we are ready to do some tests outside.

  • Software design: transform an idea into real movements

    Fulvio06/16/2023 at 07:55 0 comments

    Now it's time to test the prototype #1 with the actuators.

    We have realized a Arduino example, you can find it at github

    Before we talk, let's watch the video:

    The first think we said was: it works!

    With a tiny processor, with a bunch of discrete components we are able to pilot a DIY actuators without limit switches.

    This trick helps us to significantly reduce the complexity of the hardware.

    Some notes about the code

    // Program params
    #define MAX_SAMPLES                 10
    #define IGNORE_SHUNT_VREF_FOR_      1000L   // milliseconds
    #define MAX_SHUNT_VALUE             20      // threshold
    #define MIN_VREF_VALUE              100     // below this value the external power supply (eg: solar panel) supplies too little energy
    #define MAX_SECONDS_MOVEMENT        180     // max seconds to move actuator
    1. MAX_SAMPLES: we use an array to read analog values and give an average of the values derived from the scan
    2. IGNORE_SHUNT_VREF_FOR_: when motor starts, we can ignore first values
    3. MAX_SHUNT_VALUE: a reference value, above this value it is assumed that the motor is straining and therefore it can be deduced that it has reached the end of its stroke
    4. MIN_VREF_VALUE: a reference values, below this value it is assumed that external power (solar panel) produce few energy and the engine should be stopped
    5. MAX_SECONDS_MOVEMENT: an arbitrary value, high enough to reach the end of actuator stroke
        digitalWrite(ACTUATOR_R_PIN1, LOW);
        digitalWrite(ACTUATOR_R_PIN2, LOW);
        digitalWrite(ACTUATOR_L_PIN1, LOW);
        digitalWrite(ACTUATOR_L_PIN2, LOW);

    When program start, we put L298n pins to low.

    Next, we put pin to high once at time to keep consumption low.

    The result is one move at time for a single actuator.

    Current absorption

    As you can see on video, the circuit consumes about 0.1W with motor off and 0.2W with one motor on.

    We think a good milestone has been reached!

  • The construction - designing the brain of mysoltrk

    Fulvio05/30/2023 at 15:59 0 comments

    We spent quite a bit of time designing the circuit that will allow the panel to move with the movement of the sun.

    Let's remember the fundamental points of this project:

    • minimal hardware, low cost
    • self-tracker device, without GPS or WIFI

    To fulfill this promise, we have come to realize this circuit:

    As you can see, we tried to use easy to find components and a handful of passive components.

    Let's see the features together:

    • CPU: we use a Arduino Nano as "brain" of mysoltrk. Low cost, low consuption and powerful enough for our project
    • The board is powered by a step down, which reduces the voltage of the solar panel to 5V. Since there are so many step down, we picked one that delivers enough amps for the motors
    • L298N: used to decouple the logic gates of the Arduino from the motors
    • Photoresistors: with a simple divider we can interface the photoresistors to the Arduino
    • IRL540n: used as a relay
    • 1N4001 to protect Arduino when it is powered via USB and via solar panel at the same time
    • We add a setup button, it will be useful in the future

    There are some interesting points to note:

    R9 Shunt resistor

    We use shunt resistor to check the work of actuators.

    Since our 3D printed actuators doesn't include limits switches, measuring the shunt value we can deduce this condition.

    R11/R12 voltage divider

    With this simple trick we can evaluate if the panel delivers enough energy to drive the actuator.

    The calculation should be simple: read the value before and after running a motor.


    Depending on the type/size of the solar panel, the power may not be enough to drive motors and external load at the same time, so we decided that the load should be controlled by mysoltrk.

    For example, if there is not enough light, we can decide to use the panel's energy to drive actuators or to charge.

    Before designing a printed circuit board, we want to try it with a breadboard in order to verify the correctness of the starting hypotheses:

    Note: in this photo the shunt resistor is missing (a late order)

    Now we can start to write code to test actuators and photoresistors.

  • The construction - part two

    Fulvio05/15/2023 at 19:59 0 comments

    To complete the build of our solar tracker, we need a "viewfinder" for the sun.

    Here our viewfinder:

    As you can imagine, with this object we can read the light values divided by up/down/left/right

    It must be placed on top of the solar panel. The long plastic tab allows you to position it with a certain degree of freedom.

    We think that this is the last 3D printed object.

    Now we will focus on the circuit building. Stay tuned..

  • The construction - testing movements

    Fulvio05/07/2023 at 07:14 0 comments

    Here is a video explaining how the movements will be implemented:

    Next challenge will be create a board to pilot this tracker.

View all 12 project logs

Enjoy this project?



michal wrote 04/15/2023 at 05:37 point

What kind of sensors are you going to use to measure sun light power ? Or in other words, how are you going to decide how to move the solar panel to get max power ? 

  Are you sure? yes | no

Fulvio wrote 04/15/2023 at 08:46 point

Hi Michal, my approach is to use simple hardware. For this prototype I'll plan to use photoresistors

  Are you sure? yes | no

Dan Maloney wrote 04/14/2023 at 21:18 point

Cool idea. Looks like the wider the panel, the longer the range will be for horizontal tracking. Looking forward to details.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates