Building a Shop Air Filter with Box Fans

Over the years, I’ve seen many versions of a shop air filter, made from box fans and 20×20 inch furnace filters. A few years ago I picked up some old box fans on Facebook Marketplace and bought a pack of filters from Sam’s Club. They’ve been stacked in the corner.

It was finally time to build my air filter. I removed the back covers, feet, handles, and knobs from the fans. I got my first look at the switches inside, which are nearly identical.

I’d easily be able to wire the fans together, so I removed the switches and power cords.

I put together a frame from OSB, cut slots to feed the wires through, and screwed the box fans in.

Then I grabbed wood that had been salvaged from a pallet to construct a door.

On the back side, I used glue and brad nails to attach plywood rails. I also made tabs to hold the filters secure.

I attached the door with a couple hinges and made some notched tabs to hold the door shut.

Then it was time to work on the wiring and electronics. I had recently watched a YouTube video showing how to make an old fan smart and his code with ESPHome and Home Assistant gave my a great start. I bought a 4 channel relay board to use with a an ESP8266 development board, a button, and some LEDs. I tore open an old USB power plug and was originally going to tie in the 120 volt line, but decided against it. First, I tested out the circuit and code on a breadboard and then soldering things up more permanently.

A plastic screw container was a good side, so I used hot glue to secure the boards and then wired up all of the fan connections.

I’m not sure if I’ll ever use the button, but it allows me to cycle between the three speeds and turn it off. The three LEDs show which speed is currently running. The only thing I got wrong was reversing the low and high speeds, which was a quick fix in the ESPHome code. Speaking of the code, here’s mine.

esphome:
  name: shop-air-filter
  friendly_name: Shop Air Filter

esp8266:
  board: d1_mini

logger:
  level: WARN

api:
  encryption:
    key: "input_yours"

ota:
  - platform: esphome
    password: "input_yours"

wifi:
  min_auth_mode: WPA2
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  manual_ip:
    static_ip: 192.168.1.2
    gateway: 192.168.1.1
    subnet: 255.255.255.0

time:
  - platform: homeassistant
    id: home_time

binary_sensor:
  - platform: gpio
    pin: {number: D5, mode: INPUT_PULLUP, inverted: true}
    name: "Speed Button"
    on_press:
      then:
        - script.execute: cycle_fan_speed

  - platform: template
    id: active
    lambda: 'return id( fan_speed ).state > 0;'

switch:
  # Relays
  - platform: gpio
    pin: D3
    id: speed_1
    inverted: true
    interlock: &fan_interlock [speed_1, speed_2, speed_3]
    internal: true
  - platform: gpio
    pin: D2
    id: speed_2
    inverted: true
    interlock: *fan_interlock
    internal: true
  - platform: gpio
    pin: D1
    id: speed_3
    inverted: true
    interlock: *fan_interlock
    internal: true

  # LEDs
  - platform: gpio
    pin: D6
    id: led_1
    internal: true
  - platform: gpio
    pin: D7
    id: led_2
    internal: true
  - platform: gpio
    pin: D8
    id: led_3
    internal: true

number:
  - platform: template
    name: "Fan Speed"
    id: fan_speed
    min_value: 0
    max_value: 3
    step: 1
    optimistic: true
    restore_value: true
    on_value:
      then:
        - script.execute: set_shop_filter_speed

text_sensor:
  - platform: template
    name: "Current State"
    id: current_state

sensor:
  - platform: duty_time
    name: "Filter Runtime"
    id: shop_filter_usage
    sensor: active
    restore: true
    unit_of_measurement: h
    accuracy_decimals: 1
    filters:
      - multiply: 0.000277778 # Convert seconds to hours

button:
  - platform: template
    name: "Reset Filter Timer"
    icon: "mdi:timer-off"
    on_press:
      then:
        - sensor.duty_time.reset: shop_filter_usage

