A Better Volume Control for SONOS Speakers

I have written previously about my SONOS speakers and my family’s frustration with the app that controls them.  See SONOS Speaker API Overcomes App Limitations  In that blog post, I resolved my wife’s biggest issue with the SONOS app. She now has a two-button device that plays and stops her favorite playlist on the speakers in the basement.

But my biggest pet peeve remained unresolved until recently. Each speaker has its own, independent volume control. This is a double-edged sword. It’s great because my wife can blast her playlist in the basement while I’m upstairs playing my classical playlist at a much subdued volume. On the other hand, if we want to play a party mix over all the speakers in the house, I have to set the volume on each speaker individually.

For my wife’s solution, I implemented an MQTT broker, subscriber and publisher.

A Raspberry Pi Zero W runs a Broker program and a Subscriber program at boot.
Both apps are written in Python. The Broker listens on the network for any MQTT traffic and forwards that information to all Subscribers that have expressed an interest in the data. When the Subscriber starts, it tells the Broker what traffic it’s interested in.
The two-button device is the Publisher. When the PLAY button is pressed, the device sends a sonos/play message to the Broker. The Broker forwards this message to the Subscriber. The Subscriber responds by calling the SONOS library (soho) to control the speakers. The Subscriber runs on the Raspberry Pi Zero because the SONOS Library is beefy and needs the power and a lot of dependencies. As long as I had a Pi Zero in the mix, I decided to also use that for the Broker as well. The Broker and Subscriber are just two processes that happen to be running on the same hardware.

I was able to use this existing infrastructure to solve the volume control problem. I just had to write a Publisher app to cause the existing Subscriber to set speaker volumes in addition to launching my wife’s playlist. I decided to write a SwiftUI app for my iPhone for Publisher. Here’s what the new architecture looks:

The iPhone app has a slider and a Volume button that sends a message to the Broker which passes it along to the Subscriber.  With this button, I can set the volume of all the speakers to the same specific value.

The Minimize Volume button tells the Subscriber to scan the volume levels of all the speakers, find the minimum value, and adjust the volume on all the speakers to that minimum level. The Maximize Volume button sets the volume to the same value as the loudest speaker.

Finally, Whisper sets the volumes to a level that is just barely audible — you can tell the speakers are on, but they don’t interfere with phone calls or people at the door.

Hack a Dead Cat Muff From a Fuzzy Cat Toy

For over a decade, I’ve wanted to attach an action camera to my bicycle helmet to make time lapse and long form videos. Now that I’ve worked out many of the kinks you can check out the cool results on my HYPERBIKE YouTube channel.

In 2017 I attached a 3D printed PLA GoPro HERO 3+ mount to my bicycle helmet (the same helmet, sans stickers) but it had some serious problems. The footage was too jittery to use, video stabilization was not as advanced or as available as it is today. More seriously, I attached the mount to the helmet with a bolt that actually touched the top of my head. If I had an accident it could have caused serious injury.

Fast forward nine years, I designed a GoPro compatible base designed to be 3D printed from flexible TPU filament and safely zip-tied to my helmet between the forward vents.

The camera holder is an adaptation of https://www.thingiverse.com/thing:6978330. The GoPro HERO 4K has a 165° lens so I removed some material from the interior corners of the holder around the neutral density (“ND”) filter for a better field of view (“FOV”) reducing corner vignettes from the holder.

When 3D printing flexible filaments, I find it beneficial to remove as much friction from the feed mechanism as possible. The easiest way I found to do this is to mount the spool on a paint roller clamped to a nearby shelf. The paint roller has smooth rolling bearings and the fuzzy roller holds the spool securely. This works so well I need to be careful not to pull the filament too quickly because the weight of sagging filament is enough to cause the whole spool to unroll.

I still like to use the TPU settings from this older video from Angus at Makers Muse, one of many awesome design and 3D printing YouTube channels. I could probably print a little faster but I like the quality and rarely need to shave minutes off a print time of a few hours. I’m really happy with how well I’ve tuned the support settings to be functional yet removable, a challenge with a tough filament like TPU.

