DIY Wavemaker Controller Guide: Arduino and ESP32 Build

· emilynakatani · 4 min read
jellyfish, underwater, ocean, aquarium, nature, animal, marine, glow, dark

Commercial reef controllers price wavemaker modules at $200 upwards per zone, yet the underlying electronics cost about $20 in parts from Sim Lim Tower. This diy wavemaker controller guide from Gensou Aquascaping at 5 Everton Park walks through two practical builds, an Arduino Uno version for simple PWM wave patterns and an ESP32 version with WiFi scheduling and web UI. Both drive standard 10 to 30 watt DC return pumps and powerheads, and both have run stable in local reef tanks for over a year of continuous duty.

Prerequisites and Safety

You need basic soldering skills, comfort with 12 to 24 volt DC wiring, and patience with flashing firmware. Do not attempt mains-voltage AC control; stick to DC pumps controlled via their low-voltage signal cables. A short-circuit at 24 volts melts wiring; at 230 volts it kills.

Isolate the controller electrically from tank water with a GFCI upstream and keep all electronics above the tank water line with drip loops on every cable.

DC Pump Control Basics

Modern DC powerheads (Jebao OW, Maxspect Gyre, Neptune WAV) accept a 0 to 10 volt or PWM signal on a dedicated control wire. Sending a varying voltage or PWM duty cycle modulates pump speed. A microcontroller generates the signal; a small level-shifter circuit matches it to the pump’s input requirements.

Arduino Uno Build: Bill of Materials

Arduino Uno R3 ($15), four-channel logic-level MOSFET board ($5), RC low-pass filter (resistor 10k plus capacitor 10uF per channel, under $2), screw terminals, 9V DC adapter. Total around $25 from Sim Lim shops or Lazada.

Arduino Wiring

Each PWM pin (3, 5, 6, 9, 10, 11) connects to the MOSFET gate via a 220-ohm resistor. MOSFET drain connects to the pump control wire. Ground shared between Arduino, MOSFET board, and pump. For pumps expecting analog 0 to 10V rather than PWM, add the RC filter to smooth PWM into analog voltage.

Arduino Firmware Sketch

Core logic: use the millis() timer to step through wave states. A simple reef-crest pattern cycles pump 1 on at 80 percent for 3 seconds, then pump 2 on at 80 percent for 3 seconds, alternating. More advanced: sine-wave ramps, random pulse, feed-mode pause. Sample code is widely available on the ReefCentral DIY forums and GitHub.

ESP32 Build: Added Capabilities

ESP32 DevKit ($8) replaces the Uno and adds WiFi, allowing browser-based control from your phone. Same MOSFET wiring. Use the Arduino IDE with ESP32 board support, or Tasmota firmware for instant web UI without coding.

Storage for schedules in flash means the controller remembers settings across power loss, matching the behaviour of commercial reef tank controllers.

Web UI and Scheduling

Using ESPHome or a simple Flask-style web page on the ESP32, expose sliders per pump channel, pattern presets, and a day/night schedule. Integrate with Home Assistant if you run one for the flat; scenes like “movie mode” (low flow, dim light) become one tap.

Wave Patterns Worth Building

Reef crest: alternating full-power pulses 3 to 5 seconds each, simulating surge zones good for SPS. Lagoon: gentle sine ramp 0 to 60 percent over 30 seconds, then reverse. Feed mode: all pumps 20 percent for 10 minutes, triggered manually. Storm: random intensity and duration, run weekly for 30 minutes to dislodge detritus.

Safety Features

Watchdog timer: if the controller hangs, pumps default to medium speed rather than off or full. Temperature cutoff: add a DS18B20 probe; if water exceeds 29°C, spike flow to aid gas exchange. Float switch input: if sump low, cut return pump channel only, leaving powerheads running.

Noise and Interference

PWM at standard frequencies can induce pump whine. Raise PWM frequency above audible range (greater than 20 kHz) in the Arduino sketch with analogWriteFrequency(). Shield the control wires or twist them with ground to prevent noise pickup in the 3 to 5 metre run from cabinet to top of tank.

Singapore-Specific Considerations

High humidity in sealed cabinets condenses on electronics. Mount the controller in a ventilated project box with a small desiccant pack, or outside the cabinet entirely with longer signal cables. Power from a UPS sized for at least 30 minutes; our grid sees brief dips during storms and pump cycling under dirty power degrades MOSFETs.

When to Buy Instead

If this guide feels hostile, skip DIY. A used GHL or Apex Trident setup on Carousell runs $400 to $700 and carries a support ecosystem. DIY is worth the time only if you enjoy the build itself; the savings alone rarely justify the hours invested.

Related Reading

emilynakatani

Still Have Questions About Your Tank?

Drop by Gensou Aquascaping — most walk-in questions get answered in under 10 minutes by someone who has set up hundreds of tanks.

5 Everton Park #01-34B, Singapore 080005 · Open daily 11am – 8pm

Related Articles