Introduction: Knife Sharpening Angle Coach With Bluetooth & Arduino

About: Making and sharing are my two biggest passions! In total I've published hundreds of tutorials about everything from microcontrollers to knitting. I'm a New York City motorcyclist and unrepentant dog mom. My wo…

Precision sharpening skills aren't developed overnight! Here's a high-tech way to monitor your knife angle during sharpening, with the help of an absolute orientation sensor and bluetooth microcontroller. This project is a collaboration with Alex French Guy Cooking!

This is an intermediate level Arduino project, so if you're an ultra-beginner or a bit rusty, brush up with my free Arduino Class.

Pick up the following components (find them in an Adafruit wishlist or from Amazon affiliate links below):

Tools you'll need:

To keep up with what I'm working on, follow me on YouTube, Instagram, Twitter, Pinterest, and subscribe to my newsletter. As an Amazon Associate I earn from qualifying purchases you make using my affiliate links.

Step 1: Software & Configurations for Feather Bluefruit 32u4

Before you can communicate with your microcontroller, there are a few setup tasks, which we'll walk you through here!

To program your Feather board from your computer, you'll need to add the Adafruit boards package to your Arduino IDE software (not supported by default).

The first step of that process is providing a URL to the Additional Boards Manager. In the text box near the bottom of the Preferences window, paste in exactly this text:

If the box was not blank when you opened the Preferences window, you may have some other boards already installed. If that's the case, append the text box's contents with the above URL, using a comma to separate multiple URLs. Click OK to close the Preferences window and save changes.

Navigate to the menu item Tools-> Board:(board name)-> Boards Manager. Allow a moment for the boards manager to download its index, then start typing "adafruit" into the search bar.

When you see "Adafruit AVR Boards by Adafruit," you can stop typing in the search and click "Install" to get the latest boards package installed inside your Arduino application. Plug in your Feather. On Windows, you will also have to install a driver.

As with all microcontroller projects, be sure you're able to program the Blink sample code to your board before proceeding. Open the sketch from File->Examples->01.Basics->Blink, or copy the following into an empty sketch:

