SHOWER TIMER
- Lian Theron
- Aug 5, 2018
- 3 min read

Due to the drought in our country, we are currently living in a time where water conservation has become a part of our daily lives.
It is our duty to ensure that we use the water available as efficiently as possible. The reuse of gray water for our gardens and toilets is already a standard for most households, but we must especially restrict the use of clean water. In a normal household, we use the most water for bath, shower, washing machine’s and dishes. This is taken into consideration that we no longer wet our gardens.
Daily there are many new devices and ways to save water available. Due to the high demand for the products, consumers are exploited and the cost for such devices are very high.
Therefor I have decided to develop an affordable and efficient device to save water used by showering. This device can be built and installed by anyone. The design is available to everyone for free. To ensure that it is efficient, I used a Arduino UNO to control the device.
I designed my device for domestic use, but it can also be used in small hotels, guesthouses and hotels.
Flow diagram for SHOWER TIMER:

This device limit the shower time to 5 Minutes, but it can be changed in the Arduino's programming code.
Components needed for SHOWER TIMER:

Image of SHOWER TIMER Build onto a bread board:

Arduino code to program SHOWER TIMER:
The code for the SHOWER TIMER is as follow:
//SHOWER TIME code - Lian Theron
//User settings:-----------------------
const int showerTime = 5; //In minutes – SET SHOWER TIME
const int warmupTime = 20; //In seconds – SET WARMUP TIME
const int waitTime = 10; //In minutes – SET WAITING TIME
//-------------------------------------
int stat = 0; //This keeps track of the status
void setup() {
Serial.begin(9600);
pinMode(4,INPUT); //Set pin 5 as input (For BUTTON)
pinMode(6,OUTPUT); //Set pin 6 as output (For RELAY)
pinMode(7,OUTPUT); //Set pin 7 as output (For LED WARMUP)
pinMode(8,OUTPUT); //Set pin 8 as output (For LED 5 MIN)
pinMode(9,OUTPUT); //Set pin 9 as output (For LED 4 MIN)
pinMode(10,OUTPUT); //Set pin 10 as output (For LED 3 MIN)
pinMode(11,OUTPUT); //Set pin 11 as output (For LED 2 MIN)
pinMode(12,OUTPUT); //Set pin 12 as output (For LED 1 MIN)
pinMode(13,OUTPUT); //Set pin 13 as output (For BUZZER)
}
void loop() {
while(digitalRead(4) == LOW){
Serial.println("Press button to start: ");}
if(stat == 0){ //If the status is 0, begin warmup
digitalWrite(6,HIGH); //Open RELAY
digitalWrite(7,HIGH); //Open LED WARMUP
digitalWrite(8,HIGH); //Open LED 5 MIN
digitalWrite(9,HIGH); //Open LED 4 MIN
digitalWrite(10,HIGH); //Open LED 3 MIN
digitalWrite(11,HIGH); //Open LED 2 MIN
digitalWrite(12,HIGH); //Open LED 1 MIN
tone(13,2000,100); //Gives the warmup buzz
for(int i = warmupTime; i > 0; i--){
Serial.print("Water Warmup time left: ");
Serial.println(String(i) + " seconds"); //Text for Warmup time left
delay(1000);
}
stat++; //Update status
digitalWrite(7,LOW); //Close LED WARMUP
}
if(stat == 1){ //If the status is 1, begin the shower timer
tone(13,2000,100);
for(int i = showerTime * 60; i > 0; i--){
if (i == 300){
digitalWrite(8,LOW); //Close LED 5
}if (i == 240){
digitalWrite(9,LOW); //Close LED 4
}if (i == 180){
digitalWrite(10,LOW); //Close LED 3
tone(13,2000,500); //Buzzer
}if(i == 120){
digitalWrite(11,LOW); //Close LED 2
tone(13,3000,500); //Buzzer
}if(i == 60){
digitalWrite(12,LOW); //Close LED 1
tone(13,4000,1000); //Buzzer
}Serial.print("Shower time left: ");
Serial.println(String(i) + " seconds"); //Text for Shower time left
delay(1000);
}
stat++; //Update status
}
if(stat == 2){ //If the status is 2, close the relay and notify user that it is over
digitalWrite(6,LOW); //Close relay
tone(13,5000,1000); //Gives buzz until it is shut off
Serial.println("Shower time over"); //Text for Shower time over
for(int i = waitTime * 60;i >0; i--){
Serial.print("Wait: ");
Serial.println(String(i) + " seconds till next shower"); //Text for Time till next shower
delay(1000);
}
stat = 0;
"restart void loop";
}
}
Installation of the SHOWER TIMER:
To install the SHOWER TIMER, you can use Velcro strips. Attach it to the wall next to the shower pipe. Connect the water solenoid inline with the shower head. See image below:

The Shower timer can also be installed on the warm water pipe only, but this will require the assistance of a plumber. See diagram below:

Please add any more devices like this.
Comments