From 154872344167b3ea1e09ac8d57f4bc5cb9cc5e79 Mon Sep 17 00:00:00 2001 From: Anicetus Date: Tue, 3 Jun 2025 12:22:24 -0500 Subject: [PATCH 01/94] Update _sidebar.html.erb --- app/views/guides/_sidebar.html.erb | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/app/views/guides/_sidebar.html.erb b/app/views/guides/_sidebar.html.erb index b8aa685..3f0f957 100644 --- a/app/views/guides/_sidebar.html.erb +++ b/app/views/guides/_sidebar.html.erb @@ -7,7 +7,14 @@ <%# <%= link_to "Submitting", guides_page_path("submitting"), class: "#{current_page?(guides_page_path("submitting")) ? 'bg-[#564CAD]' : 'hover:bg-[#564CAD]'} bg-[#2E2A54] p-2 px-6 rounded transition duration-100 block font-dystopian" %>

The guides!

+ + + <%= link_to "YOUR PROJECT TYPE", guides_page_path(".MD FILE NAME"), class: "#{current_page?(guides_page_path(".MD FILE NAME")) ? 'bg-[#564CAD]' : 'hover:bg-[#564CAD]'} bg-[#2E2A54] p-2 px-6 rounded transition duration-100 block font-dystopian" %> <%# HEY HACKCLUBBERS! Copy this line!! %> + + <%= link_to "Game Console", guides_page_path("game-console"), class: "#{current_page?(guides_page_path("game-console")) ? 'bg-[#564CAD]' : 'hover:bg-[#564CAD]'} bg-[#2E2A54] p-2 px-6 rounded transition duration-100 block font-dystopian" %> + <%= link_to "CoreXY", guides_page_path("corexy"), class: "#{current_page?(guides_page_path("corexy")) ? 'bg-[#564CAD]' : 'hover:bg-[#564CAD]'} bg-[#2E2A54] p-2 px-6 rounded transition duration-100 block font-dystopian" %> + <%# <%= link_to "Other communities", guides_page_path("faq"), class: "#{current_page?(guides_page_path("submit")) ? 'bg-[#564CAD]' : 'hover:bg-[#564CAD]'} bg-[#2E2A54] p-2 rounded transition duration-100 block font-dystopian" %> From bf748ed228cd3586dd746ddb41ffb9fd3bd0e477 Mon Sep 17 00:00:00 2001 From: Anicetus Date: Tue, 3 Jun 2025 12:25:00 -0500 Subject: [PATCH 02/94] Create corexy.md --- app/views/guides/corexy.md | 56 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 app/views/guides/corexy.md diff --git a/app/views/guides/corexy.md b/app/views/guides/corexy.md new file mode 100644 index 0000000..2114c18 --- /dev/null +++ b/app/views/guides/corexy.md @@ -0,0 +1,56 @@ +# CoreXY 3D Printer + +### Tier 1 project (10 points) + +Written by: anicetus + +Hello! When it comes to 3D printers, CoreXY's are the best. They're the most high-quality and fast, but tend to be much more expensive and complicated than a Cartesian 3D printer. +But first, here's an overview about the differences between Cartesian and CoreXY 3D printers, and how they work. + +## About CoreXY's + +A good example of a CoreXY printer is the Bambu Lab X1 series. They look like big cubes, and the Bambu line has an enclosure around the entire thing. A Cartesian printer is like an Ender 3 or a Bambu Lab A1 Mini. Cartesian printers come in two main types: bedslingers and cantilevers. A Ender 3 is a bedslinger (named because it slings the bed back and forth) and a Bambu Lab A1 Mini is a cantilever (because there is only one "pole" supporting the "arm".) + +But back to CoreXY's. Here are the pros and cons as compared to a bedslinger or cantilever printer: + +### Pros +1. Very fast: The average CoreXY can print at least twice as fast as the average bedslinger. This is because: +2. Printhead X/Y movement: Only the printhead moves sideways and forwards, instead of the entire bed, and +3. Dual X/Y motors: Two motors drive the printhead, collaborating together and reducing strain on both. This also improves accuracy. +4. Bigger: CoreXY's can be built bigger than Cartesians while preserving the same quality (again, due to the bed not moving nearly as much) +5. Enclosable: Cartesians require much more space than CoreXY's because of the bed that moves back and forth. The size of the CoreXY doesn't depend on the bed position. +### Cons +1. Complicated: CoreXY's require many times the amount of components that Cartesians do, making them more complex to assemble and maintain, let alone design. +2. Long belt paths: Tensioning CoreXY belts can be difficult, and routing them in your design can be incredibly hard. +3. Expensive: More components means more price, and since the frame of a CoreXY is a cube instead of just an upside-down T, the frame is much larger. + +A CoreXY is no task for the weak of spirit. It will require perserverence, focus, and vigilance. It's going to be really hard sometimes, and you're going to want to quit. But if you stay strong and power through it, you'll be well rewarded. It's gonna take the entire $350, and likely more out of your own pocket, but you'll be left with your _own_ 3D printer. You'll be able to tell people, "I made this!" Besides that, it might get you into MIT :3 + +But, without further ado, here's how to design your own CoreXY. + +(Note: This guide will not be a step-by-step building your own 3D printer, but simply some tips and tricks I learned making [my own](https://github.com/invictus-anic3tus/anicept-vex). + +## Step One: Research +Researching parts is at least the second hardest part of making a CoreXY--or any 3D printer for that matter--but very, very important. First you're going to chose what kind of specs you want. Speed, size, enclosure, multi-filament system, etc. If you plan to make some sort of cool gimmick, like an enclosure or a toolhead changer, be prepared to spend a bunch of money out of pocket. As it stands, it'll be difficult enough to make it without any special stuff. + +Also note that speed and size are mortal enemies; it's quite difficult to put both in the same machine. For a budget build with the $350 provided by Hack Club, I'd only do one. If you want fast, like 350mm/s or above, I'd recommend a 180x180mm plate. For incredibly fast printing, i.e. 500mm/s or even more, even as small as a 120mm printer would be beneficial. If you couldn't care less about speed but want it to be big enough to make, say, 7" drones, you could make it 400x400mm build size (or bigger!) and only print at around ~100mm/s. + +The main reason that speed and size are so exclusivev is stability. If you have a printhead moving the length of a 500x500mm build plate in one second, multiple times in a row, it's going to rattle like crazy. To counter this, you'd need wider aluminum extrusions, making it even more expensive than it was already. A smaller printer has less length for the extrusions to twist or bend, and is thus more stable. For future reference, when I say stablity I don't mean how much the printer shakes or rattles, but how well it keeps its shape. + +AliExpress is your friend when researching parts, (sorry Indian people!) and it has plenty of good products. Just make sure (and this is good advice for any project) to always sort by orders. You do _not_ want to be the first--or seventh--order on a product. And if it's possible, always try to order from a well-aged seller, ideally pre-Covid. The best seller for hotends and extruders is [Triangle-Lab](https://trianglelab.net), (sometimes called trianglelabs) and [here's](https://trianglelab.aliexpress.com/store/1101010407) their official store on AliExpress, open since 2015. As far as I know, there aren't any name-brand aluminum extrusions or linear rails, but again just try to find well-rated ones (be sure to check for fake reviews) with many orders. I'd advise against Dollar Express, as the number of orders can be very misleading. + +One strategy you might try is buying broken 3D printers off of eBay. People tend to sell them cheap, and you can get an easy heated bed, aluminum extrusions, and more out of it. However if you choose to do it like this, you'll have to center your design around the parts you'll be getting from the seller. For example, the aluminum extrusions in your design will have to be the ones that the broken 3D printer uses. Sometimes this can be a problem, especially since most 3D printers for parts out there are bedslingers with all sorts of different lengths. + +Here's a very simple BOM to get you on your feet: +(Please take this with a giant grain of salt. You'll need to do massive amounts of research for what you have in mind, and I'm 99% sure you won't be using every part I recommend.) + +### Printhead +| Part | Cost | Notes | +|-----------------------------|-------------|------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Hotend | $20 | An E3D V6 clone is good for non-high speed printing, otherwise check out the TZ E3/E6 | +| Extruder | $40 | The Orbiter v2 is very good, also the Sherpa Mini | +| Part cooling fans | $10 | Please get two 5015's. I'm begging you. | +| Heat sink fan | $3 | 3010 is good for basically everything. If you plan to print super fast maybe 4010. | +| Z-Probe | $7-$37 | For seven bucks, the PCB Klicky probe is amazing. For more high-quality, check out the GENUINE BLTouch. Never ever ever buy a "3DTouch," it's a fake scam. | +| Printhead Lights (optional) | $5 | There are PCB kits out there, or you can just use some white LEDs and resistors | +| **Total** | **$85-115** | | From dbdec9100d12adec9e50f4b75895340f41ed9019 Mon Sep 17 00:00:00 2001 From: Anicetus Date: Tue, 3 Jun 2025 12:33:15 -0500 Subject: [PATCH 03/94] Update _sidebar.html.erb --- app/views/guides/_sidebar.html.erb | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/app/views/guides/_sidebar.html.erb b/app/views/guides/_sidebar.html.erb index 3f0f957..8abc9d2 100644 --- a/app/views/guides/_sidebar.html.erb +++ b/app/views/guides/_sidebar.html.erb @@ -8,13 +8,11 @@

The guides!

