dropControllerV3 Intro & Circuit


dropControllerV3 is a mature, well tested water drop device. dC3 started life as a DIY only project, became a finished product and went back to being DIY only. dropControllerV3 is now the official dropController DIY option.

While version 3 may appear to be surpassed by the dropControllerV4, version 3 works in a similar way to the newer V4. dC3 is very capable, powerful, and fully supported. The main difference between V3 and V4 is compatibility. V3 is compatible with Windows OS and Android devices only, dropControllerV4 is compatible with any device/OS that has a web browser, such as Windows, IOS/apple, Linux, Android.


The dropControllerV3 circuit is fairly straight forward and building one should not be that difficult for anybody with any kind of electronics or Arduino experience. It will be little harder, but not impossible, if you are totally new to electronics.

dropControllerV3 has been designed to make construction straight forward using commonly available components.

I tried to keep the circuit as simple as possible and have tried to use commonly available parts. For example 4N25s 4N35s and IRL540N/IRLZ44N mosfets. The same style 3.5mm stereo socket is used for the camera and flash connections even though the flash connections are single channel. The only socket that needs to be stereo is the camera connector. I picked these 3.5mm sockets because they were breadboard friendly and just kept using them.

Download a hires image of the above circuit diagram.

PDF here for anybody who prefers a more professional diagram. Schematic created in KiCad.

The full KiCad project can be download from the dropControllerV3 PCB page.

Parts List

1 x Arduino Nano V3
1 x LM2596s DC to DC step down buck converter (or similar)
1 x HC-06 Bluetooth module
1 x Yellow LED
1 x Green LED
1 x Barrel jack/power socket
6 x RCA/phone socket – RCA-RCJ-04x. Terminal contacts can also be used.
4 x 3.5mm stereo socket – PJ-307 3.5mm stereo connector
5 x 4N35 optocoupler or similar.
6 x IRL540N mosfet or similar. I also use the IRLZ44N.
7 x 1N4007 diode
7 x 330 Ohm resister
6 x 220 Ohm resister
6 x 10K Ohm resister
1 x 1K Ohm resistor
1 x 2K Ohm resister

Many of the components (if not all) can be swapped with alternatives. This includes the mosfets, the optocouplers, the sockets, and even the Arduino and the Bluetooth modules.

The circuit allows the use of 12v and 24v power input. This means the same circuit can be used with either 12v valves or 24v valves.
Do not mix valves of different voltages on the same circuit. Match the valves to the power supply; 12v power with 12v valves, and 24v power with 24v valves.

Valve Control & Mosfets

The solenoid valves receive power from VCC in (either 12v or 24v).
The valves are controlled using a mosfet which in turn is controlled from the Arduino. In this way the mosfets are used as digital switches turning the valve on and off.

You can think of the mosfet as a digital switch (very simplified overview), when there is a voltage on the Gate pin, current is allowed to flow between the Source and the Drain pins.

I am using IRL540N and IRLZ44N mosfets but there are many alternatives. The mosfet needs to be logic level with a low RDSon at 5V/4.5V and more than able to handle the voltage used to drive the valves (drain-to-Source Breakdown Voltage). Always add a bit more, so if you are using 24v power supply use a mosfet able to handle 30+ volts (this would be my very minimum for 24v). The IRL540n has a drain-to-Source Breakdown Voltage of 100v so plenty of safety margin.

Mosfets are voltage driven rather than current driven devices and, depending who you ask, where you ask, or which way the wind in blowing, you may be told a resistor is not required on the Gate pin.

However, I like to play safe. When a voltage is first applied to the gate pin, the mosfet can act like a capacitor and for a very short time draw quite a lot of current. The 200ohm resistor (100 ohm can also be used) slows this down a bit and keeps the Arduino from destroying itself.

The 10K resistor pulls the Gate pin to ground when there is no signal from the Arduino and should be included. For one, it prevents the pin floating and causing ghost activity and for two, it stops the mosfet from going in to an undefined state which is basically a resistor and has the potential to burn up.

Camera & Flash Triggers Using 4N35s

The circuit has 4 triggers; one camera (focus and shutter) and 3 flash. In almost all cases only one flash trigger is used for water drop photography and the additional 2 can be left out if desired.

The diagram shows 4N25s.
I now use 4N35s

To isolate the camera and flash guns from the main dropController circuit, 4N35 optocouplers are used. These offer some basic protection but are not 100% fool proof.

When used with low voltages such as the dropController and modern digital cameras and flash guns the 4N35s work well but if a large enough voltage is applied to the optocopler is can short and cause damage.

As with the mosfets the 4N35s are used as digital switches. When a current is applied between pins 1 and 2, current is allowed to flow between pins 5 and 4. The main difference between the 4N35 and the mosfet is that the 4N35 physically separates the 2 sides of the circuit. With the mosfet the ground is common. The 4N35 can control a separate circuit without having contact with it.

Note: Parts of this website may state 4N25 but I have started using 4N35s.
Very occasionally I encountered some ghost activity with 4N25s (they were too sensitive). The change to 4N35s solved the issue.


