Paludarium 2020: Electronics!

I admit… I have failed to post any new blogs on my current Paludarium setup. I posted the construction of the wooden cabinet… And then it stopped. I did however finish the build, and maybe I’ll add a post on that one later. In this post I introduce a new paludarium design, and it is getting ready to be actually build! It is going to be bigger, better, faster, more! ehhh… more automated than EVER.

The problem with these larger projects is that there are SO many bits and pieces to put together. Today I am writing up part one as I am almost ready to push the button on ordering a complete PCB that will contain practically all electronics required for my new Paludarium 2020 build!

Requirements for the electronics

I wanted to be sure I’d create a PCB that has all stuff on board I might be needing, without overdoing things. Still, I ended up with a huge amount of speeds and feeds. Here they are in random order:

  • I want to play more with the software side, microservices and possibly Kubernetes containers to run the microservices. For this reason, I want to ability to have TWO Raspberry Pi 3B+ that will run Master/Slave or Active/Active microservices;
  • I still want low level control of the hardware through (preferably a single) Arduino;
  • For lighting, I want to be able to individually control at least 2 RGB-CCW led panels, 6 high-power floodlights, 2 Halogen lights, a strip of WS2812B smart leds (Neopixel). Also classic TL-lamp control through 0-10VDC outputs;
  • For air, I want to have fans, optionally heat up the air I inject into the paludarium, and a 24V mistmaker. I also want to measure temperature and humidity inside AND outside the paludarium (so I will know what I have inside and what I will be injecting);
  • For water, I want to be able to control a 12V background pump, have a rain pump, have 2x 12V valves to control incoming tapwater (both direct and through a reverse-osmosis), measure Ph and conductivity. Ow and of course heat the water, add CO2 through a valve, and control an external pump for the waterfall and water sanitizing.
  • Measure temperatures in different places, like water, ambient, heated air etc.

Ok, so that is quite a horrifying list! Still I wanted to make this happen no matter what. Having done embedded hard- and software design in one of my previous lives, I decided to look at modern PCB design tools and quickly ended up in KiCAD. What an awesome (and free!) tool: https://www.kicad-pcb.org/

Design Choices

So in order to make this PCB a reality, I made some design decisions. Here is a list of choices I made in order to realize the hardware:

  • As I need so many A/D inputs, PWM outputs I decided to use a Mega Pro Arduino as the core. It is as feature-rich as the Arduino 2560mega, but more compact plus you can buy them without soldered headers (and I wanted the headers soldered DOWN instead of up to mount it on top or the much larger PCB);
  • I want all power to go into the PCB directly, then have connectors on the PCB where I can directly stick hardware in, and these connectors should also deliver power. No more wire-messes to combine power and signal!
  • To get in more PWM outputs, I decided to add a PCA9685 (I2C controlled 16 channel PWM controller);
  • To be able to add more than one humidity sensor, I decided to introduce an I2C switch so that I can select different I2C devices to talk to in software;
  • I want the absolute minimum 230VAC controlled devices. Use these only when completely necessary, otherwise choose 12 or 24VDC. As I input 230VAC anyway, I also want to be able to “see” the 50Hz signal coming from mains (to either detect power failure and/or use it as a timing source);
  • PCB as small as possible, SMD components where possible, and please just a simply dual layer design.

May I introduce: Artemis v1.00

The Greek goddess Artemis is the daughter of Zeus and Leto, and the twin sister of Apollo. Amongst other things, she is the goddess of wild nature. So I decided to use Artemis as the name of the controller of the wild nature in my home!

There is many stuff on there; there is a massive amount of power supplies going into the board: 5V for logic and the optional WS2812B led strip and powering the Raspberry Pi’s. 12V for the power leds, pumps and valves, and 24V for the RGB-CCW led panels and things like the mistmaker. Finally 230VAC goes in as well, which is switched through 4 relais.

Most low voltage power controlling is done through the awesome IRF540 power mosFET. There is a massive 32 of them on this board!

Most high power outputs are connected through 3.5mm Molex connectors, for the 230VAC stuff I used 5.08mm versions. DC power is fed in through 5.5mm/2.1mm power jacks. For supplying power to the Raspberry Pi(s) I put two USB-A connectors on the board. These just deliver 5V power; no data. Data is provided from a Raspberri Pi’s USB port into the microUSB port of the Arduino, enabling communication but also programming the Arduino straight from the Raspberry Pi. The optional second Raspberry Pi gets connected through extra serial ports on the board.

Have not produced the PCB, because the PCB manufacturer has trouble sourcing the PCA9685 🙁 … Anyway, may I present to you… Artemis v1.00! A complete controller on a 181x121mm board:

Artemis v1.00 top view render: Arduino in the center. 230VAC and Relais on the left, power outputs in the rear and right, 0-10V outputs, USB power connectors, Ph sensor input and other details in front.

2 Responses to Paludarium 2020: Electronics!

  1. Wow very nice and very complex. How are you planning to control and analyse all in- and outputs? I assume some sort of webinterface on the pi? Selfmade or any available solution?

  2. Hi Alex,

    Today the Arduino is controlled by a Raspberry Pi. This Pi reads love data from a meteorological station in Costa Rica, and it then replays the same weather in the paludarium.

    At the moment all controls run through the command line on the Pi today, I plan to add a web interface at some time… If I ever have the time!

Leave a Reply

Your email address will not be published. Required fields are marked *

*