- - <%= link_to "YOUR PROJECT TYPE", guides_page_path(".MD FILE NAME"), class: "#{current_page?(guides_page_path(".MD FILE NAME")) ? 'bg-[#564CAD]' : 'hover:bg-[#564CAD]'} bg-[#2E2A54] p-2 px-6 rounded transition duration-100 block font-dystopian" %> <%# HEY HACKCLUBBERS! Copy this line!! %> - - <%= link_to "Game Console", guides_page_path("game-console"), class: "#{current_page?(guides_page_path("game-console")) ? 'bg-[#564CAD]' : 'hover:bg-[#564CAD]'} bg-[#2E2A54] p-2 px-6 rounded transition duration-100 block font-dystopian" %> <%= link_to "CoreXY", guides_page_path("corexy"), class: "#{current_page?(guides_page_path("corexy")) ? 'bg-[#564CAD]' : 'hover:bg-[#564CAD]'} bg-[#2E2A54] p-2 px-6 rounded transition duration-100 block font-dystopian" %> + <%# Paste your guide thingy right above here! %> + <%# <%= link_to "Other communities", guides_page_path("faq"), class: "#{current_page?(guides_page_path("submit")) ? 'bg-[#564CAD]' : 'hover:bg-[#564CAD]'} bg-[#2E2A54] p-2 rounded transition duration-100 block font-dystopian" %> From d57717fcaaccb6339af5621ebcde77fd42363a57 Mon Sep 17 00:00:00 2001 From: Anicetus Date: Tue, 3 Jun 2025 12:33:49 -0500 Subject: [PATCH 04/94] Update overview.md --- app/views/guides/overview.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/views/guides/overview.md b/app/views/guides/overview.md index 5260d65..30044b0 100644 --- a/app/views/guides/overview.md +++ b/app/views/guides/overview.md @@ -8,7 +8,9 @@ The first one is on how to make a Game Console - check it out on the sidebar! #### Contributing -To contribute, make a markdown file in the app/views/guides folder! Put your guide in there. Afterwards, make a PR with your changes! +To contribute, make a markdown file in the app/views/guides folder! Put your guide in there. -**In return, you'll get rewarded 1 free point for adding *finished* a guide** +Next, open app/views/guides/_sidebar.html.erb. Copy this: `<%= link_to "YOUR PROJECT TYPE", guides_page_path(".MD FILE NAME"), class: "#{current_page?(guides_page_path(".MD FILE NAME")) ? 'bg-[#564CAD]' : 'hover:bg-[#564CAD]'} bg-[#2E2A54] p-2 px-6 rounded transition duration-100 block font-dystopian" %>` and paste where instructed in that file. Replace the placeholders with your guide, and make a PR with all of your changes! + +**In return, you'll get rewarded 1 free point for adding a *finished* guide** From d19d4ee566e662bd8f172ae28b8e0a0d72af1c41 Mon Sep 17 00:00:00 2001 From: Anicetus Date: Tue, 3 Jun 2025 14:08:19 -0500 Subject: [PATCH 05/94] Update corexy.md --- app/views/guides/corexy.md | 47 +++++++++++++++++++++++++++++++++++--- 1 file changed, 44 insertions(+), 3 deletions(-) diff --git a/app/views/guides/corexy.md b/app/views/guides/corexy.md index 2114c18..1247b10 100644 --- a/app/views/guides/corexy.md +++ b/app/views/guides/corexy.md @@ -41,16 +41,57 @@ AliExpress is your friend when researching parts, (sorry Indian people!) and it One strategy you might try is buying broken 3D printers off of eBay. People tend to sell them cheap, and you can get an easy heated bed, aluminum extrusions, and more out of it. However if you choose to do it like this, you'll have to center your design around the parts you'll be getting from the seller. For example, the aluminum extrusions in your design will have to be the ones that the broken 3D printer uses. Sometimes this can be a problem, especially since most 3D printers for parts out there are bedslingers with all sorts of different lengths. -Here's a very simple BOM to get you on your feet: +Here's a very simple BOM and explanation to get you on your feet: (Please take this with a giant grain of salt. You'll need to do massive amounts of research for what you have in mind, and I'm 99% sure you won't be using every part I recommend.) ### Printhead | Part | Cost | Notes | |-----------------------------|-------------|------------------------------------------------------------------------------------------------------------------------------------------------------------| -| Hotend | $20 | An E3D V6 clone is good for non-high speed printing, otherwise check out the TZ E3/E6 | +| Hotend | $20 | An E3D V6 clone is good for non-high-speed printing, otherwise check out the TZ E6/V6 | | Extruder | $40 | The Orbiter v2 is very good, also the Sherpa Mini | | Part cooling fans | $10 | Please get two 5015's. I'm begging you. | | Heat sink fan | $3 | 3010 is good for basically everything. If you plan to print super fast maybe 4010. | | Z-Probe | $7-$37 | For seven bucks, the PCB Klicky probe is amazing. For more high-quality, check out the GENUINE BLTouch. Never ever ever buy a "3DTouch," it's a fake scam. | | Printhead Lights (optional) | $5 | There are PCB kits out there, or you can just use some white LEDs and resistors | -| **Total** | **$85-115** | | +| **Total** | **$85-115** | + +I personally would go with the Klicky probe. The way it works is it's a tiny microswitch with a dock at the back of the printer. The printhead moves back to the dock and picks it up with magnets, which also convey the voltage + and - (for an LED) and signal for button presses. The microswitch sticks out from the printhead, and acts as a Z-probe and as the Z-limit switch. The printhead then docks the Klicky, so that the nozzle isn't blocked anymore, and goes on to printing. It's only 7 bucks as compared to the BLTouch's $30-$40 price mark, making it great for its price. + +The reason a lot of people choose BLTouch instead is that it's plug and play with most mainboards, unlike the Klicky which needs some fancy wiring, and instead of having to dock it, you just fasten it to the printhead and it automatically pushes out a little probing stick every time you need to probe. It's very very handy, but beware: knockoffs abound. If you get a BLTouch, you _must_ get one that says "BLTouch" on the side. Not "3DTouch," "BLTouch"!! People have done tests, and 3DTouches are the least accurate, most worthless probes you can buy. The list of authorized sellers and legitimate BLTouches is at their website, [https://antclabs.com/](https://antclabs.com/). + +In my own CoreXY design, I failed to put two 5015 blower fans for the part cooling. This rookie mistake is costing me now, due to a lack of cooling with dual 4010 blowers. Dual 5015s are more than enough for any printer. + +The hotend is a crucial component, and you should dedicate much time to researching one. One of the most common is an E3D V6 clone (the original is too expensive and the clones are just as good), which is capable of a flow rate of up to 15mm3/s. This equates to approximately 180mm/s printing speed with 0.4mm width and 0.2mm layer height, or 120mm/s with 0.6mm line width and 0.2mm layer height. +``` +Tip: +Print speed = (flow rate ÷ line width) ÷ layer height +e.g. (15 ÷ 0.4) ÷ 0.2 ≈ 180 +or (15 ÷ 0.6) ÷ 0.3 ≈ 125 +``` +This is decent, but not very fast. If this speed is OK with you, go ahead! The E3D V6 is a favorite among many, and you'll be in good company. +But I know one thing for sure: it wasn't fast enough for me. + +I used the TZ E3 2.0, a great (and very small!) hotend that the manufacturers claim can achieve 33mm3/s, meaning it likely gets around 30 with high-flow filament and a good extruder. Using the formula above, that equates to 375mm/s with 0.4 line width and 0.2 height. That's definitely better! The TZ E3 2.0's brother, the TZ V6 2.0, has the same specs but boasts faster cooling with a cylindrical heatsink instead of the E3's rectangular one. + +Extruders, while a fundamental part of any printer, aren't quite as nitpicky. The Orbiter line is quite good, with their most recent being the Orbiter v2.5. In my opinion, v2.0 is plenty good enough for any scenario, and v1.5 should work well for slower printers. Many people feel, however, that the Orbiters are overpriced. The v2.0 I bought for my printer cost $40 and some change, which might be hard on a tight budget. In that case, you might check out the Sherpa Mini, beloved by many. To be clear, I haven't done very much research on the Sherpa line, so exactly what it can do is outside my scope. + +Printhead lights, while totally optional, can help illuminate your prints, whether for timelapses or simply for checking on prints. Vorons use these, in the form of small PCBs mounted at an angle to the hotend. Alternatively, you can simply wire small LED bulbs and add resistors so that you can wire them directly to your 24V output. + +### Gantry and Kinematics +Keep in mind, the gantry can be very different across printers. The Voron 2.4, for example, uses a gantry with an open front, and an intriguing belt path. The way you route your belts is totally up to you! This BOM goes over the parts I used in mine, which follows [this](https://reprap.org/forum/thumbcache/8ae/885/da4/f6b/336/1c4/d2c/8c7/34d/c71/d5_800x400.png) diagram more or less. + +| **Part** | **Cost** | **Notes** | +|------------------------|---------------|-------------------------------------------------------| +| Toothed Idlers (4 pcs) | $5 | The teeth help route the toothed side of the belts | +| Smooth Idlers (2 pcs) | $3 | To route the smooth side of the belt | +| 2GT Belt | $30 | Check the length needed after your design is done. | +| Linear rails/rods | $15-$60 | More on these down below | +| Pulleys | $5 | These attach to your motors to pull the belts | +| X/Y Motors | $25 | Motors are a very tough part to research. More below. | +| **Total** | **$98 - 155** | | + +All of your idlers and pulleys should be 20T, except for the pulleys used in a belt drive Z system (one motor, three screws,) which, if you should choose it, should be 40T. (The T just means how many teeth it has; the most common are 16T and 20T. 20T are better for gripping the belts.) + +The belt should be either a genuine Gates brand belt or a POWGE brand belt from AliExpress. POWGE is the most common choice, and they make pretty good-quality stuff. 6mm is fine for most builds, but if you're going to go fast (300mm/s or more I'd say) you might want to look at 9mm belts. The idlers and pulleys should be 7mm or 10mm wide respectively. + +Linear rails vs rods are a tough one. Rails can get very expensive, but they're very smooth and make zero noise. From ff3e9cfe756bc5a056f3b1226512251ea167b308 Mon Sep 17 00:00:00 2001 From: Anicetus Date: Tue, 3 Jun 2025 17:26:38 -0500 Subject: [PATCH 06/94] Update corexy.md --- app/views/guides/corexy.md | 107 ++++++++++++++++++++++++++++++++----- 1 file changed, 95 insertions(+), 12 deletions(-) diff --git a/app/views/guides/corexy.md b/app/views/guides/corexy.md index 1247b10..66275ff 100644 --- a/app/views/guides/corexy.md +++ b/app/views/guides/corexy.md @@ -7,6 +7,17 @@ Written by: anicetus Hello! When it comes to 3D printers, CoreXY's are the best. They're the most high-quality and fast, but tend to be much more expensive and complicated than a Cartesian 3D printer. But first, here's an overview about the differences between Cartesian and CoreXY 3D printers, and how they work. +## Safety + +3D printers are fire hazards. Their hotends heat very hot, and the beds heat hot on a large surface area. They use a lot of power. Here are _mandatory_ things you must do to ensure that you don't ruin the printer, injure yourself, or start a fire. +1. Always buy your power supply from a trusted brand. Never ever buy from a no-name or knockoff brand. Mean Well is the best brand on the market and are widely used for their safety and quality. +2. Never solder AC wire connections. Use spade disconnect connectors for your power inlet and spade terminals for your PSU. More about this later. +3. Never tin (add a shell of solder around) your wires. Tinning wires is illegal in California and some of Europe because it starts fires. Due to a process called creep, the solder deforms and wires can come loose and start electrical fires. Instead, use ferrules or even just twist the wire before putting it in. +4. Never modify the PSU. There are capacitors inside that carry enough voltage to kill you. This is not a joke. Never open it unless you know exactly where not to touch it and are wearing electrical gloves. +5. Quadruple-check all wire connections and make sure everything is tight. +6. Never leave the 3D printer unattended for long periods of time. The truth is, this is a DIY 3D printer cobbled together by (likely) an amateur. Things can go wrong that you would never expect, and if you don't catch it, you could pay severely. +7. Use the right size wires. If you use a gauge of wire too low to power your PSU or mainboard, it could start a fire. 14 to 12 AWG (3mm2 to 2.5mm2) is great for your 3D printer. Anything smaller than 16 AWG (~3.3mm2) is likely not to work. + ## About CoreXY's A good example of a CoreXY printer is the Bambu Lab X1 series. They look like big cubes, and the Bambu line has an enclosure around the entire thing. A Cartesian printer is like an Ender 3 or a Bambu Lab A1 Mini. Cartesian printers come in two main types: bedslingers and cantilevers. A Ender 3 is a bedslinger (named because it slings the bed back and forth) and a Bambu Lab A1 Mini is a cantilever (because there is only one "pole" supporting the "arm".) @@ -45,15 +56,17 @@ Here's a very simple BOM and explanation to get you on your feet: (Please take this with a giant grain of salt. You'll need to do massive amounts of research for what you have in mind, and I'm 99% sure you won't be using every part I recommend.) ### Printhead -| Part | Cost | Notes | -|-----------------------------|-------------|------------------------------------------------------------------------------------------------------------------------------------------------------------| -| Hotend | $20 | An E3D V6 clone is good for non-high-speed printing, otherwise check out the TZ E6/V6 | -| Extruder | $40 | The Orbiter v2 is very good, also the Sherpa Mini | -| Part cooling fans | $10 | Please get two 5015's. I'm begging you. | -| Heat sink fan | $3 | 3010 is good for basically everything. If you plan to print super fast maybe 4010. | -| Z-Probe | $7-$37 | For seven bucks, the PCB Klicky probe is amazing. For more high-quality, check out the GENUINE BLTouch. Never ever ever buy a "3DTouch," it's a fake scam. | -| Printhead Lights (optional) | $5 | There are PCB kits out there, or you can just use some white LEDs and resistors | -| **Total** | **$85-115** | +| Part | Cost | Notes | +|-----------------------------|-------------|-------------------------------------------------------------------------------------------------------------------------------------| +| Hotend | $20 | An E3D V6 clone is good for non-high-speed printing, otherwise check out the TZ E6/V6 | +| Extruder | $40 | The Orbiter v2 is very good, also the Sherpa Mini | +| Part cooling fans | $10 | Please get two 5015's. I'm begging you. | +| Heat sink fan | $3 | 3010 is good for basically everything. If you plan to print super fast maybe 4010. | +| Z-Probe | $7-$37 | For seven bucks, the PCB Klicky probe is super. For higher quality, check out the BLTouch. Never ever buy a "3DTouch," it's a scam. | +| PTFE Tubing | $5 | To route filament to your printhead. Two meters is plenty (with extra in case you mess up) | +| ADXL345 | $3 | An accelerometer for input shaping | +| Printhead Lights (optional) | $5 | There are PCB kits out there, or you can just use some white LEDs and resistors | +| **Total** | **$93-123** | I personally would go with the Klicky probe. The way it works is it's a tiny microswitch with a dock at the back of the printer. The printhead moves back to the dock and picks it up with magnets, which also convey the voltage + and - (for an LED) and signal for button presses. The microswitch sticks out from the printhead, and acts as a Z-probe and as the Z-limit switch. The printhead then docks the Klicky, so that the nozzle isn't blocked anymore, and goes on to printing. It's only 7 bucks as compared to the BLTouch's $30-$40 price mark, making it great for its price. @@ -71,10 +84,12 @@ or (15 ÷ 0.6) ÷ 0.3 ≈ 125 This is decent, but not very fast. If this speed is OK with you, go ahead! The E3D V6 is a favorite among many, and you'll be in good company. But I know one thing for sure: it wasn't fast enough for me. -I used the TZ E3 2.0, a great (and very small!) hotend that the manufacturers claim can achieve 33mm3/s, meaning it likely gets around 30 with high-flow filament and a good extruder. Using the formula above, that equates to 375mm/s with 0.4 line width and 0.2 height. That's definitely better! The TZ E3 2.0's brother, the TZ V6 2.0, has the same specs but boasts faster cooling with a cylindrical heatsink instead of the E3's rectangular one. +I used the TZ E3 2.0, a great (and very small!) hotend that the manufacturers claim can achieve 33mm3/s, meaning it likely gets around 30 with high-flow filament and a good extruder. Using the formula above, that equates to 375mm/s with 0.4 line width and 0.2 height. That's definitely better! The TZ E3 2.0's brother, the TZ V6 2.0, has the same specs but boasts faster cooling with a cylindrical heatsink instead of the E3's rectangular one. Additionally, the TZ line can all get up to 300°C. This is great for PLA, PETG, TPU, and others. I have no knowledge about higher-temp hotends. The ones on AliExpress have 40W heaters, so not very fast, Extruders, while a fundamental part of any printer, aren't quite as nitpicky. The Orbiter line is quite good, with their most recent being the Orbiter v2.5. In my opinion, v2.0 is plenty good enough for any scenario, and v1.5 should work well for slower printers. Many people feel, however, that the Orbiters are overpriced. The v2.0 I bought for my printer cost $40 and some change, which might be hard on a tight budget. In that case, you might check out the Sherpa Mini, beloved by many. To be clear, I haven't done very much research on the Sherpa line, so exactly what it can do is outside my scope. +The ADXL345 is an accelerometer, which just means it tells you how fast you're going in all three directions. It's used for input shaping, a complicated and interesting process that is explained very well [here](https://all3dp.com/2/klipper-input-shaping-simply-explained/). + Printhead lights, while totally optional, can help illuminate your prints, whether for timelapses or simply for checking on prints. Vorons use these, in the form of small PCBs mounted at an angle to the hotend. Alternatively, you can simply wire small LED bulbs and add resistors so that you can wire them directly to your 24V output. ### Gantry and Kinematics @@ -85,7 +100,7 @@ Keep in mind, the gantry can be very different across printers. The Voron 2.4, f | Toothed Idlers (4 pcs) | $5 | The teeth help route the toothed side of the belts | | Smooth Idlers (2 pcs) | $3 | To route the smooth side of the belt | | 2GT Belt | $30 | Check the length needed after your design is done. | -| Linear rails/rods | $15-$60 | More on these down below | +| Linear rails/rods | $30-$60 | More on these down below | | Pulleys | $5 | These attach to your motors to pull the belts | | X/Y Motors | $25 | Motors are a very tough part to research. More below. | | **Total** | **$98 - 155** | | @@ -94,4 +109,72 @@ All of your idlers and pulleys should be 20T, except for the pulleys used in a b The belt should be either a genuine Gates brand belt or a POWGE brand belt from AliExpress. POWGE is the most common choice, and they make pretty good-quality stuff. 6mm is fine for most builds, but if you're going to go fast (300mm/s or more I'd say) you might want to look at 9mm belts. The idlers and pulleys should be 7mm or 10mm wide respectively. -Linear rails vs rods are a tough one. Rails can get very expensive, but they're very smooth and make zero noise. +Linear rails vs rods are a tough one. Rails can get very expensive, but they're very smooth and make zero noise. In hindsight, I could have done rods to make my printer more budget, but rails are realllly satisfying. If you go rods, use 8mm diameter and LM8UU bearings. They're what everybody uses. If you're over budget, you can try buying or 3D printing bushings. Bushings are like bearings, but instead of little balls inside them, they simply have minimal surface area on the rod. They'll wear down faster but are good if you're just substituting until you can afford actual bearings. + +Motors are a very hard thing to research, namely for a faster printer. Everybody uses Nema17s, and will thus be the easiest to incorporate into your design. I wish I'd had [this link](https://reprap.org/wiki/NEMA_17_Stepper_motor) when I was researching my motors. It lays out a select few with good specs. If you're printing slower (100-200mm/s) you hardly need to research them at all; any inductance of 4mH or under is fine, and you should have about 44+ Ncm holding torque. + +For a 300mm/s printer, an inductance of 2-3mH is better, and a holding torque of 44 or more is still good. Then we get into high-speed CoreXY's. A 400-500mm/s printer should have 55 or more holding torque and max 2.5mH inductance. For incredible speeds like 600mm/s or more, you'll need 60-ish holding torque and very low inductance, like less than 1.5mH. It's in the high-speed world that you'll want higher-voltage stepper motors. Especially when going high accelerations, like 40k or more, 48V or even 60V can be huge. For this, you'll probably need another PSU to power the 60V, as well as a mainboard that has a dedicated motor input for those high voltages. However, it is still possibly to run it at 24V. [This](https://www.youtube.com/watch?v=cjXhLow9jRg) video is worth a watch. + +TL;DR: Printing over ~450mm/s is likely to set you ~$120 back in budget. + +### Z-Axis +If you're doing a three motor three screw setup, it might look like this: +| **Part** | **Cost** | **Notes** | +|---------------------|----------|---------------------------------------------------------------| +| Z-Motors | $28 | These motors don't need to be very powerful | +| Lead screws (3 pcs) | $20 | T8, 4mm or 2mm pitch | +| Linear rods | $15 | 8 or 16mm diameter | +| Linear bearings | $10 | Really any 8mm bearings. Some have screw-hole flanges as well | +| Flexible couplers | $7 | 5mm to 8mm diameter, for connecting motors to screws | +| **Total** | **~$80** | | + +Z-motors for a triple Z motor setup don't need to be very powerful, as all three are helping. Keep in mind that you may need either a stepper motor splitter or a mainboard with three synced Z-axis motor outputs, which many do not offer. + +Lead screws should always be 8mm in diameter. A smaller pitch means more precise but slower, and 4mm is a great middle ground. I used 2mm pitch (mistake) and it takes forever to move the bed! + +There are two types of flexible couplers for the Z-axis: beam couplings (they look a little like springs) and jaw couplings (they usually have little orange flexible pieces inside). When searching for them, just search "flexible coupler [or coupling]" and both types should appear. + +For a one-motor, three-screw setup, your BOM might look like this instead: +| **Part** | **Cost** | **Notes** | +|-----------------------|----------|----------------------------------------------------------------------| +| Z-Motor | $20 | This motor should be more powerful to be able to move the entire bed | +| Lead screws (3 pcs) | $20 | T8, 4mm or 2mm pitch | +| Linear rods | $15 | 8 or 16mm diameter | +| Linear bearings | $10 | Really any 8mm bearings. Some have screw-hole flanges as well | +| 5mm Inner Dia. Pulley | $5 | To put on the motor to drive the belt. Should get 40T | +| 8mm Inner Dia. Pulley | $10 | Need three, one for each screw. Should also be 40T | +| **Total** | **~$80** | | + +If both come out at the same price, I'd go with three motors and three screws. Far more reliable, and easier to design. + +### Electronics + +| **Part** | **Cost** | **Notes** | +|-----------------------------|----------|----------------------------------------------------------------------| +| PSU | $50 | 450+W should be enough in most cases--get 24V | +| Mainboard | $30 | For an ordinary printer, the BigTreeTech SKR Mini E3 V3 is great! | +| Mainboard Fan | $3 | You don't need to be picky here, anything 4010+ axial is good | +| Heated Bed | $20-40 | Build size heavily influences price | +| Build plate | $20 | Most commonly used is textured PEI. Glass is also good. | +| Power inlet + fuse | $5 | Make sure that the fuse is 250V. IEC320 C14 is a good size | +| Power plug | $7 | 5-15P to IEC320 C13 is good | +| Spade disconnect connectors | $5 | For connecting wires to the power inlet--never solder! | +| Spade terminals | $5 | For connecting wires to and from the PSU | +| Ferrules | $5 | For connecting wires to and from mainboard | +| Ferrule crimper if needed | $20 | For crimping ferrules | +| **Total** | **~$150-190** | | + +The very best PSU brand is Mean Well. They make the most high-quality ones out there. Never ever buy a knockoff or a sketchy-looking PSU! You could kill yourself. I am not joking. + +The most popular mainboard out there is the BigTreeTech SKR Mini E3 V3. It's super powerful, small, and has a ton of features. It's fast and has dual Z motor outputs, for only $30. + +I didn't do much research on heated beds, as I just bought mine from Kieran in Hack Club. From what I've seen, however, there are two types: the metal types you see on commercial printers and silicone bed plates. Silicone ones are orange and look flexible, while the metal ones have a black underside. I don't know much else about these, unfortunately. The build plate is relatively easy. The tried-and-true type is textured PEI coated, with a sort of grainy appearance. If you don't like that graininess, you might check out glass or dual-sided textured PEI+PEO. The one I bought had PEI on one side and PEO on the other. PEO is a smooth, shiny coating usually engraved with reflective designs that imprint onto your parts. + +Never solder AC voltage. It's dangerous and unreliable. Instead, use spade disconnect connectors, which grip tightly onto the pins on the back of the power inlet. Before buying, make sure that the pins on your inlet will fit in the connectors. Similarly, spade terminals look like forks and grab onto the screw terminals on your PSU. Again, make sure these fit before buying. + +Ferrules, while optional, can be very helpful. I didn't get them due to budget problems, but they are recommended by basically everybody. + +But if you cannot use ferrules, _never ever tin your wires._ Over time and under the stress of the terminals on your mainboard, the solder on the tinned wires will begin to crack and deform. If this continues long enough, the solder can fully come off the wire, the wire can come out, and 24V at 20A directly from your PSU could short on the mainboard. Not only will your 3D printer be ruined, it could easily start an electrical fire. The funny thing about electrical fires is that, unlike regular fires, they can't be put out by simply extinguishing the heat. As long as the wire is shorting, it has more than enough fuel and heat to just keep burning. + +[This](https://www.reddit.com/r/ender3/comments/nbdd99/friendly_reminder_check_your_3d_printer_for/) is a great post about tinned wires on a 3D printer (reddit warning lol) + From 73c870ab6373d0608017eac25aef6d660e678715 Mon Sep 17 00:00:00 2001 From: Anicetus Date: Wed, 4 Jun 2025 11:16:04 -0500 Subject: [PATCH 07/94] Update corexy.md --- app/views/guides/corexy.md | 98 +++++++++++++++++++++++++++++++------- 1 file changed, 81 insertions(+), 17 deletions(-) diff --git a/app/views/guides/corexy.md b/app/views/guides/corexy.md index 66275ff..79941ea 100644 --- a/app/views/guides/corexy.md +++ b/app/views/guides/corexy.md @@ -66,6 +66,7 @@ Here's a very simple BOM and explanation to get you on your feet: | PTFE Tubing | $5 | To route filament to your printhead. Two meters is plenty (with extra in case you mess up) | | ADXL345 | $3 | An accelerometer for input shaping | | Printhead Lights (optional) | $5 | There are PCB kits out there, or you can just use some white LEDs and resistors | +| Wire routing | $5 | Printhead wires can get quite unruly. Routing can be just zip ties or a dedicated chain like Vorons have. | | **Total** | **$93-123** | I personally would go with the Klicky probe. The way it works is it's a tiny microswitch with a dock at the back of the printer. The printhead moves back to the dock and picks it up with magnets, which also convey the voltage + and - (for an LED) and signal for button presses. The microswitch sticks out from the printhead, and acts as a Z-probe and as the Z-limit switch. The printhead then docks the Klicky, so that the nozzle isn't blocked anymore, and goes on to printing. It's only 7 bucks as compared to the BLTouch's $30-$40 price mark, making it great for its price. @@ -97,26 +98,32 @@ Keep in mind, the gantry can be very different across printers. The Voron 2.4, f | **Part** | **Cost** | **Notes** | |------------------------|---------------|-------------------------------------------------------| -| Toothed Idlers (4 pcs) | $5 | The teeth help route the toothed side of the belts | +| Toothed Idlers (6 pcs) | $5 | The teeth help route the toothed side of the belts | | Smooth Idlers (2 pcs) | $3 | To route the smooth side of the belt | +| Dowel pins (8 pcs) | $5 | To hold the idlers in place--don't 3D print these | | 2GT Belt | $30 | Check the length needed after your design is done. | | Linear rails/rods | $30-$60 | More on these down below | | Pulleys | $5 | These attach to your motors to pull the belts | | X/Y Motors | $25 | Motors are a very tough part to research. More below. | -| **Total** | **$98 - 155** | | +| Motor Bearings | $5 | 608zz bearings are good for shearing motors | +| **Total** | **$118 - 165** | | All of your idlers and pulleys should be 20T, except for the pulleys used in a belt drive Z system (one motor, three screws,) which, if you should choose it, should be 40T. (The T just means how many teeth it has; the most common are 16T and 20T. 20T are better for gripping the belts.) +Dowel pins are used to hold the idlers, instead of 3D printing a peg that they slide on. The pins should be about 4mm longer than the idlers on each side, and you should make little wells for them to pop into. This disperses the stress from the belts across the entire holder, instead of just the peg. + The belt should be either a genuine Gates brand belt or a POWGE brand belt from AliExpress. POWGE is the most common choice, and they make pretty good-quality stuff. 6mm is fine for most builds, but if you're going to go fast (300mm/s or more I'd say) you might want to look at 9mm belts. The idlers and pulleys should be 7mm or 10mm wide respectively. Linear rails vs rods are a tough one. Rails can get very expensive, but they're very smooth and make zero noise. In hindsight, I could have done rods to make my printer more budget, but rails are realllly satisfying. If you go rods, use 8mm diameter and LM8UU bearings. They're what everybody uses. If you're over budget, you can try buying or 3D printing bushings. Bushings are like bearings, but instead of little balls inside them, they simply have minimal surface area on the rod. They'll wear down faster but are good if you're just substituting until you can afford actual bearings. Motors are a very hard thing to research, namely for a faster printer. Everybody uses Nema17s, and will thus be the easiest to incorporate into your design. I wish I'd had [this link](https://reprap.org/wiki/NEMA_17_Stepper_motor) when I was researching my motors. It lays out a select few with good specs. If you're printing slower (100-200mm/s) you hardly need to research them at all; any inductance of 4mH or under is fine, and you should have about 44+ Ncm holding torque. -For a 300mm/s printer, an inductance of 2-3mH is better, and a holding torque of 44 or more is still good. Then we get into high-speed CoreXY's. A 400-500mm/s printer should have 55 or more holding torque and max 2.5mH inductance. For incredible speeds like 600mm/s or more, you'll need 60-ish holding torque and very low inductance, like less than 1.5mH. It's in the high-speed world that you'll want higher-voltage stepper motors. Especially when going high accelerations, like 40k or more, 48V or even 60V can be huge. For this, you'll probably need another PSU to power the 60V, as well as a mainboard that has a dedicated motor input for those high voltages. However, it is still possibly to run it at 24V. [This](https://www.youtube.com/watch?v=cjXhLow9jRg) video is worth a watch. +For a 300mm/s printer, an inductance of 2-3mH is better, and a holding torque of 44 or more is still good. Then we get into high-speed CoreXY's. A 400-500mm/s printer should have 55 or more holding torque and max 2.5mH inductance. For incredible speeds like 600mm/s or more, you'll need 60-ish holding torque and very low inductance, like less than 1.5mH. It's in the high-speed world that you'll want higher-voltage stepper motors. Especially when going high accelerations, like 40k or more, 48V or even 60V can be huge. For this, you'll probably need another PSU to power the 60V, as well as a mainboard that has a dedicated motor input for those high voltages. However, it is still possible to run it at 24V. [This](https://www.youtube.com/watch?v=cjXhLow9jRg) video is worth a watch. TL;DR: Printing over ~450mm/s is likely to set you ~$120 back in budget. +Last thing: if opting for high speeds that require a lot of torque, you may want to do what's called "shearing" your motors. This just means placing a bearing at the end of the shaft, after the pulley, and connecting it well to the motor. The reason for this is that, with the high tension of the belts, the motor shaft may bend and damage the inside of the motor. Putting a bearing at the end and mounting it ensures that the shaft remains upright. When I tried this, I had a lot of issues with the motor not turning properly, so I simply removed it. So far, I've been having success without shearing motors, but it's worth a try. + ### Z-Axis If you're doing a three motor three screw setup, it might look like this: | **Part** | **Cost** | **Notes** | @@ -149,20 +156,21 @@ If both come out at the same price, I'd go with three motors and three screws. F ### Electronics -| **Part** | **Cost** | **Notes** | -|-----------------------------|----------|----------------------------------------------------------------------| -| PSU | $50 | 450+W should be enough in most cases--get 24V | -| Mainboard | $30 | For an ordinary printer, the BigTreeTech SKR Mini E3 V3 is great! | -| Mainboard Fan | $3 | You don't need to be picky here, anything 4010+ axial is good | -| Heated Bed | $20-40 | Build size heavily influences price | -| Build plate | $20 | Most commonly used is textured PEI. Glass is also good. | -| Power inlet + fuse | $5 | Make sure that the fuse is 250V. IEC320 C14 is a good size | -| Power plug | $7 | 5-15P to IEC320 C13 is good | -| Spade disconnect connectors | $5 | For connecting wires to the power inlet--never solder! | -| Spade terminals | $5 | For connecting wires to and from the PSU | -| Ferrules | $5 | For connecting wires to and from mainboard | -| Ferrule crimper if needed | $20 | For crimping ferrules | -| **Total** | **~$150-190** | | +| **Part** | **Cost** | **Notes** | +|---------------------------------|----------|----------------------------------------------------------------------| +| PSU | $50 | 450+W should be enough in most cases--get 24V | +| Mainboard | $30 | For an ordinary printer, the BigTreeTech SKR Mini E3 V3 is great! | +| Mainboard Fan | $3 | You don't need to be picky here, anything 4010+ axial is good | +| Heated Bed | $20-40 | Build size heavily influences price | +| Build plate | $20 | Most commonly used is textured PEI. Glass is also good. | +| Power inlet + fuse | $5 | Make sure that the fuse is 250V. IEC320 C14 is a good size | +| Power plug | $7 | 5-15P to IEC320 C13 is good | +| Spade disconnect connectors | $5 | For connecting wires to the power inlet--never solder! | +| Spade terminals | $5 | For connecting wires to and from the PSU | +| Ferrules | $5 | For connecting wires to and from mainboard | +| Ferrule crimper if needed | $20 | For crimping ferrules | +| 12AWG (~3.5mm2) wire | $5 | Two meters is a good safe number | +| **Total** | **~$155-195** | | The very best PSU brand is Mean Well. They make the most high-quality ones out there. Never ever buy a knockoff or a sketchy-looking PSU! You could kill yourself. I am not joking. @@ -178,3 +186,59 @@ But if you cannot use ferrules, _never ever tin your wires._ Over time and under [This](https://www.reddit.com/r/ender3/comments/nbdd99/friendly_reminder_check_your_3d_printer_for/) is a great post about tinned wires on a 3D printer (reddit warning lol) +### Frame + +| **Part** | **Cost** | **Notes** | +|-------------------------------|----------|-----------------------------------------------------------| +| Aluminum Extrusions | ~$50 | This price will heavily depend on the size of the printer | +| Aluminum Extrusion connectors | $15 | 3-way connectors are good | +| T-nuts | $15 | M3 size | +| M3 Screws + heated inserts | $10 | Kudos if you get the entire design to only use M3's | +| Heated Bed Spacers | $10 | Whatever method chosen to offset the bed from its holder | +| **Total** | **~$100**| | + +The purpose of aluminum extrusions and their connectors is obvious: make the actual frame of the 3D printer. T-nuts are used to connect assorted parts to the extrusions, like linear rails, mounting a screen, or connecting linear rod holders. + +You're likely going to need a wide assortment of M3 screw lengths and may need to get M2.5s or even smaller, namely for the printhead or other detailed parts. My CoreXY uses a paraphernalia of M3x8's, M3x22's, countersunk M3's, countersunk M2.5s, and more. For heated inserts, I'd get 4mm length and 5mm outer diameter for M3s, as well as 4mm outer diameter and 4mm length for M2.5s. + +Last but not least, the heated bed spacers. Most people will make some sort of heated bed holder that contains plastic, and if the heated bed is too close to the holder, that plastic could deform or even melt. If you're 3D printing your holder, PETG is good at not warping in high temps. You'll want to offset the bed at least 6-ish mm, to provide airflow. I used nylon spacers on the screws between the bed and the holder, which seem to be working well. I know a lot of people use cork and other materials, which would probably be a bit more expensive but well worth it. + +### Summary + +As you can see, this rough BOM is already over $350. The grand total across the outlines is around $550. I must admit, I've been very pessimistic about these prices, and with luck, you should be able to source cheaper ones. However, and I warn you, the Anicept Vex's grand total was around $500, but I was able to get a lot of parts from DigiKey using my High Seas grant, which many people won't have. There's a reason Bambu Labs printers are so expensive, and it's probably not just profit. These machines can get quite expensive. + +If you have access to sites like TaoBao or other incredibly cheap Chinese sellers, you'll be more likely to stay relatively within budget. +Well, that's the research! If you have any questions or need help, feel free to post in #highway or DM me (@anicetus) in the slack. + +## Step Two: Design + +Alright! Research is (hopefully) done! Give yourself a pat on the back; you've deserved it. Research is definitely one of the hardest parts of making a 3D printer--in fact it might be the hardest if the design is easy for you--so you should feel relieved. + +But it's no secret that design can be very difficult. In my opinion, the printhead and the belt routing are the two hardest parts of any 3D printer design, because they're so intricate and need to be... well, perfect. That being said, here's the order I'd recommend for designing your printer and why: + +1. Printhead + * So that when designing the gantry, you can leave room for the printhead to move beyond the bed + * A very difficult part, it'll feel good to get it done first + * Usually the part that requires the most research, so you'll be able to see what needs changing as you go + * When beginning, first import all your parts and arrange them. Be very sure to leave room for mounting the belts and for 3D-printed parts +2. Gantry + * Import the bed as well to get an idea of the movement you need + * Again, a very difficult part that'll be nice to have finished + * You never want to make the entire frame first and mount all of the electronics, only to begin designing the gantry and find out that your idlers don't fit + * This also includes a toolchanger system if you make that + * Always compare your gantry to standard aluminum extrusion lengths (unless you're cutting them yourself) and make it bigger if they don't make extrusions in the size you'd like + * There are two types of gantry homing: switch homing and [sensorless homing](https://all3dp.com/2/klipper-sensorless-homing-simply-explained/). This guide assumes sensorless homing. +3. Z-axis + * Make your bed holder and belted/tri-motor system before you make the frame, so that you don't make the frame too big or too small for it +4. Electronics + frame + * Now that the important parts are done, you can mount your PSU and mainboard. Make sure that wires have plenty of room to move around! This was a major mistake I made +5. Everything else + * An MMU, Raspberry Pi mount, etc. + +Unfortunately, there's not a lot else I can say about design. Everybody's printer will be different, and there isn't a standardized gantry type or printhead model. However, this is where you can get clever and make interesting or useful designs. For example, I mounted my PSU and mainboard in a locking mechanism that insured that there wasn't any sag while covering the PSU ports and protecting the mainboard at the same time. + +I do have a few tips, however. First, always make sure your belt routing is straight. The line from the motor pulleys to the idlers on the gantry and from the gantry idlers to the printhead (note: the routing from the motor pulleys to the stationary idlers doesn't need to be straight) should be perfectly even, at the risk of having uneven belt tension when moving the gantry and printhead. Besides that, it looks nice and even. Speaking of the idlers, always give them good solid mounts, preferably printed out of PETG. They'll go under a lot of stress, and you really don't want the mount to snap in the middle of a print. + +This should be obvious, but make sure that your intricate parts can actually be taken apart. Midway through my printhead design, I realized that it was physically impossible to assemble or disassemble it for the simple yet elusive reason that the screws you need to access are only accessible if the printhead is disassembled. This meant that when assembling and when everything was in place, the screws were unreachable and when disassembling they couldn't be seen. This took about a day and a half to fix, a day and a half when I could have been finishing the design. + +When using spade terminals for your PSU and when using ferrules for your mainboard, ensure that they have plenty of room to stick out. The spade terminals I got stuck out 18mm from the PSU, which I made no account for. Same thing for the power inlet disconnect connectors. From 0de1a574b797910c801cab468486e65b775747be Mon Sep 17 00:00:00 2001 From: Anicetus Date: Wed, 4 Jun 2025 11:20:00 -0500 Subject: [PATCH 08/94] Update corexy.md --- app/views/guides/corexy.md | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/app/views/guides/corexy.md b/app/views/guides/corexy.md index 79941ea..dd04018 100644 --- a/app/views/guides/corexy.md +++ b/app/views/guides/corexy.md @@ -216,24 +216,24 @@ Alright! Research is (hopefully) done! Give yourself a pat on the back; you've d But it's no secret that design can be very difficult. In my opinion, the printhead and the belt routing are the two hardest parts of any 3D printer design, because they're so intricate and need to be... well, perfect. That being said, here's the order I'd recommend for designing your printer and why: -1. Printhead - * So that when designing the gantry, you can leave room for the printhead to move beyond the bed - * A very difficult part, it'll feel good to get it done first - * Usually the part that requires the most research, so you'll be able to see what needs changing as you go - * When beginning, first import all your parts and arrange them. Be very sure to leave room for mounting the belts and for 3D-printed parts -2. Gantry - * Import the bed as well to get an idea of the movement you need - * Again, a very difficult part that'll be nice to have finished - * You never want to make the entire frame first and mount all of the electronics, only to begin designing the gantry and find out that your idlers don't fit - * This also includes a toolchanger system if you make that - * Always compare your gantry to standard aluminum extrusion lengths (unless you're cutting them yourself) and make it bigger if they don't make extrusions in the size you'd like - * There are two types of gantry homing: switch homing and [sensorless homing](https://all3dp.com/2/klipper-sensorless-homing-simply-explained/). This guide assumes sensorless homing. -3. Z-axis - * Make your bed holder and belted/tri-motor system before you make the frame, so that you don't make the frame too big or too small for it -4. Electronics + frame - * Now that the important parts are done, you can mount your PSU and mainboard. Make sure that wires have plenty of room to move around! This was a major mistake I made -5. Everything else - * An MMU, Raspberry Pi mount, etc. +1. Printhead + * So that when designing the gantry, you can leave room for the printhead to move beyond the bed + * A very difficult part, it'll feel good to get it done first + * Usually the part that requires the most research, so you'll be able to see what needs changing as you go + * When beginning, first import all your parts and arrange them. Be very sure to leave room for mounting the belts and for 3D-printed parts +2. Gantry + * Import the bed as well to get an idea of the movement you need + * Again, a very difficult part that'll be nice to have finished + * You never want to make the entire frame first and mount all of the electronics, only to begin designing the gantry and find out that your idlers don't fit + * This also includes a toolchanger system if you make that + * Always compare your gantry to standard aluminum extrusion lengths (unless you're cutting them yourself) and make it bigger if they don't make extrusions in the size you'd like + * There are two types of gantry homing: switch homing and [sensorless homing](https://all3dp.com/2/klipper-sensorless-homing-simply-explained/). This guide assumes sensorless homing. +3. Z-axis + * Make your bed holder and belted/tri-motor system before you make the frame, so that you don't make the frame too big or too small for it +4. Electronics + frame + * Now that the important parts are done, you can mount your PSU and mainboard. Make sure that wires have plenty of room to move around! This was a major mistake I made +5. Everything else + * An MMU, Raspberry Pi mount, etc. Unfortunately, there's not a lot else I can say about design. Everybody's printer will be different, and there isn't a standardized gantry type or printhead model. However, this is where you can get clever and make interesting or useful designs. For example, I mounted my PSU and mainboard in a locking mechanism that insured that there wasn't any sag while covering the PSU ports and protecting the mainboard at the same time. @@ -242,3 +242,5 @@ I do have a few tips, however. First, always make sure your belt routing is stra This should be obvious, but make sure that your intricate parts can actually be taken apart. Midway through my printhead design, I realized that it was physically impossible to assemble or disassemble it for the simple yet elusive reason that the screws you need to access are only accessible if the printhead is disassembled. This meant that when assembling and when everything was in place, the screws were unreachable and when disassembling they couldn't be seen. This took about a day and a half to fix, a day and a half when I could have been finishing the design. When using spade terminals for your PSU and when using ferrules for your mainboard, ensure that they have plenty of room to stick out. The spade terminals I got stuck out 18mm from the PSU, which I made no account for. Same thing for the power inlet disconnect connectors. + +One very important part of the design is the printhead part cooling ducts. There are lots of great guides online for this, and it really is a fine art. It takes forever to get right, and the tiniest change could ruin (or save!) it. From 10b15bd8aa8e382a0aa30ba07db9fb19f4cd7b76 Mon Sep 17 00:00:00 2001 From: Anicetus Date: Wed, 4 Jun 2025 15:10:55 -0500 Subject: [PATCH 09/94] Update corexy.md --- app/views/guides/corexy.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/app/views/guides/corexy.md b/app/views/guides/corexy.md index dd04018..bb2482c 100644 --- a/app/views/guides/corexy.md +++ b/app/views/guides/corexy.md @@ -224,7 +224,7 @@ But it's no secret that design can be very difficult. In my opinion, the printhe 2. Gantry * Import the bed as well to get an idea of the movement you need * Again, a very difficult part that'll be nice to have finished - * You never want to make the entire frame first and mount all of the electronics, only to begin designing the gantry and find out that your idlers don't fit + * You never want to make the entire frame first and mount all of the electronics, only to begin designing the gantry and find out that your idler mounts won't fit * This also includes a toolchanger system if you make that * Always compare your gantry to standard aluminum extrusion lengths (unless you're cutting them yourself) and make it bigger if they don't make extrusions in the size you'd like * There are two types of gantry homing: switch homing and [sensorless homing](https://all3dp.com/2/klipper-sensorless-homing-simply-explained/). This guide assumes sensorless homing. @@ -244,3 +244,12 @@ This should be obvious, but make sure that your intricate parts can actually be When using spade terminals for your PSU and when using ferrules for your mainboard, ensure that they have plenty of room to stick out. The spade terminals I got stuck out 18mm from the PSU, which I made no account for. Same thing for the power inlet disconnect connectors. One very important part of the design is the printhead part cooling ducts. There are lots of great guides online for this, and it really is a fine art. It takes forever to get right, and the tiniest change could ruin (or save!) it. + +Always make tolerances for parts that touch 3D printed parts. I'd print a 3D printer tolerance test like [this](https://www.printables.com/model/116911-clearance-tolerance-test) to see how close together you can print parts without them fusing. Your lowest tolerance you get with the test print should be the spacing between a 3D printed part and a non-3D printed part, and the spacing between two parts should be double it. + +Designing an entire 3D printer can be extremely difficult, especially for a beginner at CAD. If you don't quite know your way around whichever CAD program you use, I'd recommend going through tutorials so that you're very familiar with functions like lofts, chamfers, and offsetting faces. + +## Step Three: Assembly +Assembly is by far the easiest part of the 3D printer, but it's also when you'll find anything wrong with your design. You'll need to make a lot of iterations and will feel discouraged. Just know that you _can_ do it. Prepare yourself for making major adjustments and changing things you wish you wouldn't have to. + +However, this is also the most rewarding part. Printing out the pieces, and putting them all together, it's like seeing your imagination truly turn into reality. You'll have a printer that you know inside and out, that you know every nook and cranny of. You'll have your own machine, your own design, sitting in front of you, just asking to be turned on. And it'll be fantastic. From ff959f59c49f0e110a2ba21a52c4415b7d198afb Mon Sep 17 00:00:00 2001 From: Anicetus Date: Wed, 4 Jun 2025 16:14:51 -0500 Subject: [PATCH 10/94] Update corexy.md - final hopefully :D --- app/views/guides/corexy.md | 54 +++++++++++++++++++++++++++----------- 1 file changed, 39 insertions(+), 15 deletions(-) diff --git a/app/views/guides/corexy.md b/app/views/guides/corexy.md index bb2482c..139a78d 100644 --- a/app/views/guides/corexy.md +++ b/app/views/guides/corexy.md @@ -2,7 +2,7 @@ ### Tier 1 project (10 points) -Written by: anicetus +Written by: Anicetus Hello! When it comes to 3D printers, CoreXY's are the best. They're the most high-quality and fast, but tend to be much more expensive and complicated than a Cartesian 3D printer. But first, here's an overview about the differences between Cartesian and CoreXY 3D printers, and how they work. @@ -16,41 +16,43 @@ But first, here's an overview about the differences between Cartesian and CoreXY 4. Never modify the PSU. There are capacitors inside that carry enough voltage to kill you. This is not a joke. Never open it unless you know exactly where not to touch it and are wearing electrical gloves. 5. Quadruple-check all wire connections and make sure everything is tight. 6. Never leave the 3D printer unattended for long periods of time. The truth is, this is a DIY 3D printer cobbled together by (likely) an amateur. Things can go wrong that you would never expect, and if you don't catch it, you could pay severely. -7. Use the right size wires. If you use a gauge of wire too low to power your PSU or mainboard, it could start a fire. 14 to 12 AWG (3mm2 to 2.5mm2) is great for your 3D printer. Anything smaller than 16 AWG (~3.3mm2) is likely not to work. +7. Use the right size wires. If you use a gauge of wire too low to power your PSU or mainboard, it could start a fire. 12 to 16 AWG (3mm2 to 1.5mm2) is great for your 3D printer. Anything smaller than 18 AWG (~0.8mm2) is likely not to work. ## About CoreXY's -A good example of a CoreXY printer is the Bambu Lab X1 series. They look like big cubes, and the Bambu line has an enclosure around the entire thing. A Cartesian printer is like an Ender 3 or a Bambu Lab A1 Mini. Cartesian printers come in two main types: bedslingers and cantilevers. A Ender 3 is a bedslinger (named because it slings the bed back and forth) and a Bambu Lab A1 Mini is a cantilever (because there is only one "pole" supporting the "arm".) +A good example of a CoreXY printer is the Bambu Lab X1 series. They look like big cubes, and the Bambu line has an enclosure around the entire thing. A Cartesian printer is like an Ender 3 or a Bambu Lab A1 Mini. Cartesian printers come in two main types: bedslingers and cantilevers. An Ender 3 is a bedslinger (named because it slings the bed back and forth) and a Bambu Lab A1 Mini is a cantilever (because there is only one "pole" supporting the "arm".) But back to CoreXY's. Here are the pros and cons as compared to a bedslinger or cantilever printer: ### Pros 1. Very fast: The average CoreXY can print at least twice as fast as the average bedslinger. This is because: 2. Printhead X/Y movement: Only the printhead moves sideways and forwards, instead of the entire bed, and -3. Dual X/Y motors: Two motors drive the printhead, collaborating together and reducing strain on both. This also improves accuracy. +3. Dual X/Y motors: Two motors drive the printhead, collaborating and reducing strain on each. This also improves accuracy. 4. Bigger: CoreXY's can be built bigger than Cartesians while preserving the same quality (again, due to the bed not moving nearly as much) 5. Enclosable: Cartesians require much more space than CoreXY's because of the bed that moves back and forth. The size of the CoreXY doesn't depend on the bed position. ### Cons 1. Complicated: CoreXY's require many times the amount of components that Cartesians do, making them more complex to assemble and maintain, let alone design. 2. Long belt paths: Tensioning CoreXY belts can be difficult, and routing them in your design can be incredibly hard. -3. Expensive: More components means more price, and since the frame of a CoreXY is a cube instead of just an upside-down T, the frame is much larger. +3. Expensive: More components mean more price, and since the frame of a CoreXY is a cube instead of just an upside-down T, the frame is much larger. -A CoreXY is no task for the weak of spirit. It will require perserverence, focus, and vigilance. It's going to be really hard sometimes, and you're going to want to quit. But if you stay strong and power through it, you'll be well rewarded. It's gonna take the entire $350, and likely more out of your own pocket, but you'll be left with your _own_ 3D printer. You'll be able to tell people, "I made this!" Besides that, it might get you into MIT :3 +A CoreXY is no task for the weak of spirit. It will require perseverance, focus, and vigilance. It's going to be hard sometimes, and you're going to want to quit. But if you stay strong and power through it, you'll be well rewarded. It's gonna take the entire $350, and likely more out of pocket, but you'll be left with your _own_ 3D printer. You'll be able to tell people, "I made this!" Besides that, it might get you into MIT :3 But, without further ado, here's how to design your own CoreXY. (Note: This guide will not be a step-by-step building your own 3D printer, but simply some tips and tricks I learned making [my own](https://github.com/invictus-anic3tus/anicept-vex). ## Step One: Research -Researching parts is at least the second hardest part of making a CoreXY--or any 3D printer for that matter--but very, very important. First you're going to chose what kind of specs you want. Speed, size, enclosure, multi-filament system, etc. If you plan to make some sort of cool gimmick, like an enclosure or a toolhead changer, be prepared to spend a bunch of money out of pocket. As it stands, it'll be difficult enough to make it without any special stuff. +Researching parts is at least the second hardest part of making a CoreXY--or any 3D printer for that matter--but very, very important. First, you're going to choose what kind of specs you want. Speed, size, enclosure, multi-filament system, etc. If you plan to make some sort of cool gimmick, like an enclosure or a toolhead changer, be prepared to spend a bunch of money out of pocket. As it stands, it'll be difficult enough to make it without any special stuff. -Also note that speed and size are mortal enemies; it's quite difficult to put both in the same machine. For a budget build with the $350 provided by Hack Club, I'd only do one. If you want fast, like 350mm/s or above, I'd recommend a 180x180mm plate. For incredibly fast printing, i.e. 500mm/s or even more, even as small as a 120mm printer would be beneficial. If you couldn't care less about speed but want it to be big enough to make, say, 7" drones, you could make it 400x400mm build size (or bigger!) and only print at around ~100mm/s. +For the sake of the guide, I'm going to be assuming you're using Klipper firmware and that you already own an external host (i.e. Raspberry Pi.) If you aren't using Klipper, note that you can't use the Klicky probe as mentioned later in the guide. If you want to use Klipper but don't have a host, I'd recommend the Raspberry Pi Zero 2 W for running a single printer. If you're going to run more printers on it later, go with the Pi 4 or 5. -The main reason that speed and size are so exclusivev is stability. If you have a printhead moving the length of a 500x500mm build plate in one second, multiple times in a row, it's going to rattle like crazy. To counter this, you'd need wider aluminum extrusions, making it even more expensive than it was already. A smaller printer has less length for the extrusions to twist or bend, and is thus more stable. For future reference, when I say stablity I don't mean how much the printer shakes or rattles, but how well it keeps its shape. +Also, note that speed and size are mortal enemies; it's quite difficult to put both in the same machine. For a budget build with the $350 provided by Hack Club, I'd only do one. If you want fast, like 350mm/s or above, I'd recommend a 180x180mm plate. For incredibly fast printing, i.e. 500mm/s or even more, even as small as a 120mm printer would be beneficial. If you couldn't care less about speed but want it to be big enough to make, say, 7" drones, you could make it 400x400mm build size (or bigger!) and only print at around ~100mm/s. -AliExpress is your friend when researching parts, (sorry Indian people!) and it has plenty of good products. Just make sure (and this is good advice for any project) to always sort by orders. You do _not_ want to be the first--or seventh--order on a product. And if it's possible, always try to order from a well-aged seller, ideally pre-Covid. The best seller for hotends and extruders is [Triangle-Lab](https://trianglelab.net), (sometimes called trianglelabs) and [here's](https://trianglelab.aliexpress.com/store/1101010407) their official store on AliExpress, open since 2015. As far as I know, there aren't any name-brand aluminum extrusions or linear rails, but again just try to find well-rated ones (be sure to check for fake reviews) with many orders. I'd advise against Dollar Express, as the number of orders can be very misleading. +The main reason that speed and size are so exclusive is stability. If you have a printhead moving the length of a 500x500mm build plate in one second, multiple times in a row, it's going to rattle like crazy. To counter this, you'd need wider aluminum extrusions, making it even more expensive than it was already. A smaller printer has less length for the extrusions to twist or bend and is thus more stable. For future reference, when I say stability I don't mean how much the printer shakes or rattles, but how well it keeps its shape. -One strategy you might try is buying broken 3D printers off of eBay. People tend to sell them cheap, and you can get an easy heated bed, aluminum extrusions, and more out of it. However if you choose to do it like this, you'll have to center your design around the parts you'll be getting from the seller. For example, the aluminum extrusions in your design will have to be the ones that the broken 3D printer uses. Sometimes this can be a problem, especially since most 3D printers for parts out there are bedslingers with all sorts of different lengths. +AliExpress is your friend when researching parts, (sorry Indian people!) and it has plenty of good products. Just make sure (and this is good advice for any project) to always sort by order count. You do _not_ want to be the first--or seventh--order of a product. And if it's possible, always try to order from a well-aged seller, ideally pre-Covid. The best seller for hotends and extruders is [Triangle-Lab](https://trianglelab.net), (sometimes called trianglelabs) and [here's](https://trianglelab.aliexpress.com/store/1101010407) their official store on AliExpress, open since 2015. As far as I know, there aren't any name-brand aluminum extrusions or linear rails, but again just try to find well-rated ones (be sure to check for fake reviews) with many orders. I'd advise against Dollar Express, as the number of orders can be very misleading. + +One strategy you might try is buying broken 3D printers off of eBay. People tend to sell them cheap, and you can get an easy heated bed, aluminum extrusions, and more out of it. However, if you choose to do it like this, you'll have to center your design around the parts you'll be getting from the seller. For example, the aluminum extrusions in your design will have to be the ones that the broken 3D printer uses. Sometimes this can be a problem, especially since most 3D printers for parts out there are bedslingers with all sorts of different lengths. Here's a very simple BOM and explanation to get you on your feet: (Please take this with a giant grain of salt. You'll need to do massive amounts of research for what you have in mind, and I'm 99% sure you won't be using every part I recommend.) @@ -69,7 +71,7 @@ Here's a very simple BOM and explanation to get you on your feet: | Wire routing | $5 | Printhead wires can get quite unruly. Routing can be just zip ties or a dedicated chain like Vorons have. | | **Total** | **$93-123** | -I personally would go with the Klicky probe. The way it works is it's a tiny microswitch with a dock at the back of the printer. The printhead moves back to the dock and picks it up with magnets, which also convey the voltage + and - (for an LED) and signal for button presses. The microswitch sticks out from the printhead, and acts as a Z-probe and as the Z-limit switch. The printhead then docks the Klicky, so that the nozzle isn't blocked anymore, and goes on to printing. It's only 7 bucks as compared to the BLTouch's $30-$40 price mark, making it great for its price. +I personally would go with the Klicky probe. The way it works is it's a tiny micro switch with a dock at the back of the printer. The printhead moves back to the dock and picks it up with magnets, which also convey the voltage + and - (for an LED) and signal for button presses. The micro switch sticks out from the printhead and acts as a Z-probe and as the Z-limit switch. The printhead then docks the Klicky, so that the nozzle isn't blocked anymore, and goes on to printing. It's only 7 bucks as compared to the BLTouch's $30-$40 price mark, making it great for its price. The reason a lot of people choose BLTouch instead is that it's plug and play with most mainboards, unlike the Klicky which needs some fancy wiring, and instead of having to dock it, you just fasten it to the printhead and it automatically pushes out a little probing stick every time you need to probe. It's very very handy, but beware: knockoffs abound. If you get a BLTouch, you _must_ get one that says "BLTouch" on the side. Not "3DTouch," "BLTouch"!! People have done tests, and 3DTouches are the least accurate, most worthless probes you can buy. The list of authorized sellers and legitimate BLTouches is at their website, [https://antclabs.com/](https://antclabs.com/). @@ -94,7 +96,7 @@ The ADXL345 is an accelerometer, which just means it tells you how fast you're g Printhead lights, while totally optional, can help illuminate your prints, whether for timelapses or simply for checking on prints. Vorons use these, in the form of small PCBs mounted at an angle to the hotend. Alternatively, you can simply wire small LED bulbs and add resistors so that you can wire them directly to your 24V output. ### Gantry and Kinematics -Keep in mind, the gantry can be very different across printers. The Voron 2.4, for example, uses a gantry with an open front, and an intriguing belt path. The way you route your belts is totally up to you! This BOM goes over the parts I used in mine, which follows [this](https://reprap.org/forum/thumbcache/8ae/885/da4/f6b/336/1c4/d2c/8c7/34d/c71/d5_800x400.png) diagram more or less. +Keep in mind that the gantry can be very different across printers. The Voron 2.4, for example, uses a gantry with an open front, and an intriguing belt path. The way you route your belts is totally up to you! This BOM goes over the parts I used in mine, which follows [this](https://reprap.org/forum/thumbcache/8ae/885/da4/f6b/336/1c4/d2c/8c7/34d/c71/d5_800x400.png) diagram more or less. | **Part** | **Cost** | **Notes** | |------------------------|---------------|-------------------------------------------------------| @@ -135,7 +137,7 @@ If you're doing a three motor three screw setup, it might look like this: | Flexible couplers | $7 | 5mm to 8mm diameter, for connecting motors to screws | | **Total** | **~$80** | | -Z-motors for a triple Z motor setup don't need to be very powerful, as all three are helping. Keep in mind that you may need either a stepper motor splitter or a mainboard with three synced Z-axis motor outputs, which many do not offer. +Z-motors for a triple Z motor setup don't need to be very powerful, as all three are helping. As long as they have enough holding torque to prevent the bed from falling and enough moving torque to lift it up at a decent pace, you should be good! Keep in mind that you may need either a stepper motor splitter or a mainboard with three synced Z-axis motor outputs, which many do not offer. Lead screws should always be 8mm in diameter. A smaller pitch means more precise but slower, and 4mm is a great middle ground. I used 2mm pitch (mistake) and it takes forever to move the bed! @@ -176,7 +178,9 @@ The very best PSU brand is Mean Well. They make the most high-quality ones out t The most popular mainboard out there is the BigTreeTech SKR Mini E3 V3. It's super powerful, small, and has a ton of features. It's fast and has dual Z motor outputs, for only $30. -I didn't do much research on heated beds, as I just bought mine from Kieran in Hack Club. From what I've seen, however, there are two types: the metal types you see on commercial printers and silicone bed plates. Silicone ones are orange and look flexible, while the metal ones have a black underside. I don't know much else about these, unfortunately. The build plate is relatively easy. The tried-and-true type is textured PEI coated, with a sort of grainy appearance. If you don't like that graininess, you might check out glass or dual-sided textured PEI+PEO. The one I bought had PEI on one side and PEO on the other. PEO is a smooth, shiny coating usually engraved with reflective designs that imprint onto your parts. +I didn't do much research on heated beds, as I just bought mine from Kieran in Hack Club. From what I've seen, however, there are two types: the black PCB-looking ones you see on commercial printers and silicone bed plates. Silicone ones are orange and look flexible, while the black ones are hard and have visible traces engraved in them. I don't know much else about these, unfortunately, except that both are attached to an aluminum plate that is attached with screws to its holder. + +The build plate is relatively easy. The tried-and-true type is textured PEI-coated, with a sort of grainy appearance. If you don't like that graininess, you might check out glass or dual-sided textured PEI+PEO. The one I bought had textured PEI on one side and PEO on the other. PEO is a smooth, shiny coating usually engraved with reflective designs that imprint onto your parts. For more reading about which build plate is best for you, check [this](https://all3dp.com/2/3d-printer-bed-how-to-choose-the-right-build-plate/) out. Never solder AC voltage. It's dangerous and unreliable. Instead, use spade disconnect connectors, which grip tightly onto the pins on the back of the power inlet. Before buying, make sure that the pins on your inlet will fit in the connectors. Similarly, spade terminals look like forks and grab onto the screw terminals on your PSU. Again, make sure these fit before buying. @@ -252,4 +256,24 @@ Designing an entire 3D printer can be extremely difficult, especially for a begi ## Step Three: Assembly Assembly is by far the easiest part of the 3D printer, but it's also when you'll find anything wrong with your design. You'll need to make a lot of iterations and will feel discouraged. Just know that you _can_ do it. Prepare yourself for making major adjustments and changing things you wish you wouldn't have to. +One note: when assembling the heated bed holder, try to get it as level as you possibly can. Klicky probes and BLTouches exist to account for issues in the bed being unlevel, but you really don't want a two-millimeter difference between the front and the back. Having such a large difference can result in prints that, well, are 2mm higher on one end than they should be. Obviously, with a 3D printed holder, it may be hard to get under 1mm of difference, but it's worth a shot. + +Speaking of, it might be worth CNC milling an aluminum bed holder. It'll be infinitely more precise than a 3D-printed one, although it will definitely be much more expensive. If you have any leftover budget (lucky) you might want to consider it. Alternatively, you could try using MDF (medium-density fiberboard) sealed with polyester resin. + However, this is also the most rewarding part. Printing out the pieces, and putting them all together, it's like seeing your imagination truly turn into reality. You'll have a printer that you know inside and out, that you know every nook and cranny of. You'll have your own machine, your own design, sitting in front of you, just asking to be turned on. And it'll be fantastic. + +
+
+ +### But wait, there's more! +## Bonus Step: Firmware +Ah, firmware. It's what makes the machine run! Installing it is a breeze, especially by using KIAUH (the Klipper Installation And Update Helper) on a Raspberry Pi with Klipper. Here's an article about how Klipper works: [https://all3dp.com/2/klipper-firmware-3d-printer/](https://all3dp.com/2/klipper-firmware-3d-printer/) + +[Here's](https://www.klipper3d.org/Installation.html) the official guide on installing the firmware, both on the printer and on the Pi. I'd 100% recommend installing via KIAUH. It's quite straightforward and easy, even for those with zero (or less!) software knowledge. + +After you're done installing Klipper, you can start tuning your newly powered printer! [Here's](https://ellis3dp.com/Print-Tuning-Guide/) the best guide in the world. It goes through absolutely _everything_! It's always so fun to get stuff up and running... to see your baby take its first steps. + +## The End +Wow! 5673 words and a bucketful of blood, sweat, and tears later, you have a 3D printer. Not only a 3D printer, _your_ 3D printer! Sit back and relax. The struggle is over (for now...) and now you can have fun! It's been a wild journey, and if you're like me, it hasn't been easy. But you made it! Congratulations. Now go watch some Zach Freedman. I know you want to. + +~ anicetus From 347bf8e83a80c457a0bf89b4bf80690983c9e6d6 Mon Sep 17 00:00:00 2001 From: Anicetus Date: Thu, 5 Jun 2025 17:37:25 -0500 Subject: [PATCH 11/94] Update corexy.md --- app/views/guides/corexy.md | 46 +++++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/app/views/guides/corexy.md b/app/views/guides/corexy.md index 139a78d..585a154 100644 --- a/app/views/guides/corexy.md +++ b/app/views/guides/corexy.md @@ -25,7 +25,7 @@ A good example of a CoreXY printer is the Bambu Lab X1 series. They look like bi But back to CoreXY's. Here are the pros and cons as compared to a bedslinger or cantilever printer: ### Pros -1. Very fast: The average CoreXY can print at least twice as fast as the average bedslinger. This is because: +1. Very fast: The average CoreXY can print at least twice as fast as the average bedslinger. This is because of the two following: 2. Printhead X/Y movement: Only the printhead moves sideways and forwards, instead of the entire bed, and 3. Dual X/Y motors: Two motors drive the printhead, collaborating and reducing strain on each. This also improves accuracy. 4. Bigger: CoreXY's can be built bigger than Cartesians while preserving the same quality (again, due to the bed not moving nearly as much) @@ -42,17 +42,17 @@ But, without further ado, here's how to design your own CoreXY. (Note: This guide will not be a step-by-step building your own 3D printer, but simply some tips and tricks I learned making [my own](https://github.com/invictus-anic3tus/anicept-vex). ## Step One: Research -Researching parts is at least the second hardest part of making a CoreXY--or any 3D printer for that matter--but very, very important. First, you're going to choose what kind of specs you want. Speed, size, enclosure, multi-filament system, etc. If you plan to make some sort of cool gimmick, like an enclosure or a toolhead changer, be prepared to spend a bunch of money out of pocket. As it stands, it'll be difficult enough to make it without any special stuff. +Researching parts is at least the second hardest part of making a CoreXY--or any 3D printer for that matter--but very, very important. It took me literally ages to get the _fine_ BOM I have now, but it's worth it to get the most out of your printer. First, I'd recommend you choose what kind of specs you want. Speed, size, enclosure, multi-filament system, etc. If you plan to make some sort of cool gimmick, like an enclosure or a toolhead changer, be prepared to spend a bunch of money out of pocket. As it stands, it'll be difficult enough to make it without any special stuff. -For the sake of the guide, I'm going to be assuming you're using Klipper firmware and that you already own an external host (i.e. Raspberry Pi.) If you aren't using Klipper, note that you can't use the Klicky probe as mentioned later in the guide. If you want to use Klipper but don't have a host, I'd recommend the Raspberry Pi Zero 2 W for running a single printer. If you're going to run more printers on it later, go with the Pi 4 or 5. +For the sake of the guide, I'm going to be assuming you're using Klipper firmware like me, and that you already own an external host (i.e. Raspberry Pi.) If you aren't using Klipper, note that you can't use the Klicky probe as mentioned later in the guide. If you want to use Klipper but don't have a host, I'd recommend the Raspberry Pi Zero 2 W for running a single printer. If you're going to run more printers on it later, go with the Pi 4 or 5. However, I'm currently using a rpi 3b for both, and it seems to be ok! Also, note that speed and size are mortal enemies; it's quite difficult to put both in the same machine. For a budget build with the $350 provided by Hack Club, I'd only do one. If you want fast, like 350mm/s or above, I'd recommend a 180x180mm plate. For incredibly fast printing, i.e. 500mm/s or even more, even as small as a 120mm printer would be beneficial. If you couldn't care less about speed but want it to be big enough to make, say, 7" drones, you could make it 400x400mm build size (or bigger!) and only print at around ~100mm/s. -The main reason that speed and size are so exclusive is stability. If you have a printhead moving the length of a 500x500mm build plate in one second, multiple times in a row, it's going to rattle like crazy. To counter this, you'd need wider aluminum extrusions, making it even more expensive than it was already. A smaller printer has less length for the extrusions to twist or bend and is thus more stable. For future reference, when I say stability I don't mean how much the printer shakes or rattles, but how well it keeps its shape. +The main reason that speed and size are so exclusive is stability. If you have a printhead moving the length of a 500x500mm build plate in one second, multiple times in a row, it's going to rattle like crazy. To counter this, you'd need wider aluminum extrusions, making it even more expensive than it was already. This is why my printer uses 3030 extrusions, instead of the most common 2020's. It makes it so much bulkier and firmer. A smaller printer has less length for the extrusions to twist or bend, and is thus more stable. For future reference, when I say stability I don't mean how much the printer shakes or rattles, but how well it keeps its shape. AliExpress is your friend when researching parts, (sorry Indian people!) and it has plenty of good products. Just make sure (and this is good advice for any project) to always sort by order count. You do _not_ want to be the first--or seventh--order of a product. And if it's possible, always try to order from a well-aged seller, ideally pre-Covid. The best seller for hotends and extruders is [Triangle-Lab](https://trianglelab.net), (sometimes called trianglelabs) and [here's](https://trianglelab.aliexpress.com/store/1101010407) their official store on AliExpress, open since 2015. As far as I know, there aren't any name-brand aluminum extrusions or linear rails, but again just try to find well-rated ones (be sure to check for fake reviews) with many orders. I'd advise against Dollar Express, as the number of orders can be very misleading. -One strategy you might try is buying broken 3D printers off of eBay. People tend to sell them cheap, and you can get an easy heated bed, aluminum extrusions, and more out of it. However, if you choose to do it like this, you'll have to center your design around the parts you'll be getting from the seller. For example, the aluminum extrusions in your design will have to be the ones that the broken 3D printer uses. Sometimes this can be a problem, especially since most 3D printers for parts out there are bedslingers with all sorts of different lengths. +One strategy you might try is buying broken 3D printers off of eBay. I know a guy who bought two ender 3's and cobbled them together to make a beautiful dual-gantry printer. People tend to sell broken printers cheap, and you can get an easy heated bed, aluminum extrusions, and more out of it. However, if you choose to do it like this, you'll have to center your design around the parts you'll be getting from the seller. For example, the aluminum extrusions in your design will have to be the ones that the broken 3D printer uses. Sometimes this can be a problem, especially since most 3D printers for parts out there are bedslingers with all sorts of different lengths. Here's a very simple BOM and explanation to get you on your feet: (Please take this with a giant grain of salt. You'll need to do massive amounts of research for what you have in mind, and I'm 99% sure you won't be using every part I recommend.) @@ -71,7 +71,7 @@ Here's a very simple BOM and explanation to get you on your feet: | Wire routing | $5 | Printhead wires can get quite unruly. Routing can be just zip ties or a dedicated chain like Vorons have. | | **Total** | **$93-123** | -I personally would go with the Klicky probe. The way it works is it's a tiny micro switch with a dock at the back of the printer. The printhead moves back to the dock and picks it up with magnets, which also convey the voltage + and - (for an LED) and signal for button presses. The micro switch sticks out from the printhead and acts as a Z-probe and as the Z-limit switch. The printhead then docks the Klicky, so that the nozzle isn't blocked anymore, and goes on to printing. It's only 7 bucks as compared to the BLTouch's $30-$40 price mark, making it great for its price. +I personally love the Klicky probe. The way it works is it's a tiny micro switch with a dock at the back of the printer. The printhead moves back to the dock and picks it up with magnets, which also convey the voltage + and - (for an LED) and signal for button presses. The micro switch sticks out from the printhead and acts as a Z-probe and as the Z-limit switch. The printhead then docks the Klicky, so that the nozzle isn't blocked anymore, and goes on to printing. It's only 7 bucks as compared to the BLTouch's $30-$40 price mark, making it pretty great for its price. I was able to mount it quite discreetly on the printhead and made a cute lil dock for it at the back of the printer. The reason a lot of people choose BLTouch instead is that it's plug and play with most mainboards, unlike the Klicky which needs some fancy wiring, and instead of having to dock it, you just fasten it to the printhead and it automatically pushes out a little probing stick every time you need to probe. It's very very handy, but beware: knockoffs abound. If you get a BLTouch, you _must_ get one that says "BLTouch" on the side. Not "3DTouch," "BLTouch"!! People have done tests, and 3DTouches are the least accurate, most worthless probes you can buy. The list of authorized sellers and legitimate BLTouches is at their website, [https://antclabs.com/](https://antclabs.com/). @@ -87,11 +87,11 @@ or (15 ÷ 0.6) ÷ 0.3 ≈ 125 This is decent, but not very fast. If this speed is OK with you, go ahead! The E3D V6 is a favorite among many, and you'll be in good company. But I know one thing for sure: it wasn't fast enough for me. -I used the TZ E3 2.0, a great (and very small!) hotend that the manufacturers claim can achieve 33mm3/s, meaning it likely gets around 30 with high-flow filament and a good extruder. Using the formula above, that equates to 375mm/s with 0.4 line width and 0.2 height. That's definitely better! The TZ E3 2.0's brother, the TZ V6 2.0, has the same specs but boasts faster cooling with a cylindrical heatsink instead of the E3's rectangular one. Additionally, the TZ line can all get up to 300°C. This is great for PLA, PETG, TPU, and others. I have no knowledge about higher-temp hotends. The ones on AliExpress have 40W heaters, so not very fast, +I used the TZ E3 2.0, a great (and very small!) hotend that the manufacturers claim can achieve 33mm3/s, meaning it likely gets around 30 with high-flow filament and a good extruder. Using the formula above, that equates to 375mm/s with 0.4 line width and 0.2 height. That's definitely better! The TZ E3 2.0's brother, the TZ V6 2.0, has the same specs but boasts faster cooling with a cylindrical heatsink instead of the E3's rectangular one. Additionally, the TZ line can all get up to 300°C. This is great for PLA, PETG, TPU, and others. I have no knowledge about higher-temp hotends. The ones on AliExpress have 40W heaters, so not very fast, but still pretty good. -Extruders, while a fundamental part of any printer, aren't quite as nitpicky. The Orbiter line is quite good, with their most recent being the Orbiter v2.5. In my opinion, v2.0 is plenty good enough for any scenario, and v1.5 should work well for slower printers. Many people feel, however, that the Orbiters are overpriced. The v2.0 I bought for my printer cost $40 and some change, which might be hard on a tight budget. In that case, you might check out the Sherpa Mini, beloved by many. To be clear, I haven't done very much research on the Sherpa line, so exactly what it can do is outside my scope. +Extruders, while a fundamental part of any printer, aren't quite as nitpicky. The Orbiter line is quite good from what I've seen, with their most recent being the Orbiter v2.5. In my opinion, v2.0 is plenty good enough for any scenario, and v1.5 should work well for slower printers. Many people feel, however, that the Orbiters are overpriced. The v2.0 I bought for my printer cost $40 and some change, which might be hard on a tight budget. In that case, you might check out the Sherpa Mini, beloved by many. To be clear, I haven't done very much research on the Sherpa line, so exactly what it can do is outside my scope. -The ADXL345 is an accelerometer, which just means it tells you how fast you're going in all three directions. It's used for input shaping, a complicated and interesting process that is explained very well [here](https://all3dp.com/2/klipper-input-shaping-simply-explained/). +The ADXL345 is an accelerometer, which just means it tells you how fast you're going in all three directions. It's used for input shaping, a complicated and interesting process that is explained very well [here](https://all3dp.com/2/klipper-input-shaping-simply-explained/). I mounted mine butt-awful on the front of the printhead, but it should work lol Printhead lights, while totally optional, can help illuminate your prints, whether for timelapses or simply for checking on prints. Vorons use these, in the form of small PCBs mounted at an angle to the hotend. Alternatively, you can simply wire small LED bulbs and add resistors so that you can wire them directly to your 24V output. @@ -118,7 +118,7 @@ The belt should be either a genuine Gates brand belt or a POWGE brand belt from Linear rails vs rods are a tough one. Rails can get very expensive, but they're very smooth and make zero noise. In hindsight, I could have done rods to make my printer more budget, but rails are realllly satisfying. If you go rods, use 8mm diameter and LM8UU bearings. They're what everybody uses. If you're over budget, you can try buying or 3D printing bushings. Bushings are like bearings, but instead of little balls inside them, they simply have minimal surface area on the rod. They'll wear down faster but are good if you're just substituting until you can afford actual bearings. -Motors are a very hard thing to research, namely for a faster printer. Everybody uses Nema17s, and will thus be the easiest to incorporate into your design. I wish I'd had [this link](https://reprap.org/wiki/NEMA_17_Stepper_motor) when I was researching my motors. It lays out a select few with good specs. If you're printing slower (100-200mm/s) you hardly need to research them at all; any inductance of 4mH or under is fine, and you should have about 44+ Ncm holding torque. +Motors are a very hard thing to research, namely for a faster printer. I literally researched for hours and hours, trying to find the perfect ones. I finally found ones I liked, bought them, and checked out the lil specs card it came with. Alas! The AliExpress seller promised 2.7mH inductance when they were really 3mH inductance. Long story short, that means I can't print as fast as I would've liked. So I guess that's a mini lesson: never just trust the aliexpress seller. Anyways, everybody uses Nema17s, and will thus be the easiest to incorporate into your design. I wish I'd had [this link](https://reprap.org/wiki/NEMA_17_Stepper_motor) when I was researching my motors. It lays out a select few with good specs. If you're printing slower (100-200mm/s) you hardly need to research them at all; any inductance of 4mH or under is fine, and you should have about 44+ Ncm holding torque. For a 300mm/s printer, an inductance of 2-3mH is better, and a holding torque of 44 or more is still good. Then we get into high-speed CoreXY's. A 400-500mm/s printer should have 55 or more holding torque and max 2.5mH inductance. For incredible speeds like 600mm/s or more, you'll need 60-ish holding torque and very low inductance, like less than 1.5mH. It's in the high-speed world that you'll want higher-voltage stepper motors. Especially when going high accelerations, like 40k or more, 48V or even 60V can be huge. For this, you'll probably need another PSU to power the 60V, as well as a mainboard that has a dedicated motor input for those high voltages. However, it is still possible to run it at 24V. [This](https://www.youtube.com/watch?v=cjXhLow9jRg) video is worth a watch. @@ -127,6 +127,7 @@ TL;DR: Printing over ~450mm/s is likely to set you ~$120 back in budget. Last thing: if opting for high speeds that require a lot of torque, you may want to do what's called "shearing" your motors. This just means placing a bearing at the end of the shaft, after the pulley, and connecting it well to the motor. The reason for this is that, with the high tension of the belts, the motor shaft may bend and damage the inside of the motor. Putting a bearing at the end and mounting it ensures that the shaft remains upright. When I tried this, I had a lot of issues with the motor not turning properly, so I simply removed it. So far, I've been having success without shearing motors, but it's worth a try. ### Z-Axis + If you're doing a three motor three screw setup, it might look like this: | **Part** | **Cost** | **Notes** | |---------------------|----------|---------------------------------------------------------------| @@ -174,7 +175,7 @@ If both come out at the same price, I'd go with three motors and three screws. F | 12AWG (~3.5mm2) wire | $5 | Two meters is a good safe number | | **Total** | **~$155-195** | | -The very best PSU brand is Mean Well. They make the most high-quality ones out there. Never ever buy a knockoff or a sketchy-looking PSU! You could kill yourself. I am not joking. +The very best PSU brand is Mean Well. They make the most high-quality ones out there. Never buy a knockoff or a sketchy-looking PSU! You could kill yourself. I am not joking. I got mine from DigiKey, mostly since I had high seas (hack club's 2024 fall event) credits and didn't want a sketchy one from AliExpress. The most popular mainboard out there is the BigTreeTech SKR Mini E3 V3. It's super powerful, small, and has a ton of features. It's fast and has dual Z motor outputs, for only $30. @@ -218,7 +219,7 @@ Well, that's the research! If you have any questions or need help, feel free to Alright! Research is (hopefully) done! Give yourself a pat on the back; you've deserved it. Research is definitely one of the hardest parts of making a 3D printer--in fact it might be the hardest if the design is easy for you--so you should feel relieved. -But it's no secret that design can be very difficult. In my opinion, the printhead and the belt routing are the two hardest parts of any 3D printer design, because they're so intricate and need to be... well, perfect. That being said, here's the order I'd recommend for designing your printer and why: +But it's no secret that design can be very difficult. In my opinion, the printhead and the belt routing are the two hardest parts of any 3D printer design, because they're so intricate and need to be... well, perfect. They both drove me nearly insane, even though I've been working with CAD for a long time now. That being said, here's the order I'd recommend for designing your printer and why: 1. Printhead * So that when designing the gantry, you can leave room for the printhead to move beyond the bed @@ -231,27 +232,30 @@ But it's no secret that design can be very difficult. In my opinion, the printhe * You never want to make the entire frame first and mount all of the electronics, only to begin designing the gantry and find out that your idler mounts won't fit * This also includes a toolchanger system if you make that * Always compare your gantry to standard aluminum extrusion lengths (unless you're cutting them yourself) and make it bigger if they don't make extrusions in the size you'd like - * There are two types of gantry homing: switch homing and [sensorless homing](https://all3dp.com/2/klipper-sensorless-homing-simply-explained/). This guide assumes sensorless homing. + * There are two types of gantry homing: switch homing and [sensorless homing](https://all3dp.com/2/klipper-sensorless-homing-simply-explained/). This guide assumes sensorless homing. + * I failed to do the gantry 2nd, instead going to straight to literally everything else. I made the frame too big for the gantry, and I had trouble fitting everything into the space I had allotted for it. This was really dumb, and i hope somebody can learn from it! I certainly did. + * It was when i was designing this that the bad days started. The gantry was probably the hardest thing I've ever made. The idler mounts, the motor mounts, making everything just _perfect_ was infuriating. 3. Z-axis - * Make your bed holder and belted/tri-motor system before you make the frame, so that you don't make the frame too big or too small for it + * Make your bed holder and belted/tri-motor system before you make the frame, so that you don't make the frame too big or too small for it + * This was where I messed up, big time. I decided that a single motor and a single lead screw would be enough to move a 235x235mm bed. Wrong. Thankfully, I was corrected before following all the way through with it. But it was heartbreaking to have to redesign the entire Z-axis, particularly since it was actually _done_! It was an actual nightmare, and I had no idea what to do. Eventually, I settled on a dual-screw belted system, not ideal but the best I could do. I had already designed the electronics, so i didn't leave any room for myself to adjust the z-axis. 4. Electronics + frame * Now that the important parts are done, you can mount your PSU and mainboard. Make sure that wires have plenty of room to move around! This was a major mistake I made 5. Everything else * An MMU, Raspberry Pi mount, etc. -Unfortunately, there's not a lot else I can say about design. Everybody's printer will be different, and there isn't a standardized gantry type or printhead model. However, this is where you can get clever and make interesting or useful designs. For example, I mounted my PSU and mainboard in a locking mechanism that insured that there wasn't any sag while covering the PSU ports and protecting the mainboard at the same time. +Unfortunately, there's not a lot else I can say technically about design. Everybody's printer will be different, and there isn't a standardized gantry type or printhead model. However, this is where you can get clever and make interesting or useful designs. For example, I mounted my PSU and mainboard in a locking mechanism that insured that there wasn't any sag while covering the PSU ports and protecting the mainboard at the same time. I do have a few tips, however. First, always make sure your belt routing is straight. The line from the motor pulleys to the idlers on the gantry and from the gantry idlers to the printhead (note: the routing from the motor pulleys to the stationary idlers doesn't need to be straight) should be perfectly even, at the risk of having uneven belt tension when moving the gantry and printhead. Besides that, it looks nice and even. Speaking of the idlers, always give them good solid mounts, preferably printed out of PETG. They'll go under a lot of stress, and you really don't want the mount to snap in the middle of a print. -This should be obvious, but make sure that your intricate parts can actually be taken apart. Midway through my printhead design, I realized that it was physically impossible to assemble or disassemble it for the simple yet elusive reason that the screws you need to access are only accessible if the printhead is disassembled. This meant that when assembling and when everything was in place, the screws were unreachable and when disassembling they couldn't be seen. This took about a day and a half to fix, a day and a half when I could have been finishing the design. +This should be obvious, but make sure that your intricate parts can actually be taken apart. Midway through my printhead design, I realized that it was physically impossible to assemble or disassemble it for the simple yet elusive reason that the screws you need to access are only accessible if the printhead is disassembled. This meant that when assembling and when everything was in place, the screws were unreachable and when disassembling they couldn't be seen. This took about a day and a half to fix, a day and a half when I could have been finishing the design. Looking back it's actually quite funny lool When using spade terminals for your PSU and when using ferrules for your mainboard, ensure that they have plenty of room to stick out. The spade terminals I got stuck out 18mm from the PSU, which I made no account for. Same thing for the power inlet disconnect connectors. One very important part of the design is the printhead part cooling ducts. There are lots of great guides online for this, and it really is a fine art. It takes forever to get right, and the tiniest change could ruin (or save!) it. -Always make tolerances for parts that touch 3D printed parts. I'd print a 3D printer tolerance test like [this](https://www.printables.com/model/116911-clearance-tolerance-test) to see how close together you can print parts without them fusing. Your lowest tolerance you get with the test print should be the spacing between a 3D printed part and a non-3D printed part, and the spacing between two parts should be double it. +Always make tolerances for parts that touch 3D-printed parts. I'd print a 3D printer tolerance test like [this](https://www.printables.com/model/116911-clearance-tolerance-test) to see how close together you can print parts without them fusing. Your lowest tolerance you get with the test print should be the spacing between a 3D printed part and a non-3D printed part, and the spacing between two parts should be double it. -Designing an entire 3D printer can be extremely difficult, especially for a beginner at CAD. If you don't quite know your way around whichever CAD program you use, I'd recommend going through tutorials so that you're very familiar with functions like lofts, chamfers, and offsetting faces. +Designing an entire 3D printer can be extremely difficult, especially for a beginner at CAD. If you don't quite know your way around whichever CAD program you use, I'd recommend going through tutorials so that you're very familiar with functions like lofts, chamfers, and offsetting faces. I definitely learned a lot just by doing, however, and researching just whenever I needed to. ## Step Three: Assembly Assembly is by far the easiest part of the 3D printer, but it's also when you'll find anything wrong with your design. You'll need to make a lot of iterations and will feel discouraged. Just know that you _can_ do it. Prepare yourself for making major adjustments and changing things you wish you wouldn't have to. @@ -262,18 +266,20 @@ Speaking of, it might be worth CNC milling an aluminum bed holder. It'll be infi However, this is also the most rewarding part. Printing out the pieces, and putting them all together, it's like seeing your imagination truly turn into reality. You'll have a printer that you know inside and out, that you know every nook and cranny of. You'll have your own machine, your own design, sitting in front of you, just asking to be turned on. And it'll be fantastic. + _please don't fry a mainboard..._ +

