Skip to main content

Using the BIQU Hermit Crab CAN



I was recently offered to try out the BIQU Hermit Crab CAN.  This was great timing as one of my printers was down due to a bad thermistor cable in the cable drag chain.  I was in the process of removing the wiring and also replacing the drag chain to an open style which allows me to open up each segment and easily add or remove wires.  

What is the Hermit Crab?

The Hermit Crab is a quick change tool, which allows you to easily and quickly change out your tool. For example, you can change to a FDM extruder, or a laser engraver, or a cutting tool, or whatever you want. The CAN version uses just one USB-C cable (doesn't use USB protocol, just uses that style cable for convenience). The USB-C cable carries the data and power to the hotend. The CAN version has a bunch of nice features such as accelerometer, Neopixel RGB LEDs, and TMC2209 stepper driver.

Current setup

In this photo, you can see my current setup as I'm in the process of rewiring.  I've got an Orbiter extruder with a "Hero Me" mount, using an inductive probe, and also an accelerometer attached (but no wires hooked up as there are too many wires to leave connected to it). You can also see the open style drag chain that I was talking about, with a few of the segments open.  

Current setup


Here's the plan with the new setup. Use the BIQU Hermit Crab CAN and while I'm at it, switch out to the BIQU H2 extruder/hotend. Instead of having a bunch of various wires going to my hotend assembly, I would just have one single USB-C cable. 

Setting up H2 and Hermit Crab CAN. You can see the CAN hat on top of the Raspberry Pi, as well as the CAN Power interface board that adds power to the interface

I'm currently running a Duet 2 Wifi board running RepRapFirmware.  I'm a big fan of RepRapFirmware but unfortunately it doesn't support CAN devices (only CAN-FD like the Duet 3 expansion boards). So that means that I have to flash Klipper onto it, as well as setup a Raspberry Pi to run Klipper.
Duet 2 Wifi board

Getting Started

I downloaded the latest version of Raspberry Pi OS (Bullseye) and started a fresh install.  I then downloaded kiauh to automate the process of installing Klipper, as well as Moonraker and my choice of front-end.  I was struggling to get a working flash onto the Duet 2 board and could not get things to work.  I found some other users that had the same issue and they mentioned that going with the older version of Raspberry Pi OS (Buster) solved the problem.  I used the Raspberry Pi Imager to install Mainsail OS, which has everything setup already and runs Buster.  Sure enough, I was able to build a working flash, flash Klipper onto the Duet 2 Wifi and then get everything setup.



Then it was time to flash the firmware of the Hermit Crab.  The instructions on BigTreeTech's Github page was missing one vital piece of information. When running "make menuconfig" to build a Klipper firmware, the `Bootloader offset` needs to be set to "No bootloader".

"make menuconfig" configuration for Hermit Crab firmware

UPDATE 2022-07-19:

I haven't tried this yet but there is an option to run the CanBoot bootloader.  In this case, you would build the firmware with the "8KiB" bootloader offset. You can read more about it in the link I provided to the GitHub repository.

In order to put the Hermit Crab into flash mode, you had to have it powered up via the USB-C cable, as well as having a data connection via a regular USB cable. The Hermit Crab will not power up from just a USB cable. Then you'll need to hold down the BOOT and RESET buttons simultaneously.  These buttons are on the back so in order to get to them, I had to remove the board off of the metal plate.  Be careful doing this while powered up, otherwise you could make a mistake like I did.  The board accidentally came into contact with the metal back plate and shorted out the TMC2209 stepper driver.  I blew out the stepper driver.  Fortunately, everything else works fine.  I'm currently running a stepper wire from the Duet board instead of from the Hermit Crab board to get around the issue.  I plan on transplanting a TMC2209 driver from another board and do some solder rework until I can purchase a new board.


Simple to add or remove a tool head


Going from a bunch of different wires to just one cable. Yes, I know there are multiple wires inside of the cable sheath but from my point of view, it's just one cable.

System information, screenshot taken from Mainsail interface. 


Caveats

There are a few drawbacks to using the Hermit Crab.  One is that it will add some more weight to your print head.  About 147g from my measurements.

147g of extra weight

In addition, it will add about 23mm of thickness to your print head. That could potentially cause you to lose some print area depending on your setup.
23mm thick with both plates


Also, Klipper is known to have issues with having a probe on one MCU and the Z steppers on a different one. I've ran into multiple warnings of communication timeout during probing.  You can find more information here: Multiple Micro-controller Homing and Probing - Klipper documentation (klipper3d.org) . Here's the text from that page:

This feature can be useful to simplify wiring, as it may be more convenient to attach an endstop or probe to a closer micro-controller. However, using this feature may result in "overshoot" of the stepper motors during homing and probing operations.

The overshoot occurs due to possible message transmission delays between the micro-controller monitoring the endstop and the micro-controllers moving the stepper motors. The Klipper code is designed to limit this delay to no more than 25ms. (When multi-mcu homing is activated, the micro-controllers send periodic status messages and check that corresponding status messages are received within 25ms.)

Final thoughts

Overall, I would have to say that my experience has been positive. I've got a working printer that has simplified maintenance and gives me flexibility to change out the tools on my printer.  The biggest change for me is going from RepRapFirmware to Klipper.  A couple of features that I miss include the ability to have a macro that runs in the background (daemon macro), the ability to perform actions while waiting for the printer to heat, and the ability to make changes on the fly (every configuration in RepRapFirmware is just gcode, whereas config changes in Klipper require restarting the Klipper service). The new benefits of Klipper include faster data transfers (Duet uses a slow ESP8266 module, Raspberry Pi has faster wifi), a nice LCD UI via KlipperScreen, as well as simpler resonance tuning and the ability to run on additional boards.

I haven't had a chance to mount other tools yet as of this time of writing, but I plan on trying out various setups such as using a cutter tool to cut vinyl, and trying out a pen as well.  This particular printer is in my office so I have no plans of attaching a laser module to it as laser etching produces lots of smoke and fumes.

I would not recommend this to the average 3D printer user but would recommend it for advanced users. It does involve a lot of knowledge, figuring out how to mount everything, wire everything up and setting up the firmware for it.   There are several use cases I can think of.  Perhaps you have a multi-filament hotend you want to use one day, and then another day you just want to use a high-end single filament hotend. You can easily do that with the Hermit Crab.  Also, if you want to have a hybrid FDM printer and laser engraver/cutter you can easily setup that up with the Hermit Crab as well. Or if you really like the idea of reducing the number of wires you need to connect to your print carriage as well as having an accelerometer and RGB lights, the Hermit Crab CAN version will do that for you.




Comments

Popular posts from this blog

Add business days with moment.js

Date . prototype . addBusinessDays = function ( businessDays : number ) { // 5 business days in a week const weeks = Math . floor ( businessDays / 5) ; // Convert business days (5 days in a week) to regular days (7 days in a week) const days = weeks * 7 ; const date = moment ( this ) ; // Convert the incoming date value to a moment value. const newDate = moment ( this ) . add ( days + ( businessDays % 5) , 'days' ) ; if ( newDate . day () < date . day () || newDate . day () % 6 === 0) { // Add 2 more days if we land on a weekend, or we went through a weekend. newDate . add (2 , 'days' ) ; // .add is not pure and will change the underlying value } return newDate . toDate () ; } ;

Debugging .NET Windows Service apps more easily

Here at work, I keep seeing a couple of my fellow developers struggle to debug their Windows Service apps that they're writing.  What they have to do is remove the service, install the new version of the service, start the service, then attach the debugger. If there's an error when the service first starts up, the workaround is to introduce a Thread.Sleep before it actually does anything, giving you enough time to attach the debugger. By default, you can't directly run the service from within Visual Studio. If you try, you get the following message: If you look at the code that actually starts the service, you'll see that it's not that different from a console app. By default, it looks something like this:      internal   static   class   Program     {          ///   <summary>          ///  The main entry point for the application.          ///   </summary>          private   static   void  Main()         {              ServiceBase [] Ser