I use this same GoPro HERO 4K camera holder for my 5″ quads so I know it works well and can stand up to a beating.

This camera mount, being flexible, has a fair amount of bounce and wiggle, but the modern GoPro HERO 4K has a built in gyro and embeds the motion data in the video files. I use Gyroflow to join and stabilize my videos with beautiful results.

I took it out for a few bike rides and it worked great but there was a LOT of wind noise. I never noticed wind noise in the drone footage because the quads are so loud, but on a bicycle with dialog, the intermittent loud roaring was far from ideal. The camera microphones need a “wind guard”, also known as a “muff”, or “dead cat”. These are the furry covers you always see on microphones to diffuse air energy before it gets picked up. They’re affordable and available, but I didn’t want to wait for shipping, so inspired in part by this guy, I searched all over the house for something sufficiently sacrificial, furry, and immediately available.

I found a whole bag of these little cat toys so I hot glued some cool looking black ones to the 3D printed camera holder. The GoPro has two microphones, one on top and one in front right under the lens.

Now my camera looks like Bert from Sesame Street with a goatee.

I needed to carefully trim the lower muff so it was not visible from the camera.

The cat toy dead cat works great. Ideally maybe something with longer fur that is a collection of different lengths like the commercial options may be an improvement but this is what I had and I’m really happy with it. This was a quick cheap effective hack that’s still working for me.

What will you make next?


Workshop 88 makerspace is sponsored by Comparion Insurance. Local agents who know insurance inside and out, able to easily guide clients through the complex process of finding policies to match their unique needs.

Benefits:

  • The right coverage at the right price
  • Insurance options from a wide variety of carriers
  • A local expert looking out for their exact needs

Use the QR code or this link get a no-commitment insurance quote and save money today: https://www.comparioninsurance.com/workshop-88…

Better Option for Bottle Opener Collection

I collect bottle openers, one for each vacation destination or brewery visit. They’re kept in chronological order on a rack I made in 2017 from the oak cabinetry panel of our old kitchen refrigerator. To be honest, it was 80% full the day I finished it nine years ago. Keeping them under the 3D printers and over the PCs in this high traffic area is problematic, they are frequently knocked down. I needed a new sensible extensible solution.

It makes more sense that they’d be kept on the “beer fridge” so I designed a modular magnetic rack system for them in FreeCAD. The rack is a 290mm x 25mm dovetail that just barely fits on the Prusa2 (Klipper/RAMPS modified Prusa i3 MK2s) print bed. My original design was 300mm long but didn’t fit on the bed, so I shortened it in the spirit of “design for manufacture”. I printed the hooks below on Sam Bell 2 (a home built i3 clone functionally identical to the Prusa2). I chose blue and white to match the colors of the München Biergarten magnet already on the white refrigerator. After some iteration to determine adequate spacing, tolerance for mounting the 4mm x 2mm magnets, and a few more iterations to get a good fit for the hooks on the dovetail, I started cranking them out in PLA. The hooks print best one at a time so I spaced them out and for the first time I configured and used sequential printing. Sequential printing can print multiple parts but it prints each one after the other instead of all at once. They all turned out great.

Side note: My fathers father, William “Herbert” Williamson fixed clocks, watches, and jewelry. He had many unique and interesting tools. When I was four years old I always wanted to play with his brass and rawhide hammers. I remember occasionally seeing them when he opened the lower left drawer of his workbench and I think I only got to touch them once. I can hardly imagine the stress level while handing a four year old a hammer in a small clock workshop. I’ve since inherited them and it gave me great joy to finally be able to use the rawhide hammer to drive in all the magnets.

It’s all done and it turned out better than I expected.


Note: The silver bar on the freezer door contains nine promotional bottle openers from one visit to the 2023 Design-2-Part manufacturing trade show, whereas on the refrigerator door the bottle openers are each unique to a trip in chronological order.

Bonus Content

If you are curious, this is what the inside looks like. I occasionally like to take a picture after restocking which is roughly annually I realized after digging up these photos.

This is probably my biggest fitness headwind but it brings me joy. I’ve veered waaaay off the topics of design, making, and 3D printing.


Now back to your regularly scheduled programming.