### But wait, there's more! ## Bonus Step: Firmware -Ah, firmware. It's what makes the machine run! Installing it is a breeze, especially by using KIAUH (the Klipper Installation And Update Helper) on a Raspberry Pi with Klipper. Here's an article about how Klipper works: [https://all3dp.com/2/klipper-firmware-3d-printer/](https://all3dp.com/2/klipper-firmware-3d-printer/) +Ah, firmware. It's what makes the machine run! From my experience, installing it is a breeze, especially by using KIAUH (the Klipper Installation And Update Helper) on a Raspberry Pi with Klipper. Here's an article about how Klipper works: [https://all3dp.com/2/klipper-firmware-3d-printer/](https://all3dp.com/2/klipper-firmware-3d-printer/) [Here's](https://www.klipper3d.org/Installation.html) the official guide on installing the firmware, both on the printer and on the Pi. I'd 100% recommend installing via KIAUH. It's quite straightforward and easy, even for those with zero (or less!) software knowledge. After you're done installing Klipper, you can start tuning your newly powered printer! [Here's](https://ellis3dp.com/Print-Tuning-Guide/) the best guide in the world. It goes through absolutely _everything_! It's always so fun to get stuff up and running... to see your baby take its first steps. ## The End -Wow! 5673 words and a bucketful of blood, sweat, and tears later, you have a 3D printer. Not only a 3D printer, _your_ 3D printer! Sit back and relax. The struggle is over (for now...) and now you can have fun! It's been a wild journey, and if you're like me, it hasn't been easy. But you made it! Congratulations. Now go watch some Zach Freedman. I know you want to. +Wow! 6435 words, 30247 characters, and a bucketful of blood, sweat, and tears later, you have a 3D printer. Not only a 3D printer, _your_ 3D printer! Sit back and relax. The struggle is over (for now...) and now you can have fun! It's been a wild journey, and if you're like me, it hasn't been easy. But you made it! Congratulations. Now go watch some Zach Freedman. I know you want to. ~ anicetus From dd331a8ea1ffa014e0ab1a26a1c1364184ba8679 Mon Sep 17 00:00:00 2001 From: Anicetus Date: Fri, 6 Jun 2025 11:17:48 -0500 Subject: [PATCH 12/94] Update corexy.md --- app/views/guides/corexy.md | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/app/views/guides/corexy.md b/app/views/guides/corexy.md index 585a154..635b213 100644 --- a/app/views/guides/corexy.md +++ b/app/views/guides/corexy.md @@ -9,12 +9,12 @@ But first, here's an overview about the differences between Cartesian and CoreXY ## Safety -3D printers are fire hazards. Their hotends heat very hot, and the beds heat hot on a large surface area. They use a lot of power. Here are _mandatory_ things you must do to ensure that you don't ruin the printer, injure yourself, or start a fire. +3D printers are fire hazards. Their hotends heat very hot, and the beds heat hot on a large surface area. They use a lot of power. Here are _mandatory_ things you must do to ensure that you don't ruin the printer, injure yourself, or start a fire. You may balk at these requirements, and how strict and unnecessary they may be. But as the saying goes, "better safe than sorry." 1. Always buy your power supply from a trusted brand. Never ever buy from a no-name or knockoff brand. Mean Well is the best brand on the market and are widely used for their safety and quality. 2. Never solder AC wire connections. Use spade disconnect connectors for your power inlet and spade terminals for your PSU. More about this later. -3. Never tin (add a shell of solder around) your wires. Tinning wires is illegal in California and some of Europe because it starts fires. Due to a process called creep, the solder deforms and wires can come loose and start electrical fires. Instead, use ferrules or even just twist the wire before putting it in. +3. Never tin (add a shell of solder around) your wires. Tinning wires is **_illegal_** in all of the UK, most of Europe, Australia, New Zealand, and South Africa because it starts fires. Due to a process called creep, the solder deforms and wires can come loose and start electrical fires. Instead, you must use ferrules or even just twist the wire before putting it in. 4. Never modify the PSU. There are capacitors inside that carry enough voltage to kill you. This is not a joke. Never open it unless you know exactly where not to touch it and are wearing electrical gloves. -5. Quadruple-check all wire connections and make sure everything is tight. +5. Quadruple-check all wire connections and make sure everything is tight, and re-tighten every day for the next two weeks of operation. 6. Never leave the 3D printer unattended for long periods of time. The truth is, this is a DIY 3D printer cobbled together by (likely) an amateur. Things can go wrong that you would never expect, and if you don't catch it, you could pay severely. 7. Use the right size wires. If you use a gauge of wire too low to power your PSU or mainboard, it could start a fire. 12 to 16 AWG (3mm2 to 1.5mm2) is great for your 3D printer. Anything smaller than 18 AWG (~0.8mm2) is likely not to work. @@ -42,7 +42,7 @@ But, without further ado, here's how to design your own CoreXY. (Note: This guide will not be a step-by-step building your own 3D printer, but simply some tips and tricks I learned making [my own](https://github.com/invictus-anic3tus/anicept-vex). ## Step One: Research -Researching parts is at least the second hardest part of making a CoreXY--or any 3D printer for that matter--but very, very important. It took me literally ages to get the _fine_ BOM I have now, but it's worth it to get the most out of your printer. First, I'd recommend you choose what kind of specs you want. Speed, size, enclosure, multi-filament system, etc. If you plan to make some sort of cool gimmick, like an enclosure or a toolhead changer, be prepared to spend a bunch of money out of pocket. As it stands, it'll be difficult enough to make it without any special stuff. +Researching parts is at least the second hardest part of making a CoreXY--or any 3D printer for that matter--but very, very important. It took me literally ages to get the _fine_ BOM I have now--at some point I swear I had a hundred AliExpress tabs open--but it's worth it to get the most out of your printer. First, I'd recommend you choose what kind of specs you want. Speed, size, enclosure, multi-filament system, etc. If you plan to make some sort of cool gimmick, like an enclosure or a toolhead changer, be prepared to spend a bunch of money out of pocket. As it stands, it'll be difficult enough to make it without any special stuff. For the sake of the guide, I'm going to be assuming you're using Klipper firmware like me, and that you already own an external host (i.e. Raspberry Pi.) If you aren't using Klipper, note that you can't use the Klicky probe as mentioned later in the guide. If you want to use Klipper but don't have a host, I'd recommend the Raspberry Pi Zero 2 W for running a single printer. If you're going to run more printers on it later, go with the Pi 4 or 5. However, I'm currently using a rpi 3b for both, and it seems to be ok! @@ -73,9 +73,9 @@ Here's a very simple BOM and explanation to get you on your feet: I personally love the Klicky probe. The way it works is it's a tiny micro switch with a dock at the back of the printer. The printhead moves back to the dock and picks it up with magnets, which also convey the voltage + and - (for an LED) and signal for button presses. The micro switch sticks out from the printhead and acts as a Z-probe and as the Z-limit switch. The printhead then docks the Klicky, so that the nozzle isn't blocked anymore, and goes on to printing. It's only 7 bucks as compared to the BLTouch's $30-$40 price mark, making it pretty great for its price. I was able to mount it quite discreetly on the printhead and made a cute lil dock for it at the back of the printer. -The reason a lot of people choose BLTouch instead is that it's plug and play with most mainboards, unlike the Klicky which needs some fancy wiring, and instead of having to dock it, you just fasten it to the printhead and it automatically pushes out a little probing stick every time you need to probe. It's very very handy, but beware: knockoffs abound. If you get a BLTouch, you _must_ get one that says "BLTouch" on the side. Not "3DTouch," "BLTouch"!! People have done tests, and 3DTouches are the least accurate, most worthless probes you can buy. The list of authorized sellers and legitimate BLTouches is at their website, [https://antclabs.com/](https://antclabs.com/). +The reason a lot of people choose BLTouch instead is that it's plug and play with most mainboards, unlike the Klicky which needs some fancy wiring, and instead of having to dock it, you just fasten it to the printhead and it automatically pushes out a little probing stick every time you need to probe. It's very very handy, but beware: knockoffs abound. If you get a BLTouch, you _must_ get one that says "BLTouch" on the side. Not "3DTouch," "BLTouch"!! People have done tests, and 3DTouches are the least accurate, most worthless probes you can buy. The list of authorized sellers and legitimate BLTouches is at their website, [https://antclabs.com/](https://antclabs.com/). I almost fell for a 3DTouch, and it cost me a lot of design work when I realized they were so bad. -In my own CoreXY design, I failed to put two 5015 blower fans for the part cooling. This rookie mistake is costing me now, due to a lack of cooling with dual 4010 blowers. Dual 5015s are more than enough for any printer. +In my own CoreXY design, I failed to put two 5015 blower fans for the part cooling. This rookie mistake is costing me now, due to a lack of cooling with dual 4010 blowers. I'll still be able to print PETG well, but PLA may suffer. Dual 5015s are more than enough for any printer. The hotend is a crucial component, and you should dedicate much time to researching one. One of the most common is an E3D V6 clone (the original is too expensive and the clones are just as good), which is capable of a flow rate of up to 15mm3/s. This equates to approximately 180mm/s printing speed with 0.4mm width and 0.2mm layer height, or 120mm/s with 0.6mm line width and 0.2mm layer height. ``` @@ -89,6 +89,8 @@ But I know one thing for sure: it wasn't fast enough for me. I used the TZ E3 2.0, a great (and very small!) hotend that the manufacturers claim can achieve 33mm3/s, meaning it likely gets around 30 with high-flow filament and a good extruder. Using the formula above, that equates to 375mm/s with 0.4 line width and 0.2 height. That's definitely better! The TZ E3 2.0's brother, the TZ V6 2.0, has the same specs but boasts faster cooling with a cylindrical heatsink instead of the E3's rectangular one. Additionally, the TZ line can all get up to 300°C. This is great for PLA, PETG, TPU, and others. I have no knowledge about higher-temp hotends. The ones on AliExpress have 40W heaters, so not very fast, but still pretty good. +Originally, I was actually planning to use a $90 Phaetus Rapido hotend, rated up to 75mm3/s. This was really really overkill, and I'm glad I didn't follow through with it. However, my next choice might have been worse. I looked around and found the Phaetus Dragonfly BMS, which ChatGPT (💀) said was a high-flow hotend capable of 30mm3/s. False. Here's a tip for you: never trust ChatGPT alone. The Dragonfly only got like 15mm3/s. But by this point, I'd already centered the entire design around it! I had to redesign a _ton_ of the printhead to compensate for trusting ChatGPT. + Extruders, while a fundamental part of any printer, aren't quite as nitpicky. The Orbiter line is quite good from what I've seen, with their most recent being the Orbiter v2.5. In my opinion, v2.0 is plenty good enough for any scenario, and v1.5 should work well for slower printers. Many people feel, however, that the Orbiters are overpriced. The v2.0 I bought for my printer cost $40 and some change, which might be hard on a tight budget. In that case, you might check out the Sherpa Mini, beloved by many. To be clear, I haven't done very much research on the Sherpa line, so exactly what it can do is outside my scope. The ADXL345 is an accelerometer, which just means it tells you how fast you're going in all three directions. It's used for input shaping, a complicated and interesting process that is explained very well [here](https://all3dp.com/2/klipper-input-shaping-simply-explained/). I mounted mine butt-awful on the front of the printhead, but it should work lol @@ -187,7 +189,7 @@ Never solder AC voltage. It's dangerous and unreliable. Instead, use spade disco Ferrules, while optional, can be very helpful. I didn't get them due to budget problems, but they are recommended by basically everybody. -But if you cannot use ferrules, _never ever tin your wires._ Over time and under the stress of the terminals on your mainboard, the solder on the tinned wires will begin to crack and deform. If this continues long enough, the solder can fully come off the wire, the wire can come out, and 24V at 20A directly from your PSU could short on the mainboard. Not only will your 3D printer be ruined, it could easily start an electrical fire. The funny thing about electrical fires is that, unlike regular fires, they can't be put out by simply extinguishing the heat. As long as the wire is shorting, it has more than enough fuel and heat to just keep burning. +But if you cannot use ferrules, _never ever tin your wires._ Over time and under the stress of the terminals on your mainboard, the solder on the tinned wires will begin to crack and deform. If this continues long enough, the solder can fully come off the wire, the wire can come out, and 24V at 20A directly from your PSU could short on the mainboard. Not only will your 3D printer be ruined, it could easily start an electrical fire. The funny thing about electrical fires is that, unlike regular fires, they can't be put out by simply extinguishing the heat. As long as the wire is shorting, it has more than enough fuel and can generate plenty of heat to just keep burning. The heated bed I got even came with pre-tinned wires. Needless to say, I promptly chopped them off. [This](https://www.reddit.com/r/ender3/comments/nbdd99/friendly_reminder_check_your_3d_printer_for/) is a great post about tinned wires on a 3D printer (reddit warning lol) @@ -243,7 +245,7 @@ But it's no secret that design can be very difficult. In my opinion, the printhe 5. Everything else * An MMU, Raspberry Pi mount, etc. -Unfortunately, there's not a lot else I can say technically about design. Everybody's printer will be different, and there isn't a standardized gantry type or printhead model. However, this is where you can get clever and make interesting or useful designs. For example, I mounted my PSU and mainboard in a locking mechanism that insured that there wasn't any sag while covering the PSU ports and protecting the mainboard at the same time. +Unfortunately, there's not a lot else I can say technically about design. (Edit: proceeds to write 8 paragraphs about design.) Everybody's printer will be different, and there isn't a standardized gantry type or printhead model. However, this is where you can get clever and make interesting or useful designs. For example, I mounted my PSU and mainboard in a locking mechanism that insured that there wasn't any sag while covering the PSU ports and protecting the mainboard at the same time. I do have a few tips, however. First, always make sure your belt routing is straight. The line from the motor pulleys to the idlers on the gantry and from the gantry idlers to the printhead (note: the routing from the motor pulleys to the stationary idlers doesn't need to be straight) should be perfectly even, at the risk of having uneven belt tension when moving the gantry and printhead. Besides that, it looks nice and even. Speaking of the idlers, always give them good solid mounts, preferably printed out of PETG. They'll go under a lot of stress, and you really don't want the mount to snap in the middle of a print. @@ -257,14 +259,26 @@ Always make tolerances for parts that touch 3D-printed parts. I'd print a 3D pri Designing an entire 3D printer can be extremely difficult, especially for a beginner at CAD. If you don't quite know your way around whichever CAD program you use, I'd recommend going through tutorials so that you're very familiar with functions like lofts, chamfers, and offsetting faces. I definitely learned a lot just by doing, however, and researching just whenever I needed to. +Wire routing can be difficult to get down, as you don't want wires getting stuck in the gantry, caught by the bed, etc. My printhead has this little chute that routes wires straight from the Klicky and the hotend to the Big Bunch Of Wires That Are Zip Tied Together (BBOWTAZTT,) which goes smoothly down to the mainboard and splits off into a rat's nest of red and black wires. It actually works quite well for a $1.50 (zip ties) solution. For a flying gantry, however, I'd recommend getting an actual wire chain. + +My lil chute: (printhead mounts right in front of the section analysis +![chute](https://hc-cdn.hel1.your-objectstorage.com/s/v3/f82e0bb9a6d1804c3ed4815643d2e2b251dcc1fe_screen_shot_2025-06-06_at_11.13.51_am.png) + +I learned so much about 3D printers and how they work through the past two steps. I like saying, "Point to anything on the printer and I can tell you exactly what it does, how it does it, and why I need it." Beforehand, I had no idea how CoreXY mechanics work (lol I still dont all the way) but now I can tell you with relative confidence how the mainboard works! With this experience in my belt, I honestly think I could make another CoreXY three times as fast. + ## Step Three: Assembly + Assembly is by far the easiest part of the 3D printer, but it's also when you'll find anything wrong with your design. You'll need to make a lot of iterations and will feel discouraged. Just know that you _can_ do it. Prepare yourself for making major adjustments and changing things you wish you wouldn't have to. +I wasted quite a bit of filament on stupid stuff, like failing to add _any_ tolerance for the bed holder, not measuring my idlers to make sure they'd fit, (they didn't,) and trying to figure out how the heck I should tension the belts. Not to mention the printhead screws didn't even fit in it ;b + One note: when assembling the heated bed holder, try to get it as level as you possibly can. Klicky probes and BLTouches exist to account for issues in the bed being unlevel, but you really don't want a two-millimeter difference between the front and the back. Having such a large difference can result in prints that, well, are 2mm higher on one end than they should be. Obviously, with a 3D printed holder, it may be hard to get under 1mm of difference, but it's worth a shot. Speaking of, it might be worth CNC milling an aluminum bed holder. It'll be infinitely more precise than a 3D-printed one, although it will definitely be much more expensive. If you have any leftover budget (lucky) you might want to consider it. Alternatively, you could try using MDF (medium-density fiberboard) sealed with polyester resin. -However, this is also the most rewarding part. Printing out the pieces, and putting them all together, it's like seeing your imagination truly turn into reality. You'll have a printer that you know inside and out, that you know every nook and cranny of. You'll have your own machine, your own design, sitting in front of you, just asking to be turned on. And it'll be fantastic. +This was the stage that my parents hated the most. It looks like a cyclone tore through a tesla factory, with parts and printer guts strewn everywhere. I filled up two big boxes (with the parts that weren't stuck under my bed or cluttering up my desk) with parts to spare. I constantly lost stuff, but it was all part of the adventure!!!1!1!!1 + +This is the most rewarding part of the printer. Printing out the pieces, and putting them all together, it's like seeing your imagination truly turn into reality. You'll have a printer that you know inside and out, that you know every nook and cranny of. You'll have your own machine, your own design, sitting in front of you, just asking to be turned on. And it'll be fantastic. _please don't fry a mainboard..._ @@ -280,6 +294,6 @@ Ah, firmware. It's what makes the machine run! From my experience, installing it After you're done installing Klipper, you can start tuning your newly powered printer! [Here's](https://ellis3dp.com/Print-Tuning-Guide/) the best guide in the world. It goes through absolutely _everything_! It's always so fun to get stuff up and running... to see your baby take its first steps. ## The End -Wow! 6435 words, 30247 characters, and a bucketful of blood, sweat, and tears later, you have a 3D printer. Not only a 3D printer, _your_ 3D printer! Sit back and relax. The struggle is over (for now...) and now you can have fun! It's been a wild journey, and if you're like me, it hasn't been easy. But you made it! Congratulations. Now go watch some Zach Freedman. I know you want to. +Wow! Three steps, a ton of work, and a bucketful of blood, sweat, and tears later, you have a 3D printer. Not only a 3D printer, _your_ 3D printer! Sit back and relax. The struggle is over (for now...) and now you can have fun! It's been a wild journey, and if you're like me, it hasn't been easy. But you made it! Congratulations. Now go watch some Zach Freedman. I know you want to. ~ anicetus From 26c3fbf57c73626b27e339ae78e717199c6ec0ef Mon Sep 17 00:00:00 2001 From: Anicetus Date: Fri, 6 Jun 2025 16:07:57 -0500 Subject: [PATCH 13/94] Update corexy.md --- app/views/guides/corexy.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/guides/corexy.md b/app/views/guides/corexy.md index 635b213..dd4ab5f 100644 --- a/app/views/guides/corexy.md +++ b/app/views/guides/corexy.md @@ -114,9 +114,9 @@ Keep in mind that the gantry can be very different across printers. The Voron 2. All of your idlers and pulleys should be 20T, except for the pulleys used in a belt drive Z system (one motor, three screws,) which, if you should choose it, should be 40T. (The T just means how many teeth it has; the most common are 16T and 20T. 20T are better for gripping the belts.) -Dowel pins are used to hold the idlers, instead of 3D printing a peg that they slide on. The pins should be about 4mm longer than the idlers on each side, and you should make little wells for them to pop into. This disperses the stress from the belts across the entire holder, instead of just the peg. +I used dowel pins to hold the idlers, instead of 3D printing a peg that they slide on. The pins were about 3mm longer than my 10mm idlers on each side, and I made little wells for them to pop into. This disperses the stress from the belts across the entire holder, instead of just the peg. -The belt should be either a genuine Gates brand belt or a POWGE brand belt from AliExpress. POWGE is the most common choice, and they make pretty good-quality stuff. 6mm is fine for most builds, but if you're going to go fast (300mm/s or more I'd say) you might want to look at 9mm belts. The idlers and pulleys should be 7mm or 10mm wide respectively. +The belt should be either a genuine Gates brand belt or a POWGE brand belt from AliExpress. I got POWGE, and they make pretty good-quality stuff. 6mm is fine for most builds, but if you're going to go fast (300mm/s or more I'd say) you might want to look at 9mm belts. I went 9mm just cuz, and it's working out well. The idlers and pulleys should be 7mm or 10mm wide respectively. Linear rails vs rods are a tough one. Rails can get very expensive, but they're very smooth and make zero noise. In hindsight, I could have done rods to make my printer more budget, but rails are realllly satisfying. If you go rods, use 8mm diameter and LM8UU bearings. They're what everybody uses. If you're over budget, you can try buying or 3D printing bushings. Bushings are like bearings, but instead of little balls inside them, they simply have minimal surface area on the rod. They'll wear down faster but are good if you're just substituting until you can afford actual bearings. From cde22ed34cd8d15918aaca780d9b14feaf865ebe Mon Sep 17 00:00:00 2001 From: Anicetus Date: Fri, 6 Jun 2025 17:16:02 -0500 Subject: [PATCH 14/94] Update corexy.md --- app/views/guides/corexy.md | 48 ++++++++++++++++++++++++++++++-------- 1 file changed, 38 insertions(+), 10 deletions(-) diff --git a/app/views/guides/corexy.md b/app/views/guides/corexy.md index dd4ab5f..48f5281 100644 --- a/app/views/guides/corexy.md +++ b/app/views/guides/corexy.md @@ -22,6 +22,8 @@ But first, here's an overview about the differences between Cartesian and CoreXY A good example of a CoreXY printer is the Bambu Lab X1 series. They look like big cubes, and the Bambu line has an enclosure around the entire thing. A Cartesian printer is like an Ender 3 or a Bambu Lab A1 Mini. Cartesian printers come in two main types: bedslingers and cantilevers. An Ender 3 is a bedslinger (named because it slings the bed back and forth) and a Bambu Lab A1 Mini is a cantilever (because there is only one "pole" supporting the "arm".) +![Types of 3D Printers](https://hc-cdn.hel1.your-objectstorage.com/s/v3/0a9a30a83ee4fa8f8f65564437db9f5cae7f239e_types_of_3d_printers.jpg) + But back to CoreXY's. Here are the pros and cons as compared to a bedslinger or cantilever printer: ### Pros @@ -73,7 +75,8 @@ Here's a very simple BOM and explanation to get you on your feet: I personally love the Klicky probe. The way it works is it's a tiny micro switch with a dock at the back of the printer. The printhead moves back to the dock and picks it up with magnets, which also convey the voltage + and - (for an LED) and signal for button presses. The micro switch sticks out from the printhead and acts as a Z-probe and as the Z-limit switch. The printhead then docks the Klicky, so that the nozzle isn't blocked anymore, and goes on to printing. It's only 7 bucks as compared to the BLTouch's $30-$40 price mark, making it pretty great for its price. I was able to mount it quite discreetly on the printhead and made a cute lil dock for it at the back of the printer. -The reason a lot of people choose BLTouch instead is that it's plug and play with most mainboards, unlike the Klicky which needs some fancy wiring, and instead of having to dock it, you just fasten it to the printhead and it automatically pushes out a little probing stick every time you need to probe. It's very very handy, but beware: knockoffs abound. If you get a BLTouch, you _must_ get one that says "BLTouch" on the side. Not "3DTouch," "BLTouch"!! People have done tests, and 3DTouches are the least accurate, most worthless probes you can buy. The list of authorized sellers and legitimate BLTouches is at their website, [https://antclabs.com/](https://antclabs.com/). I almost fell for a 3DTouch, and it cost me a lot of design work when I realized they were so bad. +The reason a lot of people choose BLTouch instead is that it's plug and play with most mainboards, unlike the Klicky which needs some fancy wiring, and instead of having to dock it, you just fasten it to the printhead and it automatically pushes out a little probing stick every time you need to probe. It's very very handy, but beware: knockoffs abound. If you get a BLTouch, you _must_ get one that says "BLTouch" on the side. Not "3DTouch," "BLTouch"!! People have done tests, and 3DTouches are the least accurate, most worthless probes you can buy. The list of authorized sellers and legitimate BLTouches is at their website, [https://antclabs.com/](https://antclabs.com/). I almost fell for a 3DTouch, and it cost me a lot of design work when I realized they were so bad. Proof: +![image](https://github.com/user-attachments/assets/86b0304b-b777-44cf-989e-7bc04ac06a2e) In my own CoreXY design, I failed to put two 5015 blower fans for the part cooling. This rookie mistake is costing me now, due to a lack of cooling with dual 4010 blowers. I'll still be able to print PETG well, but PLA may suffer. Dual 5015s are more than enough for any printer. @@ -89,7 +92,7 @@ But I know one thing for sure: it wasn't fast enough for me. I used the TZ E3 2.0, a great (and very small!) hotend that the manufacturers claim can achieve 33mm3/s, meaning it likely gets around 30 with high-flow filament and a good extruder. Using the formula above, that equates to 375mm/s with 0.4 line width and 0.2 height. That's definitely better! The TZ E3 2.0's brother, the TZ V6 2.0, has the same specs but boasts faster cooling with a cylindrical heatsink instead of the E3's rectangular one. Additionally, the TZ line can all get up to 300°C. This is great for PLA, PETG, TPU, and others. I have no knowledge about higher-temp hotends. The ones on AliExpress have 40W heaters, so not very fast, but still pretty good. -Originally, I was actually planning to use a $90 Phaetus Rapido hotend, rated up to 75mm3/s. This was really really overkill, and I'm glad I didn't follow through with it. However, my next choice might have been worse. I looked around and found the Phaetus Dragonfly BMS, which ChatGPT (💀) said was a high-flow hotend capable of 30mm3/s. False. Here's a tip for you: never trust ChatGPT alone. The Dragonfly only got like 15mm3/s. But by this point, I'd already centered the entire design around it! I had to redesign a _ton_ of the printhead to compensate for trusting ChatGPT. +Originally, I was actually planning to use a $90 Phaetus Rapido hotend, rated up to 75mm3/s. This was really really overkill, and I'm glad I didn't follow through with it. However, my next choice might have been worse. I looked around and found the Phaetus Dragonfly BMS, which ChatGPT (💀) said was a high-flow hotend capable of 30mm3/s. False. Here's a tip for you: never trust ChatGPT alone. The Dragonfly only got like 15mm3/s. But by this point, I'd already centered the entire design around it! I had to redesign a _ton_ of the printhead to compensate for trusting ChatGPT. ChatGPT is probably the least reliable, most prone to error AI out there. It consistently gets technical information wrong, and it should never be used for important stuff. I actually found [https://perplexity.ai](https://perplexity.ai), which uses a butt ton of sources to make sure that the info it gives you is always at least 51% correct. Extruders, while a fundamental part of any printer, aren't quite as nitpicky. The Orbiter line is quite good from what I've seen, with their most recent being the Orbiter v2.5. In my opinion, v2.0 is plenty good enough for any scenario, and v1.5 should work well for slower printers. Many people feel, however, that the Orbiters are overpriced. The v2.0 I bought for my printer cost $40 and some change, which might be hard on a tight budget. In that case, you might check out the Sherpa Mini, beloved by many. To be clear, I haven't done very much research on the Sherpa line, so exactly what it can do is outside my scope. @@ -98,7 +101,8 @@ The ADXL345 is an accelerometer, which just means it tells you how fast you're g Printhead lights, while totally optional, can help illuminate your prints, whether for timelapses or simply for checking on prints. Vorons use these, in the form of small PCBs mounted at an angle to the hotend. Alternatively, you can simply wire small LED bulbs and add resistors so that you can wire them directly to your 24V output. ### Gantry and Kinematics -Keep in mind that the gantry can be very different across printers. The Voron 2.4, for example, uses a gantry with an open front, and an intriguing belt path. The way you route your belts is totally up to you! This BOM goes over the parts I used in mine, which follows [this](https://reprap.org/forum/thumbcache/8ae/885/da4/f6b/336/1c4/d2c/8c7/34d/c71/d5_800x400.png) diagram more or less. +Keep in mind that the gantry can be very different across printers. The Voron 2.4, for example, uses a gantry with an open front, and an intriguing belt path. The way you route your belts is totally up to you! This BOM goes over the parts I used in mine, which follows this diagram more or less. +![diagram](https://reprap.org/forum/thumbcache/8ae/885/da4/f6b/336/1c4/d2c/8c7/34d/c71/d5_800x400.png) | **Part** | **Cost** | **Notes** | |------------------------|---------------|-------------------------------------------------------| @@ -122,7 +126,7 @@ Linear rails vs rods are a tough one. Rails can get very expensive, but they're Motors are a very hard thing to research, namely for a faster printer. I literally researched for hours and hours, trying to find the perfect ones. I finally found ones I liked, bought them, and checked out the lil specs card it came with. Alas! The AliExpress seller promised 2.7mH inductance when they were really 3mH inductance. Long story short, that means I can't print as fast as I would've liked. So I guess that's a mini lesson: never just trust the aliexpress seller. Anyways, everybody uses Nema17s, and will thus be the easiest to incorporate into your design. I wish I'd had [this link](https://reprap.org/wiki/NEMA_17_Stepper_motor) when I was researching my motors. It lays out a select few with good specs. If you're printing slower (100-200mm/s) you hardly need to research them at all; any inductance of 4mH or under is fine, and you should have about 44+ Ncm holding torque. -For a 300mm/s printer, an inductance of 2-3mH is better, and a holding torque of 44 or more is still good. Then we get into high-speed CoreXY's. A 400-500mm/s printer should have 55 or more holding torque and max 2.5mH inductance. For incredible speeds like 600mm/s or more, you'll need 60-ish holding torque and very low inductance, like less than 1.5mH. It's in the high-speed world that you'll want higher-voltage stepper motors. Especially when going high accelerations, like 40k or more, 48V or even 60V can be huge. For this, you'll probably need another PSU to power the 60V, as well as a mainboard that has a dedicated motor input for those high voltages. However, it is still possible to run it at 24V. [This](https://www.youtube.com/watch?v=cjXhLow9jRg) video is worth a watch. +From what I've learned researching stuff, for a 300mm/s printer, an inductance of 2-3mH is better, and a holding torque of 44 or more is still good. Then we get into high-speed CoreXY's. A 400-500mm/s printer should have 55 or more holding torque and max 2.5mH inductance. For incredible speeds like 600mm/s or more, you'll need 60-ish holding torque and very low inductance, like less than 1.5mH. It's in the high-speed world that you'll want higher-voltage stepper motors. Especially when going high accelerations, like 40k or more, 48V or even 60V can be huge. For this, you'll probably need another PSU to power the 60V, as well as a mainboard that has a dedicated motor input for those high voltages. However, it is still possible to run it at 24V. [This](https://www.youtube.com/watch?v=cjXhLow9jRg) video is worth a watch. TL;DR: Printing over ~450mm/s is likely to set you ~$120 back in budget. @@ -159,6 +163,9 @@ For a one-motor, three-screw setup, your BOM might look like this instead: If both come out at the same price, I'd go with three motors and three screws. Far more reliable, and easier to design. +Here's my belted Z-axis (two screw, not 3) if it gives you an idea of how it works: +![image](https://github.com/user-attachments/assets/4897effb-94c3-497b-a71a-ba9155c3d3f1) + ### Electronics | **Part** | **Cost** | **Notes** | @@ -235,19 +242,21 @@ But it's no secret that design can be very difficult. In my opinion, the printhe * This also includes a toolchanger system if you make that * Always compare your gantry to standard aluminum extrusion lengths (unless you're cutting them yourself) and make it bigger if they don't make extrusions in the size you'd like * There are two types of gantry homing: switch homing and [sensorless homing](https://all3dp.com/2/klipper-sensorless-homing-simply-explained/). This guide assumes sensorless homing. - * I failed to do the gantry 2nd, instead going to straight to literally everything else. I made the frame too big for the gantry, and I had trouble fitting everything into the space I had allotted for it. This was really dumb, and i hope somebody can learn from it! I certainly did. + * I failed to do the gantry 2nd, instead going to straight to literally everything else. I made the frame too big for the gantry (pic below), and I had trouble fitting everything into the space I had allotted for it. This was really dumb, and i hope somebody can learn from it! I certainly did. * It was when i was designing this that the bad days started. The gantry was probably the hardest thing I've ever made. The idler mounts, the motor mounts, making everything just _perfect_ was infuriating. 3. Z-axis * Make your bed holder and belted/tri-motor system before you make the frame, so that you don't make the frame too big or too small for it - * This was where I messed up, big time. I decided that a single motor and a single lead screw would be enough to move a 235x235mm bed. Wrong. Thankfully, I was corrected before following all the way through with it. But it was heartbreaking to have to redesign the entire Z-axis, particularly since it was actually _done_! It was an actual nightmare, and I had no idea what to do. Eventually, I settled on a dual-screw belted system, not ideal but the best I could do. I had already designed the electronics, so i didn't leave any room for myself to adjust the z-axis. + * This was where I messed up, big time. I decided that a single motor and a single lead screw would be enough to move a 235x235mm bed. Wrong. Thankfully, I was corrected by some passive-aggressive people in the 3D printing discord before following all the way through with it. But it was heartbreaking to have to redesign the entire Z-axis, particularly since it was actually _done_! It was an actual nightmare, and I had no idea what to do. Eventually, I settled on a dual-screw belted system, not ideal but the best I could do. I had already designed the electronics, so i didn't leave any room for myself to adjust the z-axis. This was probably the most infuriating part of the entire design. 4. Electronics + frame * Now that the important parts are done, you can mount your PSU and mainboard. Make sure that wires have plenty of room to move around! This was a major mistake I made 5. Everything else * An MMU, Raspberry Pi mount, etc. -Unfortunately, there's not a lot else I can say technically about design. (Edit: proceeds to write 8 paragraphs about design.) Everybody's printer will be different, and there isn't a standardized gantry type or printhead model. However, this is where you can get clever and make interesting or useful designs. For example, I mounted my PSU and mainboard in a locking mechanism that insured that there wasn't any sag while covering the PSU ports and protecting the mainboard at the same time. +Unfortunately, there's not a lot else I can say technically about design. (Edit: proceeds to write 9 paragraphs about design.) Everybody's printer will be different, and there isn't a standardized gantry type or printhead model. However, this is where you can get clever and make interesting or useful designs. For example, I mounted my PSU and mainboard in a locking mechanism that insured that there wasn't any sag while covering the PSU ports and protecting the mainboard at the same time. -I do have a few tips, however. First, always make sure your belt routing is straight. The line from the motor pulleys to the idlers on the gantry and from the gantry idlers to the printhead (note: the routing from the motor pulleys to the stationary idlers doesn't need to be straight) should be perfectly even, at the risk of having uneven belt tension when moving the gantry and printhead. Besides that, it looks nice and even. Speaking of the idlers, always give them good solid mounts, preferably printed out of PETG. They'll go under a lot of stress, and you really don't want the mount to snap in the middle of a print. +I do have a few tips, however. First, always make sure your belt routing is straight. The line from the motor pulleys to the idlers on the gantry and from the gantry idlers to the printhead (note: the routing from the motor pulleys to the stationary idlers doesn't need to be straight) should be perfectly even, at the risk of having uneven belt tension when moving the gantry and printhead. Besides that, it looks nice and even. Speaking of the idlers, always give them good solid mounts, preferably printed out of PETG. They'll go under a lot of stress, and you really don't want the mount to snap in the middle of a print. This pic shows what mine look like: + +![big fat idlers](https://github.com/user-attachments/assets/d2d2b588-725e-40de-a32c-162f42d0eeaa) This should be obvious, but make sure that your intricate parts can actually be taken apart. Midway through my printhead design, I realized that it was physically impossible to assemble or disassemble it for the simple yet elusive reason that the screws you need to access are only accessible if the printhead is disassembled. This meant that when assembling and when everything was in place, the screws were unreachable and when disassembling they couldn't be seen. This took about a day and a half to fix, a day and a half when I could have been finishing the design. Looking back it's actually quite funny lool @@ -261,9 +270,17 @@ Designing an entire 3D printer can be extremely difficult, especially for a begi Wire routing can be difficult to get down, as you don't want wires getting stuck in the gantry, caught by the bed, etc. My printhead has this little chute that routes wires straight from the Klicky and the hotend to the Big Bunch Of Wires That Are Zip Tied Together (BBOWTAZTT,) which goes smoothly down to the mainboard and splits off into a rat's nest of red and black wires. It actually works quite well for a $1.50 (zip ties) solution. For a flying gantry, however, I'd recommend getting an actual wire chain. -My lil chute: (printhead mounts right in front of the section analysis +My lil chute: (printhead mounts right in front of the section analysis) ![chute](https://hc-cdn.hel1.your-objectstorage.com/s/v3/f82e0bb9a6d1804c3ed4815643d2e2b251dcc1fe_screen_shot_2025-06-06_at_11.13.51_am.png) +When i tried a one-screw setup +![img](https://hc-cdn.hel1.your-objectstorage.com/s/v3/f98c083ec2269ffe7c159d353498b47956183ed7_screenshot_2025-02-22_143522.png) + +Big printer, small bed +![raa](https://hc-cdn.hel1.your-objectstorage.com/s/v3/c5beb8d4fe4e04ff0a58194a03bc22a99109f588_image.png) + +In the end, however, I'm quite proud of my own design. The printhead is really clean, and in general, it looks more professional than I'd thought it would. One thing though, my motor mounts are pretty unstable. It's not really a big deal when the motors are the ones actually turning, but when moving the belts by hand, you can tell the mounts bend a lot. So just make sure that mounts for stable parts are really really secure and can't bend anywhere. + I learned so much about 3D printers and how they work through the past two steps. I like saying, "Point to anything on the printer and I can tell you exactly what it does, how it does it, and why I need it." Beforehand, I had no idea how CoreXY mechanics work (lol I still dont all the way) but now I can tell you with relative confidence how the mainboard works! With this experience in my belt, I honestly think I could make another CoreXY three times as fast. ## Step Three: Assembly @@ -276,7 +293,11 @@ One note: when assembling the heated bed holder, try to get it as level as you p Speaking of, it might be worth CNC milling an aluminum bed holder. It'll be infinitely more precise than a 3D-printed one, although it will definitely be much more expensive. If you have any leftover budget (lucky) you might want to consider it. Alternatively, you could try using MDF (medium-density fiberboard) sealed with polyester resin. -This was the stage that my parents hated the most. It looks like a cyclone tore through a tesla factory, with parts and printer guts strewn everywhere. I filled up two big boxes (with the parts that weren't stuck under my bed or cluttering up my desk) with parts to spare. I constantly lost stuff, but it was all part of the adventure!!!1!1!!1 +This was the stage that my parents hated the most. My dad would always walk in, look around for a second or two, take it all in, and ask "are you quite done yet?" It looked like a cyclone tore through a mad scientist's lab, with parts and printer guts strewn everywhere. I filled up two big boxes (with the parts that weren't stuck under my bed or cluttering up my desk) with parts to spare. I constantly lost stuff, but it was all part of the adventure!!!1!1!!1 + +![my room](https://hc-cdn.hel1.your-objectstorage.com/s/v3/75b8dca63f04614fd6006cddec8ff5beddf1ea86_image.png) +![my room 2](https://github.com/user-attachments/assets/b75b8d23-dfe9-43da-a1b4-59925aa6190b) +![my desk](https://hc-cdn.hel1.your-objectstorage.com/s/v3/84f6426e2366c77fe131413302d71adbf8f4091f_image.png) This is the most rewarding part of the printer. Printing out the pieces, and putting them all together, it's like seeing your imagination truly turn into reality. You'll have a printer that you know inside and out, that you know every nook and cranny of. You'll have your own machine, your own design, sitting in front of you, just asking to be turned on. And it'll be fantastic. @@ -293,7 +314,14 @@ Ah, firmware. It's what makes the machine run! From my experience, installing it After you're done installing Klipper, you can start tuning your newly powered printer! [Here's](https://ellis3dp.com/Print-Tuning-Guide/) the best guide in the world. It goes through absolutely _everything_! It's always so fun to get stuff up and running... to see your baby take its first steps. +You know a guide is good when the author is funny: (ellis's 3dp guide) +![image](https://github.com/user-attachments/assets/cbfcd245-3786-48fd-9436-2c3f442c3bef) + + ## The End Wow! Three steps, a ton of work, and a bucketful of blood, sweat, and tears later, you have a 3D printer. Not only a 3D printer, _your_ 3D printer! Sit back and relax. The struggle is over (for now...) and now you can have fun! It's been a wild journey, and if you're like me, it hasn't been easy. But you made it! Congratulations. Now go watch some Zach Freedman. I know you want to. ~ anicetus + +![image](https://github.com/user-attachments/assets/f8660b92-98d5-4486-a890-b0d06d332357) + From 16fab18af22785a2c689e20bf74772c33754b624 Mon Sep 17 00:00:00 2001 From: PythonAtSea Date: Sat, 7 Jun 2025 10:12:34 -0500 Subject: [PATCH 15/94] Create JLC-cost-optimizing.md --- app/views/guides/JLC-cost-optimizing.md | 28 +++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 app/views/guides/JLC-cost-optimizing.md diff --git a/app/views/guides/JLC-cost-optimizing.md b/app/views/guides/JLC-cost-optimizing.md new file mode 100644 index 0000000..2ecd1a1 --- /dev/null +++ b/app/views/guides/JLC-cost-optimizing.md @@ -0,0 +1,28 @@ +# JLCPCB Cost optimizing + +Written by pythonatsea / hudson + +FYI this guide is focused on people in the US with regards to tariffs and shipping + +Hi! If you're reading this you've probably mostly completed your design and you're realizing you've way underestimated the cost of PCBA at JLCPCB, and you need to cut your BOM a bit. There are a couple easy(ish) ways to do this. + +## Size +JLC's prices for PCBs are locked at **$2 for 2 layer boards under 100x100mm, and 4-8 layer PCBs under 50x50mm**. After this they become quite expensive, so keep that in mind when designing your PCB. + +## Quantity +Make sure that you have 5 PCBs (the minimum), and you can also reduce the number of PCB's _assembled_ to 2, which can save a bit on parts costs. You should also consider if you _need_ PCBA, or if you can handsolder your parts. **If you only have THT parts, you don't need PCBA.** + +## Economic assembly +JLC has 2 types of assembly, economic assembly and standard assembly. Standerd assembly is _considerably_ more expensive, the setup fee alone is $17 more. **You should _always_ be using ecenomic assembly**, which does mean you're limited to having parts on only one side of the board. + +## Basic parts +JLC has 3 different types of parts, basic, preferred extended, and (non preferred) extended. For every extended part you use, they charge a **$3 loading fee**, which adds up quickly, especially after tariffs. The easiest way to to search for basic and preferred extended parts is https://lrks.github.io/jlcpcb-economic-parts/active.html, whcih has all of them in one place. For most parts you can find a comparable replacement that's a basic part. + +## Poor man's panelization +If you have 2 PCBs that both need to get assembled, you can connect them with mousebites and only pay the setup fee once. This can also save money if both PCBs together are under 100x100mm, even if you're not getting them assembled. + +## Shipping +Shipping is mostly based on weight, although UPS and FedEx also charge rural surcharges. Generally DHL is the cheapest option besides global direct standard line, which doesn't prepay tariffs and will probably cause headaches with customs. Keeping weight as low as you can is the secret to low(er) shipping costs. + +## Tariffs (for the US) +JLC charges tariffs at **60% when the order is placed**, and won't adjust it based on the actual rate the tariff is charged by customs, so once you place your order you're done. Because the tariffs are based on the order price, for every dollar you can save on the PCB you actually save $1.60. From 5009050ecd4406c403b625906ef7c88ac7055d41 Mon Sep 17 00:00:00 2001 From: PythonAtSea Date: Sat, 7 Jun 2025 10:13:56 -0500 Subject: [PATCH 16/94] Update _sidebar.html.erb --- app/views/guides/_sidebar.html.erb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/views/guides/_sidebar.html.erb b/app/views/guides/_sidebar.html.erb index b8aa685..4f8c996 100644 --- a/app/views/guides/_sidebar.html.erb +++ b/app/views/guides/_sidebar.html.erb @@ -8,6 +8,7 @@