script:
  - id: set_shop_filter_speed
    mode: restart
    then:
      - switch.turn_off: speed_1
      - switch.turn_off: speed_2
      - switch.turn_off: speed_3
      - switch.turn_off: led_1 
      - switch.turn_off: led_2
      - switch.turn_off: led_3
      - delay: 300ms 
      - lambda: |-
          if ( id( fan_speed ).state == 0 ) {
            id( current_state ).publish_state( "Off" );
          } else if ( id( fan_speed ).state == 1 ) {
            id( speed_1 ).turn_on();
            id( led_1 ).turn_on();
            id( current_state ).publish_state( "Low" );
          } else if ( id( fan_speed ).state == 2 ) {
            id( speed_2 ).turn_on();
            id( led_1 ).turn_on(); id( led_2 ).turn_on();
            id( current_state ).publish_state( "Medium" );
          } else if ( id( fan_speed ).state == 3 ) {
            id( speed_3 ).turn_on();
            id( led_1 ).turn_on(); id( led_2 ).turn_on(); id( led_3 ).turn_on();
            id( current_state ).publish_state( "High" );
          }
  - id: cycle_fan_speed
    then:
      - lambda: |-
          int next_speed = id( fan_speed ).state + 1;
          if ( next_speed > 3 ) next_speed = 0;
          id( fan_speed ).publish_state( next_speed );

I used Google Gemini to help and it had a great suggestion to track the run time and add a maintenance reminder when it was time to replace the filters.

In Home Assistant I created some automations. My dust collector uses a smart plug, so when it draws electricity, the air filter automatically turns on at high speed. When the dust collector turns off, the air filter continues to run for 15 minutes before turning off. If I had to remember to turn on the air filter all the time, it would rarely happen, so this is amazing.

I’m still on lifting restrictions for several weeks so Brandi helped me install the air filter on the ceiling.

I wish I hadn’t waited so long to build this!

DIY Shop Towel Bar

With my big shop table done and a lot of storage space to fill, I finally started to tackle the boxes and piles of things that have been sitting in the corner for nearly a year and a half. First up was towels, rags, cleaning supplies, and first aid. We had an unused plastic shelving unit, so I put it to use. It went between my Ryobi cordless tool wall and the utility sink.

Finally trying to pick things up!

I’ve been draping a hand towel over the edge of the sink since moving in and now I had a place to mount a towel bar. I quickly cut some 2×4 to size, so it would fit between the edges on the side of the top shelf.

Truss head screws, so they’re less likely to pull through the plastic.

Then I drilled four holes in the edge of that shelf and mounted the piece of wood. I drilled two more holes in a piece of PVC and mounted it to the wood.

Ignore the sand marks.

This was a quick project and it’s extremely useful. I love simple shop builds where functionality is the most important requirement.

Several years ago my aunt made me Lions and Red Wings towels that I use in the shop.

If you’re looking for a much nicer towel bar/rack, check out the rustic ones with hooks I made for Brandi’s old house or the combo of black walnut and railroad ties for our old previous house.

Outfeed Assembly Table – Part 3

Time to finish this table. While part 1 and part 2 were quite involved, the rest was all about drawers. I needed to make use of the rest of the space inside the table.

First, I got to work on a cabinet next to the router station, on the front of the table. I wanted to use five sets of cheap drawer slides I salvaged from an old dresser. I had enough room for four deeper drawers, using 22″ slides. I took measurements and sketched out a plan. I had to design around the vice, which hung down below the frame of the table.

I cut a full bottom panel and some 2x4s for extra bracing. I wanted to make good use of space and have the most room for drawers on the right side of the table, so the vertical supports were made in the odd L shape again. The one on the left was cut to match up with the one from the router station.

In the middle, I needed something up top to connect to, so I cut a piece of 2×4 and would secure it in place after determining the exact width of the left drawer column. The vertical on the right needed some cut away around the vice.

Then I was able to cut all of the drawer sides, with two different depths for the different types of slides I was using. Or so I thought.

As I was going over some of my notes I realized I didn’t cut the back part of the middle and right verticals tall enough. To fix the mistake, I glued and pocket screwed on some patch pieces. I also had to recut longer sides for two drawers. From there I figured out the width of the left drawers based on the foam router bit storage tray I was using. Then I cut the fronts, backs, and bottoms for the five left drawers.

Assembly was quick with glue and brad nails.

I modified the old drawer slides with an angle grinder to remove tabs that were in the way for my use case.

I mounted the slides to the verticals for both columns of drawers. Then I was able to secure the left and right verticals to the table frame, attach slides to the left drawers, and put them in to guide the placement of the middle vertical. It got screwed in, along with the upper 2×4.

With the left column of drawers in, I figured out how wide the remaining parts needed to be for the right column of drawers and got them done. Then it was time for some drawer fronts and a false front, since the vice prevented a drawer from being installed there. This gave me a place for a recessed power strip with USB. I didn’t have enough matching handles, so I used two different styles I’ve bought at estate sales.

I filled in a few drawers.

I will never combine different drawer slides in a cabinet like this again. It was a major pain in the ass and too much to keep track of with the different mounting methods, widths, depths, and clearances. I had to adjust the placement of the old slides many times and alter some drawers. Wasn’t worth it.

The drawers for the right side of the table was much of the same and went together a lot faster. The table frame is slightly out of square, so the bottom drawer was a touch too tight and the top too loose. I had to route a recess on one and add some spacer material on the other. The handles were cut out of a test piece from the nightstands I made.

I cut a piece of shiplap paneling and closed off the back of the shelf. This leaves a little unused area in the middle back of the table. If I took out the drawers I could hide something back there. Shhh!

The saw outfeed and the huge work area are already amazing to have. This is really going to improve my processes in the shop. Here are some final photos.

Outfeed Assembly Table – Part 2

To keep the momentum going from part 1, I started the next phase of the build. This phase is the router station. I bought the Bosch 1617EVS router to use in a JessEm Mast-R-Lift II, with a POWERTEC 32″ fence. I also bought 2×48″ of T-track with four hold down clamps and a four pack of intersection kits.

First, I had to figure out exactly where to install everything. I placed the fence and lift (upside down) on the table to get a feel for it. Then I outlined the lift and drew in the T-tracks.

Router station setup with a lift and fence on a work table, showing precision tools and measuring instruments.

I cut a spacer equal to the distance from my router base to a 3/8″ straight bit. Then I used double-sided tape to secure the border pieces. I removed the material in two passes and cut out the middle with a jig saw. The radius on the corners was much larger than the router bit, so I free-handed those up to the pencil marks.

I installed threaded inserts for the four bolts that secure the lift. Yet my centering was off, so it didn’t work out. I removed the inserts and drilled through to use longer bolts with a washer and nut under the table. I had to drill a recess in the bottom because I couldn’t find long enough bolts.

Close-up of a circular hole cut into a wooden surface, showing wood fibers and some markings around the edge.

Setting up to route the first T-track took a long time, like when I did the miter slot extensions. I got faster with each one, as I figured out a process and all of the spacing. That same spacer came in handy, as well as pieces of the T-tracks. I measured and cut all of the T-tracks.

I sanded the top and edges with 80 grit using my random orbital sander .Then I applied four coats of Zinsser Bulls Eye Shellac. A day later I did a light hand sanding with 220 grit and applied paste wax.

A good router table needs dust collection and here are the parts I used for mine:

I had to build a cabinet to enclose the router lift, plus a drawer underneath. Due to the table’s frame and a need for the left side, I sketched out a plan. I was making a big version of the L-shaped Tetris piece.

Hand-drawn sketch of a cabinet design with labeled parts and notes, including measurements and assembly details.

The assembly had to be done inside the frame, due to the cabinet nesting up through the frame. After getting plywood to size, I cut various holes, attached 22″ drawer slides, routed a recess for the dust hood, and drilled pocket holes. It all screwed together quickly.

Of course, when using the jig saw, I accidentally cut in to the new table top! I’m the only one who does this, right?

Close-up of a saw cutting through a wooden surface, showing fine wood shavings and a Bosch blade.

I caulked everywhere inside the dust box. Then I cut a door, mounted hinges, added a magnet close, and used weather stripping to seal it. The door got a hole with a vent cover to supply fresh air to the router and dust collection system. After some use I’ll see if I need to add a second vent. I mounted the lift, leveled it to the table, and bolted it in. The lift doesn’t came with a blank insert, so I bought one from an Etsy store.

Update: I did end up adding a second vent.

I cut all the pieces for the drawer, cut a rabbet where the bottom would slide in, and drilled pocket holes. Then I glued and screwed it together. Attached a drawer face and mounted a handle.

Along the left side of the table, I installed my paper roll dispenser. A 90° and then a Y-fitting connect to the dust hood. A 2.5″ blast gate is attached to the other side of the Y, for a hose up to the fence. The power cord went through a 2″ Desk Grommet on the back side. I screwed a POWERTEC Paddle Switch to the front. These switches makes it quick and easy to turn off the machine with my knee. I put in a recessed power strip with USB ports. Then I clipped in the wires and mounted a heavy duty surge protector power strip. This allows me to plug in the table saw as well.

The final thing was to lower the castor feet to raise the table up to the saw.

A woodworking table with a level placed on top, showing the setup for a router station, including a saw and T-track system in a workshop.

It’s so nice to have a large table table in the shop and I’m excited for the router, where it’s easy to use and always ready. Here are some more pictures.

There are the other accessories I bought for the router station, some of which can also be used at the table saw:

Head to Part 3, where I finish the table with a bunch of drawers for storage and organization.

Outfeed Assembly Table – Part 1

When we moved to the new house, I disassembled my workbench with the plan to build one for the new workshop. More than a year later I was still using the old top on sawhorses and everything I bought for the build was piled up in the corner.

The planning notes and ideas I made last year were a good starting point. I took a bunch of measurements, adjusted to account for the motor when tilting the table saw blade, and mapped it out with blue tape. Made more adjustments, cut all of the pieces from 2x4s, and assembled the frame with 3″ screws. I’ve learned my lesson about not using glue for shop furniture because it’ll likely get taken apart in the future. By only using screws I can reuse the materials when an improved replacement gets made.

The castors I bought double as adjustment feet, making it easy to raise the height up to the table saw and will make the table stationary 99% of the time.

I cut plywood and MDF, then laminated them together, using screws for clamps. Since my top was going to be 66×54″ I had to splice in a six inch strip of each.

After the glue dried I removed all the of screws and got it up on the frame. Then I checked the height of my table compared to the table saw and it was going to work out well. With the blade at 45° and all the way down it was extremely close to the table top though.

When maxing out the blade height the motor raised about an inch. So I created a clearance pocket with the router.

I added a couple more vertical supports along the back of the frame and cut scrap shiplap panelling to rigidify it and close it up.

I trimmed all of the edges to size. There was a small gap between the spiced sections of MDF, so I used wood filler.

One inch corner braces with 1/2″ screws were used to attach the top to the frame.

The miter slots were extended from the table saw. I made them wider and slightly deeper, so the outfeed table placement won’t need to be too exact.

For my vice, I bought a Yost 9″ quick release vice. To mount it I had to remove part of the frame and add blocking.

I realized I should finish up the edges of the table, so I quickly rounded the corners, sanded the edges, and added a roundover.

Then I mounted the vice and cut oak for the jaws. To finish it I attached cork rubber with 3M Hi-Strength 90 spray adhesive.

Look at this beauty! So much room for projects and a space underneath for storage.

Continue to Outfeed Assembly Table – Part 2, which is where I add a router station, complete with dust collection. Then Part 3, where I add a bunch of drawers for storage and organization.

Folding Miter Saw Wings

I’ve been wanting wings for my miter station since I got the Ryobi saw and built the cart. If I’m cutting anything with 20″ or so on the right side of the saw, the cutoff crashes to the ground after making my cut.

This weekend we’re building something that’ll require a lot of cuts on the miter saw, so it was a good time to tackle this project. I’ve actually had the brackets since this summer, so I could work on it when I got motivated.

Unfortunately I wasn’t thinking about such an upgrade when I built the cart, because neither side was flat.

I created some flat areas by attaching scraps.

The main objective of this project was to extend the horizontal space on both sides, which this does well.

When I don’t need the surfaces, the wings easily fold out of the way.

The brackets I bought are pretty poor, with a lot of play in them. Maybe it would be better if I used two on each wing. The wings are level with the saw top, which is key, but they move front to back quite a bit. If I want to attach a stop block of some kind I’ll have to stiffen up the wing in some way.

They work for now though. Maybe I’ll improve them down the road. On to the next project!

Table Saw Cabinet

There was a big open space under the right wing of my new SawStop and it was the perfect spot for a cabinet to organize the table saw accessories.

I pulled out a sheet of plywood that got roughed up during the move. Went through a few iterations of how to size the cabinet and where to cut the pieces from.

Assembly went pretty quick, only using screws in case I ever want to make adjustments. It’s not going to hold much weight, so no need for glue.

I dug through my hardware to find hinges, handles, and a magnet catch. Since I should rarely move this thing, I attached a set of non-swivel castors, which only added 2″ of height.

