Maker Hacks

Ideas, news & tutorials for makers and hackers – Arduino/Raspberry Pi, 3D printing, robotics, laser cutting, and more

  • Home
  • About Maker Hacks
  • Blog
  • YouTube Channel
  • Recommendations
  • Contact
You are here: Home / Maker Hacks Blog

Laser Cut Box for the Massive Adafruit Arcade Button

Chris Garrett

Adafruit Arcade Button Enclosure
Adafruit Arcade Button Enclosure

The “Massive Adafruit Arcade Button” is one of my favorites, I just find it comically large. Therefore whenever I get a chance to specify this particular button, I jump at it.

As luck would have it, I am building a project for an event the company I now work for is holding. I will write about the Python and Pi side after the event, but today I put together the enclosure, and I think for the laser cutter owners, it might come in handy.

I cut it out on 3mm baltic birch plywood and I also cut an extra top in black acrylic, which I think looks a little nicer and goes with the black screen enclosure I am using.

Cutting the enclosure on my Glowforge

For this project I used my new laser, the Glowforge (review here), and like my K40, it accepts SVG files. You can find the SVG document at Thingiverse here.

While the file I used for cutting was the SVG, the project started life as a Fusion 360 CAD design. 

Fusion 360 CAD model

To ensure everything would fit together, the model is made up of 3mm thick walls. Tabs are drawn into the sketches, and I used the split body tool to use a wall or the roof as a cutting tool to ensure each piece “cut” into the next.

For the vector files I finished with creating new sketches from each face and exporting them as DXF.

A few mistakes I made that you will surely avoid:

  1. I used an Adobe Illustrator template someone in the Glowforge community shared to ensure my layout would fit on the bed, but forgot to set it to metric. A quick bit of scaling math put me on track.
  2. There was an opportunity to use some scrap acrylic but I made the design just too big. Next time I will work backwards from the material if that is an option. Fortunately , it fit together first time.
  3. “To save time” I didn’t build the design using parametric variables (eg. “thickness” rather than specifying 3mm). Now it is harder to repurpose in future for different materials. D’oh.

Despite those mistakes I think it came out pretty well. I just hope it survives the trip to Texas!

by Chris Garrett Filed Under: Hacks, Tips, and Tutorials Tagged With: design 3d, electronics, laser engraving, steemmakers

Build a Macro Keyboard “Stream Deck” with Raspberry Pi Zero and Hyperpixel 4.0 Graphical Touch Screen

Chris Garrett

Can you build a DIY version of the Elgato Stream Deck? Many people could tell this is what I was building up to. I think we are getting a lot closer.

This, of course, continues my previous Raspberry Pi Zero keyboard emulation article. Where that project used an obnoxiously large red button, however, this project is all graphical. This means you have enormous flexibility and limitless possibilities in what you can achieve with this little macro monster!

The way it works is we build a graphical button interface with Python. When a button is pressed we send an assigned keyboard combination over USB to the host machine, so the machine responds as if a keypress has been activated (because in a way, it has).

Whatever software is running, responds accordingly. That could be OBS, a game, Photoshop, whatever your macro keyboard combination heart desires.

View this post on Instagram

A post shared by Maker Hacks DIY Projects (@maker_hacks) on Sep 22, 2018 at 12:39pm PDT

The Hardware

This is all made possible by, naturally, the Pi Zero, plus the Pimoroni Hyperpixel 4 touch screen for the Raspberry Pi. It is high resolution and has a high frame rate. Now, of course, you could go with a cheaper touch screen, and you might question why my basic buttons justify it, but eventually I will have more high resolution buttons and that 800 pixel wide screen will definitely come in handy.

Now there is a downside of this screen – it uses ALL the pins. No biggy for this, seeing as I only need the screen and USB, but something to take into account.

The Code

For this project I used tkinter, as I felt it was the most direct for what I needed, and it only needs to run on my mac (for development and testing) and on the Pi Zero (Linux) for actual execution.

You could easily do this in Qt5 or whatever your GUI toolkit of choice, heck you could probably do it in Pygame, but this works for what I need.

As before, the keyboard signals are sent using codes to /dev/hidg0 as if we are writing a file. This automagically sends along the codes to the host computer.

Follow the previous article linked resources for how to set your Pi Zero up for this to work.

When a button is pressed we call our button_click function which checks against our pre-determined list and fires off the keypress combinations. For now I am using a-e, but in actual usage I will find some keyboard combinations that don’t conflict with normal usage.

