Photovoltaic systems need regular washing to avoid efficiency degradation. Dust deposition on the surface limits solar penetration into photovoltaics and consequently the PV output. Efficiency may fall by 50% after a month without cleaning the modules. This effect strongly depends on the area, being desert climates,hot and arid environment.For that reason i care about this project which is imperative in our modern time where solar energy are an abundant source of energy.I got inspired from the pictures in the left.i will be using two designs one for enclosure of electronics and one for the pv systems and the pump,i wil also design a 3d printed drainage system and a spray nozzle to spray water and then collect the water from the drainage system to the tank and the tank to spray nozzle via pvc tubes by the pump so that its a kind of loop.
Materials & Machines
Fusion360
El Malky ML149 CO2 Laser Cutter
creality ender 3 pro
Plywood 3mm
Rdwork
Ultimaker Cura
PLA filament
Spray paint
6mm PVC tube
Drawing on Fusion:
Let's start with enclosure
Frist with the enclosure i started working on the sides with X slots of 3mm and dimension of 100mm heigh and 170mm base,with tslots and taps,following by the holes for arduino inputs,power and all are extruded.
Then i designed the top and bottom by projecting them,joined the sides and extruded.
For the PV system, i frist started designing the sidesmade xslots and t slots in such that the plywood representing the panel has a depth of 5mm in order for water to not flow from the sides and goes directly to the drainage system.then i started designing the panel and the bottom.
The 3D printing part :
For the nozzle spray, i used the sweep function,drew an arc of 70 radius, then drew a circle of inner diameter 8.3mm and outer diameter of 10.3mm. once extruded i added four 2mm of circles using circular pattern at outlet of nozzle and extrude cutted.
for the drainage system i drew half circle of 30mm diameter and 15mm radius , took an offset of 3mm and extruded by 200mm. Finally designed connectors with 8.3mm diameter to hold the 6mm pvc tubes during the cleaning process.
Laser cutting the PV system and enclosure:
Uploading the DXF files into LaserCAD and adjust settings to cut , speed = 10 , power = 65
3D printing:
Uploading the STL files into Cura and adjusting the parameters with layer thickness 0.2 and adding brim for the connectors and nozzle but add support of type tree to the drainage system
drainage system
spray nozzle
connectors
PV system
arduino software for coding the system
arduino uno with usb cable
1 channel relay
bluetoth module sensor for auto mode
for circuit drawing
RGB led for system state indication
push buttons for starting the cleaning and increasing and decreasing the interval time of cleaning
12v adaptor for input power
12v pump for pumping water
Arduino bluetooth controler app
a switch to power on/Off the system
16*2 LCD screen
breadboard
Circuit in tinkercad
INPUTS:
I used two types of input components, one are the three push buttons(one that tells the the Arduino to start watering, second one to add more time to watering cycle and third to reduces the watering cycle. All buttons are connected with internal pull-up resistors. When pressed, they send a LOW signal to the Arduino, making them easy to read.
second type is a Bluetooth Module (HC-05) that receives commands like "START", "INC", "DEC" from an Android phone. This lets the user control the system wirelessly instead of pressing buttons. Together, these inputs give the user two ways of controlling the system: either directly (buttons) or remotely (Bluetooth).
ACTION COMPONENTS:
Relay Module
Connected to pin 8 of the Arduino.
Acts like an electronic switch that controls the water pump.
When the Arduino outputs a HIGH signal, the relay closes its contacts and powers the pump ,water flows.
When the Arduino outputs LOW, the relay cuts the power and stops the pump.
RGB LED
Connected to pins 5 (Red), 6 (Green), and 9 (Blue).
Used as a status indicator:
Blue : waiting for command.
Red : Watering in progress.
Green :Watering cycle finished.
This gives a quick, colorful way to check the system state without reading the LCD.
LCD Display (16x2 with I2C)
Connected to Arduino via I2C (SDA &SCL)
It shows:
System name on startup.
Current watering time.
Countdown during watering.
“Watering Done” message when finished.
The LCD makes the system user-friendly by giving live updates.
INTEGRATION OF COMPONENTS:
The Inputs (buttons/Bluetooth) go into the Arduino Processing (code + timing) which drive the Outputs (relay, LCD, RGB LED) and then complete the smart watering cycle.
My power source is a 12V adapter and this is 4 reasons i selected it:
1.It matches my 12V pump’s requirement .
2. It can also power the Arduino Uno through VIN/barrel jack.
3.It allows me to use one adapter for the entire project instead of separate supplies.
I programmed this project in a way that the Arduino always waits for two types of input: either button presses or Bluetooth commands. Based on what input comes in, it changes the watering time or starts the pump.
The relay physically controls the pump, the LCD gives me live feedback, and the RGB LED adds a quick color signal. Together, they make the system easy to use both manually (buttons) and wirelessly (phone).
The code is AI labeled for inspiration and therefore customized for the purpose of the circuit requirement.
I used the LiquidCrystal_I2C library to control the 16×2 LCD screen
Relay controls the water pump,RGB LED is on pins 5, 6, 9 respectively are all PWM pins, so analogWrite() works correctly.Buttons use pins 2, 3, and 4 with INPUT_PULLUP.
Default watering time = 5s,each press of INC or DEC changes time by 1s.Limits are 1s minimum and 60s maximum.
This function prevents starting a new watering cycle while one is already running.
Relay OFF at startup.
Buttons ready with pull-ups.
LCD backlight ON.
RGB LED set to blue .
LCD shows default time.
Each button press changes wateringTime or starts watering.Bluetooth commands are read as strings and passed to handleBT(cmd).
"START" → begin watering.
"INC" / "DEC" → adjust watering time.
"TIME=xx" → set watering time (xx seconds).
Sends back confirmation to phone.
Checks if already watering to avoids conflicts.Turns relay ON, LED red, shows countdown on LCD.Uses a blocking while-loop (buttons/Bluetooth won’t work until watering ends).At the end: relay OFF, LED green, “done” message, then back to idle.
updateLCD() → always shows project name and time.
setColor() → controls RGB LED brightness with analogWrite().
connecting the pvc tubes to the PV system
Integrating draining system with PV system
The spray nozzle is connected to the system
The electronic circuit is well tested and integrated to the system
the system is ready to function
moments before launching
Final project video
Both my instructors contributed on the design of the system, Ahmed sami has gave me an sketch of how the system would look and its where my design was inspired from.
The challenge i had was with the designing of nozzle spray which has to bend and also include holes to spray with water with more pressure. i used arc with shell at first but the nozzle was not efficient, then to solve the problem i used the sweep feature which was efficient for designing the nozzle as seen in the picture.
another challenge was fixing the RGB led to the circuit via the enclosure,in order to fix the rgb led, we use a special kit that has only two holes while the rgb led has 4 legs. In order to solve the issue i made 2 distant holes from the original ones to not create a short circuit.
if i had more time, i would have added a temperature sensor that activates the system whenever the PV Panel temperatures reaches a certain level.Second i would have added a stepper motor to the nozzle spray in order clean with 40 degree angles