This ingenious IKEA hack will make you smile

Pile of 3D printed shelfie brackets.
Start with a pile of 3d printed brackets

Last month, we (my wife and I) disassembled an IKEA Expedit shelf unit, and while I didn’t take a photo of ours before disassembly, it was a 5×5 unit identical to the one featured here. The room the Expedit was in was getting rearranged and there wasn’t going to be a place for it any longer in the room. We don’t really have any other spot in the house where it would fit, so my wife suggested putting it on the curb.

I realized that while it wouldn’t fit in the closet in our home office, I could salvage much of the material and repurpose it for a custom shelf system. What I figured I could salvage and reuse were the 20 short pieces (the vertical walls in the photo on the above linked page) and the four long and thin pieces (the horizontal pieces in the photo on the linked page.)

On Thingiverse there is an thing called the Shelfie, described as a DIY parametric shelf and storage designer. I had made a few of the brackets a few years ago when I had a surplus of small plywood panels, but I never finished that project. Originally, you could use the customizer on Thingiverse to configure the brackets exactly how you wanted them, but the Customizer hasn’t been working on Thingiverse for awhile now. However, you can load the design in OpenSCAD and customize the design to be whatever you need.

The screenshot above shows how the Customizer in OpenSCAD is used to configure the part to be a T shaped bracket with a back and a pass-through channel so the long board can go all the way through.

I did a quick measurement of the closet and figured out that the long boards would fit in the width of the closet and that I could easily get three rows of shelves to fit without having to work around anything already mounted in the closet. So, I drew up a quick sketch:

This is messy, but I think that messiness shows a part of the making process.

I wanted a few tall cubbies, so I scribbled out the parts where there wouldn’t be a shelf. Then, I came up with a shorthand for planning out what brackets needed to be 3D printed: Ts = standard T bracket, Tp = T bracket with passthrough channel, Xp = X bracket with passthrough channel, and each of the corners was going to get a standard L bracket, so I didn’t label those.

I needed two complete sets of the brackets, one for the front and one for the back. The ones on the back I decided (after suggestions from other Workshop 88 members) to add the option to screw a backer board onto.

After customizing all the designs in OpenSCAD, I started printing. And printing. And did some more printing. I lost track of the total print time, but it could have easily been a week of continuous printing. With the breaks I took between some of the prints, it took me about three weeks to finish all of them.

Finally, I was ready for assembly!

Attaching brackets to the wall.
Shelf unit taking shape!
Building up the shelves!

Somewhere towards the end of the assembly, I realized that I had miscounted the number of short panels I needed. I thought I would only need 18 of the 20 panels from the Expedit, but I had forgot to count the three horizontal short panels needed for the top three cubbies! So, it turned out that I needed 21 panels, but only had 20 available. Whoops!

Fortunately, my design only was using three of the four long boards, and since they were all the same thickness, I cut the end off the extra board to make the last needed small panel.

I also made a last minute decision to attach the brackets directly to the wall panel in the closet. I figure that it is a closet that I don’t mind if the wall panel (it is a panel, not drywall) gets some holes in – especially since they will be small holes. Hopefully the shelves last quite awhile, though!

Finished with the assembly!

In the assembly process, I only had one bracket break – a T bracket with a passthrough and wall attachments. The reason it broke was that I had attached it to the wall before putting in the last horizontal long board. It wasn’t lined up with the other brackets, so when the long board was inserted, it bent the bracket and snapped off one side of the passthrough channel. Fortunately, I had a leftover test print that worked as a replacement part.

Broken bracket.

In the Workshop 88 slack there is a channel called “entropy” which I find to be delightful because members use that channel to discuss the various ways that they try to reign in the disorder in our workspaces. I don’t have a “before” photo of the closet, but I can attest that although the closet is accurately described as a “walk-in” closet, it would have been impossible to do that before I added the modified shelf. Here is the photo after adding all the stuff back into the shelf:

It’s hard to see in this photo, but there is actually space now to walk in the walk-in closet.

I’m really happy with how this Ikea-hack project turned out. I’m cautiously optimistic that the shelves will have an extended life helping to control the disorder in this closet.

About Workshop 88

Workshop 88 is a makerspace in Glen Ellyn Illinois. We are more than a workshop, we are a growing community of creative talented people who aspire to learn and share knowledge, experiences, and projects.

Join us! To become a member join at Workshop88 or you can help us continue to share our projects and activities by supporting us via Patreon.

Never miss a tip or project! Follow our blog at, subscribe to Workshop88’s YouTube channel, like us on Facebook, follow us Twitter and join or support our maker community by contributing to Workshop88 on Patreon!

