Open Source EMDR Machine. The Whole Blog.
Abstract
My project is to make a fully functional EMDR machine. EMDR is used by psychotherapists in the office setting to reduce patients’ stress and anxiety. It works very well for patients diagnosed with depression, panic attacks, PTSD, addictions, eating disorders. And now due to Covid-19 almost everyone even without diagnosis is stressed and anxious. However this machine costs over $500. My goal is to make a fully functional EMDR machine with some enhancements that I believe will make it even more useful. I plan to make it as cheap as possible, and publish the instructions and the code on the web. This way therapists from poor countries, like Belarus, Ghana etc, can afford it and help people.
I am a big fan of EMDR and already made a partial version of the machine, with only Arduino, DC motors and potentiometers. It can be found However, DC motors do not feel as right as vibration motors and if the client clinches their fists they will stop working. Also I believe a full version of the machine with a user interface and my enhancements will be much more useful.
The EMDR theory
During the session the therapist will start the machine and will have the client recall a disturbing event. This will include the emotions and body sensations that go along with it.
Gradually, the therapist will guide a client to shift their thoughts to more pleasant ones. People who use the technique argue that EMDR can weaken the effect of negative emotions and the disturbing memories will become less disturbing.
Description of the machine
The commercial EMDR machine consists of tappers, headset, controller and light bar.
It has three main modes, that can be also combined together.
- Light mode. Light on the light bar is moving back and forth, and a client is following it with their eyes.
- Vibration mode. Client is holding tappers (small vibrating pieces) and they vibrate in a cycle, one after another.
- Sound mode. Client has a headset on, connected to controller. Sound in the headset cycle from the left ear to the right ear, and back.
When modes are combined, they are synchronized. All cycles repeat with the same speed. I.e. When light on the light bar in the most right position, client hears sound in the right speaker, and the right tapper vibrates.
Hardware Implementation
Controller
For the controller of the hardware itself (light bar and vibration tappers) I will use Arduino Nano 33 IoT.
Light
BarFor the light bar I will use WS2812B Smart RGB LED Strip. I will enhance the light functionality by allowing the client to choose the light color he prefers. I do not plan to use a tripod. In permanent therapists’ offices the LED strip can be attached to the wall, for temporary offices I will use wall corner trim from any hardware store.
Tappers
For tappers I will use 2 vibration motors. I am also thinking about adding 2 more vibration motors on the band, to be held against the client’s chest. It is not a part of classic EMDR machines, but this method done separately has proven to be effective for clients. I assume a combination of 2 sets of tappers will make results even more effective.
Headset
Headset is a regular headset.
Sound
Sound will be played either through Arduino mini mp3 module, or Android phone itself.
Software Implementation
For synchronizing all the parts and providing user interface I will use an Android phone. I will also add the option to skip the use of the light bar and show the light ball running back and forth on the phone screen. There will be 3 parts of software implementation:
- Arduino code to control vibration motors for the tappers, mini mp3 module and WS2812B strip for the light bar. It will be written in C, in Arduino IDE. I will use an open source FastLED library.
- Android and Windows code for overall control of the machine and additional light and sound functionality. I plan to write it in C#.NET using Xamarin Forms package. Xamarin Forms package is platform independent, so I expect to use the same code base for Android and Windows app, maybe with minor changes.
- Communication between Android and Arduino Nano. This is the hardest part for me. I have to research it, but currently I am open to all options: serial cable, bluetooth, wifi.
Making the device accessible to everyone
First of all, I will keep a blog of my progress with all the required steps on Element14
I also plan to publish hardware assembling instructions on Instructables
I plan to publish all the code as open source on GitHub
That is it for now.
Top Comments