An overview of the Lambent Lantern technology from Dr. Lohiss Spykes – for those who like to get their “inner geek” on…
At the heart of the embedded electronics driving the device is the Teensy USB Development Board – a compact micro-controller development system compatible with the popular Arduino open-source electronics platform. The Teensy is programmed over USB via the “easy-to-use” Arduino software. For the Standard version of the Lambent Lantern we’re using a Teensy LC (48 MHz Cortex-M0+, 3.3V signals) and for the Deluxe version we’re using the more capable Teensy 3.2 (72 MHz Cortex-M4, 3.3V signals, 5V tolerant). We settled on the Teensy after testing but running into issues with both the ATTiny85 and cheap Chinese clones of the Arduino Nano.
While multi-colour LEDS are ubiquitous in electronic gadgets, individually addressable RGB LEDs allow complex animations of light and colour to be created programatically. Incredibly popular, they’re now available in a range of types – e.g. NeoPixel (WS2812B) and DotStar (APA102) – as well as form factors – e.g. strips, sticks, matrices and – as used in The Lambent Lantern – rings.
For the Standard version of the Lambent Lantern we’re using a clone of the Adafruit NeoPixel 24 LED ring and for the Deluxe version were using a Sparkfun LuMini 3” 60 LED ring. Apart from the slightly larger size and an additional data line, the Sparkfun ring is a bit brighter overall but more significantly, has a far higher LED resolution – so the various animated patterns are clearer and more defined (check our ring comparison video below).
In the prototype device we used the Adafruit NeoPixel library to control the LEDs and create the various patterns. Production models may shift to the FastLED Animation library which isn’t actually faster per se but is arguably easier to use and does have many more functions optimised for manipulating the array/data that holds the colours.
By far the most challenging development in the Lambent Lantern prototype was finding a technological solution for robust and dependable capacitive touch buttons. Seemingly simple and intuitive to use, capacitive touch is fiendishly tricky to get right. Multiple factors can impact: – noise (unwanted electromagnetic interference (EMI) along the cables); lack of an appropriate ground sink (an infinite source or sink for charge, which can absorb an unlimited amount of current without changing its potential); and seemingly most significant, parasitic capacitance (an unavoidable and usually unwanted capacitance that exists between the parts of an electronic component or circuit simply because of their proximity to each other). The Lambent Lantern system takes all these factors into account to a greater or lesser degree – but it involved testing multiple approaches before we got it working satisfactorily.
We tried:
- code to turn any Arduino pin into a capacitive touch sensor;
- the in-built capacitive touch pins of the Teensy;
- the Adafruit 12 x Capacitive Touch Shield For Arduino – MPR121 as well as cheap Chinese clones;
- the Adafruit standalone 5-pad capacitive touch sensor breakout;
- and the HobbyTronics Touch Switch IC but using 2M variable trim pots rather than the recommended 1M resistor.
While these all worked more or less, none were robust and dependable enough.
Finally we found the Microchip MTCH102-5-8 series of capacitive touch controllers. Only available in a SMT form factor (compact surface mount technology as opposed to the larger dual in-line pin package) they are a bit fiddly to solder up and integrate into the circuit – but they have “active guarding capability”.
Active guarding helps overcome parasitic capacitance by using one input pin of the IC as a sort of system capacitance reference. Conductive touch buttons are mounted in front of and within 2mm of a larger conductive plate – the active guard. In a technique akin to balanced audio lines – where the audio signal is split in two but one line is phase inverted before being recombined at the other end to cancel out the noise – the active guard line is used to “recalibrate” the touch button signal and improve reliable detection.
The MTCH102-5-8 series also features an input pin that determines the sensitivity of the touch/proximity sensors based on voltage from an adjustable pot.
I could go on… but I can see your eyes glazing over…