DIYC Renard Tester
Hephaestus – a tester for the rest o’us
For testing controllers after completion, I hated firing up my sequencing software and setting up custom profiles, sequences, etc. to get things tested. There’s numerous issues that seem to crop up. First of all the software available is Windows based and since I don’t use Windows that means I have to fire up a VM and install any updates (hopefully without reboots) just to get started. Once that’s going, I have to ensure the USB to RS485 dongle is passed through to the VM and stays on the same COM port. Then I would have to configure the plugins, channels, etc. My sequencing software of choice is Vixen 2.1. For testing I like to create a simple ~30 second chase (a couple of seconds per channel) and loop it. This will allow me to plug in an SSR to each port, check all channels by moving lights to different plugs, etc. Unfortunately Vixen seems to crash after about 8 loops. If I’ve saved it and the COM port is released properly, I simply restart Vixen, but with all the failure points for the non-production setup, this is actually more painful than you’d think.
“In the field” testing/debugging can be done one of a couple ways. You can take a laptop out in the yard/roof/etc. to run tests. You can bring a controller to the garage. If you have extra (of the same type) you can swap it out, or run a really long cable to the yard. All of these are painful as well. The “bring it to the garage” one can be especially painful depending on the controller, hookup, etc. Luckily I didn’t have to troubleshoot any mid-season failures last year, but with a growing show I might have to check things in the yard this year. This device can make it easy to isolate controllers and test Renard controllers.
Enter my tester Hephaestus.
The idea is to have a handheld tester that can spit out Renard data to help test and diagnose Renard equipment. I’ve been wanting to do this for quite some time, but this week I finally had the free time to get this thing (mostly) done. I have about 80% of the code done all using 3 basic blocks of hardware. First, you have the Diavolino (arduino clone). Second is the Adafruit RGB LCD Shield, and lastly you have my breadboarded RS485 output board.
Evil Mad Science’s Diavolino
This arduino clone was chosen for a couple of reasons. The obvious one being that I had one laying in my tinker drawer. The other not-so-obvious reasons were that it’s cheap, comes as a kit ready to run on 3 AA batteries, and lastly the FTDI cable 6-pin header. This actually becomes an integral part of this project because the LCD shield I’ve chosen isn’t really stackable. It can be the top-layer, but if I were to try designing a custom stackable shield to go between the arduino and the LCD shield, it would have to use really tall pins to clear an RJ45 on the custom shield. Since I’m using this board I can simply create a simple, small breakout for the RS485 using the FTDI headers and if I need to change the firmware, I simply unplug that board and in goes the FTDI cable. If these are ever done in a “group buy” type setting, I would want to add 1 part to the kit that Evil Mad Science ships and that is a 28-pin socket for the ATMega328.
Evil Mad Science’s Diavolino Product Page | Price: $11.95
Adafruit’s RGB LCD Shield
The Adafruit LCD shield I’ve chosen was also chosen partly for the obvious “I had one laying in my tinker drawer” reason, but again had additional not-so-obvious benefits as well. I also have a couple HD44780 displays (which the shield is based on), but it requires 11 pins to drive. I would then be close to the maximum pins and I would have to be clever about adding momentary switches for configuration. The Adafruit shield includes 5 navigation buttons (up, right, down, left, select) and even better, uses i2c so the LCD and nav buttons only take up a couple pins, all packaged in a convenient shield form factor.
Adafruit’s RGB LCD Shield Product Page | Price: $24.95
RS485 Breakout Board
I’m still working on this portion, but I’m thinking I want some multi-function support here as well. Currently my breadboarded version simply takes the TX line of the arduino clone and throws it through an ST485BN to an RJ45 breakout board. This plugs into the RS485 input on a Renard controller. I started working on a schematic to support some additional features. These include: Renard/DMX pin jumpers, a second RJ45 to be an SSR input/output tester, and have a 6-pin header to hook to the Diavolino via ribbon cable. I’m new to designing these things, so I’ll be seeking help from the community to get this done correctly and cost effectively.
Custom designed! | Price: $5.50 for 3 boards shipped from OSH Park
Tying it all together
My goal is to be able to complete one of these testers for about $50. Since the LCD comes in at $25 and the Diavolino at $12 that leaves the target price for my breakout board at about $15. The current “BOM” only includes an RJ45 jack, 3 resistors, and an ST485BN. To add the features I mentioned, it will require an additional RJ45 jack, 4 LEDs, 4 additional resistors, and 4 momentary push-buttons. It might not be possible to hit the low price point I want, but I’m sure going to try.
I wrote the code in C++ and used an arduino makefile project I found to easily compile Arduino projects outside of the Arduino IDE. It uses the Adafruit LCD library and Arduino’s default EEPROM/Serial libraries. I preferred developing outside of the actual Arduino IDE because I wanted to use VIM since the Arduino IDE which is lacking many features I use while developing including: movement, window splitting and copy/paste operations.
The code available on GitHub here: https://github.com/Materdaddy/hephaestus.
- Renard Output
- Save to EEPROM
- Baud Rates: 19200, 38400, 57600, 115200
- Max Channel Count
- Min/Max dimming values
- Manual Mode (Min is sent to all channels, Max value is sent to the “selected” channel)
- DMX Output
- Speed-Configurable Chases
- Pre-packaged Patterns (Alternate all on/all off, fades, etc.)
- DMX Start Address Programming?
- Starting Renard output at a specific “start address”