Month: May 2021

  • Upgrading K40 Cooling System with RGB and Peltier Cooler

    Upgrading K40 Cooling System with RGB and Peltier Cooler

    The K40 laser cutter, if you know about it, comes with absolutely the bare minimum to get you started. Fortunately, it does comes with a cooling solution: You supply your own water bucket, fill it with distilled water, and drop in the supplied water pump. Failure to do that will probably result in a burnt out laser tube.

    As you can probably imagine: this is not a super good system – the system is open-air, and is therefore easy to get contaminated. In my case, my coolant reached questionable consistency (that is, gooey) after a couple of month. So I swapped out the “supply-your-own-bucket” cooling system for a “amazon-cheap-pc-water-cooling” system.

    The system is simple and consisted of 5 parts:

    • a off-the-shelf PC water-cooling pump / reservoir combo
    • a peltier cooler
    • a water-cooling heat-exchanger
    • a CPU cooler
    • a PC power supply

    The pump feeds water into a heat-exchanger, where heat gets extracted by the peltier cooler into the CPU cooler, then into the laser tube and back into the reservoir.

    Everything got mounted on to the side of the machine. It looks reasonably good.

    Laser Cutter with PC cooling parts. And yes, the fan is RGB.

    I hope this results in lower machine maintenance in the future.

  • Etch-A-Sketch Pro – Rotary Encoders as Mouse(s)

    Etch-A-Sketch Pro – Rotary Encoders as Mouse(s)

    I recently got a few of those rotary encoders – I was planning to make them into a follow-focus system. It’s a two part process: 1 – make a USB interface for them; 2 – make software that uses Canon’s EDSDK to interface with my camera.

    So I decided to start on 1, then I got a bit carried away and got this monstrosity made – an Etch-A-Sketch for computers, because everything deserves rotary encoders.

    Etch-A-Sketch Pro in Action

    If you look very closely, each of the encoders has it’s own plug, since each is a independent USB HID device.

    Printing the Knob
    Glamour Shot for the Encoder – Notice the Comic Sans?

    Next step for the monstrosity, given that I now have two computer-connected knobs side-by-side, is Pong. And then I can return to the original plan of making a camera accessory.

  • Split Flap Display – Part 1

    I recently came by this Technology Connection Video, and I am intrigued by the mechanism of a split flap mechanical clock. I then ran across this GitHub project for a split flap display and I decide to make my own.

    I made one tweak to the design: I made the letters laser engraved and cut out of card stock instead of PVC cards. This includes code changes for generating double-sided SVGs, which made this a lot easier. The PR is here. (now merged)

    The result is actually pretty good.

    There’s a bit of work left to do, but this looks great for a first attempt.

  • Using Makefile for Non-programming Tasks

    Make is traditionally used to build artifacts from program source code. It can also be used for other tasks, where you need to “build” something out of a “source-of-truth”.

    For example: video-editing. I personally find ffmpeg able to generate better quality compressed videos than FCPX or Premiere Pro, which is especially important if the desired bitrate is low. One of the use cases is this website, which has a video background. It is important to keep the video size as small as possible for video to load in a reasonable amount of time, while maintaining an acceptable quality. FCPX unfortunately cannot do that.

    I can use a shell script of course. But it occurred to me that, make is actually the perfect tool for the job, if you treat the master video as the source file, and the resultant compressed videos as the artifacts.

    SOURCE = ../render/out.mov
    LINES = 1080
    BITRATE = 1200k
    
    PHONY: clean all
    
    all: poster.jpg h264.mp4 vp9.webm
    
    clean:
    	rm -f poster.jpg h264.mp4 vp9.webm *.mbtree *.log
    
    poster.jpg: $(SOURCE)
    	ffmpeg -y -i $< -vf scale=-1\:$(LINES) -vframes 1 $@
    
    h264.mp4: $(SOURCE)
    	ffmpeg -y -i $< -vf scale=-1\:$(LINES) -c\:v libx264 -b\:v $(BITRATE) -preset veryslow -an -pass 1 $@
    	ffmpeg -y -i $< -vf scale=-1\:$(LINES) -c\:v libx264 -b\:v $(BITRATE) -preset veryslow -an -pass 2 $@
    
    vp9.webm: $(SOURCE)
    	ffmpeg -y -i $< -vf scale=-1\:$(LINES) -c\:v libvpx-vp9 -b\:v $(BITRATE) -an -pass 1 -deadline good $@
    	ffmpeg -y -i $< -vf scale=-1\:$(LINES) -c\:v libvpx-vp9 -b\:v $(BITRATE) -an -pass 2 -deadline good $@