To find out about upcoming events follow Workshop88 on Meetup.
Have a question? email us at

Member project – 3D printer nozzle cleaner

Nozzle cleaner for 3D printers

Did you know that Workshop 88 members have several of their original designs shared on Thingiverse?

This is a nozzle-cleaning tool that Workshop 88 member, GailJo has shared on Thingiverse and we make use of at Workshop 88. This was one of the tools featured in last week’s Maker Meeting discussion.

See the tool described here, starting at 13 minutes in:

Support us on Patreon:
Like us on Facebook:
Follow us on Twitter:

Making custom awards

Custom award made at Workshop 88.

One of our members, Mark Frost, recently made up some custom awards for a group at his church. Here’s what he had to say about this project:

Every summer for 30+ years some guys from church have been doing a golf trip. I’ve been going for the last 15years or so and have recently taken over the “hardware” aspect. In previous years we would order engraves plaques, mugs, glasses, embroidered towels, etc. But this year I figured I’d take production “in-house”. I grabbed the church and resort logos, threw the text on top and engraved squares I cut from a 2’x2′ MDF board from HD

Mark Frost via

This is a really great example of the kinds of projects that our members are able to create quickly at Workshop 88! What could you make with a laser cutter/engraver?

T-Kit 1380 Kit Build: Part 2

Today, I’ll be continuing my 80m transceiver build that I started in T-Kit 1380 Kit Build: Part 1.

At the end of the last post, the board looked like this:

The full board

The full board

Today I’ll be moving on to the VFO section of the board.  A VFO, or variable frequency oscillator, is the circuit that allows you to tune a radio.  This particular VFO is based on a Collpits oscillator, and can tune over a 50-70 kHz range centered on a frequency determined by the component values.  The frequency range shown in the image may seem a bit strange.  This transceiver can be built to cover that 50-70 kHz range somewhere near 3.5 MHz to about 3.75 MHz.  The short explanation is that the frequency we’re interested in is shifted by the frequency of the VFO to an intermediate frequency of 8 MHz, where we can do filtering and amplification at a single fixed frequency.  Since a lot of circuit characteristics are frequency-dependent, performance is much better if the components can be selected for just one frequency.


The majority of the components are supplied with the kit, so their values are fixed.  One of them, an inductor, I had to wind myself.  Since this phase required quite a few components, I decided I’d lay them out before I started.


Rather than start building immediately, I decided to wind the inductor first, so I could get that out of the way.  The instructions specified 28 turns of the green #28 enameled wire on the red toroid core.  I had to count the turns several times to be sure.


The inductance of the coil is dependent on a lot of things, including the material the core is made of, the diameter of the core, the number of windings, and the spacing between the windings.  Later on in the build, I tweak the range covered by the transceiver by adjusting the coil spacing.


From this point on, it was simply a matter of stuffing the board and soldering, as per the instructions.  The one thing I would have changed was the process for doing initial testing of the inductor.  They have you tack a couple leads to the pads you’re going to use, and then tack the inductor to those.  Unless your inductor is wildly off, you’re not going to be rewinding it, so I would have skipped that step and just soldered it in directly at the beginning.

The testing of phase 2 was relatively simple, because I’m using a frequency counter.  I just hooked up the frequency counter, and adjusted the spacing of the turns on the coil I mentioned before until the VFO covered the range between 4.470 MHz and 4.391 MHz.

I’ll talk more about it in the next post about the transmit mixer and filter, but that provides an actual range of 3.530 MHz to 3.609 MHz.  This includes the QRP CW calling frequency at 3.560 as well as W1AW’s code practice sessions transmitted on 3.5815.  It does not include the main CW DX window between 3.500 and 3.525 MHz, but I’m still working on getting my Amateur Extra license, so I’m not authorized for that part of the band anyway.


T-Kit 1380 Kit Build: Part 1

I won a T-Kit 1380 80m 3 watt CW transceiver kit at the WCRA Hamfest back in 2014, and it’s been sitting on my bench unopened since then.  I didn’t have my license at the time, but I got my General license about a week later. I decided that this summer was a good time to start building it. Here’s a link to one you can pick up if you’re interested :

I have quite a lot of kit-building experience, but most of it is digital electronics, so this is probably the most complex kit I’ve ever built, both in number of components and circuit complexity.

If you’re not familiar with amateur radio, this kit will let you transmit and receive on the 80m band (between 3.5 and 3.75 MHz) using CW (morse code).

1380 Manual