My buttons are aligned in a grid, which is all conveniently handled by the TK features. I just need to load in six images and create my six buttons (I will also have start and stop buttons for streaming most likely, my high resolution touch screen will accommodate more).

# modules
import time
import tkinter as tk
from PIL import Image, ImageTk


# initialise tk
root = tk.Tk()


# function to send the key data
def write_report(report):
    with open('/dev/hidg0', 'rb+') as fd:
        fd.write(report.encode())


# click event
def button_click(caller):
    print("Button: {} was clicked, sending keypress".format(caller))

    if "button1" == caller:
        write_report("\0\0\4\0\0\0\0\0")
    elif "button2" == caller:
        write_report("\0\0\5\0\0\0\0\0")
    elif "button3" == caller:
        write_report("\0\0\6\0\0\0\0\0")
    elif "button4" == caller:
        write_report("\0\0\7\0\0\0\0\0")
    elif "button5" == caller:
        write_report("\0\0\10\0\0\0\0\0")
    else:
        write_report("\0\0\11\0\0\0\0\0")

    time.sleep(0.2)
    write_report("\0\0\0\0\0\0\0\0")


# load icons
image = Image.open("a.png")
photoa = ImageTk.PhotoImage(image)

image = Image.open("b.png")
photob = ImageTk.PhotoImage(image)

image = Image.open("c.png")
photoc = ImageTk.PhotoImage(image)

image = Image.open("d.png")
photod = ImageTk.PhotoImage(image)

image = Image.open("e.png")
photoe = ImageTk.PhotoImage(image)

image = Image.open("f.png")
photof = ImageTk.PhotoImage(image)



# add buttons
button1 = tk.Button(root, compound=tk.CENTER, image=photoa, text="Button 1", command=lambda: button_click('button1'))
button1.grid(row=0, column=0)

button2 = tk.Button(root, compound=tk.CENTER, image=photob, text="Button 2", command=lambda: button_click('button2'))
button2.grid(row=0, column=1)

button3 = tk.Button(root, compound=tk.CENTER, image=photoc, text="Button 3", command=lambda: button_click('button3'))
button3.grid(row=0, column=2)

button4 = tk.Button(root, compound=tk.CENTER, image=photod, text="Button 4", command=lambda: button_click('button4'))
button4.grid(row=1, column=0)

button5 = tk.Button(root, compound=tk.CENTER, image=photoe, text="Button 5", command=lambda: button_click('button5'))
button5.grid(row=1, column=1)

button6 = tk.Button(root, compound=tk.CENTER, image=photof, text="Button 6", command=lambda: button_click('button6'))
button6.grid(row=1, column=2)


# start the event loop
root.mainloop()

by Chris Garrett Filed Under: Hacks, Tips, and Tutorials Tagged With: programming, python, raspberry pi, steemmakers

Detect (and list) Raspberry Pi and other boards on your network

Chris Garrett

I am in the fun position of having a Raspberry Pi project to build for my day job. It brought to light a familiar challenge of how to trouble-shoot and connect to headless Raspberry Pi boards when you don’t necessarily know the host or IP address.

Instead of grabbing a HDMI cable (and converter), monitor, and keyboard, run this Python script from a familiar command line (might need to run as sudo) to get a color-coded output something like the following:

Code

You will need python-nmap module installed.

Get the full code here at this gist.

The bulk of the heavy lifting is in these lines:

nm = nmap.PortScanner()
nm.scan('10.0.1.0/24', '22')

There we are scanning my local IP addresses and the SSH port, port 22.

Once done (can take a few seconds, depending on the size of your network), you can go ahead and iterate over the results:

for host in nm.all_hosts():

(I sort the results but as the IP addresses are not padded with 0, the order is not exactly numerical even after sorting.)

All that is left is to output the info we want, along with a sprinkle of ANSI color coding for good measure:

print(u"\u001b[37m" + "{} ({}) {}\u001b[0m".format(nm[host].hostname(), host, mac))

This sets the forecolor to white, outputs the hostname, IP, and MAC address, then resets the text color.

Extending the code

Of course, this is useful for more than just seeing what your Pi is called or the IP address. Gathering hostnames and mac address could be used for logging the devices on your wifi network over time, or even announce your entry to the building (example previously using Bluetooth).

by Chris Garrett Filed Under: Hacks, Tips, and Tutorials Tagged With: esp8266, programming, python, raspberry pi

