Here in Carinthia/Austria, we not only have a beautiful surrounding and famous lakes like the Wörthersee, but also Hard- and Software affine people loving to automate and control everything while enjoying our beautiful country. A friend of mine, founder of two very well-known bars directly at the Wörthersee, always tries to get the best out of everything for his guests. He found a series of well-designed products made out of milky plastic - plant pots, sitting possibilities etc. - which are loved by the guests of his bars. Those products already have a build-in RGBW LED source, but they cannot be controlled by the rest of his automation system which is based on DMX (There are a lot of Protocol-Standards for architectural lighting applications - the most common is for sure DMX and network-implementations of the protocol like ArtNet, in his bars both are used, DMX and ArtNet). To create different lightning scenarios, he asked me if I can find a solution to integrate the furniture into one system.
I started by writing down the requirements.
- Use the existing housing and LEDs (only exchange Control)
There are three LEDs in a series power by a 12 volt AC/DC supply with a constant-current regulator from On-Semiconductor. It is quite easy to control them by an NPN transistor and a simple PWM signal. The housing itself is very space-constrained, so there are only 60x35 mm of space for an additional PCB.
- Supply Microcontroller/Receiver from the same Power-Supply as the LED
The LEDs are powered by a 12 Volt power supply, so there is the need for a DC/DC converter. I love RECOM for their easy to use high quality products, so I decided to go with their new SMD line of non-isolated DC/DC converters.
- Mesh-Network
Why Mesh-Networking? I tried to use Pycom WiPy ICs as there is a WiFi network available at the bar, but the WiPy did not connect the Wifi due by the capabilities/coverage of the WiFi access point. Building up a stable WiFi at each location on the big terrace of the bar was not possible without adding additional access points. And even adding additional 20-60 WiFi attendees maybe not the best idea.
So, I decided to give the Digi XBee-3 module and XBee-Mesh a chance as it promises self-healing capabilities and wide-area broadcast transmitting. My implementation allows to control a lot of individual nodes by a central transmitter – even adding additional lights is as easy as uploading to software. After some tests with the Mesh-Kit it turned out to be the perfect solution.
- Allow easy programming of the XBee-3 module using an USB cable
The Digi XBee-3 Modules are easy to use and have a MircoPython Kernel. I use an FTDI-Chip to configure and upload code to the XBee-3 Module, my Design is based on the Digi evaluation Kit.
- Cheap wire-to-board connectors
Connectors are a complex topic. To keep it short: I use the JST-SH Series, easy to use for reflow soldering, small and cheap.
- Groups
Allowing to easily create groups of lights so they can stay within the same XBee-Mesh but have different colors. Therefore I added a Dip-Switch to the XBee-3 Module, which allows easy addressing of the board.
- Other Requirements
I always try to make my designs as robust and flexible as possible, so I wanted to make all Pins of the XBee module available on a board-to-board connector to allow myself to reuse my design in a simple way. Even the RX/TX Lines of the XBee Module are automatically routed to the FTDI-Chip when the USB cable is connected, when you remove the USB Cable the RX/TX Lines are routed to the connector. I use MUX-ICs from Texas-Instruments for that purpose.
After defining all requirements, I started the PCB Design. There was only one challenge, creating the PWM Signals: The XBee-3 has only one PWM channel but I need at least 4 to control the RGBW LEDs. A very handy solution is using the I2C-to-PWM controller from NXP, I found the chip on the servo-control board from Adafruit. Now, I have 16 PWM channels, 4 of them are connected to the NPN transistors, the other 12 channels are available on the board-to-board connector making the final PCB a extremely flexible solution. Add an additional Microcontroller using the XBee only for Radio-Communication or extend the Micropython kernel and add some hardware on a second PCB - with 12 freely-available PWM channels you can control a lot.
25 of my boards are now working very well and I am thinking about selling the PCB for other makers. If you are interested in controlling LEDs or even Servos using XBee-3 controllers, give me some feedback!