Art of 3D printer in the middle of printing a Hackaday Jolly Wrencher logo

3D Printering: Klipper, The Free 3D Printer Upgrade

I have several 3D printers, and I’ve always been satisfied with using either Repetier or Marlin on all of them. There are a few other firmware versions that could run on my hardware, but those two have been all I’ve needed. Sure, it was painful for a while having to juggle features to fit the firmware image onto the smaller microcontroller boards. Now that Marlin supports big 32-bit boards however, that hasn’t been a problem. But recently, I’ve been on a program to switch everything to Klipper.

In this post, I’ll tell you why I did it and give you some data about why you might consider it, too.

The Landscape

Marlin is written in C and burned into a 3D printer’s flash memory. It does a lot. It receives G-code commands, interprets them, and translates them to meaningful actions on the hardware. Modern versions handle automatic transformations to account for lumpy beds, input shaping to reduce shaking, and linear advance to produce better prints.

It might seem simple to control a 3D printer, but there are lots of little details to take into account. For example, if you are moving the head between two XY coordinates and you expect a certain flow rate, then you have to figure out how fast to turn the steppers to get the right amount of plastic out over that time. You also may have to retract before you start a move, make sure temperatures are stable, and transform the actual coordinates based on bed leveling data. There’s a lot going on.

Klipper does the exact same job, but it does it differently. On the 3D printer board is a tiny piece of software that does very little. It’s a bit like a device driver for the printer. All by itself, it does nothing. But it can handle very basic commands that describe how to move the machine.

All the rest of the processing you expect to happen now runs on some Linux computer. That is very often a Raspberry Pi, but it could be a spare laptop, your desktop computer, or anything that will run a reasonable Linux install. Several vendors even sell single-board computers with touchscreens made specifically for running this part of Klipper.

However, even though a screen is nice, you don’t really need it. I’ll talk about that more later.

Continue reading “3D Printering: Klipper, The Free 3D Printer Upgrade”

Reconfigurable Tracked Robot Has Some Neat Flexible Abilities