USB Keyboard Emulation with the Raspberry Pi Zero

Chris Garrett

One of the many productivity-boosters my nerd friends look to is text expanders and keyboard shortcuts.

You know, enter a combination of keypresses, and out pops a signature, particular animated gif, or an often-used regular expression.

I was about to launch into setting something like this up, and then Amazon Prime Day reminded me of the Elgato Stream Deck. It’s a box of buttons for automating tasks using macros, usually as the name implies, for streaming shows for things like switching cameras and moderating the chat.

Yeah, it’s pretty neat, but just look at the price.

Could I create (bodge) something more basic for cheap? Heck yeah I can!

One of my mini-projects on my Steemit build blog was a mouse emulator using the accelerometer on the Circuit Playground Express. 

For this, however, the Raspberry Pi offers more possibilites, especially if down the line I want to mimic the sneaky way the Elgato gets those graphical buttons.

Thank you Random Nerd

One of the wonderful things about the Raspberry Pi community is if you can think of a project, someone out there has done at least part of it.

This project was greatly helped by Random Nerd Tutorials. This article did most of the heavy lifting! Just follow the instructions to get your HID set up.

Next thing I needed was the codes for the keypresses I had in mind, and to wire up my big-assed button.

Sending Keyboard character codes

Using this document (Table 12) you can see each keyboard entry has a code. The system of communicating as a keyboard over USB requires these codes as part of an 8 byte message. 

So to send the letter ‘a’, you would need to send the character code 4. 

But how do you send upper case ‘A’? Or combinations such as CTRL-C?

This article provided the answer. 

Input reports (sent from keyboard to computer) have the following structure for a total of 8 bytes:

  • 1 byte: modifier keys (Control, Shift, Alt, etc.), where each bit corresponds to a key
  • 1 byte: unused/reserved for OEM
  • 6 bytes: pressed key codes

Further into the article, there is a list of the modifiers, each represented by a bit:

  1. Left Control: 224 (0x00e0)
  2. Left Shift: 225 (0x00e1)
  3. Left Alt: 226 (0x00e2)
  4. Left Meta (Windows key): 227 (0x00e3)
  5. Right Control: 228 (0x00e4)
  6. Right Shift: 229 (0x00e5)
  7. Right Alt: 230 (0x00e6)
  8. Right Meta (Windows key): 231 (0x00e7)

For firing my screenshot app, I need CMD-SHIFT-5, so I need to set the 2nd and 4th bits on.

0b01010000

Buttons!

You don’t need an obnoxiously large red button like mine, any push button will do. In fact, you could just use wires and tap them together. The code just needs to see if the two pins are connected or not.

We simply connect one digital pin and ground. For my project, I chose pins 25 and 26.

Obviously, the Pi Zero needs to be connected to your computer with USB.

Code

All that is left is the code. As mentioned above, it takes heavily from the article I linked earlier, but with a check for the pin (in this case 26) going low (ie, connected to ground). 

We send the data to the HID device, being careful to send the correct modifier bits, plus the encoded six bytes for the key press we wish to emulate.

Get the full code at this Gist here.

import time
import RPi.GPIO as GPIO

# We are going to use the BCM numbering
GPIO.setmode(GPIO.BCM)

# Set pin 26 as input using pull up resistor
GPIO.setup(26, GPIO.IN, pull_up_down=GPIO.PUD_UP)


# function to send the data
def write_report(report):
    with open('/dev/hidg0', 'rb+') as fd:
        fd.write(report.encode())

# infinite loop to check the pins and send data
while True:
    if not(GPIO.input(26)):

        # shift-cmd-5
        shift_cmd_5 = str(0b01010000) + "\0\x22\0\0\0\0\0"
        write_report(shift_cmd_5)
        print("SNAP!!")
        time.sleep(0.2)
        write_report("\0\0\0\0\0\0\0\0")

by Chris Garrett Filed Under: Hacks, Tips, and Tutorials Tagged With: programming, python, raspberry pi

Best K40 Laser Upgrades – Upgrading my Laser Engraver Part 3

Chris Garrett

I am on a mission to make my Chinese K40 Laser Engraver work like a much more expensive USA name-brand machine. 

Update to Part 2 – Brain Boosting

Previously, I bought and installed a new mainboard of electronics, and a filter for the pungent smoke. 

I am happy to say, while the filter still feels a let-down, the Smoothie board has been a fantastic success when combined with the LightBurn software. Read about the purchase in the previous article.