The dropControllerV3 circuit has three voltages; 24/12v, 8/9v, and 5v. The 24/12v powers the valves, the 8/9v powers the Arduino, and the 5v powers the Bluetooth module, the mosfets, and the optocouplers.
– 24/12v is the main power in.
– 8/9v is the output voltage from the buck converter.
– 5v is the output from the Arduino.

DC-DC Step Down Buck Converter

The on/off switch is optional.

To drop the 24/12v to 8/9v I use small pre-built DC-DC step down buck converters. I use specific models but any converter that accepts 24v+ input (ideally 30v+) and allows 8v or 9v out will be OK.
Output from the buck converter goes to the Arduino.

Variable voltage output.
Fixed 9v output

The vcc out from the buck converter goes to the Arduino vin pin. The vin pin can safely accept anywhere from 7v to 12v so, although I suggest to set the buck converter to 8v or 9v, it is not critical to get it exact.
The vin pin on the Arduino connects to an onboard voltage regulator which, to work correctly requires at least 6v and 6v is the lowest you should aim for. A little hight is better.

Don’t forget the diode. This has a voltage drop of around 0.7v so you should have a minimum of 6.7v coming out of the buck converter. I rounded up to 8v and later found nice fixed 9v output buck converters so went up to 9v.


Very early versions of the dropController were 12v and I used LM7805s to step down the 12v in to the 5v the Arduino likes. The LM7805 is linear voltage regulator that produces heat as a side effect of it dropping the voltage. Depending on the difference between input and output voltages the heat can soon build up. 12v to 5v is normally fine.

When I moved to 24v valves, the LM7805s complained by getting very hot. I tried LM7808s for while but they had the same issue so I moved to pre-built DC-DC step down buck converters. Besides, the cost between a pre-made buck converter and a circuit using a LM7805/LM7808 is almost the same and buck converters are far more efficient and do not create any where near the same amount of heat.

The voltages are within spec of the LM7805/08 but the LM7805/08 gets hot when used with 24v and some kind of heat sink is required. I found they became hotter than I was comfortable with and so I do not recommend using them.
With an ambient temperature of about 27°C and using a 24V power source:
– no heat sink, the temperature went to around 115°C.
– small heat sink, temp was around 80°C
– large heat sink, I managed to get the temperature down to around 60°C. The large heat sink was too big to be practical though.

Using buck converters allows me to switch between 12v and 24v by simply changing the power supply. The circuit is the same for both.

1N4007 Diode

The 1N4007 diode is used for polarity protection for when the Arduino is connected to a computer via USB and an external power supply at the same time.

Bluetooth Module

Although the circuit and parts list shows a HC-06, a HC-05 in slave mode can also be used

I recommend only the HC-06 because it is a lot easier to set up and work with and many modules do not need to be changed from the default settings. If you want to set up one all you really need to do is change the name.

There are many different versions of the HC-06 and I believe all will work with the dropController, as will any module that has a Bluetooth Classic BT 2.1/SPP mode and interfaces using UART 8-N-1 at 9600 baud rate.

On many Bluetooth modules, especially older ones, the RX pin is not normally 5v tolerant and so a voltage divider to reduce the Arduino’s 5v TX pin to 3.3v.
We do not need a voltage converter on the other pin, BT TX -> Arduino RX, as the Arduino will read 3.3v as HIGH (the same as 5v) and so the Bluetooth TX pin can be connected directly to the Arduino RX pin.

Update 1

Until recently most HC-06 module breakout boards had 3.3v receive (RX) and transmit (TX) pins which are not compatible with a 5v Arduino, therefore, a voltage divider (the 1K and 2K resistors) is used to lower the Arduino’s 5v TX pin to the BT modules 3.3v RX pin.
Some of the newer module breakout boards (such as the HC01/Wavesen modules) are now 5v tolerant and if you have one of these modules there is no need for the voltage divider.
If you are not sure leave it in. It will not effect the circuit, unless it does, then remove it 😉

NOTE: The actual Bluetooth module, the small daughter board, is always a 3.3v device. There are many different breakout boards (the larger mother board) and most do not change the voltage on the RX and TX pins, some do however.

These are the Wavesen/HC01 HC-06 modules I use. These now come on HC breakout boards that have 5v tolerant RX and TX pins. This means you do not need to use the voltage divider. However, if you have already built the circuit with a voltage divider in place then you can leave it.

Here is the Wavesen/HC01 Bluetooth module on the very popular zs-040 breakout board. The RX and TX pins are 3.3v and should be used with a voltage divider.

Here is a noname Bluetooth module using the same zs-040 breakout board. The RX and TX pins on the zs-040 boards are 3.3v only.

Note: irrespective of the breakout board, the actual Bluetooth module (the small daughter board) is 3.3v only.

Update 2

The official HC-06 and HC-05 boards have become very expensive and I have moved to the HC-02. However, I believe any HC-06 clone or SPP Bluetooth Classic module should be acceptable.

Note About The Buck Converter and Bluetooth Module

If you plan to use the dropController with a PC only (no Android) then the buck converter and the Bluetooth module are not required.

The Arduino will receive power from the computers USB and the DC-DC step down buck is not required.
The dropController will receive the drop commands via USB and so the Bluetooth module in also not required.