Knife Sharpening Angle Coach With Bluetooth & Arduino

37K18134


Intro: Knife Sharpening Angle Coach With Bluetooth & Arduino

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:

https://adafruit.github.io/arduino-board-index/package_adafruit_index.json

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.
  pinMode(LED_BUILTIN, 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("AT+BLEUARTTX=");
    //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);
    }else{
      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:

26 Comments

Hi,
First I would thank you for your tutorial.
I have a question about the adafruit IMU BN055, I am using it with arduino.
I would like synchronise the IMU data with IDS caméra picture.I want to trigger the IMU using the camera, or using arduino the trigger bouth.
How can I do this ? does the IMU BN0055 accept trigger ?

Thank you for your help
YH
Hi, for general advice with any of Adafruit's hardware, I recommend posting in their customer support forums: https://forums.adafruit.com/

The IMU isn't "triggered" as you describe, instead you choose when to take readings from it.
Hi,
Thank you for your response !
YH

This is a cool project, but it has one small design flaw. You are determining the angle by only measuring the z axis acceleration of your sensor. When you have the knife at an angle, you will also measure the acceleration introduced by moving the knife along the stone. So maybe you are already very steady, but your device is not accuare enought.

Thanks for your tip, did you have advice about how to change the code to compensate for the x acceleration? Also "accurate enough" is relative.
I love the idea. If I build one I will modify the interface: Either high/low buzzes, vibration, a series of LEDs (red-green-red like a guitar tuner) or an analog instrument to indicate the angle directly. Or with a NFC reader to choose the right setting depending on the knife. Thank you so much!

My parts not yet arrived, but been thinking what I would add, it boils down to two options: 1) add an established angle button so when you have the knife at the stone at the desired angle you press it and sets the baseline to +/- angle deviation 2) changing pitch according to deviation.
If I were to make a visualization for the app, it would include a centered green line which would be the baseline and on top/bottom of it fade it to red toward top/bottom of the screen to visually show the deviation, changing pitch could be part of the combo too.

Probably one of the most useful to me personally Instructables. Definitely one of my top dozen or so to do projects. In other words, it's probably not going to get built tomorrow, otherwise I'd wait until then before making any suggestions.

I think the most useful sort of feedback would be audible. That way, you could concentrate your vision on proper contact between the knife blade and stone. Maybe a pitch you could "zero beat" at the target angle. Or you could set it to one side of the target for instantaneous correction without having to guess which way to correct.

If you go too shallow to the stone you're simply doing nothing to improve the edge, whereas if you go too deep you're potentially destroying what edge you've achieved. Therefore it might be appropriate to make a more annoying sound when too deep. Maybe a sine one way and a sawtooth the other. In that case you would definitely set your target angle at dead center.

I can see the point about engineering overkill (in fact that was my first reaction) but it looks like useful overkill. Even if I get really good at maintaining a consistent angle I can see having this appliance around at all times as a reference. Like any skill, such as tuning a piano by ear, you get rusty if you haven't done it in a while and having the electronic aids around is helpful to re-learn.

It doesn't look like it would work very well on my once awesomely sharp Wusthof pairing knife, though. In fact, as much as I practice with the stones I have never quite been able to reach the degree of sharpness my better knives came with. Maybe this will help.

So cool; I should probably put more time into my knife sharpening!

I totally agree with Mr. Schreib! Excellent video and instructable.

You could use the bluetooth communication to set the desired angle for the device and install a sound alarm that would trigger when you get out of angle. Of course, it would also need to consider a acceptable range for raising the alarm.

As a sushiman (and programmer) I found your project veeery nice. Thank you for sharing it!

Wow I wish I had the same technicall skills as you have. I totally like the idea of a knife sharpening coach. I could use one. But till then I sadly enough I have to use my Tormek with jigg. Keep up the good work and I liked both video s very much. Never heard of Alex French Guy cooking but now I do. Once again thank you!

Thanks for your suggestions/ideas. We would love to see your version, please write an Instructable about it!

There are a couple smart golf gloves out there for sure, check out a teardown I did of one a while back: https://learn.adafruit.com/sensoglove-teardown

This is amazing! A very cool idea, and a well-documented instructable! I am amazed that you can measure the angles with such great precision! Keep up the good work!

Do you know if we can modify this angle which isn't always the same ? In order to standardize, because I've got german knives with a 20° angle and japanese with a 15° one.

I like the idea of measuring continuously the angle, why don't add a way to input a value and an rgb led showing that the angle is in the programmed range, and if not, the correction needed.

The angle reporting is absolute, so you can measure any angle you like. You could certainly add an RGB LED!

More Comments