Grey-Scale Control Using the Smoothie Board and LightBurn

Optics Upgrade

While the laser was meant to have been unused, I did notice some wear, either from actual use, or just as likely, testing. Also, from what I could tell, the optics were not the best.

I bought a lot of moist cleaning wipes, but really I needed new mirrors and a lens. 

Cleaning is essential to get the best out of a 40w laser

I went ahead and bought some not-top-of-the-line-but-good ones.

Right away I seemed to get more power and cleaner lines out of the machine.

Bed Removal

The K40 comes with a metal bed that seems like a good idea, but in fact it makes focusing the laser more difficult, because your z height is not adjustable, and obviously focus is vital if you are going to get clean, strong cuts.

Bed begone!

Once I had removed the bed, I could cut a focus-tool and stack material under the workpiece to allow me to position the piece 50.8mm from the base of the lens. This is the sweet-spot for “top focus” (ie. engraves), then you compensate appropriately for deeper cuts.

Air Assist

To mitigate the charring and smoke, which is not just an issue on the workpiece, but also damages the lens, I bought an air-assist nozzle. Now, some experts say you don’t want to do it this way – the air should blow horizontally – but for now it will be an improvement on no air.

Another speed bump here. My airbrush compressor would not switch on, regardless of how I set the pressure dial, plus the connections were of the wrong type.

Fortunately, I have an air pump that runs off D batteries for inflating, well, inflatables. Things like camp beds and floaties.

Exhaust

  • Inline Bilge Pump
  • Requires 12v into +/- 
  • Venting far, far away

As mentioned, the air filter didn’t really filter anything. For now I am using an inline pump (12v) and piping the smoke out of the garage using an extension tube. It’s better, but I am hoping new pumps/fans I have ordered to test will do a better job.

Clean power with UPS

I was getting some strange chatter in comms between the Dell laptop and the laser. The USB cable I bought along with the Smoothie board was supposedly good quality, so assuming it was power fluctuations, I bought a new UPS for the office and placed my old one out in the garage.

UPS is probably a good idea for long jobs anyways

Seemed to help a lot – especially when I blew power using the shop vac AND 3d printing AND running the CNC AND the laser.

What next?

Right now, in total, I have probably spent around $1,300 CAD, including the laser itself. That’s still giving me a lot of room to upgrade, considering even the most basic Glowforge is, what, $2,500 USD before shipping? And a Full Spectrum or Trotech would be much more than that.

The smoke extraction and ventilation is still not great. I need to add those new fans, and seal up the laser case. It’s bad enough breathing the glue from plywood, without adding acrylic fumes and such.

Next, cooling. These laser tubes operate best below 18c and even before firing the laser the ambient temperature out in the garage has been hitting 35c.

The bucket of distilled water approach to cooling was not going to work for me.

Yeah, lots of people swear by it, and it is the cheap solution, but I could already tell for my situation it wasn’t ideal.

I ordered a CW-5200 industrial chiller. It’s an actual chiller, as it refrigerates rather than just circulates water. So far after the laser, it is my biggest purchase for this setup. The more reasonably priced 3000 is just a commercial version of the bucket approach.

It’s sat in the house waiting for me to feel fit and strong right now, I will report back with another update.

Expensive, but probably cheaper long-term than lots of laser tubes

by Chris Garrett Filed Under: Reviews and Buying Guides Tagged With: art, cnc, design3d, diy, steemmakers

Modify STL CAD files for CNC or 3D Print using Python Programming

Chris Garrett

modify stl files with python code
modify stl files with python code

We are pretty familiar at this point with the 3D design creation workflow. Drawing, dragging and dropping CAD files using a mouse and a package such as Fusion 360, or a browser-based application, such as Onshape.

What, though, if you have to create a whole bunch of personalised objects? Opening, editing, exporting doesn’t take long per item, but if you have 100, that soon adds up to quite a chore!

A member of a Facebook group had just that issue. They needed to add consecutive serial numbers to a vape design he had created. Initial order was 100 items.

People suggested printing the vapes then lasering the serial numbers. Or maybe hand engraving.

What if you could generate the files with code?

Generating and modifying STL CAD files with Python

View the full code for this project in this Gist.

Openscad allows us to generate CAD files in code, but if I am going to create a workflow then I like to use my swiss army knife which is Python. Well it turns out generating CAD in Python is a solved problem too!

Enter Solid Python.

