Introduction: Arduino Wifi Washing Machine

I Wanted to remove all the existing Electronic control system's from my faulty washing machine and replace it with my own programmed Arduino Brain.This would include Variable Motor speed control,NTC temperature sensing,pulse width Water level control,Inlet valve control,Door safety Control,,LCD Screen,Capacitor sense control buttons,User programmable programmes ,Wifi control, , App control with push Notifications, and Fault Dianostics.

Step 1: Remove Existing PCB's and Wiring Loom

  • Removed front PCB which included LCD screen and push button selectors (Scrap)
  • Removed main power PCB from base of Machine(Scrap)
  • Removed complete Wiring loom just kept plugs for connecting too Pressure/Level Switch,NTC,inlet valves and motor.
  • Machine was now totally bereft of any of its electrical or display systems.

Step 2: Motor Speed Control

I needed to find away to Control the speed of the washing machine universal motor as at least 4 Speeds are needed.

  • Wash Speed
  • Distribution Speed
  • Slow Spin
  • Fast Spin

the other problem with washing machine Speed control is the motor speed needs to be constant regardless of the load applied to the motor

after trying to build a speed control PCB my self i soon realised that with only limited electronic knowledge it would be beyond me in the time frame i had.

I purchased from Russia a Universal speed Controller PCB based on the TDA1085C chip . It worked great but the speed was controlled from a manual potentiometer. (a problem to be solved later)

avialable on ebay from this Seller "motor.uses"

How to Control The Motor

the voltage passed into the speed Control board from the manual potentiometer ranged from 0v to 12v so using pwm from the arduino i could get from 0 to 5V enough for Wash Speed ,Distribution speed and a slow spin of about 800 rpm

The 12volt was passed to the board using a solid state relay which sent the motor up to about 1200rpm Perfect.

In the Video above you can see the motor changing speed through quite a large range just by sending 0 to 5 volts PWM from the Arduino.

Step 3: Changing Motor Direction

To reverse the direction of the universal motor i needed to build a double pole double throw relay board.The relay was activated via a optocoupler transistor.When the transistor was activated a 5 volt supply was taken straight from the power transformer which energised the relay and reversed the motor.

This mechanical relay was the only mechanical relay used all the other relays in the project are solid state

Step 4: Turning Motor Action on or Off

To activate the speed control board i build a solid state relay using a triac and optocoupler. When 5 volts from the Arduino was applied to the Optocoupler mains voltage was sent to the speed control board and the motor would turn.

Step 5: Using SSR Relay to Increase Motor Speed to Maximum

As explained earlier, using PWM applied to the speed Controller board we could not achieve full spin Speed .To overcome this problem i used a SSR relay switching 12volts .On the last spin PWM was used to control the motor speed through distribution and slow spin. When the final fast spin was required this relay supplied 12 volts to the speed control board and full spin was achieved.


The power Supply used a dual output transformer of 18volts and 2 bridge rectifiers.Two adjustable buck coverters adjusted the voltage down to 12volts and 5volts dc.The 12volts was used to supply power to the arduino and the fast spin relay.The 5 volt supply supplied the motor reversing relay.

Step 7: Main Processor (ARDUINO MEGA)+WIFI ESP8266

A screw shield was used to attach all the wires to the MEGA

Step 8: Remove Physical Front Buttons and Replace With Capacitive Ouch

Step 9: Detect Door Closed So Machine Can Start..

A Optocoupler Isolation Module Voltage Detect Board was used to detect when the washing machine door was closed.

When the door was closed 240 volts was sent from the door to this board which in turn sent 0 volts to the arduino.The Arduino now knows the door is shut and the programme can start.

see this great video on how to use this board..

Step 10: Detect Water Level...

The hotpoint washing machine uses a pressure sensor which sends out a square wave.The frequency of this pulse changes when the pressure applied to the sensor changes.

Using "pulse width in " on the arduino we can sense when the required amount of water has entered the machine.

We can also tell when water has emptied from the machine so the machine can spin

Step 11: Heater Relay,Valve Relays and Pump Relays

All the relays in this project except the motor direction relay are solid state relays.

The 2 inlet valves and the pump are supplied by 2 amp Omron solid state relays

The Heater is supplied by a much bigger 30amp SSR relay (15amp would be plenty)

Step 12: LCD Display