What will you make next?


Workshop 88 makerspace is sponsored by Comparion Insurance. Local agents who know insurance inside and out, able to easily guide clients through the complex process of finding policies to match their unique needs.

Benefits:

  • The right coverage at the right price
  • Insurance options from a wide variety of carriers
  • A local expert looking out for their exact needs

Use the QR code or this link get a no-commitment insurance quote and save money today: https://www.comparioninsurance.com/workshop-88…

Get on track! Making a 3D printed track saw adapter

Workshop 88 had a Makita track saw rail without a saw to go with it so I thought I’d try designing a 3D printed sled for the saw. Workshop 88 has a few circular saws so I was looking for a way to make a “universal” sled. Luckily, I found that a surplus steel bar originally for hanging file folders was a good fit for the tool mount slot at the front of the saws.

I learned a couple of interesting things in the process, like somehow the Ryobi battery operated saw magically had a base that perfectly fit against the side guide in the rail, so it could be used directly without an adapter. The other thing I learned from Jim is that circular saws can be either left-handed or right-handed. The corded Menards Tool Shop circular saw is right handed and the battery operated Ryobi is left handed.

I sketched the profile of the track in FreeCAD and iterated 3D printing profiles that fit snugly but moved freely with the slot, then modeled the slot holes and bosses needed to securely install the steel mounting bar using M3 socket head cap screws.

When happy with the fit I extended the model to a length that would extend under the saw past the blade that would also fit comfortably on the Qidi X-Plus 3 printer. Finally I added a Workshop 88 logo for decoration. Thanks again Canuck Creator for donating the 3D printer to Workshop 88 at the Midwest RepRap Festival (MRRF)! It really has been a great upgrade for the Makerspace.

I cleaned the bed, used a little Aqua Net hairspray for added adhesion security, and loaded up a spool of Polymaker red PLA to match the saw. Thanks Polymaker for the sponsorship!

It fit together beautifully! Only the very astute reader may notice that the picture of the one on the 3D printer is a mirror image of the working one below. After printing for nearly 3 hours I excitedly removed it from the bed to discover that I had extended the wrong end of the thin prototype and the tool mounting bar slot was at the wrong end! I was so confused at the time, but when I realized the mistake at open house, we all laughed. I’ve since corrected the CAD and printed the working non-Bizarro version depicted below.

It turned out great. The bar allows lateral adjustment of the saw to really dial in the clearance between the track and the blade. The broad PLA bottom rides smoothly on the low friction strips, and the tolerances are tight enough for high accuracy cutting without binding. I’m super happy with this design.

It’s a very niche design for a particular saw and track, and the CAD file is a little hackish, but if you are interested, here are the CAD and step files for download:

The new addition to the wood shop lives on the shelf with the circular saws. We all can’t get over how well the Polymaker red PLA matches the color of the saw, too.

What will you make next at your local makerspace?


Workshop 88 makerspace is sponsored by Comparion Insurance. Local agents who know insurance inside and out, able to easily guide clients through the complex process of finding policies to match their unique needs.

Benefits:

  • The right coverage at the right price
  • Insurance options from a wide variety of carriers
  • A local expert looking out for their exact needs

Use the QR code or this link get a no-commitment insurance quote and save money today: https://www.comparioninsurance.com/workshop-88…

Revive a dead pump with FreeCAD and 3D printing!

It’s springtime in the American Midwest, which means flowers are blooming, birds are chirping, the grass is getting greener, and at my house the fountains need to be set up for the summer. This fountain pump was struggling for a day then stopped pumping altogether and started rattling loudly. When I went to order a replacement pump I realized this was already a replacement pump from only 3 years ago, so I thought I’d do a little digging to see what went wrong and see if anything was serviceable.

The little 6W 500 liter per hour pump is a familiar AC impeller type and I found that one of the impeller blades had broken off. I was impressed at the amount of scale on the fountain and the degradation of the impeller specifically. I hadn’t thought about it but I guess it makes sense as we continually add water to replace evaporated water, constantly increasing the concentration of dissolved minerals in the solution.

