Author: Marcus Kelly

  • Gridfinity Cut Template in Blender 4.2

    We start by setting up the environment. Under the Scene properties change the Unit Scale 0.001 and change the Length to Millimeters.

    Under overlays change the Scale to 0.001.

    Turn on X-Ray mode. this allows you to select all vertexes on a plane.

    Change to the Z-Axis, select two vertexes and enter 41.5/2 in the transformation box where the axis is 1.

    Repeat this for all sides. Make sure to note the negative symbol and enter -41.5/2 instead.

    Change to the y axis. Type G Z 3.65

    Change to Edge select mode.

    Select one of the edges and then hold shift when selecting the other 3 edges.

    With the cursor over the view area type CTRL+B for bevel. If the bevel box is not displayed in full find it at the bottom of the screen and expand it. Set Width to 7.5/2 and the Segments to 10.

    Select the bottom edge type G Z -.15 bevel again with CTRL+B

    Set the width to 2.15 and the Segments to 1.

    Type G Z -1.8.

    Type G Z -.07.

    Type CTRL-B set width to 0.7 and Segments to 1.

  • Screw Hole Sizes for 3D Printing

    This is a quick reference table for screw hole sizes when designing for 3D printing so you don’t have to ask google every time you need a hole size.

    SizeTapClearanceHeat Set
    Insert
    TightNormalLoose
    M21.6mm2.2mm2.4mm2.6mm3.2mm
    M32.5mm3.2mm3.4mm3.6mm5.2mm
    M43.3mm4.3mm4.5mm4.8mm6.2mm
    M54.2mm5.3mm5.5mm5.8mm7.0mm
    M65.0mm6.4mm6.6mm7.0mm8.0mm

  • Octoprint on HP Mini

    Buy HP Mini on Amazon [Affiliate Link]

    I followed the tutorial at https://community.octoprint.org/t/setting-up-octoprint-on-a-raspberry-pi-running-raspberry-pi-os-debian/2337
    some minor adjustments were made to get it running on the HP mini

    this tutorial was tested on Ubuntu 22.04.2 LTS Server and 24.04.2 LTS Server

    Setup main environment

    cd ~
    sudo apt update
    sudo apt install python3 python3-pip python3-dev python3-setuptools python3-venv git libyaml-dev build-essential libffi-dev libssl-dev
    mkdir OctoPrint && cd OctoPrint
    python3 -m venv venv
    source venv/bin/activate

    Setup octoprint

    pip install --upgrade pip wheel
    pip install octoprint

    Setup serial access

    sudo usermod -a -G tty [username]
    sudo usermod -a -G dialout [username]
    
    logout

    Log back in and start the octoprint server
    OctoPrint/venv/bin/octoprint serve

    you should be able to now visit
    http://[ip address]:5000

    you can press ctrl+c to end the octoprint server

    Create a file /etc/systemd/system/octoprint.service and put this into it:


    [Unit]
    Description=The snappy web interface for your 3D printer
    After=network-online.target
    Wants=network-online.target

    [Service]
    Environment="LC_ALL=C.UTF-8"
    Environment="LANG=C.UTF-8"
    Type=exec
    User=[username]
    ExecStart=/home/[username]/OctoPrint/venv/bin/octoprint serve

    [Install]
    WantedBy=multi-user.target

    enable the service to auto boot

    
    sudo systemctl enable octoprint.service

    start the service

    
    sudo service octoprint {start|stop|restart}

    setup webcam functionality


    cd ~
    sudo apt install subversion libjpeg8-dev imagemagick ffmpeg libv4l-dev cmake
    git clone https://github.com/jacksonliam/mjpg-streamer.git
    cd mjpg-streamer/mjpg-streamer-experimental
    export LD_LIBRARY_PATH=.
    make

    ./mjpg_streamer -i "./input_uvc.so -y" -o "./output_http.so"

    In OctoPrint
    Stream URL: http://[ip address]/webcam/?action=stream
    Snapshot URL: http://127.0.0.1:8080/?action=snapshot

    Restart OctoPrint: sudo service octoprint restart
    Restart system: sudo shutdown -r now
    Shutdown system: sudo shutdown -h now

    Under Settings > Features > Webcam & Timelaps
    Path to FFMPEG: /usr/bin/ffmpeg

    Webcam Automatic Start

    cd ~
    mkdir scripts && cd scripts

    Create a new file at webcamDaemon

    #!/bin/bash
    
    MJPGSTREAMER_HOME=/home/[username]/mjpg-streamer/mjpg-streamer-experimental
    MJPGSTREAMER_INPUT_USB="input_uvc.so"
    MJPGSTREAMER_INPUT_RASPICAM="input_raspicam.so"
    
    # init configuration
    camera="auto"
    camera_usb_options="-r 640x480 -f 10"
    camera_raspi_options="-fps 10"
    
    if [ -e "/boot/octopi.txt" ]; then
        source "/boot/octopi.txt"
    fi
    
    # runs MJPG Streamer, using the provided input plugin + configuration
    function runMjpgStreamer {
        input=$1
        pushd $MJPGSTREAMER_HOME
        echo Running ./mjpg_streamer -o "output_http.so -w ./www" -i "$input"
        LD_LIBRARY_PATH=. ./mjpg_streamer -o "output_http.so -w ./www" -i "$input"
        popd
    }
    
    # starts up the RasPiCam
    function startRaspi {
        logger "Starting Raspberry Pi camera"
        runMjpgStreamer "$MJPGSTREAMER_INPUT_RASPICAM $camera_raspi_options"
    }
    
    # starts up the USB webcam
    function startUsb {
        logger "Starting USB webcam"
        runMjpgStreamer "$MJPGSTREAMER_INPUT_USB $camera_usb_options"
    }
    
    # we need this to prevent the later calls to vcgencmd from blocking
    # I have no idea why, but that's how it is...
    vcgencmd version
    
    # echo configuration
    echo camera: $camera
    echo usb options: $camera_usb_options
    echo raspi options: $camera_raspi_options
    
    # keep mjpg streamer running if some camera is attached
    while true; do
        if [ -e "/dev/video0" ] && { [ "$camera" = "auto" ] || [ "$camera" = "usb" ] ; }; then
            startUsb
        elif [ "`vcgencmd get_camera`" = "supported=1 detected=1" ] && { [ "$camera" = "auto" ] || [ "$camera" = "raspi" ] ; }; then
            startRaspi
        fi
    
        sleep 120
    done

    Make sure the file is executable:

    
    chmod +x webcamDaemon

    And then create another new file at /etc/systemd/system/

    webcamd.service (sudo nano /etc/systemd/system/webcamd.service
    [Unit]
    Description=Camera streamer for OctoPrint
    After=network-online.target OctoPrint.service
    Wants=network-online.target

    [Service]
    Type=simple
    User=[username]
    ExecStart=/home/[username]/scripts/webcamDaemon

    [Install]
    WantedBy=multi-user.target

    Make sure your user has permission to access video (this is the part that is missing from the pi tutorial)

    sudo usermod -aG video [username]

    Refresh the daemon files

    sudo systemctl daemon-reload

    Set webcamd to start on boot

    sudo systemctl enable webcamd


    Start webcamd

    sudo systemctl start webcamd

    Make it so user has premission to shut down and restart server from octoprint
    Create a file /etc/sudoers.d/octoprint-shutdown (as root) with the following contents:

    
    [username] ALL=NOPASSWD: /sbin/shutdown


    Create another file /etc/sudoers.d/octoprint-service (as root) with the following contents:

    
    [username] ALL=NOPASSWD: /usr/sbin/service

    Summary
    I am running a web server so I did not include the part of the tutorial to change the web port from 5000 to 80
    I also have not gotten it to be able to start and stop the web stream. It is complaining that it can’t read the user password

  • Creality Ender 3: Main Board Upgrade

    Creality Ender 3

    Purchase Ender 3 at Amazon [Affiliate Link]

    While I haven’t used this printer much since I purchased my Prusa MK3S. This printer can still get the job done and it is time to show it some TLC.

    The first upgrade I decided to do was the main board.

    Purchase Ender 3 Upgrade Main Board at Amazon [Affiliate Link]

    Tools Required:

    • Small flat head screwdriver
    • 3mm Allen key

    These tools should have been included with your Ender 3

    First start by removing the lid to the main board case. pull the bed all the way forward. This will allow easier access to the rear screw on the main board cover, then push the bed to the rear of the machine and remove the two front screws. Lift the lid gently and remove the fan cable.

    Then remove the four screws holding the main board to the case.

    Next we will pull all the cables forward as possible to give enough slack to change them to the new board.

    Pull the cables back through to place the main board back in the case and replace the 4 main board screws

    Replace the lid and reconnect the fan cable. Pull the bed forward and replace the rear screw. Push the bed back and replace the two front screws.

    Flash new firmware to Ender 3. Selecting firmware from the following URL Download Center: Ender 3. The firmware I selected was “Ender-3 4.2.7 mainboard (32bit)” since the only upgrade I have done was the main board.

    Copy the firmware to the root of the Micro SD card. Insert the Micro SD card into the machine. Then turn the machine on. The firmware should automatically be flashed to the machine.