Aquarium Controller – Custom PCB – Raspberry Pi – Node-Red – Python


3 min read

After many months of testing I think I finally have a aquarium controller for my fish.
The new PCB fits on top of the raspberry and so far has controlled the aquarium without issues.

-The input on the board is 12V. It has a 3A DC-DC converter to power the Raspberry.
-Lights (On/Off) are controlled via the GPIO that switches the transistors.
-Dimming the lights is controlled over (PWM) a PCA9685 chip that is driven by the IC2 bus from the raspberry ( that gives you 32 bits of dim control ( From 0 to 1 % is roughly 600 steps)
-Temperatures are read by 1-wire ( DS18B20 sensors )
-There are 2 additional switched 5V outputs to control some noctua fans ( for cooling the LED's in the summer )

The lights ( 4 white / 2 Red /2 Blue - 10W High Power LED's ) and dimmers are now controlled via Node-Red and a Pyhton script that pulls external weather from the Amazon and tries to simulate that.
( so now every time I look at it there is different lighting (off course within limits I control))

The first version of the PCB is now running a couple months stable but is bigger then the picture shown above..
That one is actually just designed and I invested some time into slimming the form-factor by using surface mount components.
the first test-batch for that is currently being produced by JLCPCB ( since they now offer a SMC building service for a really cheap price :) )

New Boards have arrived

First PCB's

First order has arrive. After inspection ( Boards are really nice) I noticed that one of the capacitors is not the correct voltage. Turns out to be my fault. So I ordered some new ones. Not sure how that happen but I put 2.5v on the 12v rails :( , hoping the new ones will arrive somewhere in the next week to replace and test the boards. ( luckily I haven't powered them yet :) , they would not survive the smoke test :) )

Let me know if you would be interested in a board? I can order some extra ( only thing that needs to be soldered are the transistors and the headers for input/output.