3D Printed 6 Piece Star Puzzle

When I was a child I used to enjoy playing with little puzzles. One of my favorites was a 6 piece star-shaped cube that I thought was particularly clever in its design. I decided I would try to 3D print one of those puzzles. Before going to the trouble of designing it myself I decided I would look on Thingiverse to see if someone had already created it.

This particular puzzle was available in several versions including this one on the right.
However it wasn’t exactly like the one I remembered. All of them that I found on Thingiverse had six identical pieces. I also saw some YouTube videos on how to assemble such a puzzle. It looked to me like it did not stick together very well.

The puzzle that I remembered also had 6 pieces but they were of three different types. Three of the pieces were identical to the ones in the Thingiverse models. Two of them were similar but they had a notch cut out. The final piece was completely solid and would be slid into place to lock everything together at the end.

So I made a modified version of the model linked above. I had to do a little tweaking to get the tolerances right but it turned out okay.

You can download my modified puzzle on Thingiverse at https://www.thingiverse.com/thing:2160633

Here is a photo of my completed puzzle.

Here is a photo of the individual pieces. I refer to the pieces as “part 1”, “part 2” and “part 3”. That designates how many of each of the pieces there are. That means there are three copies of “part 3” and so on.

Here is how to assemble the pieces. Start with a piece 3 in this orientation.

Add another piece 3 vertically on the right side.

Add the final piece 3 vertically on the left side.

Place a piece 2 horizontally across the back with the notch on top.

Place the other piece 2 horizontally across the front with the notch on top.

Slide the final piece into place from the front in a hole left by the notches.

Many thanks to by HotIceT for the original design. My piece 3 is identical to his and the other pieces were derived from that by modifying the STL files in Blender 3D.

Modifying the “Pause at Height” Cura Plugin for Printrbot Plus

Recently I did some 3D printing objects as a kind of diorama that I photographed for my 2016 Christmas card. One of the objects was this sign saying “Emmanuel – God Is with Us”. The background or base of the object was printed in brown filament and the raised lettering was printed in white filament. I use a single extruder Printrbot Metal Plus.

The trick to printing this is to print the brown portion, get the printer to pause while you change filaments, and then print the white lettering raised above it. I’m using Cura 15.04 which is the most recent version that can be easily configured for Printrbot. It has a plugin called “Pause at Height” that is designed to allow you to do just what I want. You pick a Z height at which the printhead is retracted and paused while you swap the filaments.

If you open Cura and click on the “Plugins” tab you will see the following:

There are two plugins installed by default. The one we are interested in is Pause at Height. You click on the plugin and then click on the tiny down arrow at the bottom of the window and a dialog will appear that allows you to set the parameters for the plugin. It will look like this…

It gives you a series of parameters that you can fill out. Then when you print your object, theoretically the printer will pause and allow you to change filaments. Unfortunately the Printrbot Metal Plus does not have any sort of control panel so there’s no way to resume the print once you’ve paused. I tried using the plugin anyway just to see what would happen. At the proper point in the print, the printhead retracts back and to the side as it’s supposed to. But rather than pausing, it immediately goes back where it left off and begins printing.

If you look at the lower left corner of the plugin screen you will see a button that says “Open plugin location”. If you click on that button here’s what the folder looks like in Windows Explorer.

You can see the plugins are actually Python programs that have a .py extension. We want to look at the one named “pauseAtZ.py”. We will open it up in our favorite text editor and take a look around. If you look at the code at approximately line 104 you will see this

#Move the head away
f.write("G1 X%f Y%f F9000\n" % (parkX, parkY))

#Disable the E steppers
f.write("M84 E0\n")
#Wait till the user continues printing
f.write("M0\n")
#Push the filament back, and retract again, the properly primes the nozzle when changing filament.
f.write("G1 E%f F6000\n" % (retractAmount))
f.write("G1 E-%f F6000\n" % (retractAmount))

It appears that this Python script is reading and writing your G-code looking for the proper place to do the pause. Then it inserts additional G-code to do the retraction and the actual pause. The important line is line number 110 which inserts the G-code command “M0”. This is a stop command as described here
http://www.reprap.org/wiki/G-code#M0:_Stop_or_Unconditional_stop
Apparently the firmware in the Printrbot Metal Plus does not recognize that particular G-code. There are other G-code options that we can substitute.

Using your text editor, do a “save as” and give it a different filename with a .py extension and save it in the same folder as the original. Modify line number 110 to read as follows

f.write("G4 S30\n")

The “G4” command is described here
http://www.reprap.org/wiki/G-code#G4:_Dwell
It causes a 30 second pause. I found that this gives me sufficient time to withdraw the original filament, replace it with a different color, and force some of the new filament through the nozzle to flush out the old color.

There is one other change you should make in that file. On the very first line it reads:

#Name: Pause at height

This is the name that appears in the plugin tab of Cura. You should change this name to something like

#Name: My Modified Pause

so that you can distinguish it from the original plugin.

I made those changes, selected the modified plugin and it worked perfectly. You have to play around with the preview slicing to determine what level you need to set for the pause. You might try printing a small test piece if your object is extremely large.

IRLib 2 Adds Preliminary Support for Arduino Zero and other SAMD 21 Platforms

We are pleased to announce that IRLib 2 has just been updated to provide very preliminary support for Arduino Zero and other SAMD 21 base platforms such as the Adafruit Feather M0 and the Arduino.org M0 Pro.

IRLib 2 is a library for sending, receiving, and decoding infrared signals using Arduino microcontrollers. Until now support has been mostly limited to 8-bit AVR processors such as those used in Arduino Uno, Arduino Leonardo, and Arduino Mega.

The implementation has been tested on all three of those platforms. It provides PWM output at all of our standard frequencies for sending IR signals. It also supports all of our receiving classes including IRfrequency, IRrecv, IRrecvPCI, and IRrecvLoop.

Support is currently limited to using only one specific set of timers and clocks. Output must be on pin D9. As soon as we are able we will make it possible to support other output pins and make use of other timers and clocks so that the system can be as flexible as possible and avoid conflicts with other libraries.

The main users manual has not been updated to reflect these changes. Preliminary details can be found in IRLib2/SAMD21.txt

The code is available now on GitHub at https://github.com/cyborg5/IRLib2

Further updates for SAMD 21 implementation will be coming soon.