diff --git a/README.md b/README.md index f3cfbf3..2c0ff93 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,15 @@ [What's it for?](#use-cases) | [How does it work?](#how-it-works) | [Free & OpenSource](#open-standard) -[![forthebadge](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNTcuOTUzMTM2NDQ0MDkxOCIgaGVpZ2h0PSIzNSIgdmlld0JveD0iMCAwIDE1Ny45NTMxMzY0NDQwOTE4IDM1Ij48cmVjdCB3aWR0aD0iMTA2LjYyNTAwNzYyOTM5NDUzIiBoZWlnaHQ9IjM1IiBmaWxsPSIjZjZhYTRhIi8+PHJlY3QgeD0iMTA2LjYyNTAwNzYyOTM5NDUzIiB3aWR0aD0iNTEuMzI4MTI4ODE0Njk3MjY2IiBoZWlnaHQ9IjM1IiBmaWxsPSIjZmY4ZjAwIi8+PHRleHQgeD0iNTMuMzEyNTAzODE0Njk3MjY2IiB5PSIyMS41IiBmb250LXNpemU9IjEyIiBmb250LWZhbWlseT0iJ1JvYm90bycsIHNhbnMtc2VyaWYiIGZpbGw9IiNGRkZGRkYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGxldHRlci1zcGFjaW5nPSIyIj5ET1dOTE9BRDwvdGV4dD48dGV4dCB4PSIxMzIuMjg5MDcyMDM2NzQzMTYiIHk9IjIxLjUiIGZvbnQtc2l6ZT0iMTIiIGZvbnQtZmFtaWx5PSInTW9udHNlcnJhdCcsIHNhbnMtc2VyaWYiIGZpbGw9IiNGRkZGRkYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSI5MDAiIGxldHRlci1zcGFjaW5nPSIyIj5GM0Q8L3RleHQ+PC9zdmc+)](https://makerworld.com/en/@kellervater) ![HomeRacker Assembly](./img/assembly_basics_4.png) HomeRacker is a fully modular 3D-printable rack building system for virtually any "racking needs" (Server Rack, shoe rack, book shelf, you name it). -This repo contains the respective `scad` files for all fully customizable models as well as the documentation for the entire project which seeds the page https://homeracker.org. - You can find all parametric and non-parametric models as well as the `f3d` files (like the `HomeRacker - Core`) on [Makerworld](https://makerworld.com/en/@kellervater)). +The parametric models can be found in the [HomeRacker Github Repository](https://github.com/kellervater/homeracker/tree/main/models). + > [!NOTE] -> The basic HomeRacker system is also referred to as `HomeRacker - Core`. Free for everyone to use. +> The basic HomeRacker system is also referred to as `HomeRacker - Core`. Free for everyone to use, remix, reshare. # Table of Contents - [Use Cases](#use-cases) @@ -50,12 +49,16 @@ Aside from the basic [building blocks](#basic-building-blocks) above's racks als # Features The `HomeRacker - Core` features: -* Full modularity - Due to the support-connector system you can scale out in any direction. Only limit is the material strength +* Full modularity - Due to the support-connector system you can scale out in any spatial dimension accessible to humans. Only limit may the material strength. * 3D-printable - The entire core system is printable and no additional tools are required to assemble it. No need to include batteries here * No supports - Not a single part of the core system needs printed supports. * OpenSource - Feel free to build your own adapters and/or use it in all your personal or commercial projects (see [Open Standard](#open-standard) and [Licensing](#-licensing) for details). ## How it works +> **tl;dr** Think of a rack shape, you want to build, download the model (insert link), print it, assemble it, (add your own mounts/adapters/younameit) + +I might post a YouTube Video here to outline how it works. + ### Assembly Basics ![Assembly Basics 4 White](./img/assembly_basics_4_white.png) @@ -64,9 +67,28 @@ The assembly process for the `HomeRacker - Core` system is straightforward and r 1. **Prepare the Components**: Download the HomeRacker-Core (Todo: insert link) and print all parts required to assemble your specific rack. Ensure the parts are clean and free of debris. 2. **Connect Supports and Connectors**: Attach the connectors to the supports as per your desired configuration. The modular design allows for flexibility in size and shape. -3. **Secure with Spring Pins**: Use the spring pins to lock the connectors and supports in place. This ensures stability and prevents accidental disassembly. Due to their quadratic profile they can be inserted horizontally or vertically. Make sure they are fully inserted. Normally you hear a click when that's the case. You can use a bit of force but not too much. +3. **Secure with Spring Pins**: Use the spring pins to lock the connectors and supports in place. This ensures stability and prevents accidental disassembly. Due to their quadratic profile they can be inserted horizontally or vertically. 4. **Add Additional Features**: (not part of the core system) Depending on your use case, attach shelves, panels, or other accessories to complete your rack. +### Assembly Tips + +> [!NOTE] +> **Pro-Tip** I created a sample 10" Cyberpunk-themed 3D model on Makerlab (todo: insert link), where you can get an idea of which parts are needed for such a model. + +1. Make sure you have a clear idea what you want to build and make a list of materials you need. +Otherwhise you'll end up with an army of parts like me: +![Army of Parts](./img/homeracker_army.jpg) +So, best make a list of materials containing: + * How many supports of what length (measured in `base_units`) + * How many connectors of what dimensional scope? (Do you need Pull-Throughs, Feet, normal connectors?) + * Just print a shitload of spring pins. You'll need more than you think. The model (todo: insert link) on Makerworld should contain a plate with a 100 spring pins and a [Gridfinity](https://gridfinity.xyz/) box to store them. Print one copy and you should be off to a good start. +2. Assemble layer-by-layer. Start with the bottom frame, then add vertical supports to it. Then build the intermediate/top frame(s) and put them onto the vertical supports. Repeat till satisfied! +3. Make sure the spring pins are fully inserted! Sometimes you need to use gentle force. + +### Printing Tips +1. If you're unsure about bed-adhesion while printing: Add a brim to the supports. I already had 1-2 cases, where the small contact surface of the connectors caused them to loose bed-adhesion and resulted in partial failures. +2. Anti-Warping guidelines: Always make sure to have a dust- and oil-free printing plate. A fingerprint alone already can cause warping and/or bed-ahesion failures. + > [!NOTE] > **PRO-Tip**: If you need to disassemble your rack for whatever reason and the spring pin fits so tight, that you would rip out your fingernail pulling on it, just press a pin from the other side onto the pin in question. This should help pulling it out. @@ -75,32 +97,81 @@ The assembly process for the `HomeRacker - Core` system is straightforward and r > To inspect the actual values I highly recommend checking out the somewhat okISH original fusion (`f3d`) files which are ALWAYS part of my Makerworld uploads. I always parameterize my designs so they can scale without problem. The entire system revolves around 4 simple numbers: -1. 15mm - This is the so called `base_unit` or `base_length` in all my models. It ressembles the side length of each side of a support. x and y are fixed to 15mm and z is always a multiple of this depending on the desired unit count of a support -2. 4mm - Is the side length of each end of a spring pin and it's corresponding holes in the supports. -3. 2mm - Is the strength of the connector walls. +1. `15mm` - This is the so called `base_unit` or `base_length` in all my models. It ressembles the side length of each side of a support. x and y are fixed to 15mm and z is always a multiple of this depending on the desired unit count of a support +2. `4mm` - Is the side length of each side (xy) of a `spring pin` and it's corresponding holes in the supports. The holes are always centered along an xz base_unit. +3. `2mm` - Is the `strength` of the connector walls. +4. `0.2mm` - The `tolerance` added to the side inner side length of each connector to compensate any printing/material inaccuracies. -> These numbers (except for the tolerance) where purely arbitrary because I assumed they made sense. There wasn't any static calculation behind it. +> These numbers (except for the tolerance) are purely arbitrary because I assumed they made sense. There wasn't any static calculation behind it. + +Now to the detailed schematics: ### Supports +Supports are the spine of the HomeRacker system. They literally support the weight the rack will have to bear. +![Core Support 3D Transparent](./img/core_support_3d_transparent.png) + +As already described above: A support has a fixed side length for its x and y side of `15mm` and the z-side is always a multiple of this `base_unit`. + +E.g.: A support of 3 units has an actual height of 45mm. A Support of 17 units, 255mm. + +For each height unit there's always a hole for a spring pin which measures 4mm each side. +* A hole does have the same inner measurements as the spring splints do on the outside with no tolerances. +* A hole is formed convex in 2 dimensions (x and z axis) so they can fit the spring pin in a vertical and horizontal direction. + +See the following schematics for details (front view, side view, top view): + +**Front View** +![Support Front View](./img/core_support_front_profile.png) + +**Side View** +![Support Side View](./img/core_support_side_profile.png) + +**Top View** +![Support Top View](./img/core_support_top_profile.png) ### Connectors +Connectors are used to connect supports in 1-3 dimensions, from a straight line to extend a support, up to a 6 way connector in 3 dimensions as center piece of a complex rack structure. ![3D Shot of All Connectors](./img/3d_shot_all_connectors.png) +In above's picture you can see all permutations of all 3 types of connectors, which are: +* Standard -> they have a solid center and act are normally used for load bearing parts. +* Pull-Through -> In contrast to the standard connectors, they do not have a solid center part. Instead there's an opening where you can pull-through a support. They are used for complex rack builds like the 10" rack pictured above. +* Feet -> Besides the solid center, they also have a solid end piece instead of a support inlet. They are used - like the name suggests - as feet (e.g. for the rack build above to allow air intake from the bottom) + +> [!IMPORTANT] +> To make it simple for a user to calculate heights, the center of a connector is always 1 `base_unit` and doesn't add any tolerances or other fluff. So if you connect 2 x3 supports with a standard connector you'll end up having exactly 7 `base_units` or 105mm in length. + +Here's the schematics of a basic connector: + +**Top View - Outer Measurements** +![Connector Outer Measurements](./img/core_connector_outer_measurement.png) + +**Top View - Inner Measurements** +![Connector Outer Measurements](./img/core_connector_inner_measurement.png) + ### Spring Pins +Spring pins are used to keep supports and connectors in place, so it doesn't fall apart when moving it. +![Spring Pin 3D](./img/core_spring_pin_3d.png) +The pins contain the actual 🪄 "magic" of the HomeRacker system. Since they have a convex base shape, they need to squeeze into the holes of the supports, where they will reapply their original shape, when in place. This spring-lock ensures that they don't just fall out when they get bored. +Here's the schematics of a spring pin: -## Open Standard -I created the `HomeRacker - Core` system to be an open standard which every maker can build upon with (almost) no strings attached (see [Licensing](#-licensing) for details). +**Top View** +![Spring Pin Side](./img/core_spring_pin_top.png) +**Side View** +> Don't ask me why the height is 3.791mm here. Originally intended was 4mm, but it doesn't harm functionality, so I just left it as it is. +![Spring Pin Side](./img/core_spring_pin_side.png) +> I am still not a 100% convinced that the grip of the pin is good enough. Maybe I'll change that in the future to allow better grip AND better stability. We'll see. In any case, the base dimensions will stay the same to be downwards-compatible. -Therefore I highly encourage all of you to build your own creations building upon the HomeRacker system. -If you let me know about your projects, I will feature them here on this site and cross-link them on MakerWorld (provided they get my "totally" objective stamp of approval). Just [create an issue](https://github.com/kellervater/homeracker/issues/new) here if you want to be featured! +## Open Specs +I created the `HomeRacker - Core` system to (maybe) be an open spec which every maker can build upon with (almost) no strings attached (see [Licensing](#-licensing) for details). Maybe it even becomes an Open "Standard" one day. -## Contributing -As described in the +Therefore I highly encourage all of you to create your own models building upon the HomeRacker system. +If you let me know about your projects, I will feature them here on this site and cross-link them on MakerWorld (provided they get my "totally objective" stamp of approval). Just [create an issue](https://github.com/kellervater/homeracker/issues/new) here if you want to be featured! # Why the name? Following about four hours of research, I discovered that all my initial naming ideas (such as UniRack, OpenRack, etc.) were already in use by other creators or companies. @@ -145,11 +216,14 @@ My setup is as follows: * ABS * mostly I used the Textured PEI plate. It just works (provided you regularly clean it using Isopropyl alcohol). For the rest of the time I tried out the Cold Plate Super Track (it's nice but very hard to get your prints of the plates when it cools) -All above's filaments can be be combined in any possible way (just make sure you do flow calibration before using new filaments. First ABS print turned out horribly just because I forgot to click the calibration checkbox). +All above's filament types can be be combined in any possible way (just make sure you do flow calibration before using new filaments. First ABS print turned out horribly just because I forgot to click the calibration checkbox). E.g.: you could print a connector in ABS, a support in PLA Matte and a spring pin in PLA and they will just fit when being assembled. > 🛠️ **Btw:** I am not affiliated with Bambu in any way besides uploading my models to MakerWorld and occasionally making use of their Exclusive Model program. But they don't pay me for naming their products anywhere else (I wish 😉). +## What I tested +todo + # Todos * [ ] Rename Building blocks in f3d (did bad translations from german to english there) * [ ] Release models on MakerLab diff --git a/img/core_connector_1d.png b/img/core_connector_1d.png new file mode 100644 index 0000000..18b6c1e Binary files /dev/null and b/img/core_connector_1d.png differ diff --git a/img/sketch_connector_profile_inner_white.png b/img/core_connector_inner_measurement.png similarity index 100% rename from img/sketch_connector_profile_inner_white.png rename to img/core_connector_inner_measurement.png diff --git a/img/sketch_connector_profile_outer_white.png b/img/core_connector_outer_measurement.png similarity index 100% rename from img/sketch_connector_profile_outer_white.png rename to img/core_connector_outer_measurement.png diff --git a/img/core_spring_pin_3d.png b/img/core_spring_pin_3d.png new file mode 100644 index 0000000..d43034c Binary files /dev/null and b/img/core_spring_pin_3d.png differ diff --git a/img/core_spring_pin_side.png b/img/core_spring_pin_side.png new file mode 100644 index 0000000..69c2856 Binary files /dev/null and b/img/core_spring_pin_side.png differ diff --git a/img/core_spring_pin_top.png b/img/core_spring_pin_top.png new file mode 100644 index 0000000..0b8da40 Binary files /dev/null and b/img/core_spring_pin_top.png differ diff --git a/img/core_support_3d_transparent.png b/img/core_support_3d_transparent.png new file mode 100644 index 0000000..489b626 Binary files /dev/null and b/img/core_support_3d_transparent.png differ diff --git a/img/core_support_front_profile.png b/img/core_support_front_profile.png new file mode 100644 index 0000000..4d344e5 Binary files /dev/null and b/img/core_support_front_profile.png differ diff --git a/img/core_support_side_profile.png b/img/core_support_side_profile.png new file mode 100644 index 0000000..73ae263 Binary files /dev/null and b/img/core_support_side_profile.png differ diff --git a/img/core_support_top_profile.png b/img/core_support_top_profile.png new file mode 100644 index 0000000..fa1433e Binary files /dev/null and b/img/core_support_top_profile.png differ diff --git a/img/homeracker_army.jpg b/img/homeracker_army.jpg new file mode 100644 index 0000000..f2cdd4d Binary files /dev/null and b/img/homeracker_army.jpg differ diff --git a/img/prototypes.jpg b/img/prototypes.jpg new file mode 100644 index 0000000..d396214 Binary files /dev/null and b/img/prototypes.jpg differ