Profile cover photo
Profile photo
Michael Hope

Post has attachment

In follow up to my build, I’ve always wanted to design PCB and try my hand at SMD soldering. I normally use veroboard on a 0.1” pitch but the time to cut and solder wires makes for a slow build. Here’s the result:

It has:

An AT91SAMD21E18 (256 KiB flash, 32 pins, 0.8 mm pitch)
USB, regulator, Cortex SWD debug header, LED, and pullups on I2C
Footprint for a RFM69CW radio
Adafruit Feather form factor
Two layer PCB with 0603 passives

The soldering turned out well. I mainly used the used the tin/remove-excess-with-solderwick method and a heatgun for the USB socket. For the CPU tinning and then pressing down on the pins with the tip of the iron worked well.

Changes for the next version would be:

Add a ~10 k pullup to RST
Move the LED to PA17 to match the Zero
Reduce the LED current limit resistor to 1k from 2k2
Put footprints on the bottom of the board for a Si7021 and/or a 25FL064+

Post has attachment
It gets warm and humid here in the summer and feels too dry in the winter. To measure this I built up two MySensors Sensebender Micro boards and designed a 3D printed a case to go with them:

The holes in the case are to save on print time and let the air flow. The battery is far oversized and probably self discharges faster than the board draws current.

I ended up using a Raspberry Pi Zero with a RFM69HW as the gateway. It’s connected as a Ethernet gadget to my home server which lets everything run over IP while using a single cable for power and data.

Post has attachment
As part of adding MySensors based sensors around the house, I want to make an integrated version of the Sensebender Micro upgraded with a SAMD21 and a RFM69HCW radio. I’ve never had much success with making PCBs at home, so I thought I’d give it another try and record the experiments.

Try 1: HP M252dw, laminator @ 10 mm, 4 times through, Migros-brand T-Shirt transfer paper. Some transfer but lots left behind. Tape melted with heat? Learn: rotate image to make better use of paper. Transfer paper goes hatches down in paper tray.

Try 2: HP, iron, transfer paper. Iron: max temp, no steam, 30s in place, 2m total. Too much movement, smeared. Transfer paper has a sticky layer (by design?) which melted. Lesson: T-shirt transfer paper is not usable.

Try 3: HP, iron, glossy IKEA catalog pages. Iron: as #2. Paper reports as jammed.

Try 4: HP, iron, HP Q5451A photo paper. I wrapped the paper around the PCB, which makes it rise. Paper sticks to the iron when heated. Result: little toner transferred.

Try 4: Samsung, iron, HP Q4551A photo paper. Result: little toner transferred.

Try 5: PCB coated with blue spray paint, 40W laser to remove the paint. Result: a thin film is left on the copper. Trying to remove the film also removes the paint. Too higher power also shrinks the tracks. Result is insensitive to power level so lower is better.

So, no luck yet. I’ve ordered some PCBfx toner transfer paper and TRF foil. I’ve also ordered a small batch from Dirty PCBs to see what the turn around time is like. It may be worth it for the detail and lack of mess.

Originally at

Post has attachment
The short story is that this blog is now available on IPFS at and

This is done by generating the blog a second time with ipfs/ as the basepath, changing to relative links, and then adding and updating the name as part of the buildbot script. Hugo has relative and canonical link support but it seems inconsistent, and it’s hard to resist a sed script…

I quite like how you can map ownership across DNS and IPFS using a TXT record.


Post has attachment
I'm really enjoying drawing 3D models in OpenSCAD. Here's a camera mount I designed for my pipoint project. The source is at

Post has attachment
go get has a nice feature where it will fetch the package URL and, based on a meta tag, redirect to the actual location.

Here’s the nginx config I use to redirect go get to either my private repo (for unreleased stuff) or my cgit instance for everything else. This is similar to how and operate.

server {
location ~ /x/(.*) {
if (-d /home/juju/p/git/$1.git) {
return 200 '<meta name="go-import" content="$host$uri git ssh://juju@$host/~juju/p/git/$1.git">\n';
if (-d /home/juju/git/$1.git) {
return 200 '<meta name="go-import" content="$host$uri git $scheme://$host/src/$1.git">\n';
return 404;

As a bonus this means I could, say, shift the code to github without breaking existing code.

Originally at

#go #goget #nginx

Post has attachment
DFRobot FIT0441 pinout

I ordered two FIT0441 brushless motors for use in v2 of my balancing robot. The DFRobot wiki page on the motor is incorrect so I thought I’d blog about it so someone else can find it 🙂

The motor comes with a 5 pin JST cable with a white end and a black end. The white end goes to the motor. When looking from the back of the motor with the socket at the 6 o’clock position, the wires are:

Blue (left most): PWM. Take to GND for full speed.
Black: GND / Supply negative
Yellow: Direction
Green: encoder output. ~680 Hz at full speed
Red (right most): 12V
Note that the black end has a completely different order.

To make the motor spin, connect 12V to Black and Red and short Blue to GND. To make it spin in the opposite direction, short Yellow to GND.

Originally at

Post has attachment
A toy PL/0 compiler

I’ve released a toy compiler for the PL/0 educational language at or

I wrote this as, despite working with compilers for a fair part of my life, I’d never written one from scratch. I chose PL/0 as it was designed by a local legend, Niklaus Wirth, who is also the creator of Pascal and Modula-2.

Post has attachment
We went to Maker Faire Bodensee on the weekend. The kids spent so much time with Paula Pongratz’s Post-apocalyptic jewlery that they missed most of the rest (heh).

Other standouts were the breadboard / pus pin based electronic organ from Elektronikmuseum Tettnang and the marshmallow building challenge by Toolbox BODENSEE. I also want to have a look into the Minecraft smart-home and Nodebots.

Orignal (with links) at

Post has attachment
Found this while browsing: a wiki on UAV laws around the world:

which includes rules for Switzerland:

but not the city rules for Zurich.
Wait while more posts are being loaded