Solid Python is a Python wrapper around Openscad. All the power of CAD, with all the flexibility and libraries of Python.

from solid import * 
d = difference()( cube(10), sphere(15) )
print(scad_render(d))

If you are familiar with SCAD and Python syntax then that will make more sense than if not, obviously. Essentially here we are simply using the Solid library to create an object which is a sphere-shaped hole in a cube.

Rendering outputs the CAD code, and it can be printed to the screen or saved to a file.

Modifying STL files

In OpenSCAD we can modify an STL using the following import syntax:

import("base.stl");

It wasn’t documented, but I found in the code, that Solid has an equivalent feature:

a = import_stl("base.stl")

So having our base STL loaded, all we need to do is add our appropriate text.

(In my case I am adding text to an edge-lit acrylic sign base that I had designed quickly in Tinkercad, you will need your own STL file and coordinates for the text)


a = import_stl("base.stl") + translate([5, -37, 10])(
linear_extrude(height=2, convexity=4)(
text(annotation,
size=8,
font="helvetica",
halign="center",
valign="center")))


Using the text object we can add arbitrary text (here using a string called annotation), choosing font family, size, and so-on, but we need that extrude to add depth.

We position this text using translate and the appropriate coordinates.

Generating the new STL CAD file

We could copy and paste the rendered code, but that would still be a chore for 100, so we need to automate OpenSCAD to generate STL files.

I got a little fancy and also generated a preview image and displayed it so I could see what it was doing, but you could obviously skip that aspect!

scad_render_to_file(a, outfile)

os.system("openscad {} -o {}".format(outfile, stlfile))

os.system("openscad --preview --imgsize=512,512 {} -o {}".format(outfile, outimage))
picture = Image.open(outimage).show()

Bottom Line

I am sure now you can extrapolate how using this approach, and supplying an appropriate string for the annotation and an output filename, you could generate hundreds of custom 3D objects ready to CNC or 3D print.

Go try it and let me know how it works out for you!

by Chris Garrett Filed Under: Hacks, Tips, and Tutorials Tagged With: cnc, design3d, printing3d, programming, python

Upgrading a Chinese K40 Laser Cutter to USA Brand-Name Quality

Chris Garrett

Previously I mentioned my Chinese K40 40w laser and how I was planning some upgrades. This is the first follow up – this weekend I fitted a couple of them and did some test cuts!

  • Smoothie board replacement for the main GRBL controller board
  • Activated Carbon filter
  • Lightburn software

Can the upgraded machine achieve USA Brand-Name laser quality, at 1/10 the price? Let’s see …

Smoothie Controller

I bought my controller and software license from Cohesion3D.

This board is a 1:1 replacement for the existing electronics, but offers much better performance. While the original board “works”, using my upgrade I have more control, using PWM to fire the laser, giving the opportunity for greyscale rather than simply power the laser on/off.

Technology-wise you can see a visible improvement, due to the higher performance processor and more advanced firmware (lots of math that I don’t understand!).

It took me minutes to swap out the boards without checking instructions. Unfortunately, I did have to swap one stepper around due to the controls driving the laser head in the wrong direction 😉

2018-06-24 16.27.01-1.jpg

This upgrade alone has seen a huge increase in capability and performance. Highly recommended!

Air Filter

This was a bit more of a let-down. Not because of the principal, or even necessarily the product, but my experience with my filter specifically was sub-par.

When I opened the box it was full of carbon, the packet had burst, plus the filter itself appears used. I will contact Amazon.

2018-06-24 16.58.55.jpg

If I don’t manage to get a replacement or instructions to put it right, I may just go with a longer hose. I’m not keen on the idea of making a whole in my garage wall right now.

Software Upgrade

I’m a big fan of Open Source, but there are times when free software just doesn’t … um … cut it 😉

LightBurn will appear familiar to people who are accustomed to the software that often comes with laser cutters, but this software is in English and actually works.

So, while it operates in a familiar way, it produces better results.

Previously, I had been using InkScape and a plugin, then a GRBL sender. I will probably continue to create my vectors in InkScape, but this software handles SVG files well, and allows you to finely control speeds and power.

Definitely check this software out.

Next Upgrades

Next time I will work on the lenses, mirrors, air assist, and try and resolve the lack of Z axis/focus …

by Chris Garrett Filed Under: Makes, Tests, and Builds Tagged With: cnc, laserengraving, reviews

Upgrading my K40 for quality and abilities!

Chris Garrett

K40 laser

