dropController V3

dropControllerV3 is now available in beta version. Download links are on the download page. Please be aware I am still tweaking things.



Updated 18-05-2019
Download a hires image of the circuit


Breadboard Prototype

Updated 07.06.2019
I built the prototype using 3 breadboards to give me plenty of space. With a bit of work you could reduce it to 2 boards. I tried to keep the circuit as simple as possible and have used multiple components instead combined components. For example, I have used 5 separate 4N25 optocouplers. These can be condensed in to 1 or 2 chips. I use stereo sockets even when the connection is single channel. The only socket that needs to be stereo is the camera connector.





The dropController can use 12v or 24v. The power supply should match the solenoid valves you are using (either 12V or 24V). Only use one type. Do not mix 12V and 24v valves.

The dropController and valves are powered from a single power supply. The power goes directly to the valves and is also converted using a buck converter. On the breadboard prototype I use a buck convertor with a display. This allows me to easily monitor the voltage in and out.



The Arduino is powered using the 5V pin. This means the power is sent straight to the microprocessor avoiding the onboard regulator. This is fine as long as care is taken and the input voltage is a regulated 5V. You could use the vin pin but would need to raise the voltage to above 6V to compensate for the regulator. You then may have issues with the Bluetooth module which has a maximum input of 6V.

Reverse polarity protection
When the dropController is used with a PC it receives power from 2 sources, the usb and the main power supply. I have experienced issues due to this. Not when things are connected but when they are disconnected. Whenever I disconnect the usb my computer crashes (BSOD). To prevent this I added a P-channel mosfet for polarity protection.

See below for an alternative method that does not require the mosfet


  • D14/A0: Yellow LED
  • D15/A1: Green LED


The 2 LEDs show the device status:

  • The yellow LED shows the connected status; flashing means not connected. Solid on means connected to an app.
  • The green LED shows when the device is active (making drops).
  • Both LEDs solid on means the device is in sensor mode.

When drops are being produced the yellow LED turns off and the green LED turns on. When the drop sequence is finished they go back to Yellow on, green off.


Bluetooth Module
Either a HC-06 or HC-05 (in slave mode) can be used. I recommend the HC-06 though because it it easier to set up. The Bluetooth module connects to the Arduino using software serial on pins A4 & A5 which are used as digital pins (D18 & D19). Power is delivered directly from the buck converter.


Voltage Divider
The actual Bluetooth module is a 3.3v device. The HC-06 and HC-05 have breakout boards that include a voltage regulator that converts the input vcc to 3.3v and this is why the boards can be powered with 5V. The RX and TX pins are still 3.3v though. An Arduino reads 3.3v as HIGH which means we can connect the Bluetooth TX directly to the Arduino RX. The Arduino TX is 5V which is too high for the Bluetooth RX and so I use a simply voltage divider to reduce the 5v to 3.3V.


Camera and flash triggers
Optocouplers are used as digital switches to trigger the camera and flash guns. To help keep the circuit as simply as possible I use separate optocouplers. I also use stereo sockets throughout.

Shutter and focus triggers always fire together and is required by some cameras to trigger bulb mode. For example, on my Canon 40D, Bulb mode does not start when triggering the shutter only.

The circuit shows 4N25s (these are very common and very cheap) and similar chips (such s 4N26s) can be used. An optocoupler isolates one circuit from another. Using the 4N25 means the circuit on the dropController side is not electrically connected to the camera circuit and offers the camera a fair amount of protection. It is not 100% fool proof though, check the data sheets for the optocoupler you use for full details.

Solenoid Valve Triggers
The valves use higher voltages compared to the camera a flash triggers and optocouplers like the 4N25 are not suitable, instead, mosfets are used. Just like the optocouplers the mosfets are used as digital switches.



To switch the solenoid valves I am using IRFZ44N and IRL540N mosfets (both are common and cheap) but anything similar will work. You just need a 5V logic level mosfet with a low RDS(on) value at 4.5v or 5v (ideally 4.5v or lower). I have a list I can publish if anybody wants it.

Flyback Diode
A solenoid is a electromagnet device and works by using a magnetic force to move a small piston (they are inductive). When the current is removed the magnetic fields collapses and the piston moves back. When the magnetic field collapses it also generates a voltage. This can be very high and if allowed to feed back to the main circuit would likely cause damage. To stop the feed back a flyback diode is used. The diode directs the current back to the solenoid until it dissipates.

Manual Drain Switch
Not shown on the breadboard, a switch can be added to allow for manual control of the valves. This helps with draining and cleaning. The switch is added between the mosfet Drain and the mosfet Source. Closing the switch simply bypasses the mosfet.


Alternative Power – No polarity protection mosfet
When I first started working on the dropController I had an issue when the Arduiono was powered from a PC via usb and also from a separate power supply. When I removed the usb from the computer it would crach (BSOD). At the time I was using a LM7805 and I initially addressed the issue by adding a diode for one way voltage protection. Since I had a 5V source I had to use the 5V pin not the vin pin. This was not the ideal solution as the diode had a voltage drop of around .7/.8v meaning the Arduino received around 4.2v only. So I changed the diode for a mosfet which gave the same protection but didn’t have the voltage drop. Later, due to heat from the LM7808 it was replaced with a DC-DC convertor which was simply dropped in as a replacement. It was set to 5V and connected to the 5V pin and so the mosfet was still required.

Using a DC-DC convertor means I do not need to use the 5V pin. I can up the voltage and use the vin pin (this is the recommended method for powering the Arduino from an external source). The vin pin goes to the the Arduino onboard regulator so requires about 7V up. I think the official numbers are 7V-12v for 5V Arduinos.



The V out from the DC-DC convertor goes to a diode (IN4007) and then to the Arduino vin pin. The DC-DC convertor is set to output 8v. The diode takes around 0.7v which means the Arduino receives around 7.3V

The sensor connections and the Bluetooth module are now connected to the Arduino 5V pin.


Proto-board Version

This is the first proto-board version. I use the initial version to make sure everything works and to tweak the layout. This is larger than it needs to be but since I don’t have a project box yet I wanted to use the available space. Some of the components can be moved for better placing.

Board with manual drain switches

And here is the board without the switches

dropController_2019-07-15 - perf_front_1600

dropController_2019-07-15 - perf_back_1600
Excuse the messy soldering, I had to move a few things around.

Here is the perf board with connections.



Android App

Drop data controls are the same.
Camera and flash triggers can be turned off.




Windows App

Cleaner interface using tabs rather than popup windows.
Extra controls for a second flash trigger.
Drop time graph – visual guide to the drop times.




Setting up a Bluetooth HC-06 module

I have a mini guide that explains how to set up the Bluetooth module.