With the replacement pump already installed in the fountain and nothing left to lose, I decided to whip up a 3D printable impeller model in FreeCAD based on the broken part to see if I could repair the pump.

Here are the FreeCAD and 3D printable .step files:

I printed it in Inland PLA on my VORON Trident 3D printer. I thought I might have trouble with the thin wall cylinder at the top but it turned out alright.

I used clear silicone RTV adhesive to glue the impeller into the magnetic rotor body, then went to Workshop 88’s Thursday open house (every Thursday from 7:00pm – 9:00pm).

When I got back home I reassembled the motor, ran a drill up the center to ensure smooth operation, then tried it out.

Holy Moly, did it work!

It sprayed water all over my bench and workshop.

I don’t know how durable the PLA impeller will be but now I have a spare pump for home and shop projects, or maybe I will experiment with impeller designs, or maybe to shuffle back into that fountain every 3 years (lol).

A quick and fun project enabled by open source software and 3D printing.


Workshop 88 makerspace is sponsored by Comparion Insurance. Local agents who know insurance inside and out, able to easily guide clients through the complex process of finding policies to match their unique needs.

Benefits:

  • The right coverage at the right price
  • Insurance options from a wide variety of carriers
  • A local expert looking out for their exact needs

Use the QR code or this link get a no-commitment insurance quote and save money today: https://www.comparioninsurance.com/workshop-88…

BADGES? We don’t need no stinking badges!

Members of Workshop 88 makerspace have been involved with hacker conventions and badge culture where they would design, program, fabricate and distribute badges at hacker conventions like THOTCON.

These devices were made in 2014 for THOTCON 0X4

These badges each utilize an FS1000A RF transmitter and and XY-MK-5V RF receiver (similar to this) to build two way radio modem, S11145 UV Sensor, and a Funduino Pro Mini Arduino compatible micro-controller. The THOTCON 0x4 badge project including source code, libraries, PCBs, and documentation is here: https://github.com/Workshop88/thotcon0x4

Since these devices served their purpose eleven years ago and haven’t been touched since, it’s safe to assume this inventory of devices can be hacked and reused. Let’s verify we have everything needed to [re]program one of these.

The Arduino Pro Mini is a small Arduino compatible board based on the ATmega328P. It does not have a USB connector so an external serial programmer is required. Fortunately there were two in the box with the badges and the badge crafting team even fabricated a board with pogo pins for in circuit programming without soldering.

Programming was as easy as it ever is on the Arduino:

  1. Matched the markings on the Funduino to those on the serial board to connect them correctly
  2. Found an appropriate USB Mini cable in Workshop88‘s eclectic and diverse cable cabinet
  3. Downloaded and installed the Arduino IDE on the laptop
  4. Ran the Arduino IDE
  5. Loaded the Blink example
  6. Plugged the serial programmer into the laptop USB
  7. Selected the board and COM: port after letting the boards manager and libraries update
  8. Compiled and uploaded
  9. Enjoyed the satisfying blinking light

These Arduinos are are ready to be updated and re-programmed for adaptations of the THOTCON 0x4 badges or in new member projects!

If you’re interested in Arduino or hardware hacking or badge culture come visit Workshop 88 at our open house every Thursday from 7:00pm – 9:00pm

What will you make at your makerspace?

DIY Dust Collector For Cleaner Workshop Air

A lot of dust can be generated in the workshop, especially with power tools. The dust is neither healthy nor pleasant to breathe. Effective air filtration in small workshops need not be expensive or complicated, here we show how to make a cheap effective versatile air filter for dust and particles from a box fan, furnace filter(s), and 3-D printed clips (or the handyman’s secret weapon: duct tape).

For years in our wood shop we’ve used this 20″ box fan with a fine 20″ wide furnace filter taped over the back or inlet side of the fan. Having served us long and well she’s past retirement condition, so I worked in some upgrades while replacing it.

I love duct tape as much as the next hacker or DIY’er (RIP Red Green), but I never liked its permanence in this application. The fan made a great air filter but no longer could easily be used to move more air for ventilation, so I designed and 3D printed some simple brackets that allow easy placement, removal, and exchange of different filters on two of our fans. At home I also use the more fiberous high flow air filters to collect the majority of over spray when spray painting.

