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.

Built With

Share this project: