You are browsing as a guest. Sign up (or log in) to start making projects!

diynotaguy

@diynotaguy

Joined June 15th, 2026

  • 7Devlogs
  • 5Projects
  • 1Ships
  • 6Votes
Ship Pending review

I made a set of 3D printed modular drawers!

Each module can be a draw by itself, combine with another draw on either side, or combine with a draw on both sides. This means that you can make an infinitely wide draw!

I made it because I haven’t seen a set of modular drawers online where the actual drawers themselves are modular - normally it’s just that the whole unit (i.e. the drawer holder/cabinet) is modular. I also knew it was going to be a bit of a tricky project, and I wanted to challenge myself!

Challenges:

  • The locking system (i.e. to lock the draw as either a single unit or as combined with multiple units)
  • Getting the pieces as thin as possible without them being too weak

What I’m proud of

  • The system I designed which allows the drawer sides to be locked in one of four configurations by just taking out and putting the base back in
  • I also think the cad looks pretty rad 🔥

The future

I’d like to make a drawer holder/cabinet (they’re kinda trays instead of drawers now lol), and, if possible, I’d like to make the parts even thinner, or improve the design so the drawers can expand in all directions instead of just to the left & right.

  • 1 devlog
  • 11h build
Video of Project → See source code →
Open comments for this post

10h 33m 4s logged

Modular drawers that are actually modular

All of the 3D printed modular drawers online are only modular by attaching their drawer holders/containers. I’d never seen ones where the actual drawers attach together so that one draw can hold more stuff. I decided to change that

Demo vid :youtube:

The idea

I did some sketches initially before starting on the CAD so that I had a bit of an idea of how I actually wanted to make them I decided that:

  • the left hand side of each modular draw would be hinged with the base and would fit under the right hand side of the base when joining with a draw to the left
  • the right hand side of each modular draw would be split in half - the back half would hinge on the back and slide into the back of the draw to the right, and the front half would hinge on the front and slide into the front of the draw to the right

Some challenges

  • Making the hinges - I originally wanted them to be print in place, then had to resort to using filament as the hinge pin instead. While not my original intention, it was actually quite good because it allowed the hinges to be less bulky, and having the draw parts print separately allowed me to improve their print orientation
  • Keeping the draws locked together - this was the main sticking point, and it led to me coming up with a system in which most of the base of the draw is removable, and taking it out unlocks the positions of the draw parts, while putting it in locks them in place. It also has a buckle on the bottom which clicks together with the left hand side of another draw being attached. Making the base removable was the perfect unclasping system to release the buckle and separate two modules from each other.

Does it work?

Yes, it works, and imo it is very satisfying and cool to use. I’m proud of what I’ve made! :yay:

Future improvements

Right now, they’re kind of more like modular trays than actual drawers, since I haven’t made a drawer cabinet/holder. Here are some of my ideas/considerations for when I make it:

  • I want to mix materials. e.g. bulk up pla with cardboard or plywood to not be so wasteful
  • I’m in two minds about the holder being modular. It would be much simpler if it wasn’t, and it would still be useful as long as I don’t have the drawers mounted on a track or anything. If they were modular, it would also be more difficult to integrate another material.
0
0
33
Open comments for this post

6h 59m 37s logged

First print test (hopefully it works!)

I’ve just sent my first 3D print test of the whole project off to my A1 mini. In a few hours, I should know whether this is going to work or not.

Design update

With only a couple days left of stardance and not much hope of finishing & polishing the ratchet system before then, I opted to go for a manual measuring resetting system instead of it being mechanically automated.

I’ve now added a handle so that the user can rotate the number cylinder back to 0 to reset it after cutting their tape.

In future I’d like to attempt to upgrade the system to the aforementioned automatic reset system, which would be triggered by the tape being cut, but for now I’m going to ship it as is.

The pics show the final design with manual resetting system and all the parts on one build plate in the slicer.

0
0
6
Open comments for this post

6h 34m logged

A very specific timelapse tool…

…because it only works if you have a PS4 controller and a Bambu Lab A-series printer

How this project came about :3d-printer-icon:

I love 3D printing and began a youtube channel a few months ago showing my creations (shameless self-promotion lol). I really wanted to include cool 3D printer timelapses in my videos, and everyone knows that the A-series printer cameras suck, so I needed an alternative way to timelapse my 3D prints.

Enter yt channel 3D farmers and their solution :youtube:

Their solution is to use a bluetooth trigger mounted on the A-series x-axis via a 3D printed holder alongside a 3D printed trigger arm that snap fits onto the printhead. Each time the printhead moves to the end of the x-axis (which happens every layer when timelapse mode is enabled), the arm presses the button, which takes a photo with your phone.

Let’s face it - I’m impatient and a bit of a cheapskate :flying_money_with_wings:

Even though the bluetooth button would’ve cost $5 and would’ve only taken a day or two to arrive by delivery, I thought: ‘no… I’ll just use my PS4 controller instead - it’ll work before the button would arrive!’ How wrong I was…

What I needed to do 🛠️

I knew that a PS4 controller could connect to my phone via bluetooth, and I knew that I could mount it on the end of an A-series printer and have one of the buttons be pressed, therefore taking a photo on my phone. Pretty simple, right?

So I cadded up a PS4 controller holder that would mount to my A1 mini, and tested it. No software needed. The first result? Thousands (I kid you not) of photos because the PS4 triangle button was sometimes being held down for 30s - 1min at a time when purging filament waste. When I turned off burst photos in settings? Pretty much no photos. You see, there’s an issue with how PS4 controllers take in and send input:

Of course it’s not that simple :cryin-anim:

Well for some reason, PS4 controllers just don’t send any signal of a button being pressed via bluetooth if that button is being held down for longer than ~5 seconds before being released, or at least they don’t send the right kind of signal so that a phone takes a photo. I had no clue how to make an easy fix to this, so I had to bring in the big guns: my laptop.

The python program & IP Webcam :nerd_face-hole:

I needed a way to interpret the inputs from the PS4 controller at a more detailed level with more control, so I decided to write a python program using pygame to convert the PS4 inputs into a singular, reliable command to take a picture. As I’m not experienced with anything about android or phone apps, I installed IP Webcam on my phone so that my phone can host a server with a feed from my camera. When the python program determines a picture must be taken, it sends a request to the server address and receives a .jpg back.

I found it really neat that just putting a .jpg on the end of the return value from the request turns it from absolute jibberish into an actual photo from my phone, now stored on my laptop

The unexpected benefits to my woes :yay:

  • I edit my videos on my laptop, so it’s actually very helpful to have all the timelapse photos saved in one place on my laptop with useful file names. If I had used 3D farmer’s system, I would’ve had to send the photos from my phone every time I took a timelapse.
  • I still saved $5! :D

Tysm if you read this far and I hope you found it interesting! If you can’t tell I just found out you can put emojis in devlogs lol.

0
0
14
Open comments for this post

8h 37m 6s logged

evlogday 2

devlog 2 in piglatin

I haven’t posted a devlog in over 8 hours of work because I’ve been working on pretty much the same function for ages!! I think I’d better just bite the bullet and write about it even when it’s still not finished

What I’m working on:

  • I’m writing a function called combine that will combine the translated English 3D list input (which I talked about in the previous devlog) into a list of all the possible full translations of the pigpy program
  • I will then create a new python file, then write and test each full translation on that document by writing one of the elements of the combine output and then executing it as a python file.
  • Most of the opening, writing, and executing (with try:, except:) is complete, I just need to finish writing combine.

One of my many issues:

  • One issue I encountered was that when you multiply a list in python - e.g.: lst = lst * 2 - the added section on the end of the new lst, which is a repeat of the original lst, will actually point to the same memory as the original lst. This is an issue because after multiplying the list, I need the elements to be able to branch off into having different content to make different translation combinations, but that wasn’t working.
    To solve this I had to import copy and use copy.deepcopy() alongside for loops to make sure they would point to different memory locations

Improvements:

  • I have started using a tests.py file (see screenie) to test functions using assert. I’m very new to this, but it does seem quite useful
  • I am in the process of making organisation changes: I am planning on having multiple .py files so that I can write a lot of functions in one of them, then import them into the other to reduce clutter.
    I think it’s so cool that you can import your own files just like regular libraries, though I suppose that’s just what libraries are!

^- This will be especially useful for the combine function, because it is (imo) so long and complex, and I’d like to break it up into smaller functions to make it easier to read, understand, and debug!!

0
0
9
Open comments for this post