I designed the bracket in FreeCAD, 3D printed it and a mirror copy in Polymaker PLA on the makerspace’s Quidi 3 Plus 3D printer. The source FreeCAD file, STL, and Step files are included in this zip.

The part is simple, but I was sure to design in generous tolerances and an access hole for the screwdriver needed to install the part (two concepts I wish the VORON team had embraced as well as Prusa has).

I had to select longer sheet metal screws from the makerspace’s generous eclectic fastener collection, as the stock screws were only long enough to hold the grating on, with no length to spare.

Now filters are easily dropped into the brackets and removed. There is no need for a tight fit in the brackets as when the fan is on the filter is drawn tightly to the rear grating.

So happy with the first one, I printed and installed a second set on the other fan.

I noticed a slight difference in the dimensions of the second fans plastic grating caused the brackets to be bent outward slightly. I could have updated the dimensions of the design and printed another set, or I could have used a knife to shave a little plastic off the edge of the fan grating, but I decided the easiest thing to do would be use a heat gun to deform the brackets on the fan, which could even have been done with a hair dryer on PLA.

Bonus content: Big Feet

You may have noticed that we replaced our fan’s feet with boards. We find the fans are far less likely to tip, blow, or get knocked over in the shop with the broader base, which also turns out to be more durable than the stock plastic fan feet. (The first thing I ever designed for 3D printing was a replacement foot for a 20″ box fan)

Note the base extends farther from the back of the fan than the front to better handle the force of the airflow.

One fan has a base held on with zip ties, the other employs sheet metal screws.

One of the zip ties had broken, that was an easy repair. While I had the back grating off I replaced the broken zip tie through the spacer we fortunately had not lost, tightened, and cut off the plastic end with end nippers so as not to leave sharp corners.

The other fan had not yet had its base replaced but Tom and I decided to re-use the base from a fan that we wore out last year and chose to install it with more sheet metal screws. We carefully aligned the foot to the bottom of the fan and clamped the foot to the table, then punched the hole locations to the sheet metal. After drilling the pilot holes (not pictured) we selected four matching broad head short sheet metal screws and assembled the fan base.

Voila!

Two affordable versatile shop air filters with the bonus of a sturdy base.

What will you make at your makerspace?

VACU-SWEEP, Better than any dustpan!

Here’s how we threw together a quick vacuum sweeping helper to keep the workshop clean using scrap wood, screws, 3D printing, and shop tools including using four saws five ways.

A super nice thing about the makerspace is the wide variety of tools that are readily available, this project used (in order):

  • A piece of scrap plywood
  • The table saw with crosscut sled to straighten the rough cut sides of the triangle
  • A pencil, nail, and scrap wood as “Hacker’s Compass”
  • The drill press for the jigsaw starter hole
  • The jigsaw to cut the circle
  • The table saw with the fence to cut the sides of the triangle square to uniform width (height)
  • The compound miter saw to cut mitered ends on the sides
  • The Qidi X3-Plus 3D printer and PLA for the hose adapter (thanks again Canuck Creator and Polymaker for donating the 3D printer and PLA)
  • FreeCAD for the hose adapter design
  • Screws and washers
  • The laser printer for the name
  • The paper cutter and scissors to cut the name out nice and square
  • Packing tape to affix the name

It needed a 16″ wide mouth for the best results with push brooms, and a 4″ inlet for the dust collector hose. We found the perfect rough cut triangular piece of scrap plywood in Workshop 88’s ample wood supply.

The edges of the triangle were trimmed straight and square on the table saw using the crosscut sled.

We marked 4 inch diameter (2 inch radius) circle using our “Hacker’s Compass”. The “Hackers Compass” is a scrap piece of Masonite from the back of a projection TV riddled with ventilation holes that, with a nail or screw and pencil, can mark arcs and circles. The improvised compass, initially needed to draw a large circle, started as a joke but turned out to be super useful and now is an easy go-to tool hanging in the shop.

The drill press was used to drill a 5/16″ hole just inside the edge of the circle for the jigsaw blade.

