The Solar Panel Optimizer (SPO) solves a common problem with solar panels that are often stationary and thus only optimally oriented for maximum sunlight capture at specific times of day. One solution that is often used, and yet is terribly inefficient, is to manually readjust the panels. Team 6’s device will calculate the angle of sunlight and reorient the solar panel so as to maximize the energy collected. This product fulfills a critical market need for maximizing efficiency of solar, a green type of energy that still has vast room for improvement, and that will become extremely important in future years. By constantly reorienting the solar panel, the optimizer can capture up to 40% more energy than fixed panels. The SPO will also account for seasonal differences in the path of the sun and reorient the solar panel on two axes: one covering all 360 degrees of the compass (Azimuth) and one covering the sun's elevation angle above the horizon (Elevation).

For our earlier introduction video, please follow this link: https://youtu.be/gdpb3pW9WpM

Technical Specifications

*Arduino UNO: Arduino UNO board was used to control 2 servos, perform calculations of Solar azimuth and elevation, and receive information from Arduino MKR 1000

*Arduino MKR 1000: Arduino MKR 1000 was used for its built-in wifi components and was used to send digital signals to the Arduino UNO.

*WiFi: WiFi (Internet of Things) was used by the Arduino MKR 1000 to access the Yahoo Weather API, which provided critical weather information for running the Solar Panel Optimizer. These results were sent as digital signals to by the MKR 1000 to the UNO


To access our code, please follow the links:

Code for Arduino UNO: https://www.dropbox.com/s/dk38igzsl04oh8q/final_code.ino?dl=0

Code for Arduino MKR 1000: https://www.dropbox.com/s/n91vcyur826428r/FinalCode_mkr1000.ino?dl=0

Challenges we ran into

Our prototype testing was extremely exhausting on the servos and Arduino boards, partially because of an unintentional surge in voltage. We went through 8 servos and 2 boards until we were able to find a board and two servos that worked and continued to work. Additionally, our API requests were quite challenging as we were attempting to access APIs that were not designed to be parsed for information, forcing us to change the role of the internet in our device.

Lessons we learned

Prototyping and constant testing of your device is critical.

Built With

Share this project: