Hello Reefers,
I’ve been working on designing and building what I hope will be the perfect open-source aquarium light controller, and a mobile app to go along with it.
So far, I’ve got a working prototype with a 6-channel design and a functional app.
I’ve been coding for nearly 20 years and have plenty of electronics experience too. I’ll admit we kinda have this gift to keep costs low when it comes to electronics. So, instead of going for something fancy like a Raspberry Pi as the brain, I chose the ESP32-C3, it’s just right for this project. To save even more on the PCB, the controller is super tiny, just 30×22mm, and I’ve pretty much used up every single pin on that ESP32-C3. The other key parts are just two DC-to-DC buck converters and a TL431 voltage reference.
Let’s talk hardware first:
This is a fully open-source project, and I mean fully. All the editable hardware design files, firmware, and app source code are up on GitHub: https://github.com/oldrev/borneo. The hardware and firmware are pretty much done, but the app’s still a work in progress—functional, but a bit rough around the edges.
Since I’ve only ever dealt with freshwater planted tanks, I’d love some advice from the saltwater enthusiast. Is this moonlight mode actually important, and if so, what color should it be when it’s on?
Cheers!
Wei L.
I’ve been working on designing and building what I hope will be the perfect open-source aquarium light controller, and a mobile app to go along with it.
So far, I’ve got a working prototype with a 6-channel design and a functional app.
I’ve been coding for nearly 20 years and have plenty of electronics experience too. I’ll admit we kinda have this gift to keep costs low when it comes to electronics. So, instead of going for something fancy like a Raspberry Pi as the brain, I chose the ESP32-C3, it’s just right for this project. To save even more on the PCB, the controller is super tiny, just 30×22mm, and I’ve pretty much used up every single pin on that ESP32-C3. The other key parts are just two DC-to-DC buck converters and a TL431 voltage reference.
Let’s talk hardware first:
- Built-in buck circuit for a wide input voltage range, 15–36V
- 6-channel LED PWM control with phase-shifting support, 1024-level duty cycle, and up to 24kHz
- A pin for a 3950 NTC thermistor to monitor LED temperature
- Fan PWM control signal output driven by a PID algorithm, plus a fan voltage output adjustable from 3.5V to 12V. You can lock it at 12V and let the PWM signal handle the fan speed, or use a cheap two-wire fan and have the controller regulate the voltage to adjust speed.
- Built-in voltage sensing, plus a pin for an INA139 chip to measure total LED current and handle over-current protection.
- A push button pin to temporary light-on mode or reset WiFi settings.
- 0.1" pin header, DIY friendly.
- One big reason I started this project was to dive into Flutter development, so I really wanted the app to look slick and polished. Here’s what it can do:
- Manage multiple devices.
- Manual dimming mode.
- Scheduled mode with multi-stage sunrise/sunset dimming.
- Easy Setup mode.
- Nightlight mode (temporary light-on feature), super handy when you want to peek at your tank in the middle of the night without messing up your light schedule.
This is a fully open-source project, and I mean fully. All the editable hardware design files, firmware, and app source code are up on GitHub: https://github.com/oldrev/borneo. The hardware and firmware are pretty much done, but the app’s still a work in progress—functional, but a bit rough around the edges.
Since I’ve only ever dealt with freshwater planted tanks, I’d love some advice from the saltwater enthusiast. Is this moonlight mode actually important, and if so, what color should it be when it’s on?
Cheers!
Wei L.