The guides!

<%= link_to "Game Console", guides_page_path("game-console"), class: "#{current_page?(guides_page_path("game-console")) ? 'bg-[#564CAD]' : 'hover:bg-[#564CAD]'} bg-[#2E2A54] p-2 px-6 rounded transition duration-100 block font-dystopian" %> + <%= link_to "JLC Cost Optimizing", guides_page_path("JLC-cost-optimizing"), class: "#{current_page?(guides_page_path("JLC-cost-optimizing")) ? 'bg-[#564CAD]' : 'hover:bg-[#564CAD]'} bg-[#2E2A54] p-2 px-6 rounded transition duration-100 block font-dystopian" %> <%# <%= link_to "Other communities", guides_page_path("faq"), class: "#{current_page?(guides_page_path("submit")) ? 'bg-[#564CAD]' : 'hover:bg-[#564CAD]'} bg-[#2E2A54] p-2 rounded transition duration-100 block font-dystopian" %> From 1a575409003ab7427e29e97e47bae25f2363cd10 Mon Sep 17 00:00:00 2001 From: Anicetus Date: Sat, 7 Jun 2025 16:58:16 -0500 Subject: [PATCH 17/94] Update overview.md - spacing --- app/views/guides/overview.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/views/guides/overview.md b/app/views/guides/overview.md index 30044b0..88efd83 100644 --- a/app/views/guides/overview.md +++ b/app/views/guides/overview.md @@ -10,7 +10,11 @@ The first one is on how to make a Game Console - check it out on the sidebar! To contribute, make a markdown file in the app/views/guides folder! Put your guide in there. -Next, open app/views/guides/_sidebar.html.erb. Copy this: `<%= link_to "YOUR PROJECT TYPE", guides_page_path(".MD FILE NAME"), class: "#{current_page?(guides_page_path(".MD FILE NAME")) ? 'bg-[#564CAD]' : 'hover:bg-[#564CAD]'} bg-[#2E2A54] p-2 px-6 rounded transition duration-100 block font-dystopian" %>` and paste where instructed in that file. Replace the placeholders with your guide, and make a PR with all of your changes! +Next, open app/views/guides/_sidebar.html.erb. Copy this: +``` +<%= link_to "YOUR PROJECT TYPE", guides_page_path(".MD FILE NAME"), class: "#{current_page?(guides_page_path(".MD FILE NAME")) ? 'bg-[#564CAD]' : 'hover:bg-[#564CAD]'} bg-[#2E2A54] p-2 px-6 rounded transition duration-100 block font-dystopian" %> +``` +and paste where instructed in that file. Replace the placeholders with your guide, and make a PR with all of your changes! **In return, you'll get rewarded 1 free point for adding a *finished* guide** From af65e51dd46b3946b13842bfc78f68d203c77d4a Mon Sep 17 00:00:00 2001 From: its-kronos <140297693+its-kronos@users.noreply.github.com> Date: Mon, 9 Jun 2025 04:35:43 -0400 Subject: [PATCH 18/94] Update submissions.yml - Its_Kronos (#462) --- submissions.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/submissions.yml b/submissions.yml index a876d05..6e8586c 100644 --- a/submissions.yml +++ b/submissions.yml @@ -374,3 +374,4 @@ projects: - "https://github.com/ZIZO932/Power-Bank-120-Watt" - "https://github.com/runthebot/uController" - "https://github.com/DuckyBoi-XD/DuckyDK-MTR-1" + - "https://github.com/its-kronos/KeyboardV1" From bff22bb45b8bec8379385e7e11272f0c3d53a3eb Mon Sep 17 00:00:00 2001 From: Henry Veedahl <89225651+HenryNerd@users.noreply.github.com> Date: Mon, 9 Jun 2025 03:37:08 -0500 Subject: [PATCH 19/94] Update submissions.yml (#442) --- submissions.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submissions.yml b/submissions.yml index 6e8586c..a4e5e98 100644 --- a/submissions.yml +++ b/submissions.yml @@ -305,7 +305,7 @@ projects: - "https://github.com/Patcybermind/Helper-2-Cnc" - "https://github.com/gbtsui/fortissimo-ii" - "https://github.com/GaoYeGithub/RGB-Saber" - - "https://github.com/Echo-Labs-Development/Leaf" + - "https://github.com/HenryNerd/Echo-Synth" - "https://github.com/earth-jelly/minifrc_reefscape" - "https://github.com/WilliamPrime/BlindyBoi" - "https://github.com/Githubuser1122bruh/LockerHack" From 52196ad60fd38b154f23c19e2677c8bd8b55c9d0 Mon Sep 17 00:00:00 2001 From: joelmathewsssss Date: Mon, 9 Jun 2025 04:37:50 -0400 Subject: [PATCH 20/94] Update submissions.yml (#379) Co-authored-by: Cyao --- submissions.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/submissions.yml b/submissions.yml index a4e5e98..187d0a8 100644 --- a/submissions.yml +++ b/submissions.yml @@ -314,6 +314,7 @@ projects: - "https://github.com/pizzalover125/gamepad" - "https://github.com/sofiamatosg/Soccer-Bot" - "https://github.com/codingkatty/tomatachickena" + - "https://github.com/joelmathewsssss/HACKPAD" - "https://github.com/AsleshSura/BirdEyeView" - "https://github.com/Badbird5907/thermal-camera" - "https://github.com/EasonYang7/YippeePadv2" @@ -347,7 +348,7 @@ projects: - "https://github.com/kermitsgonnakermicide/hackpad" - "https://github.com/kermitsgonnakermicide/spooderbot" - "https://github.com/kermitsgonnakermicide/AndyTracker" - - "http://github.com/daamin909/keyboard-v2" + - "https://github.com/daamin909/keyboard-v2" - "https://github.com/dropalltables/openkeebs" - "https://github.com/Ch4rl1eHerbs/Geiger-Counter" - "https://github.com/RedRock5645-30/ClawMachine" From 3c7f44796eecb3eaeba57b05718228c14113beb5 Mon Sep 17 00:00:00 2001 From: Kishika <166960207+kishi-j@users.noreply.github.com> Date: Mon, 9 Jun 2025 09:38:42 +0100 Subject: [PATCH 21/94] Update submissions.yml (#451) Co-authored-by: Cyao --- submissions.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/submissions.yml b/submissions.yml index 187d0a8..cbe1f57 100644 --- a/submissions.yml +++ b/submissions.yml @@ -372,6 +372,7 @@ projects: - "https://github.com/Tchurkin/Sysiphus_Rocket" - "https://github.com/capitaoananas/BRUV-mini" - "https://github.com/EEEYeSeong/FlatPad" + - "https://github.com/kishi-j/Pomodoro-Pad" - "https://github.com/ZIZO932/Power-Bank-120-Watt" - "https://github.com/runthebot/uController" - "https://github.com/DuckyBoi-XD/DuckyDK-MTR-1" From 4f85c2f465b70213bca91fd46dba8f549916d3e8 Mon Sep 17 00:00:00 2001 From: Swamstick911 <163744064+Swamstick911@users.noreply.github.com> Date: Mon, 9 Jun 2025 14:09:06 +0530 Subject: [PATCH 22/94] Update submissions.yml (#452) Co-authored-by: Cyao --- submissions.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/submissions.yml b/submissions.yml index cbe1f57..31c68bc 100644 --- a/submissions.yml +++ b/submissions.yml @@ -376,4 +376,5 @@ projects: - "https://github.com/ZIZO932/Power-Bank-120-Watt" - "https://github.com/runthebot/uController" - "https://github.com/DuckyBoi-XD/DuckyDK-MTR-1" + - "https://github.com/Swamstick911/keyboard" - "https://github.com/its-kronos/KeyboardV1" From b281c3c7d737fa76c59a2ca18897242653223723 Mon Sep 17 00:00:00 2001 From: Lee Ye Seong <179356885+EEEYeSeong@users.noreply.github.com> Date: Mon, 9 Jun 2025 17:39:40 +0900 Subject: [PATCH 23/94] Update submissions.yml (#454) * Update submissions.yml * Update submissions.yml --------- Co-authored-by: Cyao --- submissions.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/submissions.yml b/submissions.yml index 31c68bc..fedc1ec 100644 --- a/submissions.yml +++ b/submissions.yml @@ -376,5 +376,6 @@ projects: - "https://github.com/ZIZO932/Power-Bank-120-Watt" - "https://github.com/runthebot/uController" - "https://github.com/DuckyBoi-XD/DuckyDK-MTR-1" + - "https://github.com/EEEYeSeong/AvatarSense" - "https://github.com/Swamstick911/keyboard" - "https://github.com/its-kronos/KeyboardV1" From d7268924a45c8d8427b488be884215840427e246 Mon Sep 17 00:00:00 2001 From: Edward Hesketh Date: Mon, 9 Jun 2025 09:40:38 +0100 Subject: [PATCH 24/94] add headblockhead/soldery to submissions.yml (#461) Co-authored-by: Cyao --- submissions.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/submissions.yml b/submissions.yml index fedc1ec..8641ff2 100644 --- a/submissions.yml +++ b/submissions.yml @@ -376,6 +376,7 @@ projects: - "https://github.com/ZIZO932/Power-Bank-120-Watt" - "https://github.com/runthebot/uController" - "https://github.com/DuckyBoi-XD/DuckyDK-MTR-1" + - "https://github.com/headblockhead/soldery" - "https://github.com/EEEYeSeong/AvatarSense" - "https://github.com/Swamstick911/keyboard" - "https://github.com/its-kronos/KeyboardV1" From 323a4adc8a16016ca9ac22e8deea858990db6419 Mon Sep 17 00:00:00 2001 From: Raymont Qin <140027854+QinCai-rui@users.noreply.github.com> Date: Mon, 9 Jun 2025 20:40:48 +1200 Subject: [PATCH 25/94] add my second project (#460) --- submissions.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/submissions.yml b/submissions.yml index 8641ff2..1cf32ab 100644 --- a/submissions.yml +++ b/submissions.yml @@ -54,6 +54,7 @@ projects: - "https://github.com/Overlord-Runt/rc-car-with-a-arm" - "https://github.com/pizzalover125/cyberdeck" - "https://github.com/QinCai-rui/RasPiCube" + - "https://github.com/QinCai-rui/SmartClockPi" - "https://github.com/Cyclic007/miniMagicMacroMachene" - "https://github.com/ImNoahDev/Voice-Assistant" - "https://github.com/AchtEnthusiast/Tepew-I-Rev-A" From 5554ffa6be4d63473488e8687942bf683424a0b8 Mon Sep 17 00:00:00 2001 From: ShyMike <122023566+ImShyMike@users.noreply.github.com> Date: Mon, 9 Jun 2025 09:41:13 +0100 Subject: [PATCH 26/94] fix: typo in guides overview (#458) * fix: typo in guides overview * Update submissions.yml * Revert "Update submissions.yml" This reverts commit 23638c8c5df07e212393af4ccd47d8efe3bde240. Wrong branch, oopsies --- app/views/guides/overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/guides/overview.md b/app/views/guides/overview.md index 5260d65..3a836b5 100644 --- a/app/views/guides/overview.md +++ b/app/views/guides/overview.md @@ -10,5 +10,5 @@ The first one is on how to make a Game Console - check it out on the sidebar! To contribute, make a markdown file in the app/views/guides folder! Put your guide in there. Afterwards, make a PR with your changes! -**In return, you'll get rewarded 1 free point for adding *finished* a guide** +**In return, you'll get rewarded 1 free point for adding a *finished* guide** From b7593ff3e7c3748b0cd4e7900874aea235ed96af Mon Sep 17 00:00:00 2001 From: ShyMike <122023566+ImShyMike@users.noreply.github.com> Date: Mon, 9 Jun 2025 09:41:36 +0100 Subject: [PATCH 27/94] Update submissions.yml (#459) Co-authored-by: Cyao --- submissions.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/submissions.yml b/submissions.yml index 1cf32ab..e38c674 100644 --- a/submissions.yml +++ b/submissions.yml @@ -377,6 +377,7 @@ projects: - "https://github.com/ZIZO932/Power-Bank-120-Watt" - "https://github.com/runthebot/uController" - "https://github.com/DuckyBoi-XD/DuckyDK-MTR-1" + - "https://github.com/ImShyMike/LilBPS" - "https://github.com/headblockhead/soldery" - "https://github.com/EEEYeSeong/AvatarSense" - "https://github.com/Swamstick911/keyboard" From f2ae9b6b32992b27b3f5ad95d1d90f928b8301c4 Mon Sep 17 00:00:00 2001 From: Toby Cm Date: Mon, 9 Jun 2025 01:42:08 -0700 Subject: [PATCH 28/94] add toby's nrf52840 + npm1300 devboard (#457) Co-authored-by: Cyao --- submissions.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/submissions.yml b/submissions.yml index e38c674..79a382b 100644 --- a/submissions.yml +++ b/submissions.yml @@ -377,6 +377,7 @@ projects: - "https://github.com/ZIZO932/Power-Bank-120-Watt" - "https://github.com/runthebot/uController" - "https://github.com/DuckyBoi-XD/DuckyDK-MTR-1" + - "https://github.com/tobycm/nRF52840-with-nPM1300-devboard" - "https://github.com/ImShyMike/LilBPS" - "https://github.com/headblockhead/soldery" - "https://github.com/EEEYeSeong/AvatarSense" From a434594472c7e425315b74ff6f4999f9386ae6aa Mon Sep 17 00:00:00 2001 From: Kevin Huai <99227581+JumpSushi@users.noreply.github.com> Date: Mon, 9 Jun 2025 16:42:40 +0800 Subject: [PATCH 29/94] fix redirect (#423) --- app/views/advanced/design-guide.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/advanced/design-guide.md b/app/views/advanced/design-guide.md index 7c31ed6..48ae2a3 100644 --- a/app/views/advanced/design-guide.md +++ b/app/views/advanced/design-guide.md @@ -6,7 +6,7 @@ Designing your own projects is really, *really* hard. Here's my best explainer a You can split this entire process up into approximately 4-5 different steps, depending on what the project is. -During this entire process you're going to have to do a LOT of research on sourcing parts and what the pros and cons of getting each would be. During this time, PLEASE check out the [Part Sourcing](advanced/part-sourcing) guide to get a better idea of the options +During this entire process you're going to have to do a LOT of research on sourcing parts and what the pros and cons of getting each would be. During this time, PLEASE check out the [Part Sourcing](/advanced/part-sourcing) guide to get a better idea of the options --- @@ -22,7 +22,7 @@ Next up is to pick the components for that Try to avoid getting hung up passives. If there's multiple parts that are the same functionality -For actual sourcing & finding links, please refer to the [Part Sourcing](advanced/part-sourcing) guide +For actual sourcing & finding links, please refer to the [Part Sourcing](/advanced/part-sourcing) guide --- From ea4f228baed85e8d437572d3049a654015220efd Mon Sep 17 00:00:00 2001 From: Aditya Vikram Singh Chauhan <113154279+AVSCGREAT@users.noreply.github.com> Date: Mon, 9 Jun 2025 23:56:38 +0530 Subject: [PATCH 30/94] KX-36 RC Offroad BLDC Powered Buggy (#465) * Update submissions.yml * Update submissions.yml --------- Co-authored-by: Cyao --- submissions.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/submissions.yml b/submissions.yml index 79a382b..bded9d0 100644 --- a/submissions.yml +++ b/submissions.yml @@ -1,4 +1,6 @@ projects: + - "https://github.com/AVSCGREAT/KX-36" + - "https://github.com/Navdeep-Codes/Arctron-Arm" - "https://github.com/Matt-ziba/Thrust-O-Matic-Mainboard" - "https://github.com/xsollwa/haptic-joystick-system" - "https://github.com/Everett-DaRizzler/Controller-Keyboard" From 46ab8aa316dbbd15289576b08018aded1fd21326 Mon Sep 17 00:00:00 2001 From: Fastestkyo <157368216+Fastestkyo@users.noreply.github.com> Date: Mon, 9 Jun 2025 23:57:03 +0530 Subject: [PATCH 31/94] Update submissions.yml (#467) --- submissions.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/submissions.yml b/submissions.yml index bded9d0..1190192 100644 --- a/submissions.yml +++ b/submissions.yml @@ -385,3 +385,4 @@ projects: - "https://github.com/EEEYeSeong/AvatarSense" - "https://github.com/Swamstick911/keyboard" - "https://github.com/its-kronos/KeyboardV1" + - "https://github.com/Fastestkyo/fortpad" From 334b4ed6478e7a1eb185a386ad3b961c5f0ef2bd Mon Sep 17 00:00:00 2001 From: Anshuman Tripathy <79320208+ANSHUMANDOCX@users.noreply.github.com> Date: Tue, 10 Jun 2025 20:44:34 +0530 Subject: [PATCH 32/94] Update submissions.yml (#487) --- submissions.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/submissions.yml b/submissions.yml index 1190192..a2dcc6d 100644 --- a/submissions.yml +++ b/submissions.yml @@ -386,3 +386,4 @@ projects: - "https://github.com/Swamstick911/keyboard" - "https://github.com/its-kronos/KeyboardV1" - "https://github.com/Fastestkyo/fortpad" + - "https://github.com/ANSHUMANDOCX/Transmitter_Receiver-Using-ESP32S3" From 1fed184392d5d4d13f5a96def1e9c19949bc215b Mon Sep 17 00:00:00 2001 From: Brandon Zhou Date: Wed, 11 Jun 2025 01:15:16 +1000 Subject: [PATCH 33/94] Add USB-Mic! (#484) --- submissions.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/submissions.yml b/submissions.yml index a2dcc6d..31aa491 100644 --- a/submissions.yml +++ b/submissions.yml @@ -189,6 +189,7 @@ projects: - "https://github.com/DynamicWhiteHat/RCRocket" - "https://github.com/information-fiend/rabbitboard" - "https://github.com/ConfusedHello/DLSR-Gimbal" + - "https://github.com/ConfusedHello/USB-Mic" - "https://github.com/Hex-4/glyph" - "https://github.com/broiisapro/SimRobot" - "https://github.com/TheEternalComrade/The-Scheme-Machine" From fa9a47bd4d4c09cdb2e25f3a4490037321aaf9b4 Mon Sep 17 00:00:00 2001 From: hardwarepro Date: Tue, 10 Jun 2025 11:15:49 -0400 Subject: [PATCH 34/94] Add oled-hackpad (#483) Co-authored-by: Cyao --- submissions.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/submissions.yml b/submissions.yml index 31aa491..d27669a 100644 --- a/submissions.yml +++ b/submissions.yml @@ -387,4 +387,5 @@ projects: - "https://github.com/Swamstick911/keyboard" - "https://github.com/its-kronos/KeyboardV1" - "https://github.com/Fastestkyo/fortpad" + - "https://github.com/hardwarepro/oled-hackpad" - "https://github.com/ANSHUMANDOCX/Transmitter_Receiver-Using-ESP32S3" From 9720ca383b95a74d6bacb71d6234512cc5ddd346 Mon Sep 17 00:00:00 2001 From: Ginobeano <94711504+Choccy-vr@users.noreply.github.com> Date: Tue, 10 Jun 2025 11:16:01 -0400 Subject: [PATCH 35/94] Update submissions.yml (#482) --- submissions.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/submissions.yml b/submissions.yml index d27669a..7c7362d 100644 --- a/submissions.yml +++ b/submissions.yml @@ -1,4 +1,5 @@ projects: + - "https://github.com/Choccy-vr/BeanPad" - "https://github.com/AVSCGREAT/KX-36" - "https://github.com/Navdeep-Codes/Arctron-Arm" - "https://github.com/Matt-ziba/Thrust-O-Matic-Mainboard" From 414ecc00456e4b33221af2a158938648ab44f7d3 Mon Sep 17 00:00:00 2001 From: lou Date: Tue, 10 Jun 2025 18:17:18 +0300 Subject: [PATCH 36/94] Update submissions.yml (#480) Co-authored-by: Cyao --- submissions.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/submissions.yml b/submissions.yml index 7c7362d..37c8531 100644 --- a/submissions.yml +++ b/submissions.yml @@ -388,5 +388,6 @@ projects: - "https://github.com/Swamstick911/keyboard" - "https://github.com/its-kronos/KeyboardV1" - "https://github.com/Fastestkyo/fortpad" + - "https://github.com/v1peridae/v1pernecklace" - "https://github.com/hardwarepro/oled-hackpad" - "https://github.com/ANSHUMANDOCX/Transmitter_Receiver-Using-ESP32S3" From c79cb06ffa8d5116094963f3c99b58589e6f3ff0 Mon Sep 17 00:00:00 2001 From: Armaan Gomes <91099806+arghunter@users.noreply.github.com> Date: Tue, 10 Jun 2025 08:17:23 -0700 Subject: [PATCH 37/94] Update submissions.yml (#479) --- submissions.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/submissions.yml b/submissions.yml index 37c8531..97c18c9 100644 --- a/submissions.yml +++ b/submissions.yml @@ -23,6 +23,7 @@ projects: - "https://github.com/pizzalover125/thing" - "https://github.com/zaid45645/zoltron-v1" - "https://github.com/xsollwa/remote-assist-hand" + - "https://github.com/arghunter/ElectronicThaiPad" - "https://github.com/CodewMilan/byteboard" - "https://github.com/dave9123/lenie" - "https://github.com/souptik-samanta/WalkieTalkie" From b30d62b3f4caff625fcdb5fc842e212aca56917a Mon Sep 17 00:00:00 2001 From: Kevin C <108781095+Synaptic-Odyssey@users.noreply.github.com> Date: Tue, 10 Jun 2025 08:24:18 -0700 Subject: [PATCH 38/94] Update submissions.yml (#478) Co-authored-by: Cyao --- submissions.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/submissions.yml b/submissions.yml index 97c18c9..a0cd770 100644 --- a/submissions.yml +++ b/submissions.yml @@ -1,4 +1,5 @@ projects: + - "https://github.com/Synaptic-Odyssey/Toilet-Paper-Folder" - "https://github.com/Choccy-vr/BeanPad" - "https://github.com/AVSCGREAT/KX-36" - "https://github.com/Navdeep-Codes/Arctron-Arm" From 62b3b7b376bd56760c010597b08f6810d58b8186 Mon Sep 17 00:00:00 2001 From: Sreekar Ramisetty <115044820+Sreekar617@users.noreply.github.com> Date: Tue, 10 Jun 2025 10:24:49 -0500 Subject: [PATCH 39/94] Update submissions.yml (#477) Co-authored-by: Cyao --- submissions.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/submissions.yml b/submissions.yml index a0cd770..e7d8a19 100644 --- a/submissions.yml +++ b/submissions.yml @@ -1,4 +1,5 @@ projects: + - "https://github.com/Sreekar617/yams" - "https://github.com/Synaptic-Odyssey/Toilet-Paper-Folder" - "https://github.com/Choccy-vr/BeanPad" - "https://github.com/AVSCGREAT/KX-36" From f00243603d31b8911dcefdb93d611e724c032a04 Mon Sep 17 00:00:00 2001 From: Sebastian Rentsch <79220215+itsLeatch@users.noreply.github.com> Date: Tue, 10 Jun 2025 17:26:04 +0200 Subject: [PATCH 40/94] I added my project: customLocker. (#476) Co-authored-by: Cyao --- submissions.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/submissions.yml b/submissions.yml index e7d8a19..f1c4b23 100644 --- a/submissions.yml +++ b/submissions.yml @@ -391,6 +391,7 @@ projects: - "https://github.com/Swamstick911/keyboard" - "https://github.com/its-kronos/KeyboardV1" - "https://github.com/Fastestkyo/fortpad" + - "https://github.com/itsLeatch/customLocker" - "https://github.com/v1peridae/v1pernecklace" - "https://github.com/hardwarepro/oled-hackpad" - "https://github.com/ANSHUMANDOCX/Transmitter_Receiver-Using-ESP32S3" From bbec068d2d30ceeedd15f1552cebdb012feabd79 Mon Sep 17 00:00:00 2001 From: Ye Gao <152664000+GaoYeGithub@users.noreply.github.com> Date: Tue, 10 Jun 2025 11:27:54 -0400 Subject: [PATCH 41/94] Ball Spider Mech thiny project (#475) * Update submissions.yml * Update submissions.yml --------- Co-authored-by: Cyao --- submissions.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/submissions.yml b/submissions.yml index f1c4b23..474627e 100644 --- a/submissions.yml +++ b/submissions.yml @@ -306,6 +306,9 @@ projects: - "https://github.com/Flaryiest/65-Keyboard" - "https://github.com/zarahmg/highway-25---zg" - "https://github.com/akshatk-khurana/Zetaboard" + - "https://github.com/GaoYeGithub/RGB-Saber" + - "https://github.com/GaoYeGithub/MechaSpider" + - "https://github.com/Echo-Labs-Development/Leaf" - "https://github.com/mannireis/Integra40" - "https://github.com/devramsean0/train-locs-board" - "https://github.com/Pegoku/Home-Assistant-Control-pad" From d26cc22e82be13e9474a3013fc2247901437e105 Mon Sep 17 00:00:00 2001 From: yousseftech Date: Tue, 10 Jun 2025 18:28:32 +0300 Subject: [PATCH 42/94] Update submissions.yml (#474) Co-authored-by: Cyao --- submissions.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/submissions.yml b/submissions.yml index 474627e..e2cd05f 100644 --- a/submissions.yml +++ b/submissions.yml @@ -394,6 +394,7 @@ projects: - "https://github.com/Swamstick911/keyboard" - "https://github.com/its-kronos/KeyboardV1" - "https://github.com/Fastestkyo/fortpad" + - "https://github.com/yousseftechdev/YT-CNC-Plotter" - "https://github.com/itsLeatch/customLocker" - "https://github.com/v1peridae/v1pernecklace" - "https://github.com/hardwarepro/oled-hackpad" From 4991cf73d3b9aaa529afdb53a94194b4c23aa461 Mon Sep 17 00:00:00 2001 From: Ryan Date: Tue, 10 Jun 2025 11:29:16 -0400 Subject: [PATCH 43/94] Update submissions.yml (#473) Co-authored-by: Cyao --- submissions.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/submissions.yml b/submissions.yml index e2cd05f..ac3bb58 100644 --- a/submissions.yml +++ b/submissions.yml @@ -394,6 +394,7 @@ projects: - "https://github.com/Swamstick911/keyboard" - "https://github.com/its-kronos/KeyboardV1" - "https://github.com/Fastestkyo/fortpad" + - "https://github.com/RyanBran888/keyboard-for-me" - "https://github.com/yousseftechdev/YT-CNC-Plotter" - "https://github.com/itsLeatch/customLocker" - "https://github.com/v1peridae/v1pernecklace" From 2639c78cae816e9a2007ef15acbaaa1e19814337 Mon Sep 17 00:00:00 2001 From: Programer24 <109965350+Programer6@users.noreply.github.com> Date: Tue, 10 Jun 2025 17:30:38 +0200 Subject: [PATCH 44/94] Add Keycool 84 Keyboard (#472) * Update submissions.yml * Update submissions.yml --------- Co-authored-by: Cyao --- submissions.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/submissions.yml b/submissions.yml index ac3bb58..5e334e6 100644 --- a/submissions.yml +++ b/submissions.yml @@ -76,6 +76,7 @@ projects: - "https://github.com/Dragon863/CFWatch/" - "https://github.com/hunkegg/biblicallyaccuratekeyboard" - "https://github.com/Programer6/Laser-Engraving-Machine" + - "https://github.com/Programer6/Keycool-84-Keyboard" - "https://github.com/EwoudVV/drawbot" - "https://github.com/matebuteler/36to48" - "https://github.com/mynameisashllee/flora" From fe2477299c39061d3d5e49bed4042d73306e4ecc Mon Sep 17 00:00:00 2001 From: AayanShaikh007 <139200661+AayanShaikh007@users.noreply.github.com> Date: Tue, 10 Jun 2025 11:31:12 -0400 Subject: [PATCH 45/94] Update submissions.yml (#471) Co-authored-by: Cyao --- submissions.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/submissions.yml b/submissions.yml index 5e334e6..9e00f72 100644 --- a/submissions.yml +++ b/submissions.yml @@ -394,6 +394,7 @@ projects: - "https://github.com/EEEYeSeong/AvatarSense" - "https://github.com/Swamstick911/keyboard" - "https://github.com/its-kronos/KeyboardV1" + - "https://github.com/AayanShaikh007/keyboard" - "https://github.com/Fastestkyo/fortpad" - "https://github.com/RyanBran888/keyboard-for-me" - "https://github.com/yousseftechdev/YT-CNC-Plotter" From 5c9af10177f9c318f07c526cc713c9c575b4f9a7 Mon Sep 17 00:00:00 2001 From: thorthefish <155587435+thorthefish@users.noreply.github.com> Date: Tue, 10 Jun 2025 09:33:12 -0600 Subject: [PATCH 46/94] Update submissions.yml (#470) Co-authored-by: Cyao --- submissions.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/submissions.yml b/submissions.yml index 9e00f72..d7a1cc1 100644 --- a/submissions.yml +++ b/submissions.yml @@ -394,6 +394,7 @@ projects: - "https://github.com/EEEYeSeong/AvatarSense" - "https://github.com/Swamstick911/keyboard" - "https://github.com/its-kronos/KeyboardV1" + - "https://github.com/thorthefish/CAD-PAD" - "https://github.com/AayanShaikh007/keyboard" - "https://github.com/Fastestkyo/fortpad" - "https://github.com/RyanBran888/keyboard-for-me" From 50f9d8d8fc8995be2ae284c428470e8056a3f1ff Mon Sep 17 00:00:00 2001 From: goldfishgaming33 <86682629+goldfishgaming33@users.noreply.github.com> Date: Tue, 10 Jun 2025 16:36:21 +0100 Subject: [PATCH 47/94] Update submissions.yml (#469) add SS-RPi to highway Co-authored-by: Cyao --- submissions.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/submissions.yml b/submissions.yml index d7a1cc1..234ad2f 100644 --- a/submissions.yml +++ b/submissions.yml @@ -394,6 +394,7 @@ projects: - "https://github.com/EEEYeSeong/AvatarSense" - "https://github.com/Swamstick911/keyboard" - "https://github.com/its-kronos/KeyboardV1" + - "https://github.com/goldfishgaming33/SS-RPi" - "https://github.com/thorthefish/CAD-PAD" - "https://github.com/AayanShaikh007/keyboard" - "https://github.com/Fastestkyo/fortpad" From 23fb30b346e533ad2b620b794a81b9be0046b7d7 Mon Sep 17 00:00:00 2001 From: Layan Jethwa <84594346+LayanJethwa@users.noreply.github.com> Date: Tue, 10 Jun 2025 16:37:56 +0100 Subject: [PATCH 48/94] Update submissions.yml (#468) Co-authored-by: Cyao --- submissions.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/submissions.yml b/submissions.yml index 234ad2f..79a0678 100644 --- a/submissions.yml +++ b/submissions.yml @@ -394,6 +394,7 @@ projects: - "https://github.com/EEEYeSeong/AvatarSense" - "https://github.com/Swamstick911/keyboard" - "https://github.com/its-kronos/KeyboardV1" + - "https://github.com/LayanJethwa/graphical-calculator" - "https://github.com/goldfishgaming33/SS-RPi" - "https://github.com/thorthefish/CAD-PAD" - "https://github.com/AayanShaikh007/keyboard" From 285e76cb7c5d40f8e9d23d0065c4e3e51d047ed1 Mon Sep 17 00:00:00 2001 From: Victor Jiao <160680951+BigBrain244466666@users.noreply.github.com> Date: Tue, 10 Jun 2025 11:42:13 -0400 Subject: [PATCH 49/94] Update submissions.yml (#486) Co-authored-by: Cyao --- submissions.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/submissions.yml b/submissions.yml index 79a0678..bce5cfc 100644 --- a/submissions.yml +++ b/submissions.yml @@ -399,6 +399,7 @@ projects: - "https://github.com/thorthefish/CAD-PAD" - "https://github.com/AayanShaikh007/keyboard" - "https://github.com/Fastestkyo/fortpad" + - "https://github.com/BigBrain244466666/PCB-Mill" - "https://github.com/RyanBran888/keyboard-for-me" - "https://github.com/yousseftechdev/YT-CNC-Plotter" - "https://github.com/itsLeatch/customLocker" From 9077393ad0cf5a7a0054fabe89f1aeda2cd61097 Mon Sep 17 00:00:00 2001 From: acon <101356372+acornitum@users.noreply.github.com> Date: Tue, 10 Jun 2025 14:51:09 -0400 Subject: [PATCH 50/94] add zack freedman ama --- app/views/events/index.html.erb | 27 ++++++++++++++++++++++++++- public/zackama.png | Bin 0 -> 2873883 bytes 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 public/zackama.png diff --git a/app/views/events/index.html.erb b/app/views/events/index.html.erb index 2f6abba..cf3b0b8 100644 --- a/app/views/events/index.html.erb +++ b/app/views/events/index.html.erb @@ -5,7 +5,7 @@ -