The workpiece was clamped to the edge of the workbench and after ensuring the workbench was out of danger, the large circular hole was quickly cut with the jigsaw.

A 4 inch hose adapter was designed in FreeCAD and successfully 3D printed after a couple failed prints due to mistakenly loading PETG instead of PLA (Doh!).

Another piece of scrap wood was selected for the edges.

The U shaped scrap was cut into 2 irregular strips on the band saw, then cut to the roughly one inch height dimension on the table saw using the fence to guarantee both sides were the same height.

The ends were mitered and cut to length on the compound miter saw, then screwed into place. The failed 3D printed adapter in the picture illustrates where the hose adapter will screw into place.

The hose adapter was screwed into place with wood screws and washers, then finally we affixed a laser printed name with packing tape. Voila!

Live in action!

This was a fun and useful project that cost next to nothing and took almost no time to make.

If you want to take a better look around Workshop 88 makerspace, see our 360° virtual tour.

What will you make at your makerspace?

2025 Workshop 88 Makerspace 360° Virtual Tour

The Makerspace

Visitors are first greeted by our charming entrance, then our charming members. Our creative and knowledgeable community is one of our greatest strengths (not pictured here).

The makerspace is divided into five areas, the first is the general meeting room. This area is primarily used for meetings, classes, laser cutting/engraving, 3D printing, crafts, and projects.

The next area is the workshop / woodshop where makers can do just about anything enabled by a wide array of hand and power tools.

At the far end of the workshop you’ll find the Shapeoko CNC machine you’ll start to see some of our metal working tools.

The electronics lab hosts tools and supplies for projects of all sizes and skill levels, from basic breadboard circuits to SMD PCB fabrication, from Arduino to Raspberry Pi and beyond. This is one of the most used areas in the makerspace.

The metal shop not only houses our Atlas lathe, SIEG manual/CNC mill, metalworking tools, and supplies but we also have a good inventory of metrology equipment for precision measurement.

And finally we come to the storage area where we keep everything that does not belong in the rest of the space. Here, members store personal supplies and projects alongside club projects and Workshop 88 surplus inventory including extra tools, equipment, 3D printers, robotic arms, CNC machines, a robot skeleton that can play a Theremin, and more.

In the rear of the storage area, Workshop 88 has a large collection of wood, plastic, glass, and other supplies available to members for projects.


How To Find Workshop 88

Workshop 88’s entrance is NOT on Main Street. Contrary to what your navigation system will tell you, do not use map apps to find the entrance.

Workshop 88’s entrance is in the public parking lot at 530 Pennsylvania Avenue, Glen Ellyn, in the back southwest corner. 

Workshop 88’s sign and entrance cannot be seen from the street. Pennsylvania Avenue is one way west, turn left (south) right after the mailbox, before Main St. There is additional street parking in the neighborhood and a free parking lot behind the fire department on the northwest corner of Pennsylvania Ave. and Main St.

Rear of the brick pedestrian walkway in the parking lot, Workshop 88’s sign can be seen from here. This is about halfway from the street to the entrance.

Rear of the paved parking lot where the gravel driveway extends to the southwest.

Workshop 88 Entrance

Welcome to Workshop 88 makerspace!

Managing fonts? There’s got to be a better way!

I frequently get new fonts for my video projects which can litter my system with tons of fonts that are no longer needed (unless I want to edit old video files).
For example I just downloaded 19 Horror font families from my favorite free fonts site 1001freefonts.com for a project which includes 129 discrete fonts including bold, italics, etc., of which I will probably use no more than 5 in the video.
I’m trying and really liking the free cross platform font manager FontBase.  I can move fonts into categories then enable and disable them as needed, so they are not all active all the time but I don’t have to manually install and uninstall them. I can locate fonts by install date too making grouping existing fonts easy. 

Applications like word processors and video editors still see a large alphabetically sorted list, rather than a hierarchical tree view, but it’s a huge improvement to be able to enable and disable fonts for projects. I feel like this is another area where modern OS’s have been negligent and are behind expectations of computers in 2025, like file sharing across devices and OS’s (see copyparty).