void setup() {
  // initialize digital pin LED_BUILTIN as an output.

void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second

Under Tools->Board:, select Adafruit Feather 32u4. After plugging in your Feather Bluefruit, you should see it appear under Tools->Port:. If none of your ports are labeled, try unplugging your board, checking
the Ports menu, then replugging your board and checking the Ports menu again. Whichever port name disappears then reappears is likely to be your Arduino board. On Windows your port will likely be called "COM3" (or higher numbers) and on OS X it's likely to be something like "/dev/cu.usbmodem1461" (with different numbers in place of those shown).

Now click the Upload button (right-facing arrow) to transfer the Blink example code to the Arduino board.

You'll also need the following libraries, available by searching the Library Manager (Sketch->Include Library->Manage Libraries...) or download and install the old-fashioned way:

To receive and display sensor values from your circuit over bluetooth, you'll need a mobile device running the Bluefruit LE Connect app for iOS or Android.

Step 2: Build Breadboard Prototype (Optional)

I always like to build a breadboard prototype of my circuits before I commit to the final assembly, but then again I make things like this more than most folks and generally have two of everything. This particular project's parts are a bit pricey, and not easy to convert from breadboard-friendly to free-wire compatible, plus the circuit doesn't have that many connections-- so I think you'll probably do fine assembling it straight away. This time, you can learn vicariously from my breadboard experience. For example, I learned that the relevant axis to monitor for this project is Z (yaw) for the desired orientation of the sensor (skinny to line up with the Feather, which will run longways along the knife blade).

Step 3: Arduino Code

The code for this project is very barely modified from one of the bluetooth library's examples, accessible under File->Examples->Adafruit BluefruitLE nRF51->ndof_bno055. If it does not appear in your Arduino menus, then you do not have the library installed correctly, and you should go back to the setup step.

The changes we made simplify what's sent to the mobile device to just the desired angle (UART is sorta slow so there's no reason to send extra data), and massage that number to always be positive, even if you flip the device upside down.

    // Send abbreviated integer data out over BLE UART
    //ble.print("X: ");
    //ble.print(euler.x(), 1);
    //ble.print(" Y: ");
    //ble.print(euler.y(), 1);
    //ble.print(" Z: ");
    if (euler.z() > 90.0){
      ble.println((180-euler.z()), 1);
    } else if(euler.z() < -90.0){
      ble.println((180+euler.z()), 1);
      ble.println(euler.z(), 1);

Our version also abstracts the bluetooth configuration into its own file in the same sketch folder (matter of preference), and comments out the following line right at the beginning of the setup:

while (!Serial);

which interfered with the device's ability to send data without being connected over USB.

To get the code for this project, download and unzip the file attached to this step and upload it to your Feather Bluefruit 32u4 using your Arduino software. If you're having trouble uploading, revisit the setup step to get your board settings and libraries in order.

If you'd rather avoid bluetooth altogether, you could swap the microcontroller for a Feather 32u4 Proto, and use the Adafruit BNO055 Arduino library sample code as a starting point.

Step 4: Assemble Circuit

Strip and tin the ends of some small gauge silicone coated stranded wire. The tinned ends should fit through the tiny holes on the Feather without catching any strands or scrunching, which could cause a short circuit that doesn't function.

Solder the wires to the microcontroller, switch, and the sensor according to the circuit diagram. Note that two wires need to go to ground, and it's easier to connect them both at the same time.

To keep the sensor parallel to the blade, I mounted it on the underside of the microcontroller board with a small piece of flat double-stick tape, and used thick neodymium magnets as standoffs on either end of the Feather. The sensor board is 4mm tall, and my magnets are 5mm tall. For now, just tape the magnets in place.

Step 5: Tape It Up & Test It

Plug in a small lipoly battery to the Feather and tape it (and its excess wire) around the middle of the circuit sandwich. Make sure you have access to the power switch. Stick your prototype to your (dry) knife blade for testing!

Use the Bluefruit LE Connect app to connect to the board in UART mode to watch the Z angle reporting from your mobile device. Leave the USB cable connected to your computer to receive more sensor and calibration info in the Serial Monitor.

If your circuit's not behaving how you expect, don't proceed yet to gluing the magnets on yet, as it will make it harder to repair a solder connection if necessary. Post pics of your circuit and the problem/error below and we'll get it sorted!

Step 6: Glue Magnets

Unplug the battery and Use strong adhesive such as E6000 to stick the magnets to the Feather (super glue, gorilla glue, epoxy are all great, but hot glue is not suitable, as both of the surfaces are quite smooth). Wrap it up in a rubber band or otherwise clamp the magnets in place while the glue sets up.

When it's dry, plug the battery back in and tape it up with its wires around the middle of the circuit sandwich, with the switch sticking out near the USB port. Your circuit is complete! You can turn it on and off with the switch, and charge the battery by plugging in a USB cable.

Step 7: Water Resistant Enclosure

You'll want to rinse your blade and stone frequently during sharpening, so this circuit needs a water-resistant enclosure. It's easy enough to avoid running the device directly under water by removing it during rinsing, but water definitely splashes around the whole sharpening process. So the enclosure doesn't have to be submersible, but should provide some protection. A plastic zip top bag would totally suffice, but Alex used a repurposed mint box and I 3D printed a box for mine.

You can download the .STLs for this enclosure from this step or on Tinkercad. I used an R-10 o-ring around the lid. I printed the parts in PLA at 100% infill without supports or raft on my Makerbot Replicator 2 (files prepped using Autodesk Print Studio).

I realized after reading this excellent resource on making waterproof enclosures that my lid puts a sharp force on my o-ring at the corners, and explains why subsequently a few of my o-rings have split apart after use. I'm not an expert 3D modeler and hope to continue to improve upon this design (feel free to adapt it yourself as well!).

For more info on getting started and leveling up with 3D printing, check out one of the free Instructables classes on 3D printing.

Disclosure: at the time of this writing, I'm an employee of Autodesk, which makes Tinkercad.

Step 8: Get Sharpening!

Once your circuit is suitably protected from water, soak your sharpening stone and then get started! Connect the Bluefruit LE Connect app to the device in UART mode and watch the angles pour in.

Since the side of the blade may not be parallel to the sharpening stone (and the sharpening stone may not be level to the world), we recommend to rest your blade on the stone and observe the starting angle, then subtract that from the ideal angle to establish the target angle. For instance, if your knife blade reads 1.5 degrees at rest and the ideal sharpening angle is 15 degrees, try to hold your knife at a reading of 13.5 degrees while sharpening.

Thank you for reading our Instructable! Alex and I had a great time working on this project together and hope you'll try it out for yourself (and show us what you made in the comments)!

Subscribe to Alex's YouTube channel, and read more of Alex's Instructables:

Subscribe to Becky's YouTube channel, and read more of Becky's Instructables:

Science of Cooking

Participated in the
Science of Cooking