Events

+

Upcoming Events

Check this page for events - like game nights, speedruns, showcases, and more - that we'll be hosting throughout Highway!

Note that events default to 0 points given unless otherwise stated.

@@ -14,6 +14,23 @@
+ <%# zack freedman ama %> + +
+

Zack Freedman AMA @ Thursday June 12, 4PM EDT!

+

Posted 10/6/2025

+
+
+

We're hosting an AMA with Zack Freedman! He's got 623k subscribers on YouTube, with videos ranging from + testing every fillament on Amazon, + to his own builds from Gridfinity + to a heads-up display.

+

AMA stands for Ask Me Anything; it's an hour-long session on Zoom where YOU can ask Zack Freedman anything! From what his craziest story is, to his next project, to tips when facing hurdles. He'll be there to interact with you - LIVE!

+

Come prepared with your questions! Zoom link will be sent by email day-of.

+
+ <%= image_tag "/zackama.png", style: "", class: "" %> +
+ <%# strange parts ama %>
@@ -28,6 +45,14 @@
<%= image_tag "/showandtell.png", style: "", class: "" %>
+ + + +

Past Events

+ +
+ + <%# project building call %>

Project Building Call @ Wednesday June 4, 7-11PM EDT!

diff --git a/public/zackama.png b/public/zackama.png new file mode 100644 index 0000000000000000000000000000000000000000..90a9645da8d28c53cae8a632ce6812f9d241dc94 GIT binary patch literal 2873883 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

yNI%3KO1(RHCDx->0Qb_0#hS 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