2018-04-28 17.45.12.jpg

My K40 laser is the most humble of its kind, having analog dial and controls, and basic optics. Even so, the results are fine.

Now my mission is to take this little Chinese laser and bring it up to the 21st Century.

1. Optics

2018-05-08 11.51.19-1.jpg

The default mirrors and lenses are built to a price point, not for quality. As is the rest of the machine, really.

My laser was a private sale, and supposedly had never been used. Unfortunately there was signs of dirt or wear on my mirrors, and cleaning only helped so much.

I was blaming my own lack of ability in calibrating until my friend Ben discovered the truth.

To prevent that happening again, I also ordered an Air Assist nozzle. This will allow me to use my airbrush compressor to gently blow sticky and smoky substances that offgas during the lasering, away from the lens and the cutting focus.

Taking of focus, I am removing the stock bed to allow me to adjust z-height.

2. Electronics

As I mentioned above, my machine uses an analog dial and has an analog readout. This is fine, but it also does not allow fine control or per-layer control in software. It’s a dumb controller essentially.

To upgrade my electronics and allow the use of more sophisticated software, I ordered a Smoothie-based board.

Smoothie has many advantages over 8-bit controller computation abilities, allowing for smoother and more controlled geometry in cuts and engraves – at least that is the theory!

3. Exhaust

Not really an upgrade to quality, but there will be a benefit to abilities.

It’s an activated carbon filter, which will allow me to cut and engrave more stinky materials with less worry about the stench getting into the house, lungs, or neighbors.

Will it work?

I will let you know when it is all fitted, but even with all this expense, the final thing will still only be a small percentage of buying a name brand laser!

by Chris Garrett Filed Under: Reviews and Buying Guides Tagged With: art, cnc, design, k40, laser, making design3d, technology, upgrades

Announce Your Entry with Raspberry Pi, Python and Bluetooth

Chris Garrett

program bluetooth on raspberry pi with python

program bluetooth on raspberry pi with python

Did you ever want to have your return to your office or home announced with a fanfare?

Probably not, but let’s do this anyway 😉

This script will use Bluetooth (built into the Raspberry Pi 3) to detect when your phone is nearby, and if detected will play the MP3 of your choice!
[Read more…]

by Chris Garrett Filed Under: Hacks, Tips, and Tutorials Tagged With: making, programming, python, raspberry pi, technology

Linux Automation Tip: How to Send Messages from Python to Your Slack Channels

Chris Garrett

Slack is a hugely popular live group chat system. While a lot of my notifications now go to Discord, as I wrote about here, Slack is still more popular with development teams, and it is what we use in my day job. Being able to notify your team when something happens programmatically can be very useful, and helps cut down on inbox clutter. Let’s see how you can easily do that in your own tools. [Read more…]

by Chris Garrett Filed Under: Hacks, Tips, and Tutorials Tagged With: linux, making, programming, python, raspberry pi

  • « Previous Page
  • 1
  • …
  • 4
  • 5
  • 6
  • 7
  • 8
  • …
  • 16
  • Next Page »

The website for makers and hackers – Arduino, Raspberry Pi, 3D Printing and more

Get fresh makes, hacks, news, tips and tutorials directly to your inbox, plus access to the 30 Days to Arduino course

Recently Popular

  • How to choose the right 3D printer for you
  • Glowforge Review – Glowforge Laser Engraver Impressions, Plus Glowforge Versus Leading Laser Cutters
  • Original Prusa i3 Mk3S Review
  • Best 3D Printing Facebook Groups
  • Elegoo Mars Review – Review of the Elegoo Mars MSLA Resin 3D Printer
  • Glowforge ‘Pass-Through’ Hack: Tricking the Front Flap of the Glowforge with Magnets to Increase Capacity
  • How to Make a DIY “Internet of Things” Thermometer with ESP8266/Arduino
  • Wanhao Duplicator i3 Review
  • IKEA 3D Printer Enclosure Hack for Wanhao Di3
  • Creality CR-10 3d printer review – Large format, quality output, at a low price!
  • 3D Printed Tardis with Arduino Lights and Sounds
  • Anet A8 Review – Budget ($200 or less!) 3D Printer Kit Review
  • Make your own PEI 3D printer bed and get every print to stick!
  • Upgrading the Wanhao Di3 from Good to Amazing
  • How to Install and Set Up Octopi / Octoprint
  • Creality CR-10 S5 Review

Copyright © 2021 Maker Hacks