When you think of tracked robots, you might think of bomb disposal robots or others used in military applications. You probably haven’t seen anything quite like this, however—it’s a “reconfigurable continuous track robot” from researchers [Tal Kislasi] and [David Zarrouk (via IEEE Spectrum).

Neat party trick!

The robot looks simple, like some kind of tracked worm. As its motors turn, the track moves along as you would expect, propelling the robot along the ground. Its special feature, though, is that the track can bend itself up and down, just like a snake might as it rises up to survey a given area.

The little tracked robot can thus tilt itself up to climb steps, and even bend itself over small obstacles. It can even try and hold itself up high as it inches along to try and bridge its way over a gap.

The robot can selectively lock each link (or not) as it passes by.

How does it achieve this? Well, the robot is able to selectively lock the individual links of its outer track in various orientations. As the links pass over the front of the robot, a small actuator is used to lock each link in a 20-degree orientation, or a straight orientation, or leave them loose.

The ability to lock multiple links into a continuous rigid structure allows the robot to rise up from the ground, form itself into a stiff beam, or conform to the ground as desired. A mechanism at the back of the robot unlatches the links as they pass by so the robot retains flexibility as it moves along.

It’s a nifty design, and one we’d like to see implemented on a more advanced tracked robot. We’ve explained the benefits of tracked drivetrains before, too.

Continue reading “Reconfigurable Tracked Robot Has Some Neat Flexible Abilities”

Adding Human Detection To Home Automation

Radar made a huge impact when it was first invented, allowing objects to be detected using radio waves which would normally be difficult or impossible to observe through other means. Radio waves of all frequencies can be used for radar as well, whether that’s detecting ships beyond the horizon, tracking aircraft near an airport, penetrating the ground, or imaging objects with a high resolution. At the millimeter wavelength it’s fairly easy to detect humans with the right hardware, and using some inexpensive radar modules [Tech Dregs] shows us how to add this capability a home automation system.

Since these modules aren’t trying to image humans with fine detail or detect them at long range, the hardware can be fairly inexpensive. [Tech Dregs] is using the LD2410B modules which have not only an on-board microcontroller but also have the radio antennas used for radar built right onto the PCB. They have a simple binary output which can communicate whether or not a human is detected, but there’s also UART for communicating more details about what the module senses in the room. [Tech Dregs] is using this mode to connect the modules to Home Assistant, where they will be used to help automate his home’s lighting.

The only significant problem he had setting these modules up was getting them built into an enclosure. The short wavelengths used in this type of radar module don’t penetrate solid objects very well at all, so after trying to hide one behind an e-ink screen he eventually settled on hollowing out a space in a bezel with very thin plastic between the module and the room. If you need more out of your radar modules than object detection, though, you can always try building a pulse compression radar which can provide much more accurate ranging of objects.

Continue reading “Adding Human Detection To Home Automation”

A Non-Musical Use Case For 8-Track

There was a time in the not-too-distant past when magnetic tape was the primary way of listening to and recording audio. Most of us are familiar with the cassette tape, a four-track system that plays first one side of the tape, then the other. There was the eight-track tape as well which did not have quite as much popularity or longevity but did have a few interesting features that [Serial Hobbyism] took advantage of to make an interactive game.

The defining feature of the eight-track system, beyond the obvious eight tracks on the tape, is that the tape runs in a continuous loop, never needing to be stopped or flipped over. Instead, four buttons select pairs of the eight tracks, moving a head immediately to make the switch on-the-fly. [Serial Hobbyism]’s game plays a trivia-style audio recording and asks the player to answer questions by pushing one of the four “program” buttons to switch tracks. If the correct track is selected, the recorded audio congratulates the player and then continues on with the game. Likewise, if an incorrect track is selected, the recording notes that and the game continues.

Another interesting feature of this game is that it can be played without modifying an eight-track player, as the selectable tracks are a core function of this technology. They can be used in a similar way as cassette tapes to store computer data and a data recorder similar to the eight-track system was used on the Voyager space probes, although these only bear a passing resemblance.

Continue reading “A Non-Musical Use Case For 8-Track”

IBM’s Latest Quantum Supercomputer Idea: The Hybrid Classical-Quantum System

Although quantum processors exist today, they are still a long way off from becoming practical replacements for classical computers. This is due to many practical considerations, not the least of which are factors such as the need for cryogenic cooling and external noise affecting the system necessitating a level of error-correction which does not exist yet. To somewhat work around these limitations, IBM has now pitched the idea of a hybrid quantum-classical computer (marketed as ‘quantum-centric supercomputing’), which as the name suggests combines the strengths of both to create a classical system with what is effectively a quantum co-processor.

IBM readily admits that nobody has yet demonstrated quantum advantage, i.e. that a quantum computer is actually better at tasks than a classical computer, but they figure that by aiming for quantum utility (i.e. co-processor level), it could conceivably accelerate certain tasks for a classical computer much like how a graphics processing unit (GPU) is used to offload everything from rendering graphics to massively parallel computing tasks courtesy of its beefy vector processing capacity. IBM’s System Two is purported to demonstrate this when it releases.

What the outcome here will be is hard to say, as the referenced 2023 quantum utility demonstration paper involving an Ising model was repeatedly destroyed by classical computers and even trolled by a Commodore 64-based version. Thus, at the very least IBM’s new quantum utility focus ought to keep providing us with more popcorn moments like those, and maybe a usable quantum system will roll out by the 2030s if IBM’s projected timeline holds up.

Hands hold a set of white, 3D printed connectors above a wooden table. They look like a cross between a ballpoint pen tip and a spider. The shorter one on the right has yellow, green, black, purple, and white wires coming out the top.

SWD Interface Simplifies Debugging

The proliferation of microcontrollers has made it easier than ever to add some smarts to a project, but sometimes there just isn’t enough space for headers on a board, or you feel a little silly soldering something that will get used to flash a program then languish inside your build. [Dima] wanted to make his boards easier to flash, and developed a PCB footprint and flashing tool pair that makes use of the mounting holes on his boards.

While some debugging tools might use a clamp or tape, [Dima] discovered that using sprung pins only on one side of the connector wedged his fixed locator pin (originally a 1 mm drill bit) into the hole removing the need for any other holding mechanism.

His original prototype worked so well that it took him some time to get back around to making a more reproducible design that didn’t involve fine soldering and superglue. After enlarging the contact pads and several iterations of 3D printing, he developed an interface connector that uses standard jumper wires and a steel rod to provide a sturdy and reliable connection for flashing boards with the corresponding footprint. He’s currently a little disappointed with the overall size of the connector though, and is soliciting feedback on how to make it smaller.

While [Dima]’s MCU of choice is the STM32, but this design should be applicable to any other microcontrollers using a five wire system, or you could take one off for USB. Having trouble finding the SWD points on an existing device? Try this method.

Thanks to [DjBiohazard] for the tip!

Continue reading “SWD Interface Simplifies Debugging”

Hardware Bug In Raspberry Pi’s RP2350 Causes Faulty Pull-Down Behavior

Erratum RP2350-E9 in the RP2350 datasheet, detailing the issue.
Erratum RP2350-E9 in the RP2350 datasheet, detailing the issue.

The newly released RP2350 microcontroller has a confirmed new bug in the current A2 stepping, affecting GPIO pull-down behavior. Listed in the Raspberry Pi RP2350 datasheet (page 1340) as erratum RP2350-E9, it involves a situation where a GPIO pin is configured as a pull-down with input buffer enabled. After this pin is then driven to Vdd (e.g. 3.3V) and then disconnected, it will stay at around 2.1 – 2.2 V for a Vdd of 3.3V. This issue was discovered by [Ian Lesnet] of [Dangerous Prototypes] while working on an early hardware design using this MCU.

The suggested workaround by Raspberry Pi is to enable the input buffer before a read, and disable it again immediately afterwards. Naturally, this is far from ideal workaround, and the solution that [Ian] picked was to add external pull-down resistors. Although this negates the benefits of internal pull-down resistors, it does fix the issue, albeit with a slightly increased board size and BOM part count.

As for the cause of the issue, Raspberry Pi engineer [Luke Wren] puts the blame on an external IP block vendor. With hindsight perhaps running some GPIO validation tests involving pull-up and pull-down configurations with and without input buffer set could have been useful, but we’re guessing they may be performed on future Pi chips. Maybe treating the RP2350 A0 stepping as an ‘engineering sample’ is a good idea for the time being, with A3 (or B0) being the one you may want to use in actual production.

In some ways this feels like déjà vu, as the Raspberry Pi 4 and previous SBCs had their own share of issues that perhaps might have been caught before production.

(Note: original text listed A0 as current stepping, which is incorrect. Text has been updated correspondingly)