Artemis v1.22: The new automation module

As you may have noticed, I love calling everything a “module” more and more. And with good reason: If you build a project of this size, splitting up in modules makes sense. It allows you to focus on PART of the problem, and replace the module if you find something smarter / better.

Required specs for the new automation hardware

As I was building out something new, I figured it should be big and bad enough to handle anything I want to throw at it, PLUS have room for future expansion. As I was falling in love with many smaller light sources again, and the RGB-CCT led panels, I came to the conclusion that whatever hardware I build, it has to have MANY channels I can use to control and possibly dim all hardware. Just as an idea, I wanted to use three RGB-CCT led panels, and those use 5 channels each for red, green, blue, cold- and warm white. So that is 15 PWM channels at 24V already maxing out an Arduino Mega (which has exactly 15 PWM outputs). So I needed more. Time to grab back to my faithful PCA9586 PWM I2C-based controllers. I would not place them onboard this time, but design them as separate modules that I could either place on top of the Artemis Controller, or optionally somewhere else (just running power to them and the I2C connection).

In the end, this is the huge wishlist I cam up with regarding the automation hardware:

Read more
  • Needs to have a “smart” / web-enabled frontend;
  • Needs to have a “dumb” controller to make sure nothing floods / breaks;
  • Needs at least 3x RGB-CCT (24V) + 10x led 10W powerled (12V) outputs +5 pumps = 30 PWM outputs
  • Needs some digital outputs for control of valves (12V / 24V mix)
  • Needs an ability to control a single NeoPixel led strip (while I am at it – I can use this to draw stars, the moon, sunrise and sunsets);
  • Needs 4x 230VAC relais to switch anything that cannot be lower DC voltage (like aquarium heaters);
  • Needs digital inputs in order to measure water levels;
  • Needs to have multiple I2C channels so I can add SHT-XX humidity/temperature sensors;
  • Needs to have inputs for at least 3 LM35 temperature sensors;
  • Needs to have a very well controlled FAN speed controller for a (set of) 4-pin fan(s);
  • Needs to have an input for a Ph sensor and two more analog inputs for measuring things like water conductivity;
  • RealTime Clock (RTC) added to the hardware.

Can you believe this list!!! Impossible? As it turned out, no… Just a bit complex. I solved the number of I/O’s required by using an Arduino Mega Pro, and extending on the huge amount of PWM channels required with a set of two PCA9685-based expansion modules. One I will run at 24V (delivering 3x RGB-CCT + one spare output), the other will run at 12V (mainly for the 10W “follow the sun” power leds). Arduino’s onboard PWMs will be used for non-lighting things requiring PWM (like DC pumps that require speed control).

Here you can clearly see the design that was made: A large base PCB where an Arduino Mega Pro can be pinned on. Mostly all around the edge of the PCB you’ll find I/O’s. Here the additional boards (Raspberry Pi and two PCA9685 boards) are mounted in a way I can still reach the base PCB. They can also be mounted on top of the base PCB. More compact but harder to troubleshoot 🙂

Rewriting the existing software to work on this new hardware was relatively straight-forward; as the architecture remained mostly the same the majority of work was focusing on the new features. The PCA9685 wasn’t new, neither was the PCA9546A I2C bus-switch chip I already used in an earlier version of the board (1.01). It were the things like the NeoPixel led strip that REALLY took some time to build and get working. But ey, it is all great fun!

On the picture above you can see the base board with an Arduino Mega Pro pinned on top. The additional boards on top are two PCA9685-based boards each carrying 16 PWM outputs, and the third board is the Raspberry Pi 3b+.

Also visible in this picture are two RGB-CCT led tiles (one 30x30cm and one 120x30cm), A 10W power led with a collimator lens 3D printed to it on a heatsink, and a 4-pin fan that can be controlled (PWM) and measured back (actual RPM).

A closeup on one of the PCA9685 modules can be seen here:

Close up on one of the PWM extension modules, based on the PCA9685. These are called “Apollo modules” in honor of the original modules I used for lighting back in 2005 (!!). There are two variants: One with 3×5+1 channel (this one),and there is also one featuring 16×1 channels. All controlled by I2C, all fully opto-isolated.

All of the home-built PCBs were designed in KiCAD and were produced (including SMT mounting) by JLCPCB (Kudo’s to them for always creating perfect PCBs with all SMT part mounted for me; my eyes aren’t getting any younger 😉 ).

If you want to know all the things this board can do, stay tuned! Way more cool stuff coming soon!

Leave a Reply

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