The schematics in the manual are a bit low-res, but the instructions for assembly are very good.  My biggest complaint with the manual so far is that errata are supplied as a stack of papers inside the manual.  Some of them referenced parts this kit doesn’t use, so it was a bit of a chore to go through and update the instructions and update the steps by hand.

The assembly process is documented in phases, with testing procedures at the end of each phase.

Phase 1 is construction of the DC input circuitry as well as the keying circuit.  The keying circuit is connected to the code key, and disables the receive circuitry while transmitting.  Here’s the diagram for phase 1.

Phase 1 schematic

Phase 1 schematic

Here’s the board as assembled:

Phase 1 assembled

Phase 1 assembled

This is a pretty densely packed board, and the silkscreen suffers for it.  The manual gives pretty decent drawings of the section of the board each phase is concerned with, and this helps quite a lot.  You can usually locate a component by finding a nearby component you’ve already installed, or one whose silkscreen isn’t broken up by a pad.

Once this phase was assembled, there was a short test procedure to verify that it is operating correctly.  Essentially, I had to apply 12v to the 12v input, and then verify that R13 (the resistor in the center of the board, just between the two beige ceramic capacitors) read 0v while the key wires were disconnected (the white and black wires just under ‘J1’), and 12v while they were touched together.

I misread the directions and it took me a while to figure out what I was doing wrong (I was measuring voltage drop across the resistor, not between the resistor terminal and ground), but in the end, everything checked out.

The full board

The full board

As you can see, there’s quite a lot of work still to do, so come back next time, when I move on to assembly and testing of the VFO section!

New (well, old) Workshop Phone

I picked up an OBi100 adapter for the space a few weeks ago, and have been hunting around for a phone that we can use with it.

I stopped by the local Goodwill on my way in to the workshop one morning, and picked up two phones for $1.99 each.  One was a Lucent speakerphone that was missing a power adapter (I managed to dig a compatible one out of our giant box of wall warts in the electronics room).  The other was a fantastic old GE Model 500 rotary dial phone.  One of our members with a bit of experience in the area pegged the year of manufacture as 1965, with the last service in 1984.  I cleaned it up with some rubbing alcohol, and we swapped the old phone number placard for a W88 circuit board mask:

It took about 10 minutes of googling to find the pinout on the 4-prong adapter so we could hook it up, and it was hooked up to our Google Voice phone number and ringing.

Model 500 Plugbox Render (top)

The alligator clips aren’t a great solution, so I started designing a box to plug it into.  I used OpenSCAD to do the design.  The source files are available in my GitHub repo, but here’s a couple quick screenshots of the render:

I measured for the holes on the top using a pair of digital calipers, and then did some quick trig to figure out the offsets from the center point of the box.

Model 500 Plugbox Render (bottom)

The pins on the plug are arranged in a trapezoidal fashion so you can’t insert the plug backwards.  The bottom of the box is set up so that I can drop in a Radio Shack perfboard with a standard phone line connected to a couple of spring contacts on the wider pair of the two holes.  The standoff holes in the perfboard line up with the blocks in the corner of the box, and I have a second 3D model for the bottom of the box that sits below the perfboard.

The most difficult part of designing the box was getting the Workshop 88 logo to come out right.  I found this great tutorial on how to use InkScape to build 3D shapes in OpenSCAD and I used the source image for the same circuit board mask that we stuck on the phone.  Once I had that in place, it wasn’t too difficult to use it in OpenSCAD.  Check out the GitHub repo for details.

Model 500 Adapter with perfboard

I did a couple of test prints on the MakerBot to make sure everything fit together, and it looks like it is working pretty well.  I haven’t done another print with the logo, but judging from the generated STL, it is going to be much more involved than the basic prints.

When I added the logos, the STL went from about 300K to over 2MB.  I’m hoping that the print itself will be stable enough that the logo won’t lose resolution and look bad.  We’ve got a new stepper motor extruder ordered for our MakerBot, so that may help a little bit with the resolution.

Model 500 Adapter 3D print (bottom)

The next project is to get this puppy to dial out.  We’ve had a few suggestions, from converting the pulse dial to DTMF using an Arduino Teensy to hooking up a Blue Box with an acoustic coupler.  Right now the easiest way to use it is to dial out on a different phone, and then pick up the handset.  That really isn’t all that much fun.  I’m leaning towards the acoustic coupler method, but early experiments with DTMF generators on our cell phones didn’t go too well, so we may have a bit more work cut out for us.  The Wikipedia article says that blue boxes no longer work due to changes in the switching infrastucture, which… ahem… anecdotal evidence would tend to confirm.