When I went to slide it under the saw I had a moment of panic because it didn’t fit! I hadn’t accounted for the triangle-shaped brackets attaching the legs to the saw wing. I ended up removing the castors from the SawStop’s mobile base and the cabinet slid in. If I ever need to move the saw, it only takes a few minutes to put the wheels back on.

In the lower right, you can see the saw blade holder I recently made. I added old handles to make it easier to grab.

This cabinet was quick to make and makes great use of what would be dead space. Time to start building an outfeed table!

Doubling My Spray Can Storage

A little over a year and a half ago I made a box with dividers for storing spray paint.

It was built to slide in a shelf at the old house. I was able to get it out and moved to the new house. The 16″ depth was wasted space though. Look at how deep the cans were when laying with the back on the ground (those higher ones are actually a tall can on top of a standard can).

It turns out, a great size for spray cans is about eight inches, so I split it down the middle and wrestled out all of the dividers, which were partially glued in place.

Stack ’em, screw ’em together, and nail a back on the new half.

It was very tippy, so I rounded the corners on a larger piece of plywood to make a more stable base and pulled out office chair casters. The casters wouldn’t be great for any heavy shop furniture, so this was the perfect project to use them.

Cutting more dividers and then redoing all of the slots was the worst part of this project. It took well over 250 cuts on the table saw.

A handful of the new hardboard pieces were too long and needed to be trimmed. Other than that, the assembly went much smoother than I expected, with a little persuasion from a dead blow hammer. I have no idea why I used glue on that first iteration. Maybe it was needed with the deeper box, but this one is very stable without a drop of glue.

This is another great upgrade to the shop. After adding all of my spray paint, lubricants, spray adhesives, and other oddball cans there is plenty of room for more.

Saw Blade Holder

Before I make the outfeed table for my table saw I figured I would work on things to organize everything for the saw. There is a big open space under the right wing, so I’ll be making a cabinet to hold the sled, jigs, blades, and accessories. I had an idea for a saw blade holder, so I took a chunk off an old 6×6″ post, cut some slots, and trimmed the height and length.

I’ll give the holder some sanding around the edges, but otherwise this is done. It’s nice when a build goes according to plan, especially a quick shop project.

New Workshop

A week after moving in, Dad came down and we built a wall in the basement to close off the workshop and keep sawdust contained. I eventually finished the rest of the show side of the wall and added trim to the door.

The Cat6 cables and networking rack are a project I hope to tackle over the holidays.

In order to keep as much dust as possible in the shop, I bought a can of spray foam to fill gaps around pipes, ducts, and beams. Since I hade some large gaps, I had to do two applications. I used wider painter’s tape to hold the foam back (picture below was taken during round two).

Then I wired all of the shop outlets and put up OSB for my wall material. It was a cheap option at about $15 a sheet, while allowing me to screw lighter things anywhere. The first things to go on the wall were all of my Ryobi storage, since the tools had been scattered across the floor for weeks. I absolutely love the 10 foot foundation, which allowed me to put wood storage high and out of the way.

I put up my clamp racks and emptied a lot of boxes to organize my tool wall. The Allen key holder was a quick side project.

I replaced all of the lighting in the gym and the workshop with a 10 pack of 4′ LED light fixtures for $76 from Amazon and it made a big difference. Here’s a before and after of the gym.

I had wanted a SawStop for years and the move seemed like good excuse to sell my old Craftsman table saw instead of hauling it to a new basement. I bought SawStop’s Contractor Saw with the 36” T-Glide Fence Assembly, Mobile Base, and Cast Iron Wings. She’s a beauty, a joy to use, and the safety features can’t be beat.

I had a general idea of the layout I was going for in the shop, but in order to get a feel for the space, I measured all of my carts and tools so I could model in SketchUp. I started with the structure, items on the main wall, and things that can’t be moved, like pipes and the shop sink.

Then I needed all of the tool and storage carts. I imported a lot of the items from SketchUp’s 3D Warehouse and scaled everything to the correct size.

Eventually I got to a comfortable arrangement in the model and could physically put things in place. Over the course of several weeks I made a lot of adjustments. I even moved my band saw over to the drill press cart so I could repurpose it’s cart for my planer. I think I ended with a very good first iteration. Here are comparisons of the model and the actual room.

I can start making things again! One of the first builds is going to be an outfeed/assembly table for the table saw. It’ll have some neat features and storage. In the models I made a table top of about the correct size and in real life you see my old table top, which is too small and low, on saw horses.