Years ago, I discovered Arduino during a four-month project. I was amazed by the technology and all the possibilities it offered. Through this post, I’d like to share my personal experience with Arduino, along with more generally embedded technology. I hope that by sharing this experience, you will develop a keen interest as much as I have.
In 2014, I joined a small French medical technology research company. The project that I worked on was called the “Myo-Neuro Simulator”. This device was initially developed in a neurologic laboratory in Moscow and designed to artificially contract muscles using electrical impulses.
The purpose of the device was to give partially paralysed patients the ability to walk. This experiment was proven to have worked in Moscow on children with Cerebral Palsy (weakened muscles pathology) for several 20-minute sessions.
Piqued by this technology, the CSTL (Scientific and Technological Cooperation of Lorraine) contacted the company to adapt it to European medical standards and norms.
By the time this project was assigned, a clinic in Nancy showed interest in the project and expected a functional device within the next months to perform clinical trials on rehabilitating patients.
The first phase of the project was to study the actual device to understand its behaviour and correct what couldn’t fit into European medical norms.
Studying The Product:
After receiving a prototype, a hardware engineer studied the device and found that the original flow of impulses could be dangerous for patients. The Russian device actually used to send modular charged impulses regularly.
This setup could produce burns of the cutaneous fabric (the tissue located between skin and muscle) by overcharging it on tension. Therefore, we modified this signal by sending a negative impulse after each positive impulse to lower the tensions in muscles, shaping the signal like this:
This modification led us to change the whole device by replacing the actual firmware with a brand new microcontroller.
After studying several technologies, we ended up picking an “Arduino Due”, a microcontroller card which we could reprogram using its own language based on C and C++.
Programming a microcontroller enabled us to create a link between the hardware and the software. Basically, the entry and the result of the program are made through analogical inputs and outputs (while the program itself is digital).
On the entry side, elements such as a potentiometer can be added to tune the signal. Doing so allows you to drive the analogue signal that your binary program will receive. At the other end, you can plug a component that allows you to monitor the activity such as an LED.
One specific constraint of using a microcontroller is that the program runs in an infinite loop. This means that once the program is launched, you cannot stop it. It is as though the program is constantly in a “listening mode,” waiting for any analogue input that could come at any time. It doesn’t have the option to end like other programs usually do.
There is also a “communication input” on the card where any communication device, a bluetooth receiver for example, can be plugged in to feed the microcontroller with information. This input can receive more details than any switch could give. This comes in handy when setting up the parameters of a stimulation session on the device.
As we were changing the firmware, with the agreement of the clinic, we decided to make better use of the potential of the microcontroller by giving it an upgrade.
As an upgrade to the initial device design, we added an angle sensor. The purpose of this sensor was to calculate the walking cycle of patients. By plugging it on his valid knee, the Arduino could evaluate his walking cycle, and stimulate his calf and thigh to reproduce this cycle on his partially paralysed leg.
After discussing with clinicians, and with the constraints of the infinite loop as core function, we decided to set up 3 different modes to manage different uses of the product:
- Rest Mode: The device is just listening, waiting to receive information from the analogical inputs
- Test Mode: The device sends a flow of impulse during a second; this mode is used to gauge the strength of the impulse to adapt it to the patient
- Stimulation Mode: This mode is the most complex one; it needs several parameters such as the strength of the impulses (previously determined using the same device in Test Mode) and the time of the session (20 minutes by default)
It’s possible to easily change the device’s state and impulse strength through the bluetooth receiver connected to the card.
In the end, the prototype was tested in a local clinic on a patient whose body was partially paralysed after a stroke. The device worked successfully and had opened up many more possibilities when it comes to improving patients’ life.
By the end of this project, I was amazed by the ease of use and the great potential of this technology. This experience offered me proof that a harmonious combination between physical elements and algorithms can lead to endless possibilities.
It has also shown me that, with simple and easily accessible technologies and components, such as Arduino hardware and components, we are able to drive change and make the world a better place.