CARL the CPR Trainer - Back
CARL the CPR Trainer - Front
Everyone should be trained to a basic level of CPR. There are some fantastic instructors out there, but with large class sizes it is not possible for them to provide the continual feedback necessary for effective CPR practice
What it does
CARL (CArdiopulmonary Resuscitation utiLity), the CPR trainer uses visual and audio indication to instruct the user on proper CPR hand placement, BPM and pressing force
How I built it
At the heart of CARL is the Genuino 101. The onboard accelerometer is used to determine the frequency and force of compressions. The onboard gyroscope provides tilt information for the hand placement detection algorithm.
The CPR dummy was graciously donated by Apex Training Solutions. The LCD, capacitive touch sensor, LED's and buzzer are supplied by the Grove Starter Kit. I used a hand drill and hot glue to make the assembly.
The code base is Arduino. The BPM, force and hand placement algorithms were written and tested over a series of days. I wrapped up the project with a custom buzzer jingle and added the LCD.
Challenges I ran into
Originally, I had set a goal of accurately determining the depth of compression, but after doing some reading and running my own tests it became apparent that integrating accelerometer data to find velocity and distance has native drift problems that are not easy to work around.
In similar fashion, the gyroscope drifts on power-up. To get around this, the user must place the dummy on a flat surface, power up the Genuino and wait 20 seconds before commencing compression's.
Another issue I ran into was with the Grove accelerometer. I hot glued it on the airbag to measure breath frequency and force, but the accelerometer broke and I didn't have time to implement a new one.
Accomplishments that I'm proud of
I am very happy with the repeatability of the frequency and force algorithms. Also, the time spent wrapping the project in 'bells and whistles', such as the LED's and buzzer, proved very rewarding.
What I learned
Do not glue an accelerometer to an airbag before testing if it actually works
Do not switch computers the day of the 'shoot and think there won't be library problems
What's next for CPR Trainer
I would like to write a custom CPR cpp library, improve the hand placement detection algorithm and create a bluetooth-based Android app for the instructor to monitor the class.