Bluetooth Knife Sharpening Angle Monitor

This project was to a create training device for knife sharpening to give someone instant feedback on their ability to hold and angle during the process. The project uses an Arduino Nano BLE Sense Rev2 that interacts with a python program that receives the angle values.

Details

The Sharpening Assistant project was built using the native Arduino C++ library. When starting the project, I knew I wanted to use a small board that is Bluetooth capable so that the board can be attached to the blade that is being sharpened with minimal impact to the user. The development process was based around figuring out how to create Bluetooth characteristics to transmit data from the peripheral. The other part that proved to be difficult was creating an algorithm that properly filtered out noise from the IMU.

When trying to find a filtering algorithm for angle measurement that was best for the application, many paths were pursued. Initially, a complementary filter was implemented, but the cyclical accelerations inherent to the sharpening motion created inaccurate angle measurements. From there, I looked into and implemented many algorithms. I tried a couple of more advanced filters, including Mahony and Madgwick. I found, for my use, these were difficult to tune and since I knew the motion that I wanted to filter I actually went back to the complementary filter. Instead, this time, I included a few simple filters to address the exact movements from this application that were causing noise. What I landed on is an angle measurement algorithm that is heavily weighted to gyroscope measurements that will only use accelerometer data if the RSS value of acceleration has been close to 1 over a period of measurements.

Scripts / Algorithms

In order to have a working project, there were two programs that were created. These are listed below:

Lessons Learned

There are many lessons learned while doing this, but here are a few:

Accomplishments

Improvements and Other Variations to Try