EMDR Light Bar
Light Bar to assist with EMDR Therapy
My new favorite project, joining up my love for making stuff and need to release some old personal demons
Eye Movement Desensitization and Reprocessing (EMDR) is a psychotherapy that enables people to heal from the symptoms and emotional distress that are the result of disturbing life experiences.
There are many ways to do it, some of which do not require any equipment at all. I felt like building a tool that a capable therapist can use to assist my healing journey was the right move for me. Plus commercial light bars cost a fortune.
Ripe for a project. Lots of fun, hopefully lots of healing.
Basic Features
- Visual - LED light pixel that moves side-to-side on a horizontal bar, a la Knight Rider
- Audio - Tone generators providing audio feedback at each extreme of the light bar
- Tactile - Hand paddles with motors providing haptic feedback
- Controller - Compact control box helping the healer to work her magic
Good Stuff
More Good stuff is yet to come, but tomorrow is my first EMDR session and I really want to get the User Manual written up.
Pics of the overall system nice and put together, plus if we’re lucky some video of it in action (really exciting, a single pixel animating across an LED strip). Coming Soon™
Lightbar
The lightbar itself is pretty simple. Long piece of wood, and LED strip housed in a pretty case, two speakers, and an RJ-45 jack for handy connection of 7 wires (with an unused dangler).
A wee might tricky soldering in that confined space but slow and steady gets you there.
Small act of tap dancing with wood glue and scrap lumber to build a housing for the RJ-45 connector.
Embedded 1/4 to 3/8 inch threaded adapter to allow for mounting on a standard tripod. The wood I tested this with was WAAAAAY harder than the soft pine in the production model, leaving me with a false sense of security over how sturdy this is. I fear that this is the weak point likely to split in the real world. Luckily I supply a Lifetime Warranty and can add on a piece of hard wood to fix this if needed.
Hand Paddles
Hand paddles provide haptic feedback that can enhance the visual experience of tracking the moving light. Why not mount some motors in some actual (replica) hands to serve the purpose? Easy to replace them with less goofy wooden dowels or something similarly boring via quick connect adapters.
Controller Box
The box itself is pretty basic rectangle, with some twists. Designed it in Fusion 360, sliced in Cura, printed on Ender-5 Pro controlled by Raspberry Pi 3 B+ running OctoPrint. There’s a mouthful. Plus the custom OctoPrint plugin I wrote to text me when the job pauses for embedded nut insertion.
- 4 nuts embedded in elevated standoffs to secure the circuit board
- 4 nuts embedded in special housings at the top of the box to secure the face panel
- These required some careful design and supports during printing because you can’t print into empty space.
- 1 hole for the USB-mini Arduino Nano connector
- 2 holes with associated screw holes for the RJ-45 connectors
The alignment of external connectors is always a delicate issue. For example, the USB-mini connector on the Arduino Nano must precisely line up with the hole in the 3D printed enclosure box. To make this happens, you must carefully plan out how the Nano will mount to it’s circuit board, how that circuit board will mount to the enclosure, etc. Sure, you can grossly oversize the hole in the box and give yourself lots of leeway, but I really enjoy the end product if things are pretty snug, making it worth the effort.
The mounting of the LCD display was a little tricky. There are two “obstacles” that interfere with nice simple rectangular mounting. One is a 14-pin header, the other is an angled piece of the backlight that extends beyond the normal boundaries. A 3D printed jig to square things up does the trick.
Controller Front Panel
This is my first project marrying up a face panel laser cut in plywood with a 3D printed enclosure. Soooo much fun and soooo versatile. My previous style of CNC-milling everything from a piece of wood still has a special place in my heart, but this really went smoothly and produced a nice outcome.
This was also my first time engraving text on wood painted and sealed with Polycrylic. Even through the masking tape, the Polycrylic kinda got funny from the laser, so there’s an opportunity to expore new surface finishes for use with laser engraving in the future.
Controller Electronics
Hand soldered point-to-point prototype breadboard. While beautiful in their own right, the pics are here to help me in the event I need to diagnose an issue without cracking open the enclosure.
The potentiometer knobs I use have a little notch that stick above the flush mounting surface, allowing it to stick into a hole in an enclosure that prevents the whole knob from rotating if a user twists too hard.
For this 3mm thin plywood panel, not really enough thickness to allow for the whole notch. Some side snips create a perfect modification, removing most of the notch, while leaving just enough of a pointy piece of metal to dig into the plywood without penetrating to the surface.
The side view pic shows one altered and one unaltered knob notch. The second pic shows a sample divot just off to the right of the hole up and to the left of the knob. Subtle effect but I had fun making these, and they function exactly as I hoped.
Bringing the panel and the circuit board together, mostly Dupont connectors to make everything modular. It is a tight squeeze, but that’s by design, it comes together just right.
Motor Control Circuit
Mostly my notes for next time I want to control one of these little haptic-feedback motors.
When looking at the NPN3904 with the flat towards me, curve away, legs down…
- Emitter - left - GND
- Base - middle - resistor to I/O pin (1k brown-black-red)
- Collector - right - capacitor & negative (non-striped) leg of diode & negative side of motor
Then the other side of capacitor & positive (striped) leg of diode get:
- positive side of motor
- juice (+5V or other power supply)
Skills Review
Sometimes it is fun to step back and think about what goes into a project like this. The Maker community tends to diminish what seemingly simple creationg require, I find it worth appreciating complexity from time to time.
- 3d modelling (Fusion 360)
- 3d print slicing and gcode (Cura)
- 3d printer control (OctoPrint / raspbian)
- 2d layout (Inkscape)
- Laser cutter/engraver design and control (LightBurn)
- Embedded controller programming (Arduino IDE)
- NeoPixel control
- I2C LCD display
- Audio control
- Motor control
- Reactive user interface
- Electronic circuit design
- Soldering
- Basic hand tools
- Basic wood working
- Wood painting and finishing
See? Piece of cake.
User Manual
General Notes
- She is rugged, but not too rugged. Please be gentle.
- Where the lightbar attaches to the tripod is a weak point. Please be gentle, and especially don’t smack the bar while it is screwed to a tripod.
- Use the supplied cables & USB plug. Only the USB-A to USB-mini cable providing power is stock, all the rest are custom modifications.
Setup
- Black Cable - Connect the light bar into the controller with the long black cable. When you hold the controller positioned for normal usage (i.e. you are looking at the face with the knobs down by you, the screen up top, and the blue button to the right), the light bar plugs into the left receptacle
- Red Cable - Plug red the USB-A to USB-mini cable into the middle receptacle, and then into a USB power adapter. This will power it on (takes a few seconds to boot up)
- Blue Cable - Optionally (only if using hand paddles) - plug the hand paddles into the right receptacle
Knobs
- Goal - Use the Goal knob to specify how many trips the light should take for a given press of the Play/Pause button
- A trip is a “round trip”, i.e. starting on the left, the light moves to the right, and returns to the original position at the left. That is one trip
- The specified goal number is in the upper-right of the display
- 24 is a decent choice
- Speed - Use the Speed knob to specify the speed in trips per minute
- The specified speed (trips per minute) is in the lower-right of the display
- 140 is a decent choice
- Hands - Use the Hands knob to specify the duration of the hand paddle vibration
- The specified duration (in milliseconds, NOT seconds as indicated on the control panel) is in the lower-left of the display
- This does double-duty to specify the duration of the audio tone, if volume is turned up
- 70 is a decent choice
- Color - Use the Color knob to choose a color for the light.
- Purple is a decent choice
Playing
- Play - Press the Play/Pause button to activate a cycle
- The light will travel as many trips as the specified Goal
- The Current trip number is in the upper-left of the display
- Pause - The Play/Pause button can be used to pause before the goal is reached. Press again to resume
- Reset - To reset the goal to zero (and to reboot the screen if it gets all messed up)…
- Press and hold the Play/Pause button for 2 seconds
- Release the button once the Current indicator resets to 0
Audio
If you want to include audio feedback, twist the Volume knob to select how loud the tone should be.
Details follow, but long story short, stay away from the off position at fully counterclockwise twist.
The duration of the tone is unintuitively specified by the Hands knob. The duration in milliseconds will display on the screen in the lower-left Hands (sec) section. This value is double-duty for both tone and hands.
Special note about the Volume knob - This knob is different than the others and it is FUNKY. If you twist it all the way counterclockwise, it’ll click into an “off” position. This is broken. If you twist it off, it’ll turn the audio off. If you twist it back on, it’ll foul up the LCD screen and you’ll see gobbledy-gook. If this happens:
- Make sure the Volume knob is NOT in the off position. You can make it silent while still being in the on range.
- Reset the unit by pressing and holding Play/Pause for 2 seconds.