6h 19m 20s logged

ollehway umanshway! Pig latin is not a good language…

I’m working on a python program that runs pigpy and outputs the result. I’m not sure if I’m the first to make pigpy as a language, but it’s essentially python where each word is translated into pig latin.

The major flaw:

Now, you may think this program is simple enough since I just have to translate pig latin into english then run it through python, but there’s one major flaw.

English to pig latin translation is a many-to-one function: up to two English words can translate to the same pig latin word. E.g. ‘in’ and ‘win’ both translate to ‘inway’.

Because of this, there’s no way to tell if inway should translate back to in or way. Luckily, in most cases where pig latin translates to two possible words, only one of them makes sense, and is an actual word. Thus I can use this to my advantage when narrowing down possbile translations.

What I’ve made:

  • Separation function that separates pigpy words from the symbols in the user-written code
  • Translation function that translates each separate pigpy word into its possible English versions.
  • Statement that checks possible translations against set of English words and python keywords. Invalid words are eliminated
  • Error message and quitting if a pigpy word has no valid English translations (i.e. pigpy spelling is wrong)
  • Function that calculates how many possible full translation combinations there are based on the remaining valid English translation possibilities

##The screenshot:
The screenshot shows the output of separating and finding translations for a pigpy program before adding the dictionary. After adding the dictionary, the totalPossibilities (for the full translation) reduced by 508 to just 4!

What’s next?

Next is to test each translation combination by running them through python. Hopefully all but one combination are eliminated, and therefore the correct output can be given to the user.

1
0
31
Open comments for this post

5h 5m 52s logged

Working on a ratchet system to allow the measuring cylinder to reset

I last posted a devlog aaaageeess ago (~3 months). Here’s a refresh:

I am making a mechanical tape dispenser that fits in 2 tiles of a gridfinity base. If attached properly, it will allow the user to dispense tape with one hand. The main selling point, however, is that it measures the length of the piece of tape as you’re pulling it out. I haven’t yet tested this system, as it kind of requires having all of the design finished, so fingers crossed my ~18 hrs of work thus far won’t be wasted. See img 1 for initial sketch

I did manage to test one part of the system though. This was what I talked about in my first devlog: I made a test rig to test my custom chain and sprocket design which is integral to the overall mechanics. The result was quite satisfying and I ended up posting it on mkw and printables

But that’s all in the past. More recently….

I’ve been focusing on how the measuring system will work on the user interface end. This included making a number cylinder/prism which increases by 1 when its rotated 1cm.

The rest of the time has been spent trying (and mostly failing) to figure out how to reset the number cylinder to 0 when the user breaks the tape.

I started with an overcomplex design which involved a linear screw, telescoping axle, and more, and after a while realised it would be very inefficient and unreliable.

Ratchet design

I’ve now pivoted to a design involving a ratchet, however it’s still very much in the early stages, so it’s difficult to tell if it’ll be the right solution.
Since I’ve never designed a ratchet before, I’m going to do a very similar thing to what I did with the chain: I’m going to isolate the ratchet and make a temporary test rig for it so that I can test it properly.

My main concern for the ratchet is that it is very space-constrained. I.e. I’ve had to make walls thin and dimensions small wherever possible to even fit the mechanism inside the space. This has meant that it’ll be difficult to implement a spring into the ratchet, or at least difficult to use a 3D-printed screw. Once I can test the design, I’ll have a better idea of this.

2
0
37
Open comments for this post

13h 8m 44s logged

Hello, welcome to my first devlog on HackClub! :D

I’m working on a tape dispenser that’s inbuilt into a Gridfinity tray with a dial that automatically measures the tape length as you pull it out.

The design features two sprockets and a chain, and since I couldn’t find any tutorials on designing a chain for 3D printing, a decent chunk of my time has been spent making and tweaking gear and chain designs.

To test the designs properly, I also designed a test rig (shown in the picture), which actually turned out to be really fun to fiddle with. I’m currently testing different tolerances for the chain, but when I have the perfect one, I’m going to upload it as a separate model. This will hopefully happen tomorrow, so stay tuned!

Thanks for reading!

P.S. Please could someone clarify the markdown syntax for headings - I tried a bunch of different combinations of what the syntax is supposed to be but I still couldn’t get it to work :’}

0
0
12

Followers

Loading…