0% found this document useful (0 votes)
40 views100 pages

Hs75 Digital

HackSpace Magazine Issue #75, February 2024, features DIY gadgets, fractal art, and 3D scanning of dinosaurs. The issue includes tutorials on various projects, interviews, and highlights innovative creations like the BrailleRAP and kinetic PC case. The magazine emphasizes the blend of utility, creativity, and personal expression in maker culture.

Uploaded by

GEORGE
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
40 views100 pages

Hs75 Digital

HackSpace Magazine Issue #75, February 2024, features DIY gadgets, fractal art, and 3D scanning of dinosaurs. The issue includes tutorials on various projects, interviews, and highlights innovative creations like the BrailleRAP and kinetic PC case. The magazine emphasizes the blend of utility, creativity, and personal expression in maker culture.

Uploaded by

GEORGE
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 100

hsmag.

cc February 2024 Issue #75

Full control
Print exactly what
you want to print

DIY
Gadgets
Build your own phone,
camera, watch and more

Fractal art
Enhance your living
space with maths
Dinosaurs
3D scanning at the
Natural History Museum

75
Issue #75 £6
Feb. 2024

9 772515 514006

ROBOT RUGBY COFFEE RUBBER MUSIC


Free eBook!

Download your copy from


hsmag.cc/freecadbook
WELCOME EDITORIAL
Editor
Ben Everard
ben.everard@raspberrypi.com

Features Editor
Andrew Gregory
andrew.gregory@raspberrypi.com

Sub-Editors
David Higgs, Nicola King

DESIGN
Critical Media
and Raspberry Pi
criticalmedia.co.uk

Welcome to Head of Design


Lee Allen
Designers

HackSpace magazine Sam Ribbits, Sara Parodi,


Jack Willis
Photography
Brian O’Halloran
As someone who grew up watching Inspector Gadget, the
ability to create some wacky portable devices was a big part CONTRIBUTORS
Marc de Vinck, Rosie Hattersley,
of the reason I grew up loving to build things. To be honest, Jo Hinchliffe, Andrew Lewis,
Rob Miles, Karl Mose
not much has changed. Gadgets exist in the space between
PUBLISHING
utility, geekery, and fashion – a really good gadget has to have Publishing Director
a bit of all three. And our skills as makers can help in each of Brian Jepson
brian.jepson@raspberrypi.com
these areas. We can personalise it to our particular needs, we Advertising
can nerd-out as much as we like on the technicals, and we can Charlie Milligan
charlotte.milligan@raspberrypi.com
give it our own unique aesthetic.
Join us as we take a look at makers building their own DISTRIBUTION
Seymour Distribution Ltd
doodads and whatsits. Go go gadget … well, whatever. 2 East Poultry Ave,
London EC1A 9PT
+44 (0)207 429 4000

BEN EVERARD SUBSCRIPTIONS


Editor ben.everard@raspberrypi.com Unit 6, The Enterprise Centre,
Kelvin Lane, Manor Royal,
Got a comment, Crawley, West Sussex, RH10 9PE
question, or thought To subscribe

26
about HackSpace 01293 312189
magazine? PAGE
hsmag.cc/subscribe

get in touch at Subscription queries


hsmag.cc/hello FREE PICO W hackspace@subscriptionhelpline.co.uk

WHEN YOU
SUBSCRIBE
GET IN TOUCH
This magazine is printed on
hackspace@ paper sourced from sustainable
raspberrypi.com forests. The printer operates an
environmental management system
h
 ackspacemag which has been assessed as
conforming to ISO 14001.
h
 ackspacemag HackSpace magazine is published by
Raspberry Pi Ltd, 194 Science Park,
Cambridge, CB4 0AD The publisher,
ONLINE editor, and contributors accept
no responsibility in respect of any
hsmag.cc omissions or errors relating to goods,
products or services referred to or
advertised. Except where otherwise
noted, content in this magazine is
licensed under a Creative Commons
Attribution-NonCommercial-
ShareAlike 3.0 Unported (CC BY-NC-
SA 3.0). ISSN: 2515-5148.

3
Contents
Cover Feature
06

DIY
17 LENS
18 DIY Gadgets
Can’t find it in the shop? Make it yourself!

GADGETS
28 How I Made: Fractal art frame
Decorate your home with mathematics

36 Interview: VEEB Projects


Swiss design with a DIY electronics twist

42 Objet 3d’art
Put your smartphone literally on a pedestal

44 Letters
Things we like (unrelated): alcohol and chimp skulls

Tutorial
18 3D printing

28 70 Smooth away unsightly layer lines with


Polyvinyl Butyral (PVB)

4
CONTENTS

Interview
VEEB Projects

86
Crowdfunding
Pi-Cast KVM

36 Have nothing in your canton that you do not


know to be beautiful or believe to be useful

47 FORGE
48 SoM Full Control
Free yourself from the constraints of your slicer

52 Tutorial Raspberry Pi
Build and control a mecanum robot 96 Congratulations! Anything with a
USB connector is not a keyboard

58 Tutorial Rubber stamp


Laser-cut an inky decorative shape

60 Tutorial Photography
Develop photographic film with… coffee?
85 FIELD TEST
64 Tutorial Robot rugby 86 Best of Breed
Network Pico-based robots to work as a team Robot-related kits and accessories

70 Tutorial 3D printing 92 Review Alpakka


Yet another reason to love the letters IPA A gloriously customisable games controller

74 Tutorial KiCad 94 Review Nuts and Bolts


How helpful are different PCB manufacturers? A crucial look at the technology that makes our world

80 Tutorial Modular synth 96 Crowdfunding Pi-Cast KVM and Sake Hack


How to control the control voltage of a modular synth A device for connecting and a method for flavour enhancement

Some of the tools and techniques shown in HackSpace Magazine are dangerous unless used with skill, experience and appropriate personal protection equipment. While we attempt to guide the reader, ultimately you
are responsible for your own safety and understanding the limits of yourself and your equipment. HackSpace Magazine is intended for an adult audience and some projects may be dangerous for children. Raspberry
Pi Ltd does not accept responsibility for any injuries, damage to equipment, or costs incurred from projects, tutorials or suggestions in HackSpace Magazine. Laws and regulations covering many of the topics in
HackSpace Magazine are different between countries, and are always subject to change. You are responsible for understanding the requirements in your jurisdiction and ensuring that you comply with them. Some
manufacturers place limits on the use of their hardware which some projects or suggestions in HackSpace Magazine may go beyond. It is your responsibility to understand the manufacturer’s limits. HackSpace mag-
azine is published monthly by Raspberry Pi Ltd, Maurice Wilkes Building, St. John’s Innovation Park, Cowley Road, Cambridge, CB4 0DS, United Kingdom. Publishers Service Associates, 2406 Reach Road, Williamsport,
PA, 17701, is the mailing agent for copies distributed in the US and Canada. Application to mail at Periodicals prices is pending at Williamsport, PA. Postmaster please send address changes to HackSpace magazine
c/o Publishers Service Associates, 2406 Reach Road, Williamsport, PA, 17701.

5
Top Projects

REGULAR

BrailleRAP
By Stephane braillerap.org

B
raille, the tactile alphabet used by blind and
partially sighted people, was invented almost 200
years ago by Louis Braille, in 1829. It’s still widely
used, but if you want to print anything in Braille
(actually, there’s no ink involved, so the correct term
is embossing rather than printing) it’s going to set you
back a few quid. The Royal National Institute of Blind People (RNIB)
has a few on offer on its website, with prices starting at £1760 for
the cheapest model. You can get a roughly equivalent home inkjet
printer for under £30. The difference is absurd, and it’s all because
of the much more limited market, and the number of moving parts
that machines like Braille embossers need.
This combination – of high price, established tech, and a
market that isn’t being met by commercial forces – makes Braille
embossers ripe for open-source hardware makers. And here, we
have one such product: the BrailleRAP, released under the CERN
Open Hardware Licence v1.2. We hope to bring you more about this
wonderful project in a forthcoming issue of HackSpace magazine
but, for now, just enjoy the clean lines of all that laser-cut acrylic,
and ponder that the build pictured here cost around $250 to produce
– around 10% the cost of the cheapest commercial solution.

Right
BrailleRAP is an
open-source Braille
embosser in the spirit
of the RepRap 3D
printing movement

6
SPARK

7
Top Projects

REGULAR

Moon Phase
Display
By Lorraine Underwood community.element14.com

T
Right
he moon orbits Earth every 27.3 days. It doesn’t The moving part of
have leap years; it doesn’t have some months when this moon display
is controlled by a
it takes 30 days, or 31, like our silly calendar months. Kitronik motor board
Give a person (or, in this case, a Raspberry Pi Pico W)
a date in time, present or past, and they’ll be able to
tell you what the moon looked like on that day using a
really simple formula.
If you were to take that knowledge and add a hollow, light-up
model of the moon, a motor board from Kitronik, and a Raspberry
Pi Pico, you might come up with a device like this by Lorraine
Underwood. It’s very simple: you just enter a date, and the light
inside the moon moves to show the phase of the moon on that
date. We don’t have any more information than that at this stage,
but Lorraine’s working on a build video for Element 14 that will
reveal all.

8
SPARK

And if the dam breaks open


many years too soon
And if there is no room upon
the hill
And if your head explodes
with dark forebodings too…

…I’ll see you on the dark


side of the moon

9
Top Projects

REGULAR

Kinetic PC case
By Ideal Idea hsmag.cc/KineticPCCase

T
his beautiful PC case was inspired by PC retailer
CyberPower’s kinetic PC case. It moves – it looks
a bit like the vents of a jet engine opening – but
it’s not available to buy. The company teased PC
enthusiasts with a glimpse a couple of years ago but,
for whatever reason, it hasn’t yet come to pass other
than as a concept. Robert, the human behind the Ideal Idea YouTube
channel, took this as a sign that he should build his own moving
PC case, and, wouldn’t you know, it’s even better than the one that
inspired him.
The brilliant thing about this build is how open Robert has been in
showing his development process. He initially thought of controlling
each hexagon with its own linear actuator, but realised that this
would make the coding horrifically complex, and cost at least $600
for the parts. Then he tried powering the linear motion by means
of turning a shaft, which turned another shaft, which turned lots of
other shafts, but that also presented its own problems.
The eventual build uses an Arduino Uno, a 4488 stepper motor
driver, a Nema 17 stepper motor, and gears attached to 3D-printed
camshafts. These run vertically up the side of the case, and convert
rotational movement into the linear movement of the little hexagons
moving in and out along the front panel of the case.

Right
If you’ve got access
to a laser cutter and
infinite amounts
of creativity, why The kinetic PC case is part of a
not try something wider project Robert is working on:
similar yourself? revamping his entire workspace

10
SPARK

The panels hosting the moving


parts are modular, and can be
swapped out if the user wants to
get a different look – Robert’s also
made a panel inspired by the rose
windows of mediaeval stained glass

The camshafts were 3D-printed


flat, then bent using a heat gun and
a 3D-printed 30-degree jig

11
Top Projects

REGULAR

Volumetric
display
By Tim Jacobs Mitxela.com

I
was recently fortunate enough to find myself in the
pub with some very creative and talented people. The Right
Tim’s test image
discussion turned to electronic candles, and how one might is a “janky low-
create something that would look like a flickering candle resolution wire-
frame cube”, as he
from any angle. I suggested a persistence of vision display, puts it. But it works!
but the general consensus was that those require too much
in the way of supporting machinery to make them work: bearings,
and probably slip rings and so on.”
So begins Tim Jacobs’ explanation of his brilliant volumetric
display. It’s a tiny build (pictured here with a human finger for
scale), and it’s also quite brilliant in its approach to an engineering
challenge: the problem that you normally get when building anything
using persistence of vision is getting power to the moving parts.
If you have an LED mounted on something spinning, you need
some way of getting power to the LEDs without getting the power
wires twisted up. You can do this using wireless power, or by using
brushes that maintain contact even as they spin, but that naturally
increases complexity, cost, and the likelihood that the device will fail
at some point. Tim got round this challenge by making everything
spin. The display, the electronics, the motor, even the battery all
rotate when the motor is running. Problem solved!
So far, Tim’s used his display to show fluid sloshing about in
a container, a spinning cube, and a candle flame among others.
Naturally, you don’t appreciate the full glory of the animations when
you’re looking at a static image, but while we’re here, we can all coo
over the free-form soldering that he’s used to attach the display to
the Waveshare RP2040-Tiny, a small board that breaks out some of
the GPIO pins from Raspberry Pi’s RP2040 chip.

12
SPARK

8 × 10 LED matrix

LIR2450 battery

Motor from a CD drive

13
Top Projects

REGULAR

Mailblocks
By Guy Dupont hsmag.cc/Mailblocks

G
uy Dupont has a problem: he keeps making
brilliant creations that pique the interest of
the internet. Every time he makes something
interesting on the internet, his phone starts blowing
up with notifications. What to do?
Well, in a bit of a meta-twist, he decided to
make yet another brilliant device, only this time, one that would
block notifications until such a time as he’s ready for them. This
is the Mailblocks. It’s based on the old-fashioned mailboxes of
North America, in the days when you’d have to get up and move
your body to receive paper messages once a day from the outside
world, and it means that Guy’s Android phone doesn’t bug him with
updates unless he chooses to accept them. 3.3 -> 5 V Level
Shifter (for servo)
Guy uses a Raspberry Pi acting as a Wi-Fi router on his home
network, running a custom DNS server that looks for IP addresses
associated with push notifications, and redirects the DNS requests
to nonsense IP addresses.
That’s the blocking part. So far, so good: now, in order to pick up
notifications, you need to put it into the mailbox. Inside the mailbox
is a mechanical switch that closes when the phone is inserted. The
switch is connected to a Feather S3 board, from Unexpected Maker,
that tells the Raspberry Pi to stop the monkey business with DNS.
The Wi-Fi network reboots and, when the phone looks again for
the Google servers, all the previously blocked notifications come Spring switch pins
through. Congratulations: you are now in charge of your phone,
rather than the other way around.

TPS61023 Boost
Module

14
SPARK

Feather S3

Above
The flag raises when
you’ve got mail; it’s
activated by a small
servo, powered by an
Adafruit MiniBoost 5 V

Battery

15
LENS
HACK MAKE BUILD
Uncover the technology that’s powering the future
CREATE

28
PG PG
18
HOW I MADE:

DIY
PIARTFRAME
How a simple hardware build
brought the beauty of maths
into a humble wooden frame

GADGETS
Need something unique?
Make it yourself!

PG

36
INTERVIEW:
VEEB PROJECTS
Why make things beautiful?
Because you can. Because we
can all make beautiful things
DIY Gadgets

FEATURE

DIY
GADGETS Who doesn’t love a good gadget? Rosie Hattersley
finds out more about some amazing makes

T
hink of what makes a great gadget and it’s hard
to escape the idea that they are about kudos,
kerb appeal, and communication – not
necessarily all in the same package, of course.
The smartphone is arguably the ultimate expression
of gadgetry, encompassing all three concepts. It also
demonstrates the importance of portability. How else to gain
that all-important kudos without being able to take it out and
about to show it off to our friends? We kick-start our look at the
world of homemade handhelds and wearables with two great
phone examples of home-brew design before applauding
repurposed tech to create incredible cyberdecks and tiny PCs.
Electronics play an important part in musical and visual gadgets
too, as well as in homages to iconic films and games. With
cosplay becoming ever-more indistinguishable from original props
and costumes, we highlight some amazing makes along with
achievable accessories you can 3D-print or simply customise.

18
LENS

PHONES
Keep in touch or upcycle some old tech

Antique telephone
Maker Mark Lister bought an antique phone from eBay,
took out its existing electronics, and added a Raspberry
Pi 3B from 2022 with bespoke GSM HAT and a speaker. The
Raspberry Pi also provides internet access. Mark mapped the
numbers on the old phone’s rotary dial to Raspberry Pi’s GPIO
pins to create a usable handset that stores numbers and reads
out the name of callers it recognises. The SIM card in the GSM
HAT recognises the pulses generated by turning the dial as digits,
thanks to Mark’s specially written code. Further features include a
backup UPS battery and, of course, a proper ring. Brrring, brrring!

hsmag.cc/OldPhone
OURS smartphone
If you’re taken by handset design rather than upcycling
an existing phone, you could do a lot worse than
follow Evan Robinson’s build instructions for the 4G LTE
OURS (open-source, upgradable, repairable smartphone).
Running Raspberry Pi OS and primed with familiar smartphone
apps such as Facebook, YouTube, and WhatsApp, it has a 5MP
camera, microphone, and volume control, as well as an HDMI
port to attach an external display alongside the OURS’ 4-inch
Waveshare touchscreen. Evan created the handset with privacy
and security in mind, but it is also great value, with a bill of
materials costing roughly 180 euros.
Evan says the most difficult part of the build was getting the
power system stable enough to power the machine through
boot because it uses a lot of current upfront, and sporadically Phone Map
for activating the 4G LTE module, but then uses less current
once the OS is loaded. He spent a lot of time fiddling with tiny If you’re holding a phone handset up to your ear, it
potentiometers on voltage regulators, then turning the system might as well deliver something you want to hear.
on and off over and over again. Since unveiling OURS, the idea Caroline Buttet decided she’d like to enjoy music from around
has been embraced by dozens of other makers, with plenty of the world, using the radiooooo.com online radio station player,
constructive feedback and around 40 enthusiasts actively an Arduino, and Raspberry Pi to serve up broadcasts, depending
working with Evan to develop a new model. on where on a map of the world she placed her pin. The user
can also pick up the rotary phone handset, dial the country
hsmag.cc/OurPhone code, and select a decade to choose what they hear. Caroline
used Raspberry Pi to connect to the radio player app, while an
Arduino hidden in a metal panel behind the framed world map
controls the country selector.

hsmag.cc/PhoneMap

19
DIY Gadgets

FEATURE

CLAMSHELL
BLACKBERRY CYBERDECK
Because everything’s better when it’s tiny

The original business smartphone, BlackBerry’s main


legacy now seems to be the usefulness of its tiny
keyboard in retro builds and cyberdecks such as this
laser-cut, wood-clad version by Michael Klements. “Most
keyboards, even compact and foldable ones, are three to four
times bigger than the final build size that I was going for – and
you’d still need to add a mouse to that,” Michael explains.
However, he was delighted to discover Solder Party’s BB
version on Tindie (hsmag.cc/BBQ20Keyboard). The Clamshell
Blackberry Cyberdeck features a HyperPixel 4.0 display which
hooks up to Raspberry Pi 4 via its GPIO pins. The advantage
here is that there’s no need for an additional power source for
the screen, meaning Michael could keep his build ultra-compact.
This aim also involved a tricky design process, so the hinged
plywood case, sketched out in Inkscape, is just large enough to
accommodate the cyberdeck’s components, and allows the
screen to tilt back to a 20-degree angle.

hsmag.cc/CyberBB

20
LENS

GOOD FOR GAMING


Taking your entertainment on the road

Fancy Octopus Arcades


Bluetooth speaker Mini PC
Brooklyn-based Shonee Strother and his son Wolf
both loved arcade games and the characters found in Carter Hurd didn’t really want or need a Bluetooth
animations and cartoons, but the constraints of a New York speaker, but having been sent one on spec, he set
apartment meant their entertainment ideas far outstripped about making use of it anyway rather than have it sit around
the realities of what might be practical at home. Shonee gathering dust. The Divoom Ditoo Plus Retro Pixel Art Game
“saw folks making huge gaming rooms, loading them up with Bluetooth Speaker’s distinctive looks seemed to lend themselves
arcade cabinets, and realised that for some of us in smaller to re-use as a mini PC, not least because it had several buttons
apartments, that wasn’t a possibility.” The pair set about and a navistick already. However, Carter dispensed with these,
installing RetroPie builds inside portable boom boxes and mini as well as the original speaker, in order to fit in a screen. He then
cabinets and customising each ‘fancy’ arcade with plastic dolls built a cyberdeck computer using Raspberry Pi 3B and an old
and other props to match each arcade’s games offerings. The BlackBerry keyboard, which was a near-perfect fit. He covered
mini cabinets are Raspberry Pi-powered and “packed to the gills up any rough edges and the surrounding board by 3D-printing a
with games and easily plug in via standard HDMI for video audio bezel. However, the screen was more of a challenge. “Being
output.” Each design is unique, and the square was a good start, but the glass was too large to fit within
mini arcades are themselves miniature the speaker housing.” He ended up taking a pair of shears to the
art pieces that look good displayed on a screen to trim off its edges – a rather risky endeavour – then
bookshelf or, indeed, shown off on shaped a piece of thermal plastic into a dome with a hairdryer
Instagram, which was the main reason and placed it over the LCD to give the screen a retro look. While
Fancy Octopus Arcades began getting component size versus the Divoom case was an issue all round
noticed. It was also a neat way of Wolf (Carter says Raspberry Pi Zero would have been a better fit), the
immersing himself in the games history end result looks great and runs Raspberry Pi OS “a treat.” Had
his dad was keen for him to soak up. he pre-planned this build, however, he’d love to have found a
way of preserving the touchscreen.
hsmag.cc/OctopusArcade
hsmag.cc/MiniPC

Framework Cyberdeck
“It’s weird, heavy, and looks like it came out of a
portal to some alternate timeline, but I personally like
it,” says maker Ben Makes Everything of the DOOM-playing
cyberdeck he built from Framework laptop parts. His take
on the concept of a cyberdeck is an individually tailored,
portable computer. Framework supplies the basic hardware for
the customer to build, repair, and upgrade at will, but at lower
cost than other bespoke laptops. It has a modular I/O system
with USB-C connections and runs Windows (and is easily
capable of running many mainstream games) but also lends
itself to modifications. Ben’s own designs, based around the
16GB RAM laptop with Western Digital hard drive he created,
can be found at hsmag.cc/BMECyberdeck.

hsmag.cc/FrameworkCD

21
DIY Gadgets

FEATURE

COSPLAY AND FILM PROPS


Get dressed up

F
ancy dress just doesn’t cut it these days. Realistic
props and intricate cosplay outfits, along with
studio-quality make-up, are expected in this age of Proton Pack Slimer
constant visual scrutiny. If you’re new to the world
of properly dressing up in character, the Costume You can probably source your own Ghostbusters
Wall website has some good ideas: costumewall.com/titles, boiler suit, but hats off to the parents of Livi, who set
e.g. costumewall.com/title/adventure-time. Perhaps you about creating this amazing proton pack, complete with
love Stranger Things and yearn to dress like a Demogorgon ectoplasm. Expandable foam on a piece of dowel was used to
(costumewall.com/dress-like-demogorgon), or want to make Slimer himself, using a coat hanger to give the body form
recreate a battle scene and need to make armour that and foam-filled gloves for hands. The face, and other features,
passes muster, in which case Kamui Cosplay armour tutorials were then carved and the whole beast painted. The proton pack
can help kamuicosplay.com. Cosplayers also rate Coscraft has three LEDs and was made from cardboard, plastic, wires,
(coscraft.co.uk) for supplies. ribbon cable, stickers, a calculator, random switches and knobs,
some hose, pipes, and batteries, explains mum Katrina who
wrote up the family project.

hsmag.cc/slimer

Yet Another Flux Capacitor


Ambrogio is far from the first film fan to try and recreate
items from 1980s classic Back to the Future, hence
calling this project YAFC (Yet Another Flux Capacitor). A
device that propels us into the near future or past seems a fitting
DIY project for a keen paraglider given to flights of fancy. “The
internet is full of replicas made of LED strips, but I wanted to
follow a different innovative approach, reproducing the ‘energy
flow’ effect in the flux capacitor by means of a video created with
a video editor software.” He used Raspberry Pi, since it has a
built-in VLC player that will work with almost any inexpensive
display, and supports Python. “From a maker point of view, [it] is
a great language since it does not require complex environment
setup,” he finds. He attached a Pimoroni Automation HAT to
Raspberry Pi 4 and used VSDC video editor to get the flux
capacitor effects he was after. The whole thing is hidden within a
painted cardboard frame and runs headless, with three large
control buttons to initiate the looping flux effect (viewable as a
YouTube clip). Find his instructions at hsmag.cc/GHyafc.

hsmag.cc/yafc

22
LENS

ELECTRONIC JEWELLERY
Put some spark in your accessories

NeoPixel Cosmic Turtle Necklace


Watchy
There’s a lot to like about this light-up pendant build
Watchy is a great-looking which makes use of Adafruit NeoPixel Jewel, which
timepiece with a 200×200-pixel has seven controllable LEDs, a Trinket, and your choice of
e-paper display, a glare-free either upcycled or 3D-printed and painted pendant shell.
180-degree viewing angle, and ultra-low Maker Erin St Blaine chose a pendant shell with the right sort of
power consumption. Powered by an holes to optimally show off the illumination created by wiring up
ESP32-PICO-D4, it is a certified open-source a tiny breadboard with minute
hardware kit that you can customise with backpack charger, before
your own watch-face designs. Examples (and soldering on two lengths of
code provided) include random Tetris and wire that double as the
mandala designs. There is also the option to design necklace itself. Adding a micro
your own watch-case with the provided schematic if USB connection means
you don’t wish to stick with Watchy’s standard version. recharging can be done by
The kit includes the PCB, battery, double-sided tape, wrist strap, plugging into a laptop or USB
plastic case, and e-ink display. charger when needed.

watchy.sqfmi.com hsmag.cc/LEDpend

Bat Girl Birkin Bag


Cyberpunk Fusion Ring
Dennis Louie, aka Caitlinsdad on Instructables, created
Jewellery that incorporates electronic components the Batgirl Birkin Handbag a decade ago, figuring
can make a great statement, and we’ve seen versions “What’s more exclusive and has more cachet than scoring a
as earrings, cuff-links, watches, and necklaces. A clever way Birkin bag? Pow!!! A Batgirl Birkin bag!” The Batgirl bag was a
to upcycle circuit boards and declare your techie leanings, few plasticky Birkin knock-off with a helpfully translucent coating that a
such accessories combine utility with fashion. However, NFC “megalumens flashlight” can shine through. Customising it
offers a little something extra (hsmag.cc/pcbring). Maker involved adding purple, yellow, and black fabric trim,
marketplace Etsy lists pendants that can be customised plus a length of cable for the Taser probe and a pink
with a personalised message – essentially modern-day toy phone handset that he wired to work with a
lockets (hsmag.cc/nfcpend) – while jeweller Eli Yoo smartphone. Caitlin’s version features a bat
meticulously crafts NFC rings that can be used to signal, bat proximity alarm, bat taser, bat
unlock a phone and make a micropayment. Eli phone, and plays the Batman TV theme.
describes his collection (hsmag.cc/nfcring) as Based on its maker’s nostalgia for the
Cyberpunk Fusion Rings that provide a futuristic twist 1960s TV series, the accessory is
and embrace the cyberpunk vibe. The precisely hefty enough to serve as a weapon,
CNC-milled brass rings are “adorned by a circuit board, though the Batman the theme tune,
featuring an added NFC chip and tritium tube.” Glowing enabled by Adafruit FLORA, is a little
LED vials can be set to blue or orange, while the NFC on the quiet side. Dennis suggests
chip is programmable so the owner of this “wearable listening to its play here:
piece of the future” can select a range of functions. hsmag.cc/BGsound.

23
DIY Gadgets

FEATURE

VISUAL SPECTACLES
Making everything look just right

489MP DIY Scanner Camera


Yunus Zenichowski’s prototype 489MP camera might be
a bit of a misnomer: it’s actually an Epson flatbed
scanner capable of capturing high levels of detail. Its CCD
moves across a fixed, linear area and processes an image for each
line of the image. Having removed the mechanical CCD from the
old scanner, Yunus attached an inexpensive projector lens to the
front. He admits that this cost-saving choice “comes at a cost of
sharpness.” However, aside from any 3D printing costs, it means
a high-resolution camera can be built from other photography-
related parts. Modifying the scanner potentially results in distortion
and ghosting effects due to the lengthy exposure times, but could
also make for some interesting artistic effects that lend
themselves to large-scale printing. An advantage is the scanner
has a colour depth of 48-bit, rather than the more common 8 or
24. Yunus details his DIY idea at hsmag.cc/489MPcam.

Miniature observatory hsmag.cc/megascanner

This gorgeous mini observatory is the work of Matt


Hough, a retiree with a long-term interest in
astronomy who now has time to put the Python and
hardware design ideas he’s been honing into practice, DIY Vegas Sphere
starting with experiments using Raspberry Pi Pico. He
taught himself about stepper motors for use with astronomy When DrZzs and GrZzs saw the Las Vegas Sphere
cameras, then realised an RP2040 offered the power and entertainment complex, they knew they wanted to build
control he needed and would work alongside the main a replica. They settled on an 8-inch Mini Megasphere (a little
Raspberry Pi 4B. “Mechanical and observatory design were smaller than the 516ft-wide Vegas version), but are also “pretty
something new for me. I’d done some 3D printing before, but far along creating a smaller version that pretty much anyone can
never had to design so many parts myself. The observatory, 3D-print and build.” Challenges included ensuring the pixel density
gears, and mechanism are all homegrown. The semi-intelligent was distributed uniformly around the sphere. After all, if they
motor controller for the telescope is probably the most novel “just wrapped a matrix of pixels around a ball, they would have
homegrown element. I needed a way for the telescope to move ended up with “a bunch of pixels bunched together around the
itself whilst the Raspberry Pi was busy taking photographs, so I top and bottom.” To equally space the pixels, they ended up
gave the motors a little brain. I’m sure there are better solutions with 45 pixels in the top ring and 310 around the middle. The
out there to some of the problems I faced – I hope to still find a frame consists of five horizontal rings, 18 vertical ribs, and 77
few for the next version. It felt like a distraction at the time, but rings of pixels. A commercial CNC routing company cut out all
it’s a new skill, and it has come in useful elsewhere since.” He the lightweight ‘gorilla-ply’ parts. Weighing roughly 550lbs, the
used CircuitPython for the ‘very nice’ Adafruit components and huge sphere also needed to be protected from the elements.
made use of Python libraries for the Skyfield, OpenCV, PiDNG, Once painted and waterproofed, 20,000 pixels were attached
and Astroalign astronomy-specific features (see his GitHub: to 1-inch-spaced pixel straps. Even with the help of “pixel-
hsmag.cc/Pilomar). Chief among Matt’s goals for the next pushing pliers, a pixel-pushing jig, and wearing work gloves”,
version of the mini observatory is finding a way to have the the process took 50 hours!
telescope process images in real-time.
hsmag.cc/VegasSphere
hsmag.cc/MiniObs

24
LENS

GET MUSICAL
Build your own instruments

Fuzz Effect
Fuzz effects can make music seem more raw and alive,
rather than regular and controlled, adding reverb and
delay to shape the tone to make it more unique and
appropriate, in the words of maker Handy Bear. Beloved of
rock guitarists, it seems fitting that the grungy image is echoed
by the homemade vibes of this DIY distortion pedal build. Using
a blank breadboard, some jumpers, LEDs, and capacitors, and
encasing the electronics in a metal enclosure, you can make a Stepper Motor Piano
range of effects. Sites such as tagboardeffects.blogspot.com
advise on how to make effects reminiscent of particular songs Thisinomine’s gorgeous instrument works by spinning
and bands, explains Handy Bear, and a fuzz effect is fairly motors at different speeds. There are a few such
simple and a good starting point. Spaces for the foot switch, examples around, but this one is user-playable, rather than
LEDs, potentiometer, and cable all need to be marked out and creating random notes or playing a preset song, much like an
drilled before the power jack and cable socket are added (and old-time fairground organ. “I wanted to create something that
isolated) and the enclosure is wired up as a foot pedal. looked and felt like an instrument, but secretly had an electronic
skeleton,” says Nomine. The motors used here have 200 steps
hsmag.cc/FuzzEffect and can be rotated a single step at a time, so they are highly
accurate, and can be set to rotate a certain number of degrees
and at a certain speed. This level of accuracy makes them ideal
for music-making. Whenever one of the copper keys is pressed,
it sets off one of the stepper motors, controlled by an Arduino.
The acoustics of the piano’s resulting notes are enhanced by the
polished African hardwood case in which it’s encased.

hsmag.cc/MotorPiano

25
SUBSCRIBE
TODAY FREE
Pico W
GET SIX for subscribers!

ISSUES
FOR JUST:
£30 UK / €43 EU / $43 USA & Canada
SUBSCRIPTION

GUARANTEED
RASPBERRY PI 5
AVAILABLE NOW
for all subscribers

SUBSCRIBER BENEFITS:
>G
 et every issue of >B
 eat the crowds with
HackSpace magazine guaranteed Raspberry Pi 5
delivered to your door stock for subscribers
>E
 arly access to the >G
 et a free Raspberry Pi
PDF edition Pico W

hsmag.cc/subscribe
Subscribers will get a voucher giving them the chance to purchase one Raspberry Pi 5 from reserved stock at The Pi Hut (thepihut.com) for full retail price. Reserved stock means that these will be available even if they are out of stock for general purchase.
How I Made: PiArtFrame

FEATURE

HOW
I A
bout four years ago, in the
cold of December, I was
boarding a plane destined
By Karl Mose for the UK. I’d applied for
university to study computer
science, and part of the interview involved
an expectation you’d have some kind
of project to talk about. So, I spent the

MADE
preceding weeks attempting to devise
a project that I hoped would impress
the interviewers. I’d always been very
fascinated with maths and, at the time,
fractals more than anything had caught my
attention. Fractals are geometric shapes
that we can generate with mathematics.
Some fractals, when tuned correctly,
can be stunningly beautiful. To this day,
it still blows my mind how much visual
complexity you can have emerge from
relatively simple equations. At that time, I
spent hours exploring their vast landscapes
and adjusting their colours, making it a
natural choice for the project.
The project that I came up with at the
time was a rather painstaking effort of a

PIARTFRAME
couple of months, using a Raspberry Pi to
generate the fractals, and a smartphone
app that would download them periodically
and set them as my phone wallpaper, for
me to look at throughout the day. The app

Bringing mathematical art to


halls of residence

28
LENS

got, at most, a hundred or so downloads,


and in the interview I spent, at most,
one or two minutes talking about the
project, but the admissions team seemed
pleased with it and I’d like to think it had
some credit in me being granted a place.
Last year I finished my undergraduate
[course] and left academia, as well as the
UK, behind. I started working on a job
abroad and enjoyed no longer having to
Above
live with a student’s budget. However, From the front, there’s
missing the excitement and curiosity of not much to show that
this is electronics
research, and after several tough decisions,
I returned to my old university to start a Above Left
The Waveshare driver
PhD. Having moved onto research instead slots directly onto the
Raspberry Pi GPIO pins
of revising, and teaching students rather
than being taught, there is some sense of
having gone full circle. This feeling was
only strengthened by moving back into
a university dorm room. Shortly after, I
invited some old friends along to mine,
who promptly complimented my room as
being ‘pretty minimalist’. I took the hint,
and decided that my room needed

29
How I Made: PiArtFrame

FEATURE

would like a more in-depth look at how one


computes whether or not a point is in the
Mandelbrot set, check out the GitHub repo
of the project (hsmag.cc/PiArtFrame).
A notable challenge arises from the
script continuously zooming into the
Right Mandelbrot set, necessitating increasingly
By continuously zooming
in, I get an ever-changing precise floating-point computations.
bit of art To solve this, I used the Python 3
decimal library, which allows for doing
computations at arbitrary precision. As
the renderer zooms into a smaller and
smaller section of the Mandelbrot set, it
some decoration. And so, I decided to pay increases the precision at which it does
a homage to this old project of mine that decimal computation. As one attempts to
originally led me to this university path. render increasingly granular sections of the
That’s how I came up with the idea for the Mandelbrot set, it takes longer and longer
PiArtFrame: rather than rendering fractals to determine whether or not a given point
to my mobile phone, I’d turn them into is in the set or not. The algorithm we use
a piece of room decoration. I wanted to needs progressively more iterations, and to
build a digital picture frame that, using the make matters worse, there’s not an easy
Raspberry Pi, would continually update way to calculate how many we need. If we
itself with new fractals. do too few, the render will look smooth
The first hurdle of the

“WE FIRST
project would be to write
code to actually render
the fractal. Speed wasn’t
PICK A SET OF essential, as the frame just
needed to run fast enough

BOUNDARIES”
to update a couple of times
a day, so I opted for Python.
The goal of the script was
to start at some large-scale
section of the Mandelbrot set, and then
continually zoom in on increasingly smaller
areas that appeared visually interesting.
To render a section of the Mandelbrot
set, we first pick a set of boundaries. For
example, this could range from x = -2 to
x = 2 and y = -1 to y = 1. We then divide
Right
The same bulbous shape this section into a grid of pixels and, for
of the Mandelbrot set each pixel, we compute whether or not it is
appears infinitely many
times within it contained in the Mandelbrot set, using the
aforementioned algorithm. For those who

30
LENS

and uninteresting, and if we do too many,


it will take too long. I made an approximate
equation for the number of iterations for
a given zoom-level, but it is inexact and
sometimes either over- or undershoots.
One of the hardest parts of the script
was designing a method for automatically
exploring the Mandelbrot set. The Right
Mandelbrot set is huge, but most parts of Fractals occur all over
the place in nature,
it aren’t that visually interesting, it’s only most deliciously in the
really around the edge that you see the Romanesco – a sort of
halfway house between
interesting patterns discussed earlier. The broccoli and cauliflower
current system that handles exploration Credit: Ivar Leidus
works by dividing the most recent render creativecommons.org/
licenses/by-sa/4.0/
into four squares. It then quantifies the
uniformness; that is, how close each of Below
All the parts you need:
the four quadrants is to being just one the frame, picture
colour. Based on this info, it then picks a mount, back panel, e-ink
panel, and the Raspberry
random quadrant to zoom into, filtering Pi Zero WHAT ARE FRACTALS?

For those who’ve yet to be initiated, consider this a much too brief
introduction into a very exciting and mind-boggling world. Fractals are
loosely defined as geometric objects that display detailed structure at
arbitrarily small scales (source: Wikipedia). That means that one can keep
zooming in on a fractal, without it ever reducing down to a pixellated grid
like a traditional image, or just lines and colours like a vector graphic.
Many fractals are self-similar – that is, the fractal contains itself in its
entirety within some subsection. Fractals sometimes appear in nature, in
things like pine cones, snowflakes, or even broccoli! The Mandelbrot is
just one example of a fractal, but a rather interesting one.
The Mandelbrot set is defined by an equation which tells us, given a
certain two-dimensional coordinate, whether or not that point is inside
the Mandelbrot set or not. It’s based on a relatively simple equation using
complex numbers. If you’re familiar with complex numbers, it won’t take
more than two to three minutes to understand the algorithm by which
we figure out if a pixel is included or not included in the Mandelbrot
set. There are plenty of good sources online, but I can recommend the
YouTube channel Numberphile in particular. If you’ve not yet heard of
complex numbers, I’d highly recommend it – they allow you to take the
square root of a negative number, which is quite cool. The Mandelbrot set
is self-similar – but often in surprising ways. The Mandelbrot set contains
itself an infinite amount of times, but in some cases, it may also be bent
or skewed in some odd way! There’s loads of other different shapes
to discover within the set, with some areas having been dubbed with
creative names such as the Sea Horse or Elephant Valleys.

31
How I Made: PiArtFrame

FEATURE

out any fully uniform quadrants. This


algorithm isn’t perfect, and sometimes
(though not often) leads one into fairly
uninteresting areas of the Mandelbrot set.
If one sees that the frame has ended up in
an uninteresting section, though, all it takes
is a quick switch on and off the Raspberry
Pi to restart its search. The script can take a 7.5-inch e-ink screen from Waveshare,
anywhere from a few minutes to hours or which is sold with a Raspberry Pi header
days to render, depending on how far one that makes integrating with the Raspberry
has zoomed in. This could be sped up (to Pi Zero a breeze. While the e-ink does
a limited extent) using a faster Raspberry add to the subtlety, standard e-ink panels
Pi. That said, part of the charm of the still have a grey hue rather than white
project is that the frame updates only that distinguishes them from, well, paper.
rarely, and considering the superior power Leaning on a past summer job working in
characteristics of the Raspberry Pi Zero, it a print shop, as well as advice from friends
seemed a natural choice for this project. with better taste than myself, I decided to
The project’s aim was not to create try to give the frame a more retro look to
something large and attention-demanding, mask the tech-vibes of the e-ink colours.
but rather something subtle that could I paired the screen with a comparatively
be mistaken for an ordinary picture, if not large 18 × 24 cm light-wood picture frame
for the power cord. The natural choice for which, when paired together with a white
such a project is an e-ink screen. I picked picture mount, would give the frame a
more classic look. Other than aesthetics,
the picture mount also provides padding
between the glass of the frame and
the e-ink panel, which makes me more
confident in the durability of the build. I also
configured Linux to start the script when
the Raspberry Pi’s operating system boots.
The build itself is very simple, and can
be done with the aforementioned pieces

Left
Only minor modifications
to the picture frame
were necessary

“THE BUILD
ITSELF IS
VERY SIMPLE”

32
PIARTFRAME LENS

of hardware, as well as a knife (ideally


a penknife, but anything sharp will do).
Simply insert the picture mount inside the
picture frame, and then place the e-ink
panel on top. Make sure that it’s aligned – if
you’d like, you can use tape to keep it in
place, but it’s not strictly necessary. You’ll
need to cut a little slit in the back of the
cardboard for the e-ink panel’s cable to The project is done, for now. In the
go through. Most picture frame backs are future, I’d like to improve the exploration Above
The frame, as well as
made of cardboard or some kind of fibre, and iteration-approximation algorithms the Raspberry Pi Zero,
now have a home on
so this shouldn’t be too difficult. The slit further so you’re more guaranteed to my pinboard
doesn’t need to be large, but ensure that see an interesting image. I’d also like to
Above Left
the angle on the frame isn’t too sharp. Now experiment with the new colour e-ink Good thing that this
all you need to do is insert the back of the panels, as the Mandelbrot set can look side is facing the wall

picture frame, and squeeze the tabs tightly stunning with some simple colouring.
so that the panel doesn’t slip. The mount The last challenge was picking a spot
provides a cushioning for the panel here – if for the finished frame. I couldn’t decide
you’re not using a mount, I’d recommend between the office or my bedroom, but
taping the panel instead and only pushing chose the latter. Now, I wake up to new
in the tabs lightly. artwork every day, and it’s quite exciting
when I catch it changing. It reminds me of
the intrinsic fun factor in computer science,
and why I decided to pursue this degree to
begin with.

33
PLAY
& CODE
GAMES!
RETRO GAMING WITH

RASPBERRY PI 2 ND E D I T I O N
Retro Gaming with Raspberry Pi shows you how to set up a
Raspberry Pi to play classic games. Build your own games console or
full-size arcade cabinet, install emulation software and download classic
arcade games with our step-by-step guides. Want to make games?
Learn how to code your own with Python and Pygame Zero.

Set up Raspberry Pi for


retro gaming
Emulate classic
computers and consoles
Learn to code your
own retro-style games
Build a console,
handheld, and full-size
arcade machine

BUY ONLINE: magpi.cc/store


B
VEEB Projects

INTERVIEW

EE
V
36
ro
B ts
LENS

ec
HackSpace magazine meets…

VEEB Projects

j
Design studio in Basel, Switzerland

o
or a small mountainous country
divided between Italian, French
and German [and Latin] speakers,
Switzerland punches well above
its weight in terms of design.
Univers, Frutiger, and the mighty
Helvetica are all Swiss; HR Giger, the
creative brain behind the look and feel of the
Alien films, was Swiss; even the Swiss flag
is neatly minimalist. If you’re designing in
Switzerland, you’re standing on some very
large shoulders.
Two such designers are English duo
Vanessa Bradley and Martin Spendiff. As
VEEB, the duo have been creating devices
sometimes simple, sometimes complicated,
but always beautifully clean. We caught up
with Martin late last year to find out what
they’re all about.

37
B
VEEB Projects

INTERVIEW

E
HACKSPACE Are you designers first and VEEB When it first came out, it was VEEB Three reasons:
foremost, or engineers, or something excitement at such a small and affordable

E
else? I ask because your projects are tool for doing things with, but, over time, it • Maybe it’s an age thing, but the constant
unusually pretty. A lot of Raspberry Pi became much more about the community. cycle of upgrading means that you can
projects have wires sticking out and bare We tried using <insert name of other fruit> end up chasing the latest and greatest
PCBs exposed, but yours always look SBCs every now and again, but found that thing while ignoring what went before.
so clean. the software was a little too bleeding-edge A lot of innovation is working around
for our limited skills, and the software was limitations that exist at the time, and

V
VEEB We aren’t. Our backgrounds are IT getting in the way of doing stuff. there are some really smart ideas
(Vanessa) and Mathematics (Martin). The real epiphany was the contained in old objects. Those smart
The physical form that a project ends up Pico microcontroller, which made us ideas should be augmented with new
taking is one of the most challenging bits suddenly look at things and think ‘we tools, not abandoned.
(for us, it is anyway). could make one of those.’ It also taught us • There’s also an element that is just
Appearance is often tied to the to be better at using tools that were more about waste. There’s an old video of
workflow. The ‘cyberdeck’ (github.com/ suited to addressing the thing you’re someone making a toaster from
veebch/boostbox) we made a while ago trying to do. There was a case, when we scratch (hsmag.cc/
was a good example. It’s the 80/20 rule. were building something recently, when ToasterFromScratch), and it really
Getting to a working version was quick we realised that the best thing to use was underlines how much effort goes into
and easy, but it took about another year of just a simple switch… no microcontrollers, making ‘things’.
experimenting with tools that turned a no relay, just a one-dollar switch. I • Blade Runner was a really cool film.
novelty into something that we found suppose that it’s a version of ‘just because The retro-futuristic tech in that was
genuinely useful. It now gets used for you can, doesn’t mean that you should.’ pretty spectacular. If we can make
emailing (NeoMutt), writing (Neovim) and things that have that aesthetic, we’d be
compiling MicroPython for some of the HS You do a lot of upcycling, adding more than happy.

o
hardware we sell. new functionality to machines that
should, by rights, be obsolete. What is it HS Everything you make seems to do
HS What first drew you to using about old objects that inspires you to one thing, and one thing well. Is that
Raspberry Pi? work with them? on purpose?

r
Left
Endless wisdom,
supplied by the
r/Quotes subreddit

Right
Infrared photography
the pretty way

38
B ts
LENS

jec
o 39
B
VEEB Projects

INTERVIEW

EE
V
ro
Left
This adapted
Teasmade plays
God Save the Queen
when it’s time for
a brew

Above
Track the progress
of the day using a
Pico W and some
neopixels

Above Right
The Boostbox was
originally a project
to turn an old Super
8 viewer into a
YouTube viewing
terminal – it turned
into a fully fledged
computer

40
B ts
LENS

jec
o
VEEB We buy into the first item of the things being on time, and just ended up VEEB It’s probably the uncool part! The
Unix philosophy which was written in a talking to the people that have an clocks were really interesting to us
Bell System technical journal back encyclopaedic knowledge about that stuff. because they were gorgeous objects, and
in 1978: Pick any subject and, no matter how there was a time signal there, so we just
“Make each program do one thing well. obscure it is, there’s most likely a forum needed the ‘glue’ to join that signal to
To do a new job, build afresh rather than on the internet, full of experts who are these redundant old things to get them
complicate old programs by adding keen to grumpily share their expertise. rejuvenated and useful again.
new ‘features’.”


Maybe our version would include HS You document your build
adding new features to old things processes on GitHub. Do you get
that would otherwise be redundant,
We live in a country that people adding improvements/
but that’s the general idea. is obsessed with things suggestions to the way that you
being on time, and ended up do things?
HS You rehabilitated a German
railway clock using a ferrite
talking to the people with VEEB The best bit about adding
antenna attached to a Raspberry Pi an encyclopaedic knowledge things on GitHub is when people use


Pico. That’s way beyond most about that stuff your idea to do something new
people’s ability. Where do you start or better.
with knowing how to do this? Is this There has been more than one
deep ham radio knowledge? person that has made massive
HS Also, it’s incredibly cool, but most progress bars (github.com/veebch/
VEEB Definitely not. That was a rabbit people wouldn’t bother with the cool part. hometime) for their classroom. Knowing
hole that appeared upon wondering how What inspired you to take the time from a that people are looking at your code is
the clocks at train stations worked. We (presumably Cold War) radio signal a good way to make sure it’s not
live in a country that is obsessed with coming from an atomic clock? too terrible.

41
Objet 3d’art

REGULAR

Objet 3d’art
3D-printed artwork to bring more beauty into your life

T
he year is 2024. Humans have been
subjugated, ruled over by parasitic
oblongs that feed on our emotions,
trading dopamine for electricity. It is
the year of the smartphone.
Some fight against the inevitable – see page 14
to see how Guy Dupont tames the emotional
blackmail of the smartphone. Some accept their
fate. Matthew Ghost has decided that if he must
have a smartphone pinging up notifications every
so often, it might as well be in his eyeline on his
desk so he can take a quick look, rather than
suffer the physical distraction of getting the thing
out of his pocket and prodding it to find out which
app is craving his attention this time.
He’s done a brilliant job of it too. This example
is printed in Prusament PLA Prusa Galaxy Black,
and the adjustable tilt mechanism makes it a
great example of a simple, functional print.

hsmag.cc/TiltPhoneStand

42
SPARK

43
Letters

REGULAR

Letters
ATTENTION
ALL MAKERS!
If you have something you’d
like to get off your chest (or
even throw a word of praise
in our direction), let us know at
hsmag.cc/hello

BARBOT
O.M.G. The cocktail robot in issue 74 is
amazing. I can’t believe I’ve never
thought of this before. I currently have a
cupboard full of weird and wonderful
drinks that I bought at one time or
another, but never use because I can’t
remember what to do with them. With
one of these, I can just program in all the
drinks and then the robot can serve me
up whatever strange drinks my heart
desires. I suppose I could also get a
notepad and write down the recipes, but
a robot seems like more fun.

Dave
Glasgow

Ben Says: Glad you enjoyed it. Cocktail


bots have been around for a while, but
this one is a nice compact build. Who
needs a notepad when you can over-
engineer a solution? Actually, that
should be the title of this magazine.

44
SPARK

GLASSES HOLDER
This might sound a bit over the top, but
the 3D-printed chimpanzee skull glasses
holder might be the coolest thing I’ve
ever seen. Seriously. It’s just a shame I
don’t wear glasses. Maybe I could get a
pack of those really cheap reading
glasses just to have something to put on
my new chimp skull?

Jane
Norwich

Ben Says: If you think the chimpanzee


skull glasses holder is cool, you’re not
going to believe how it looks with a pair
of sunglasses on. Obviously you’re free
to pick whatever sunnies you like, but
pop a pair of aviators on this thing and
bask in the glow of the coolest object to
grace this planet.

REPAIR
I’m totally onboard with Jude Pullen’s fight to repair things. It’s an absolute
disgrace that it’s so hard to keep the things we buy working.

Zac
London

Ben Says: If you’ll allow me to stand on my soapbox briefly. Personally, I think


that the current disposable culture is a major world problem that needs to be
tackled by co-ordinated action at every level. A big part of this has to come
top-down from the government. It could be as simple as forcing companies to
honour longer warranties which, in turn, would make things more durable. Or it
could be more complex, such as introducing a tax on new parts while
simultaneously introducing financial incentives for fixing things. The net result
of this would be that we’re not paying more for our stuff because, even though
new things are more expensive, repair is cheaper and more effective.

45
200 PAGES OF RASPBERRY PI
QuickStart guide to setting up The very best projects built by
your Raspberry Pi computer your Raspberry Pi community

Updated with Raspberry Pi Pico Discover incredible kit and


and all the latest kit tutorials for your projects

Buy online: magpi.cc/store


FORGE
HACK MAKE BUILD CREATE
Improve your skills, learn something new, or just have fun
tinkering – we hope you enjoy these hand-picked projects

PG

52
MECANUM ROBOT
Let your bot travel in
any direction
PG
48
PG
SCHOOL OF
MAKING
58
RUBBER STAMPS
Laser-cut yourself Start your journey to craftsmanship
some inky artwork with these essential skills

PG 48 Full Control G-code


60
COFFEE CAMERA
Develop your photos with
household chemicals

PG PG
64 74
ONLINE ROBOT PCB MANUFACTURE
Link your bot up to the internet Where should you get your PCBs made?

PG PG

70 80
SMOOTH PRINTING PICO MODULAR
Create glassy 3D prints with PVB Let’s tune up our little synth
Gain complete control of your 3D printer

TUTORIAL

Gain complete control


of your 3D printer
Ditch the slicer and design models in Python and G-code

W
hen you learn 3D printing, you that can move in three dimensions. Obviously, there
find out about the different are some restrictions physics imposes on us about
types of files that are used. what happens when molten plastic comes out of an
First, there are files that contain extruder, but these aren’t quite as severe as slicing
details of the objects – usually software would have you believe.
STL files. We slice these files to Let’s take a look at the spacer design of Figure 1
Ben Everard produce the second type of file, G-code, that tells the at hsmag.cc/NonplanarSpacer (you can manipulate
printer what to do and how to move. and modify the design in your browser).
This is a good way of doing things, and it means In traditional terms, this is one layer. The print head
Ben’s house is slowly
that it’s easy to print identical objects repeatedly on moves around, sticking each line to the edge of the
being taken over by 3D
printers. He plans to a large number of machines. However, it does have next. However, this single layer isn’t flat. It’s wavy
solve this by printing an a downside. It means that we are at the mercy of because the print head moves up and down as it
extension, once he gets
enough printers. our slicers. We can only print things in the way they goes around.
are sliced. It doesn’t have to be like this, though. Our
printers are far more capable than our slicing software FIT THE GEOMETRY
would have us believe. Sometimes it makes sense to design the G-code
FullControl GCODE takes a different approach. It output for the particular geometry you're printing. A
does away with the 3D model file entirely. Instead, particularly good example of this is nuts and bolts.
we write Python code to create the G-code directly. It’s perfectly possible to print nuts and bolts using
We’ll look at exactly how to do this a bit later on, but conventional slicing. However, the results can be
let’s get stuck in and see what we’re able to do. mixed. The thread moves upwards at a slight angle,
but the layers remain stubbornly horizontal. What
NO MORE LAYERS should be a smooth thread has a series of contours
Slicers work by breaking a design into layers (or from the layer lines.
slices) and assembling your final object like this. With FullControl, we can print in a spiral. This is
However, there’s nothing inherent in your 3D printer much like vase mode on a traditional slicer but, as we
that means it has to work this way. It’s an extruder have more control, we can match the angle of the
spiral to the angle of the threads on the bolt, meaning
that you get a perfectly smooth thread. Figure 2
shows an example: hsmag.cc/NutsAndBolts.
In this case, the infill design is lined up with how
forces are applied when screwing and unscrewing, so
you get a lot of strength for very little filament.

NEED FOR SPEED


Figure 1 Slicing is a general-purpose approach that isn’t
This spacer doesn’t necessarily the best way of printing a particular
have layers in the
traditional sense – the design. Taking a specific approach can sometimes
print head moves be faster. A simple example of this is vase mode.
round while going up
and down This custom way of slicing is a very quick way of

48
FORGE

Figure 2
The star pattern in the bolt’s head gives
strength in exactly the directions needed

printing large things quickly. However, not all models


can be done in vase mode. There’s another method
called ‘snake mode’, which is similar but prints a
wall. The print head moves one way, then moves
up a layer and moves backwards in a zig-zag pattern.
This prints a whole other class of objects very as you have to persuade the slicer to interpret a
Figure 3
quickly, but isn’t available in any slicer – but we’re particular model in a particular way. However, with You can make the
not using a slicer! Take a look at the example at FullControl, it’s easy. If you want filament to droop, outer surfaces any
texture you want
hsmag.cc/SnakeModeSoapDish for one model that just move the extruder to the position you want and
prints this way. squirt filament.
FullControl is a Python module that you can
RIPPLES IN THE POND install and run locally. However, if you just want to
By default, slicers try to give you the smoothest have a play around with it, the easiest way of getting
possible surface for your print. This is often what we started is with a Google Colab workbook. Log in at
want, but not always. An example is the ‘fuzzy mode’ colab.research.google.com (you’ll need a Google
some slicers offer, where they imitate a furry texture. account) and click to create a new notebook.
However, we can be far more creative than this if In Colab, you can build a notebook out of blocks.
we create our own G-code. The ripple texture demo Each block can either be code or text. Code
creates a surface that ripples, and you can adjust the blocks can be run at any time by clicking on the
way it does this (or indeed, you can create whatever arrow next to them. Each block runs in the same
surface finish you like). Python environment as the others, so if you import
You can see this in action in Figure 3, which is something, or create a variable, you can use it in the
taken from hsmag.cc/RippleTexture. other blocks. The code is run in the order you run it,
so a block earlier in the notebook is not necessarily
GOING OUR OWN WAY run before a block lower in the notebook – you
So far, we’ve looked at code that other people have
created. There are a few parameters we can adjust,
but it’s basically pretty fixed. Let’s take a look now at
USE AT YOUR OWN RISK
how we can create our own designs. It is possible to damage your printer with G-code, and there’s no guarantee that the code
It’s a little late for Christmas, but this fir tree model output from FullControl won’t do some harm. It’s possible that it could try and move your
we created for a little winter cheer gives a good printer beyond its limits, overheat it, or otherwise cause a problem.
introduction to creating your own models (Figure 4). Modern 3D printers are pretty good at detecting any movement that could damage them
We wanted to create a pine branch effect by and not doing it, but if you’re going to use FullControl, you have to accept that the power
drooping loops of filament down the side of a cone. you have to manipulate the code comes with this risk.
It’s not impossible to design something like this as You have been warned, so don’t blame us if anything goes wrong.
a 3D model that can be sliced, but it’s not very easy,

49
Gain complete control of your 3D printer

TUTORIAL

have to click on the Run arrow to actually run a block. With FullControl, you build up a list of steps. Each
However, you can automatically run all the blocks step is generated by a FullControl method, and when
sequentially by going to Runtime > Run all. you’re finished, you can convert these into G-code.
That is a very brief overview of what Colab can do, Our Christmas tree is:
but it should be enough for you to run our notebook.
If you just want a Christmas tree, you can go straight import fullcontrol as fc
to a completed notebook at hsmag.cc/xtree. from math import tau
Because of the way Google handles permissions, you import random
may need to go to this in a private browsing tab. steps = []
Our Colab notebook has a Python environment, for j in range(360):
but this doesn’t have FullControl installed, so the first for i in range(60-int(j/6)):
thing we need to do is create and run a code block to steps.append(fc.polar_to_point(centre=fc.
install FullControl: Point(x=100, y=100, z=(j*0.2)), radius = 15-
(j/24), angle = (i)*(tau/(60-int(j/6)))))
if 'google.colab' in str(get_ipython()): if random.randint(0,11) == 10 and j>10:
!pip install git+https://github.com/ steps.append(fc.polar_to_point(centre=fc.
FullControlXYZ/fullcontrol --quiet Point(x=100, y=100, z=(j*0.2)), radius = 15-
(j/24)+10, angle = (i)*(tau/(60-int(j/6)))))
You’ll need to run this each time you get a new
Figure 4
By extruding above runtime. This means each time you visit the site fc.transform(steps, 'plot', fc.PlotControls(neat_
empty space, we or each time the runtime disconnects (you’ll get a for_publishing=True, zoom=1))
can get filament
to droop down warning message pop up if this happens).
We use two loops: an outer loop that increments
each layer, and an inner loop that ticks around to
create a circle. With each iteration of the inner loop,

MACHINE-SPECIFIC G-CODE
FullControl G-code is machine-specific, as most
G-code files are. There are preset defaults for some
printers, but not all.
There is a subreddit at reddit.com/r/FullControl where
you might find other users who have the same printer
as you.
In truth, there’s not a lot of difference between the
G-code for different printers. Obviously there are
limits on the size of the print volume, the speeds that
can be reached, etc. You’ll need to ensure that your
code respects these. Other than this, there are slightly
different initialisation functions that run at the start of
the printer.
For example, on the Prusa MK4, you need to tell the
printer the size of the object so that it does the mesh
bed levelling in the right way.
You can find out the initialisation G-code by slicing
an object as you normally would and taking a look at
the G-code produced. You might need to copy and
paste some of this over into the G-code produced
by FullControl.
You can do this in a more robust way by creating your
own printer profile. Take a look at the existing printer
profiles in the GitHub repository to find out where to
start: hsmag.cc/FullControlXYZ.

50
FORGE

Left
You can run
FullControl in your
browser via Google’s
Colab programming
environment

we do one of two things. Either we draw a line If you’re happy with your code, you can run the
segment to the next point or – one out of every following to download it:
eleven times – it draws an extra line an additional
10 mm out of the side. Since there’s nothing below from google.colab import files
this line, it will sag down against the side of the tree. printer=prusa_i3
We build up the steps with a list of Point objects
which you can create in two ways. You can do it gcode_controls = fc.GcodeControls(
directly with code such as: printer_name=printer,
initialization_data={
fc.Point(x=100, y=100, z=(j*0.2)) 'primer': 'front_lines_then_y',
'print_speed': 200,
However, most of the time we use the 'nozzle_temp': 210,
polar_to_point helper function. This lets you 'bed_temp': 60,
use polar coordinates, which is really useful for 'fan_percent': 100,
round objects such as this. The method takes the 'extrusion_width': 1,
following parameters: 'extrusion_height': 0.2})
gcode = fc.transform(steps, 'gcode', gcode_
• centre – The origin of the polar coordinate system controls)
as a Point object open(f'{filename}.gcode', 'w').write(gcode)
• radius – The distance from the centre files.download(f'{filename}.gcode')
• angle – The angle that you travel out from
the centre. You’ll see that we selected prusa_i3 as the printer.
This is for Prusa machines before the MK4. Other
It returns a Point object that corresponds to the options are generic, ultimaker2plus, prusa_i3, ender_3,
correct place in 3D space. cr_10, bambulab_x1, toolchanger_T0, toolchanger_T1,
The final line in the code block creates a 3D render toolchanger_T2, toolchanger_T3. If your printer isn’t
of the print, but it doesn’t attempt to predict how the one listed, then take a look at the box, opposite, on
filament will flow once it’s out of the printer. For that, how to get your printer working.
we actually have to print it. We’ve covered the very basics of how to get
Each time you run the code, you’ll get a different started with FullControl; next issue, we’ll delve a
output because it’s based on random chance, so each little deeper into how to create some weird and
Christmas tree is unique. wonderful prints.

51
Raspberry Pi mecanum robot

TUTORIAL

Raspberry Pi
Part 01

mecanum robot
Create a robot which can go forwards, backwards, sideways,
diagonally, and turn on the spot. The mecanum wheels allow
the robot to navigate the tightest of spaces

T
ake your Raspberry Pi on the move by This is achieved by having rollers angled around
Stewart
MAKER

designing and making a wheeled robot This the wheel. The rollers of diagonally opposite
Watkiss tutorial will explain how you can design and wheels need to be in the same direction. Turning
make your own robot. Start by designing your the wheels in a certain combination will determine
Also known as
Penguin Tutor. own chassis and mount mecanum wheels with the direction. This is easiest to understand
Maker and YouTuber full direction control. The robot will then need through watching the video on YouTube:
that loves all things
four separate motors individually controlled with magpi.cc/mecanumrobotyt.
Raspberry Pi and
Pico. Author of a H-bridge driver for each wheel. Take control
Learn Electronics by learning how to use AntiMicroX to control the
with Raspberry Pi. robot with a gamepad.
penguintutor.com Creating a chassis
twitter.com/
02 For any kind of vehicle, you will need a
stewartwatkiss chassis to mount the motors and electronics. You
Mecanum wheels
01 Mecanum wheels are a type of
can use any method you choose. The base should
be thin enough to accommodate the size of the
omnidirectional wheel which can be used to move wheels, but otherwise most materials can be used.
a robot vehicle in multiple directions. They are You could use plywood, acrylic sheet, or even
particularly good at getting into tight spaces as thick cardboard.

Figure 1: Robot the wheels can propel the robot forwards and If you have access to a 3D printer then you can
chassis design
created in FreeCAD. backwards as normal, but can then also move design your own 3D-printed chassis, or use the
Includes four motor
diagonally or sideways without any forward or one available at magpi.cc/robotmecanum. This is
brackets which are
printed separately backwards movement. shown in Figure 1.
You will need some way of fixing the motors.
Brackets are included in the 3D printer files, or you
can purchase suitable brackets which are included
in the component list.

Raspberry Pi Zero W
03 Whilst any model of Raspberry Pi can be
used, a Raspberry Pi Zero W or a Raspberry Pi Zero
2 W are well-suited for a robot vehicle. They are
small, making them easier to fit on a mobile robot,
and they also have lower power requirements
than some of the other models. The wireless
capability is useful when programming the robot

52
FORGE

THE MAGPI

The special mecanum


wheels allow the robot This tutorial
to move in any direction is from in The
MagPi, the official
Raspberry Pi
magazine. Each
issue includes a
All four motors need huge variety of
to be controlled projects, tutorials,
individually with two tips and tricks to
motor driver ICs help you get the
most out of your
Raspberry Pi.
Find out more at
magpi.cc

and for getting the controller working. A micro- you can normally use a single power supply for
USB to USB adapter is needed for connecting the both your Raspberry Pi and the motors.
controller. A shim adapter is also recommended. The different options are a 6 V power supply You’ll Need
(4 × AA batteries) or a USB power bank. The
breadboard layout shows both options. Raspberry >  2 × TB6612FNG
Pi is powered through GPIO 2 using a diode which motor drivers
magpi.cc/
Powering the robot
04 The motors are designed for 6 V, whereas a
protects against reverse voltage and drops the
voltage slightly. If using the USB power bank and
TB6612FNG

Raspberry Pi needs a 5 V power supply. In practice, the voltage is too low, then the diode bypassed >  Mecanum wheels
magpi.cc/
if required. In either case, power must NOT be
mecanumwheels
connected to your Raspberry Pi power input socket
when powered through the GPIO. >  4 × geared motors
magpi.cc/
gearmotor
>  Motor brackets
magpi.cc/
H-bridge motor controller
05 To allow the motors to go both forwards
motorbracket

and backwards, they each need an H-bridge. A >  USB power bank
magpi.cc/nanowave
good choice is the TB6612FNG driver. This driver
can handle up to 1.2 A of current, and has two >  Micro USB shim
H-bridge circuits on a single SMD integrated magpi.cc/
microusbshim
circuit. To be able to use these with a breadboard,
they are available on a SparkFun motor driver >  Wireless gamepad
magpi.cc/
board. This is shown in Figure 2.
wirelessgamepad
Along with the inputs for forwards and
backwards, each H-bridge needs a PWM signal to >  Micro USB breakout
board
set the speed of the motor. A single PWM output
magpi.cc/
can be used from your Raspberry Pi, which will usbbreakout
Figure 2: The motor driver is an SMD IC soldered onto a
breakout board, allowing it to be used with a breadboard ensure that all the motors run at the same speed.

53
Raspberry Pi mecanum robot

TUTORIAL

A schematic diagram is shown in Figure 4.


Note that the labels beginning with D indicate
connections to the motor driver input, and M is
used for the motor connections.

Setting up the Raspberry Pi


07 When setting up your Raspberry Pi, you
may find it easier to enable VNC, which you can do
through the Raspberry Pi Configuration tool. This

Figure 3: Breadboard
diagram showing will allow you to connect from another computer
the wiring between using a VNC client. Using VNC, you won’t need to
the different
components. There is connect a keyboard or mouse, allowing the only
both AA battery and
USB port to be used for the USB dongle for the
micro-USB power
connected, but only gamepad controller.
one should be used
If using a game controller, then the AntiMicroX
software is needed, which can be installed using:
Wiring up the circuit
06 The wiring diagram is shown in Figure 3. sudo apt install antimicro
This is just a case of wiring up the motor driver
inputs with appropriate pins from your Raspberry This will be configured later in the tutorial.
Pi. Note that the breadboard has two different
power rails. The top rail is connected to the 6 V or
5 V supply for the motors, whereas the bottom rail
Programming motor control
is connected to the 3.3 V pin on your Raspberry Pi
to run the motor driver at 3.3 V (so that it is at the
08 The motors are controlled using GPIO
same voltage as the GPIO pins). Zero. There is an instance of Motor for each of

Figure 4: Schematic
diagram which makes it
easier to see which pins
are connected. Labels
are used to avoid the
confusion where wires
cross each other

54
FORGE

Figure 5: A wireless
USB gamepad. This
is detected by Linux
as an Xbox 360
controller

the motor drivers with a pin for forwards and


reverse. There is then one more pin for the
PWMOutputDevice which is used to control the speed
of all the motors.
The dictionary direction holds the direction of
all four motors based on the selected direction.
These are 1 for the motor to go forward, -1 for
the motor to go in reverse, and 0 to stop. It does
not provide speed control, which is included in
the code available from the GitHub repository at
magpi.cc/mecanumrobotgit.

Adding keyboard support


09 One thing about Python is that it doesn’t
A wireless USB gamepad will be used, which
needs to be mapped to the appropriate keys. An
directly provide a way to read input characters example gamepad is shown in Figure 5.
except when the ENTER key is pressed. There are
various different ways around this, the one used
here is a getch() function which provides similar Figure 6: AntiMicroX
Using gamepad with AntiMicroX
functionality to the C/C++ getch() function. This
will pause the while loop until a key is pressed,
10 AntiMicroX is an application which converts
converts game
controller instructions
to key presses. It
and then return the key into the ch variable. gamepad instructions into keyboard or similar can be configured
using the GUI
The direction dictionary provides instructions. Start AntiMicroX from the accessories application, pressing
menu. This will add a game controller icon to the the controller
mapping between the numerical keys and the
will highlight the
selected direction. top right of the screen. Clicking on that will allow appropriate button

55
Raspberry Pi mecanum robot

TUTORIAL

you to map each of the buttons to the relevant reconnecting the USB dongle after AntiMicroX is
keys, and this is illustrated in Figure 6. running. Then, choosing Update Joysticks from
You can map each button on the gamepad, or the menu.
import the suggested layout which is included in
the GitHub repository.

Future upgrades
12 The robot can be controlled using a game
Troubleshooting
11 The gamepad must be recognised by
controller, or using a keyboard.
With some extra electronics and code, the
Linux to work with AntiMicroX. Some controllers robot can do more. There are holes included in
appear to work consistently, whereas others need the front of the chassis which can be used to add
reconnecting once or twice before they will work an ultrasonic distance sensor to detect and avoid
with AntiMicroX. nearby objects. Or, you could add a line sensor
If the gamepad doesn’t work after a reboot, to allow your robot to follow a line drawn along
then you may need to try disconnecting and the floor.

DOWNLOAD
mecanum1.py THE FULL CODE:
> Language: Python 3 magpi.cc/mecanumpy

001. import sys, tty, termios 028. '4' : (-1, 1, 1, -1), # Left
002. from gpiozero import PWMOutputDevice, Motor 029. '5' : (0, 0, 0, 0), # Stop
003. 030. '6' : (1, -1, -1, 1), # Right
004. motors = [ 031. '7' : (0, 1, 1, 0), # Diagonal left
005. Motor(2, 3, pwm=False), #Front left 032. '8' : (1, 1, 1, 1), # Forwards
006. Motor(22, 23, pwm=False), # Front right 033. '9' : (1, 0, 0, 1) # Diagonal right
007. Motor(14, 15, pwm=False), # Rear left 034. }
008. Motor(24, 25, pwm=False) # Rear right 035.
009. ] 036. current_direction = "stop"
010. pwm_out = PWMOutputDevice (18) 037. # speed is as a percentage (ie. 100 = top speed)
011. 038. speed = 50
012. # get a character from the command line 039. pwm_out.value = speed/100
013. def getch() : 040.
014. fd = sys.stdin.fileno() 041. print ("Robot control - use number keys to
015. old_settings = termios.tcgetattr(fd) control direction")
016. try: 042. while True:
017. tty.setraw(sys.stdin.fileno()) 043. # Get next key pressed
018. ch = sys.stdin.read(1) 044. ch = getch()
019. finally: 045. if (ch == 'q') : # Quit
020. termios.tcsetattr( 046. break
fd, termios.TCSADRAIN, old_settings) 047. elif (ch in direction.keys()) : # Change
021. return ch direction
022. 048. for i in range (0, 4):
023. # list to convert key into motor on/off values to 049. if direction[ch][i] == -1:
correspond with direction 050. motors[i].backward()
024. direction = { 051. elif direction[ch][i] == 1:
025. # number keys 052. motors[i].forward()
026. '1' : (-1, 1, -1, 1), # Turn left 053. else:
027. '2' : (-1, -1, -1, -1), # Backwards 054. motors[i].stop()
028. '3' : (1, -1, 1, -1), # Turn right 055. print ("Direction "+ch)

56
Your FREE guide to
making a smart TV

BUILD A RASPBERRY PI
MEDIA PLAYER
Power up your TV and music system

raspberrypi.com
FROM THE MAKERS OF THE OFFICIAL RASPBERRY PI MAGAZINE

magpi.cc/mediaplayer
Laser-cut rubber stamps

TUTORIAL

Laser-cut rubber stamps


Carve out images using pure light

R
ubber stamps are different things want to transfer ink onto the paper. Technically, the
to different people. To some, they’re material doesn’t have to be flexible, but you’ll get a
a labour-saving device – why write more even ink transfer if it is.
the same thing over and over again When it comes to removing material, there’s one
when you don’t have to? To others, common hack- or maker-space tool that’s quicker
they’re a way of adding a bit of colour and more accurate than most: the laser cutter. With
Ben Everard to personalised objects. To children, they’re a way of one of these, you can quickly blast away unwanted
adding a level of detail to a picture that they may not material to leave you with a perfect rubber stamp.
yet have the coordination to add otherwise. In some You do have to be a bit careful about what material
Ben’s house is slowly
being taken over by 3D
countries, they’re still used in place of signatures on you use. While there are loads of softish, plasticky
printers. He plans to official documents. materials around, some of them can be unpleasant
solve this by printing an However you plan to use one, though, the process to laser-cut. Some simply smell awful when burned,
extension, once he gets
enough printers. for making one is the same. You need to start with a but others are outright dangerous. The easiest
flexible material, and remove any bits that you don’t solution here is to stick with materials that are
labelled as laser-safe, and many laser cutter stockists
sell laser-safe rubber for precisely this purpose. The
biggest decision is the thickness of the sheet you
use. We used a 2.3 mm sheet – this let us laser off
about 1 mm and still leave a decent thickness.
The technique is really simple, with one potential
pitfall. It is a pitfall that everyone makes, so don’t
worry about it when you fall into this particular pit.
We’ll warn you about it right at the start, but this
won’t stop you from making the mistake. We’re
pretty sure it’s impossible to laser-cut rubber stamps
without making this mistake once. The thing these
warnings do is make you feel more foolish for
making the mistake. Sorry about that.

REMEMBER TO MIRROR THE IMAGE AS STAMPS


COME OUT BACKWARDS.

With that warning out of the way (don’t worry, you’ll


forget), let’s take a look at the process.
This really does depend a bit on the laser cutter
software you use. Our laser cutter runs on Lasercut
Above 5.3. This software is quite old and janky, but it
When stuck on wood, it’s easy to handle these and stamp them
anywhere you want to add a little detail works. The easiest way to etch with this software is

58
FORGE

Left
We could have cut
these out on the laser
cutter, but it seemed
easier to cut them out
by hand than dial in
the cut settings


to import a black-and-white image. Anywhere black
will be removed. We’re pretty sure it’s
To do this etching, then, we need an image
that’s white where we want the ink to remain, and impossible to laser-cut
black everywhere else. This is slightly inconvenient rubber stamps without


because almost every source of clip art that we
could base our designs on is black where we want making this mistake once
the ink to go and white everywhere else.
You can manipulate your images using whatever
image software you’re comfortable using. We opted always do a second pass if it’s not deep enough,
for the GNU Image Manipulation Program because it but you can’t put material back on if you take too
has the ability to both invert and flip images. much off.
First, acquire your black-on-white images, either Now you’ve got your rubber out of the laser
by creating them yourself or by finding what you cutter, you can cut out the bit you want using a pair
want in a stock image or clip art gallery. These can of scissors and glue it onto a bit of wood to act as a
be text, pictures, or whatever you like. handle. Dab it in some ink, tap it onto some paper,
Once you have your image the way you want it, and realise that you forgot to flip the image. Finally,
you need to invert it. In the GNU Image Manipulation go back to your image editing software, flip the
Program, go to Colours > Invert. Then, flip it by image, and try again. At least you know the correct
going to Tools > Transform Tools > Flip. Now you can power settings this time.
export it as a PNG file that Lasercut 5.3 can import. The real challenge with these stamps isn’t the
Finally, you can import this into the laser cutter process of creating them – once you’ve dialled in the
and etch it out. You might need to adjust the power power, then it’s fairly straightforward. The challenge
settings a bit to get it right. We’d recommend is coming up with interesting and unique designs.
starting low and then increasing because you can We’d love to see what you come up with.

59
Instant coffee camera chemistry

TUTORIAL

Instant coffee
camera chemistry
Use household chemicals to develop film

T
hirty years ago, most people came came of age. Social media gave us the opportunity to
back from a holiday, or a special put photographs directly onto the internet and bore all
event, with a collection of little plastic of our friends at once from hundreds of miles away.
containers. Those containers would In the wake of these technological advances, the
get put into an envelope and taken to interest in traditional photography reduced, and the
the local pharmacy, where you’d fill out number of services available for developing traditional
Dr Andrew Lewis a form and hand over some money to the person 35 mm or 120 mm film shrank down to almost zero.
Dr Andrew Lewis is a
behind the counter. A few days later, you’d collect At the same time, the cost of film processing and the
specialist fabricator another envelope with your (or occasionally someone chemicals themselves has increased. In this article,
and maker, and is the else’s) photographs in, and then you’d visit your you’ll learn the basics of caffenol-based black-and-
owner of the Andrew
Lewis Workshop. friends and bore them to tears by showing them all, white film processing, mixing your own photographic
one after another. A few years later, digital cameras chemicals from ordinary household items.

YOU’LL NEED
Instant coffee
(not decaf)

Soda crystals
(sodium carbonate,
also called
washing soda)

Vitamin C
powder

A glass container
with a lid to mix
and store the
developer

A developing
tank (commonly a
Paterson tank) to
load and process
the film

60
FORGE


DEVELOP YOUR PHOTOGRAPHY SKILLS
Above
While none of the Mixing your own film chemicals is a very rewarding A few basic
process, and it’s one of those projects where you can ingredients from the
chemicals we’ll be using hardware store and
let go with your creative side and experiment to get kitchen are all you
are particularly harsh, unique results. In this article, you’ll learn the basic need to develop your
own black-and-white
gloves and eye protection recipe for caffenol developer, but you could exchange negatives, provided
you already own a


the coffee in this recipe for tea, juice, or even beer Paterson tank. The
are advised if you prefer. While none of the chemicals we’ll be tank shown here can
process two 35 mm
using are particularly harsh, gloves and eye protection films at once, or one
are advised to keep you safe. 120 mm film

Begin by mixing two heaped tablespoons of cheap Left


PROCESS IN STAGES coffee with about 150ml of warm water, and stir it It’s normal for the
developer to fizz a
Film processing has a few discrete stages. You might until the coffee is dissolved. Let the water cool to bit when you add the
vitamin C powder. It’s
have seen these referred to as Develop, Stop, Fix, room temperature. Add one heaped tablespoon of also the point when
and Rinse. Caffenol replaces the chemicals in the soda crystals to 200ml of water and stir it until the the mixture starts to
smell awful
developing stage, but you still need to do the other crystals dissolve. Get comfortable, this will take a
stages to get usable negatives. Stopping the film is while. Mix the two solutions together, and then add a
fairly self-explanatory, and is the process of stopping
generous teaspoon of vitamin C powder. Stir the mix
the developing process from progressing any further.
This can be done very precisely using a chemical stop until everything dissolves.
bath, or it can be done by simply removing the developer Pass the whole mixture through a fine coffee filter
from the processing tank and rinsing away any residue to remove any undissolved solids, then let the mixture
from the film with water. The fixing process strips off settle undisturbed for 24 hours. Check for any solids
any remaining light-sensitive chemicals from the film, at the bottom of the mixture. If you do see any silty
stopping it from reacting to light. Fixing is usually done
residue in the container, gently pour off the top ¾ of
with sodium thiosulfate (also called hypo) or ammonium
thiosulfate. If you’re feeling particularly brave, you the mixture into another container. Discard the last ¼
can use brine to fix the film, but this can take days to of the mixture with the residue in.
process and isn’t always successful. Get into your film adventure by taking a few black-
and-white photographs, then load the film into a

61
Instant coffee camera chemistry

TUTORIAL

QUICK TIP
Developing
negatives can be a
stinky process. Work
in a well-ventilated
area, and be
prepared to explain
strange smells to
any visitors.

Right
If you’re going to be
processing a lot of
films, you can add
some magnets to the
bottom of your spool
and build your own
magnetic stirrer using
a low-rpm motor
and some matching
magnets outside the
tank. If you’re only
processing a few
films, this isn’t really
worth the time, but if
you’ve got a lot to get
through, it can be a
big time-saver

Paterson tank. Pour in the developer and gently agitate


SHUTTER AND EXPOSURE the tank for ten minutes (assuming you’re using Ilford
If you’re confused about how to set up your camera to
HP5 film and the developer is about 20°C; other films
take a good photo, there are plenty of light meter apps may take longer to process). Paterson tanks usually
for mobile phones that will tell you the correct shutter have a short handle that lets you spin the spool around
and exposure setting for the ISO film you are using. If inside the tank without opening it. Do this slowly.
you’re a bit more old-school than that, you can use the Gentle agitation means that you do not shake the
‘Sunny 16’ rule. This rule states that the shutter setting tank or swish the film around from side to side. You
in bright sunlight, with the aperture set to f/16, is roughly
absolutely do not want to get air bubbles between the
the inverse of the film speed. This sounds mind-boggling
at first, but with a little bit of practice it’s easy to get fluid and the film, because this will make the chemical
the hang of guessing settings. As an example: if your reaction happen unevenly. Just slowly turn the film in
aperture is set to f/16 and you are using ISO 100 film, the solution until the ten minutes are up.
then the correct exposure should be about 1/100th of Pour the developer out of the Paterson tank, and
a second. The closest shutter setting to this is usually rinse the film thoroughly a few times. Don’t remove
1/125th of a second, which should be fine. For well-lit
the lid; the film isn’t fixed yet. Empty and fill the tank
indoors environments, open up to about f/5.6 and
apply the same rule. It won’t be exactly right, but with until the water coming out is completely clear. If you
computers to manipulate the image after developing, want to stop the developing process immediately,
you should get close enough. you can use a stop bath instead of water for the first
rinse. A 2% solution of white vinegar will do the trick

62
FORGE

Left
The results from
caffenol developer can
be quite impressive,
particularly once
your image has been
processed and printed
onto quality paper.
If you’re very brave,
you can have a go
at making your own
photographic paper. It
isn’t as impossible as
you might think, but
it is well outside the
scope of this article

– the developer requires an alkali solution to work, so


dumping some acetic acid onto the film should stop
PATERSON TANK
the process immediately. Loading film into a Paterson tank can be a bit awkward
The film is now developed and rinsed, so all that if you’ve never done it before. It’s really the most difficult
remains is applying fixer and another rinse. Depending part of the developing process, and requires some
on the type of fixer you use, the time for fixing the practice to get right. It’s best to start with a spoiled film
film will vary. A standard hypo fix should take about and work in the light so you can see what you’re doing,
five to ten minutes of gentle agitation. Other rapid then start practising the task with your eyes closed.
The spool from a Paterson tank is designed with two
fixers might take as little as two to three minutes,
small bearings that grip the edge of the film. You slide
depending on temperature and concentration. Rinse the film into the start of the spool, and push it until the
the film with water and remove it from the tank. bearings grip the film. The spool is designed to work like
Hopefully, you’ll have a roll of exposed negative film a ratchet, so you hold one side of the spool steady while
that you can cut into strips and hang up to dry. you rotate the other side to pull in the film, repeating the
One of the easiest ways to get your negative action as many times as you need to completely load the
film into the spiral channel in the spool. You may need to
photographs reversed and printed onto paper is to
apply very gentle pressure to the edge of the film as you
scan them into a computer. Some scanners have a ratchet the spool, to stop the film feeding backwards.
back-light built in that makes scanning easy, while This sounds easy enough to accomplish, but when
others might need an adapter made from some silver you’re working blind in a dark room, a changing bag, QUICK TIP
card. Fold the card into a right angle that’s double the or underneath a pile of blankets, it can feel impossible Use distilled water
width of the film slide you want to scan, and place it the first few times that you attempt it. Have a look for the final rinse
at the YouTube video at hsmag.cc/LoadingFilm for a of the film, with a
over the slide like a tent.
demonstration of how to load the film. Once the film is wetting agent (a spot
The light from the scanner will be bounced on the spool, put it in the Paterson tank and screw on of liquid soap, for
behind the slide by the reflective card. Once the the lid. The tank is light-fast once the lid is on, so you example). This will
negative is scanned into the computer, you can use can then crawl out from your darkened hiding place for reduce streaking and
software, like darktable (darktable.org), to edit and the rest of the developing process. spots forming on the
print the file. film as it dries.

63
Making a connected Hull Pixelbot

TUTORIAL

Making a connected
Hull Pixelbot
Make a network-connected robot you can program from
your phone or use in team games such as Robot Rugby

I
n a previous article, we discovered how your robot remotely over Wi-Fi. To do this, we can
to create a little desktop robot called make the robot host an editing website rather than
the Hull Pixelbot. Now we are going to visiting a site on the internet.
give our robot connections. We’ll start by The website in Figure 1 is hosted by a C++
making it host a web page we can use to program running in the robot. The robot is hosting
program it, and then we’ll move on to look a website on the local network at the address
Rob Miles at a network server that can be used to host robot pico.local. You can use this site to send new
sports events. You can find all the code for the robot programs to the robot at any time, even if it is
Rob Miles has been and instructions for setup at the GitHub repository running another program. You can also use the
playing with hardware
and software since here: hsmag.cc/HullPixelbotGH. site to run and stop the program in the robot and
almost before there was load pre-written sample programs.
hardware and software.
You can find out more
HOSTING A WEB PAGE IN A ROBOT
about his so-called life at A non-networked Hull Pixelbot is programmed via CONNECTING UP
robmiles.com. its USB connection. To do this, you plug the robot Before the robot can host the website, it needs to
into a computer with a USB cable and visit this link connect to the local network. The statements below
hsmag.cc/HullPixelbotEditor in your browser. This fetch the definitions of the libraries which will be
website hosts an editor for program code written in used to make everything work.
the language ‘Python-ish’ which can send code to
the connected robot. This works, but it is not very #include <Arduino.h>
convenient. It would be nice if you could program #include <WiFi.h>
#include <WiFiClient.h>
#include <WebServer.h>
#include <LEAmDNS.h>
#include "WebPage.h"

Once we have all our libraries available, the next


thing is to set up a network connection for the robot.
You will have to enter your network details into the
program code in the position of the placeholders
below before you compile the program and send it
to the robot.

const char *ssid = "your network name";


const char *password = "your network password";
Right WiFi.mode(WIFI_STA);
This version of the
robot is powered WiFi.begin(ssid, password);
by a Raspberry Pi
Serial.println("Connecting WiFi");
Pico. You can use an
Arduino Uno instead startBusyPixel(0,255,255);

64
FORGE

Figure 1
The program being
edited makes the
robot move in a
square. Can you
change it to make
a robot move in
a hexagon?

"
The code above tells a Pico to become a Wi-Fi
station and to connect to the local Wi-Fi network Now that we have a
with the given network name and password. The
final statement starts a ‘busy pixel’ display of a
network connection,
moving pixel in the ring of pixels on top of the robot. we can start running a web

"
The three parameters to the startBusyPixel function
server inside the robot
set the red, green, and blue intensity values of the
colour of the busy pixel. The pixel above would be
cyan (all the green and all the blue). The pixel is
displayed during the network connection process to at global level so that it can be used by several
keep the robot user informed of what is going on. functions in the robot code.

// Wait for connection WebServer server(80);


while (WiFi.status() != WL_CONNECTED)
{ The code above creates a web server object in the
updateBusyPixel(); robot code with the highly appropriate name of
delay(500); server. This server listens on network port 80, which
} is traditionally the port for web requests. Remember
that what is happening here is that the robot is acting YOU’LL NEED
stopBusyPixel(); as a web server (the kind of device that you reach
A Pixelbot
when you type robmiles.com into your browser). powered by an
The code above waits for the Wi-Fi to connect. Every It’s a tiny web server that is only visible on the local Arduino Uno or
500 milliseconds (half a second), the busy pixel is network (i.e. the network the robot is connected to). Raspberry Pi Pico
updated to the next position. The user will see a dot When you try to open a website at a local address
move around the ring of pixels. When the connection (for example picow.local), your browser finds a local If you are using
is made, the while loop ends and the busy pixel is device with that name and sends a GET request using the Uno to
control your
turned off. Now that we have a network connection, HTTP (Hypertext Transfer Protocol) to port 80 on that
Pixelbot, you
we can start running a web server inside the robot. device. The web server in the robot then returns a will need an
file containing HTML (Hypertext Markup Language) ESP8266 device
A SITE FOR SORE EYES text describing the page to be displayed. In this (the WeMos D1
mini works well) to
The robot will use the WebServer library from the case, the requested page will contain the HTML for add the network
Arduino framework. The server object is declared the Python-ish editor home page. connection

65
Making a connected Hull Pixelbot

TUTORIAL

server.on("/", handleRoot); to find the web page and that the page contents
are in the response. This tells the browser it has a
Above, you can see the code that runs in the robot page it can display. The second parameter is a string
and handles the request for the editor home page. describing the type of the reply. In this case, the item
You might think that the statement above turns the being returned is a text page encoded in HTML. The
server on, but this is not quite what is happening third parameter is a string containing the text of the
here. It is best to think of this as meaning ‘on web page to be returned to the browser. In the robot
Figure 2
The Stop button is receiving a message asking for something at this code, the page text is stored in a character array
defined in a similar route, call this function’. The Pico web server will variable called webPage, which was created by pasting
way and has a route
which sends the contain a server.on statement for every route that the entire web page file into the program source:
command "*RH" to
the robot to make
is available on the website hosted by the robot.
it stop running its The root path is the one at the ‘top’ of the website. const char *webPage = R"(
internal program
The robot web server will also have routes for the <!DOCTYPE html>
GET messages that request the robot to stop and <html lang="en">
start. The statement above tells the server to call a ... rest of web page
function called handleRoot when a request is made </html>
for the route to the home page of the site. )";

void handleRoot() The code above puts the entire home page for the
{ editor into a single C++ character array referred to
server.send(200, "text/html", webPage); by the webPage variable. The web page was designed
} and tested and then incorporated into the C++ code.

"
The handleRoot function is very simple. It tells the
server to send the contents of the string webPage In the robot code, the page
back to the browser. The method server.send is text is stored in a
used to do this. The send method accepts three
parameters. The first parameter to send is the status character array variable

"
value of the reply to be sent back. The value 200 tells called ‘webPage’
the receiving browser that the server has managed

ROOTING FOR ROUTES


A route is a place that a browser will request
something from. There are four different routes
supported by the Pico-hosted program editor. We’ve
seen one of them, which requests the home page of
the server. Now we can look at the others:

server.on("/run", []()
{
Serial.println("Got a run request");
sendLineToRobot("*RS");
handleRoot();
});

Figure 3 Remember that the word ‘on’ in the code above


You can replace
the Pico W with an means ‘on this route being requested’. The code above
Arduino Uno and an uses another form of the on method which accepts
ESP8266. You'll need a
level converter is used two parameters: the route that is being requested
to convert between (in this case, the route "/run") and an ‘anonymous’
the 5-volt levels on the
Arduino Uno and the function that runs when the browser requests a page
3.3-volt levels on the
ESP8266
from that route. This makes the code slightly more
compact. There are three statements in the function.

66
FORGE

BY THE POWER OF
THE BOOTSTRAP

Websites can be greatly improved by using style


sheets to set the format and behaviour of the page
elements. Creating good style sheets which work on a
wide variety of different devices (from desktop PC to
mobile phone) is hard work – one of the many things
that the author is afraid of. So, he has made use of the
Bootstrap framework (getbootstrap.com). This provides
a powerful set of styles and reactive page elements.
With this framework you don’t have to include any of
these style definitions in your web page text, you just
tell the browser to go and get them when it loads the
page. You can add it to the head of your HTML with:

<head>
<title>Hull Pixelbot Python-ish Editor</title>
<meta name="viewport" content="width=device-
width, initial-scale=1.0">
<link rel="stylesheet"
Figure 4 href="https://cdn.jsdelivr.net/npm/
If we click ‘Send to all robots’, the bootstrap@4.3.1/dist/css/bootstrap.min.css"
robots are all turned into cowards
integrity="sha384-CbMQv3Xipma34MD+dH/1fQ784/
j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T"
The first prints a message, the second sends the line crossorigin="anonymous">
"*RS" to the robot, and the third calls handleRoot to </head>
redisplay the editor home page. The "*RS" message
tells the robot to run its stored program. The run route
is called from the HTML in the editor when the user <form method="POST" action="/save">
clicks the Run button in their browser. <textarea id="codeTextarea" name="codeTextarea"
style="font-family:monospace;" class="w-100"
<a href="/run" class="btn btn-primary mb-2">Run</a> rows="20"
cols="120">
The code above is HTML text in the web page. The </textarea>
text describes a reference to the "/run" route which <input type="submit" value="Save and run"
will be followed when the button is clicked. The class="btn btn-primary mt-2 mb-2 btn-block">
browser will render this as a button. </form>
Figure 2 shows how the button is displayed on
the web page. When the user clicks the button, the The code above shows the form defined in the
browser will follow the /run route, the server will editor page. An HTML form contains input items.
recognise this and the code we have seen above will In this case there are two. The first is the text area
run to send the command "*RS" to the robot. If we where the robot program is entered. The second is a
wanted to send the robot more commands, we could button labelled ‘Save and run’. You can see how this
add more buttons to the edit page which access looks in the browser in Figure 1. When the button is QUICK TIP
additional routes. Then we would create route pressed, the form will perform its action. It will use
If we wanted to send
handlers in the robot that respond to these routes. the HTTP POST action to send a message to a route more items of data
called "/save". into the robot from
GETTING THE CODE the web page, we
The Run and Stop buttons send a message to the server.on("/save", []() would add the input
robot, but the ‘Save and run’ button must update the { items to the form
and then the code
program in the robot by sending the edited text from // code is the only argument
running in the robot
the browser to the server running inside the robot. String robotCode = server.arg(0); would pick them up
To do this, we use a route which accepts a POST sendLineToRobot("begin"); as arguments 1, 2, 3,
message from the edit page. sendStringToRobot(robotCode); and so on.

67
Making a connected Hull Pixelbot

TUTORIAL

MAKING A NETWORK PRESENCE


When the robot connects to the local network, it will
be assigned a network address. We can connect to
the robot directly using this address. Unfortunately,
we don’t know what the address is. This is a bit like
the situation when a friend gets a new phone. But the
good news is that we can get the robot to advertise a
name that we do know. This is like your friend sending
everyone they know a text message saying ‘It’s Dave
here. Got a new phone’. The network service that will
broadcast names and addresses for us is called the
‘multicast Domain Name System’ (mDNS).

#include <LEAmDNS.h>

The statement above imports the mDNS responder


code into the program in our robot. Now we can start
the mDNS responder:

Right
Each robot has its if (MDNS.begin("picow"))
own back story {
Serial.println("MDNS responder started");
QUICK TIP sendLineToRobot("end"); }
handleRoot();
The robot has an
address on your }); The code above starts an mDNS responder which
local network – broadcasts the name ‘picow.local’ and responds
picow.local. If you The code above shows the handler in the robot server to requests for the network address at this name.
have multiple robots for the "/save" route. The server exposes items from If you look at the web address of the edit page in
that you want to the message, including any arguments added to the Figure 2, the browser is showing ‘picow.local/
control, you can give
post. The form in the web page only contains one run’ which means that the user has just pressed the
each of them its own
network name. input item, which is returned as arg (argument) 0. The Run button and used that route to run the program
robotCode variable is set to this value and then sent to in the robot. All the network names created by the
the robot, enclosed in begin and end messages that MDNS server have ‘.local’ on the end of the name
mark the start and end of the program being sent to indicate that the device is local to the current
into the robot to be stored. The robot will store this physical network. In other words, someone living
program code and then run it. Once the program has next door will not be able to use this address on
been sent to the robot, the handleRoot function is their home network to connect to a robot on your
called to redisplay the edit page. Now that the server home network. Like the web server, the mDNS
has been configured, we can start it running: responder needs to be updated regularly so that it
can respond to requests:
server.begin();
MDNS.update();
This will start the server. However, the program
must repeatedly call a method in the server to keep The statement above will update the mDNS
it updated. The robot does this in the loop function responder. This will cause it to send out regular
which is called by the Arduino framework: broadcasts giving the name and respond to requests
for the network address for that name.
server.handleClient();
ADDING A SECOND BRAIN
The above statement is in the update function for The program web editing works well on the Pico
the robot web server. It is called at regular intervals W, but what do you do if you are controlling your
and will process incoming requests and serve out robot using an Arduino Uno which has no network
pages as appropriate. connection? You can do this by connecting a WiFi-

68
FORGE

Figure 5
The wall around the
robot arena is a very
necessary part of
the event

ROBOT DESCRIPTIONS
The game framework also produces robot descriptions
which can be printed out and given to the players. The
enabled device to the Uno and using that to connect descriptions contain a QR code which is generated by
to the network and host the edit web page. The Uno the server and can be scanned by the player to obtain a
will accept commands from the network via its serial link to the code edit page for that robot. The page also
contains a long-form of the link and a small back story
port as if they were being entered by the user.
for that robot.
Figure 3 shows how the ES8266 and the Uno
Figure 5 shows the robots in action at the first match at
are connected. The network device can send
the Hull University Computer Science Christmas Bash.
commands to the Uno as if they had been received There was a lot of interest in the robots and making them
via the serial port. The network device is an do things, and we’ve got plenty of ideas for making the
ESP8266 computer packaged as a WeMos D1 mini. gameplay even more involving.
The author is a big fan of the ESP8266 processor.
It is the precursor of the highly popular ESP32. It
provides WiFi connectivity but not Bluetooth. It wanted to create a robot rugby game which could
can be programmed in C++ in the same way as an be live-streamed and played by anyone in the world.
Arduino and is available very cheaply. The author So, he created a game framework to manage a
happens to have a drawer full of them, which makes rugby match.
him like them even more. The software running The match manager can create a match and then
in the ESP8266 is just the web server part of the manage it using the page shown in Figure 4. Each
robot code. The rest runs inside the robot itself. You robot is a member of a team. The robot controllers
can find this software on GitHub here at this link: each enter a Python-ish program into their robot and,
hsmag.cc/UnoNetEditor. when the ‘Start all robots’ button is clicked, the server
QUICK TIP
You can use this technique to add a web control downloads the program into all the robots. The robots If you want a very
small version of
page for any device which has a serial port that run for a while and are then stopped with the ‘Stop all
the Arduino Uno
can be used to control it. Just edit the web page to robots’ button for the teams to reprogram their robots
that you can put
include the inputs that you need and then update the for the next play. After five plays, the team with the inside devices, you
route handling code in the web server to send the most robots furthest into their opponent’s half is should look at the
appropriate messages. the winner. The server and the robots use MQTT Arduino Uno Pro
to communicate, and the messaging and device Mini. There is even
SERVING OUT ROBOT RUGBY management is built on the Connected Little Boxes a 3.3-volt version
of this device,
You can create a team of Pixelbots which each have project (connectedlittleboxes.com). The full details
which means you
addresses on your local network. You can then of how the gameplay works are still being thrashed don’t need a level
have fun programming the robots. But the robots out, but it is thought this would be a great way to converter to connect
are only visible on the local network. The author introduce people to programming. it to the ESP8266.

69
Polyvinyl butyral (PVB)

TUTORIAL

Polyvinyl butyral (PVB)


Get glassy-smooth prints with PVB and alcohol

S
olvent smoothing is one of those PVB is soluble in isopropyl alcohol (IPA). While
things that seems great in theory, there are still issues to be considered when working
but can be a pain in reality. The idea with IPA, it’s pretty safe to assume that most people
is simple. All 3D prints have layer lines, who 3D print are comfortable using this particular
but you can remove them by dissolving chemical. However, don’t assume that you can easily
the outer layer of plastic in a small do this safely because you’re used to using IPA for
Ben Everard amount of solvent. The now-liquid plastic will flow other things. Take a look at the Safety box (opposite),
into the crevices between the layers, and the solvent and make sure that you’re properly considering your
will evaporate, leaving the plastic that was dissolved own experience and equipment.
Ben’s house is slowly
in it to fill any gaps and produce a shiny surface. Solvent smoothing aside, the only other
being taken over by 3D
printers. He plans to The main problem with it is that it usually reason we can think of to use PVB is because it’s
solve this by printing an involves harsh chemicals. PLA, in particular, transparent. It’s a little clearer than other transparent
extension, once he gets
enough printers. needs substances like chloroform, which requires filaments we’ve seen, but only slightly. Unless you
equipment beyond our workshop setup to do it need absolute maximum transparency, you will
safely, so we’ve been unable to test it out. ABS is probably find it easier to use transparent PLA.
a little more straightforward as it can be smoothed
with acetone. However, even this is still unpleasant ABSOLUTE MELT
to work with. That’s the theory; let’s see how it works in practice.
PVB is reasonably easy to print. It requires a slightly
hotter bed than PLA, but it’s nothing that will cause
problems for most modern printers.
The biggest problem with printing PVB is that it is
very hygroscopic, meaning that it absorbs moisture
from the atmosphere. If you plan on printing it
quickly, you might be able to get away with keeping
the filament in a sealed bag containing a desiccant
sachet. However, ideally, you should have a
filament dryer.
Right When printing something that’s going to be
A Benchy before transparent, as most PVB prints will be, you need
smoothing. The
transparent to consider the inside of the print – in other words,
filament does still
look good, but has

POLYSHER
layer lines as usual

Polymaker makes a device specifically for smoothing


PVB objects with IPA called the Polysher. We’ve not
tested this out, so we can’t comment on how well it
works, but it should make the process a little more
straightforward and less messy.

70
FORGE

Left
After smoothing, the
layers are still visible
to the eye, but the
surface is smooth
to the touch

” When printing something


that’s going to be transparent,
SAFETY
It’s easy to get complacent about a chemical you use
you need to consider the regularly, but it’s important to remember the dangers


of IPA because when applying it with a brush, you’re
inside of the print more likely to have a problem. We recommend reading
the material safety data sheet (this should be available
from the supplier). Particular risks are:

the infill. This pattern can ruin the look of your • Inhalation
transparent object. Some prints you can make • Eye contact
completely hollow (such as with Vase mode), but • Fire
if this isn’t possible, you can completely fill it. You
can do this by adding 100% infill or by upping the All of these are significantly more likely when
number of perimeters to something far bigger than brushing it on a model than when wiping it on a print
would actually fit (such as 999). We’d recommend bed. Use proper eye protection. It’s recommended that
you use nitrile gloves when handling IPA.
the latter because it will lay down the filament
concentric with the outside perimeter, which is less Remember that safety is your responsibility, and you
must fully understand the risks associated with a
likely to produce visible issues. Obviously, filling up
process before starting it. Proper PPE is a requirement
an object with plastic is going to have a pretty big for this process, not an optional add-on.
negative impact on both the amount of filament that
it uses and the amount of time it takes to print.

71
Polyvinyl butyral (PVB)

TUTORIAL

If you have a sufficient flair for 3D design, you could but smoothing can cause problems with small details
Above
In Vase mode, there’s probably make something interesting using the voids anyway, so this process is best suited to objects that
no infill to see, so the inside the print. can be printed with a large layer height. If you’ve got
transparency isn’t
disturbed. This photo There are two main brands of PVB printer a big nozzle, this can be a good time to use it.
is before smoothing
filament: Prusament PVB and Polymaker Once you’ve got your model, you need to apply
PolySmooth. We tested out Prusament, but the the IPA to the surface. It should be at least 70% IPA.
same process should work with PolySmooth. You can do it in a few ways:
Print out your part as you would normally. Since
we’re going to be smoothing this, there’s no need to • immerse it
worry too much about layer lines, so go big for a fast • squirt it
print. This might cause problems with small details, • brush it
• vaporise it by applying it to a cloth; putting both
cloth and 3D print in an enclosed space, such as
VASE MODE Tupperware
You can get great results with PVB in Vase mode. The
resulting prints are almost see-through and have a Whichever way you do it, the key is to get a uniform
glass-like shine. However, you do need to be careful coating, and leave it to dry. When drying, you want
because the walls are very thin. The vases can to place it on something that minimises the number
become very weak. We accidentally dissolved a hole
of contact points, as these will leave blemishes on
in one of the test pieces.
the surface. In most cases, you’ll need to repeat
While with Vase mode, you can only have one
the process several times in order to get the
perimeter, this perimeter can be very thick. By default,
PrusaSlicer sets the external perimeter wall to 0.45 mm desired effect.
on a standard 0.40 mm nozzle, but you can adjust this. We tested this out by brushing on IPA – this is
We upped it to 1.00 mm and had good results. probably the most approachable option for people
trying this out. The method is really simple. Take

72
FORGE

Left
We heavily smoothed
this one and the
layers are only just
visible. However, it
has distorted the vase
slightly. Corners are
more rounded and
finer detail is lost


RESULTS
There’s something very We are quite partial to the look of layer lines, and
appealing about the they’re not something we generally feel the need
to sand or post-process away. That said, there’s
transparent, shiny prints


something very appealing about the transparent,
you can get with PVB shiny prints you can get with PVB. When done well,
it can be almost glass-like.
There are, however, downsides. The process
your print, a paintbrush, and a small amount of IPA. that removes layer lines will also remove other fine
Paint the IPA onto the print and try to get as smooth details (just as sanding, painting, and other post-
a coat as possible. You need to be quite liberal with processing would). It’s a bit tricky to apply the IPA
the IPA to get a good effect. You’ll find that the IPA smoothly and evenly.
will spread itself out along the layer lines. We’d While Vase mode does work well, it does produce
recommend using nitrile gloves when doing this. parts with thin walls, and the IPA will remove
Once you’ve got a good coat, leave the object to material from some parts – this can leave your print
dry on a suitable surface – this will take about half weak in places.
an hour. If the object you’re making is hollow – like There are certainly prints that can look excellent
a vase – you can swish some IP around inside to get when printed in PVB and smoothed. Things with
an even coat. Pour out any excess and leave to dry gentle curves that are prone to false contours can
upside down. smooth particularly well. We’d love to see your
It can take about five to ten applications of IPA to prints. Email us at hackspace@raspberrypi.com or
smooth away the layer lines. tag us on social media.

73
Exploring PCB services

TUTORIAL

Exploring PCB services


In this part of the ongoing KiCad series, let’s explore working
with a range of PCB services

I
n the last part of this KiCad series, we your project. Questions to ask yourself include: what
looked at the different substrates and minimum clearances and track widths do I need?
other hardware options that are available What is the smallest hole diameter? How accurate
across a range of PCB fabricators and do I need things?
PCBA services. In this section, we are going Over on OSH Park, they have a great collection of
to generally look at the range of services documents relating to the services they provide. The
Jo Hinchliffe that are available, and look at what some of the Drill Specs page details the minimum and maximum
services and companies need from us to make our hole sizes, sizes for annular rings, and the via plating
Jo Hinchliffe is a PCB projects. We’ll also mention a few of the quirks specification. Beware that all these specifications
constant tinkerer and we’ve found in some services that had us scratching are different across OSH Park’s various services,
is passionate about all
things DIY space. He our heads. changing, for example, between the two-, four-,
loves designing and Each service is well-established and capable and six-layer options. The minimum track width
scratch-building both
model and high-power
of creating quality PCBs and/or assembled PCBs. specification on the OSH Park site is listed as
rockets, and releases the However, they each have different specifications and 0.006”, with 0.006” clearance on the standard two-
designs and components tolerances. In fact, that’s often a good place to start layer boards, moving down to a very accurate 0.005”
as open-source. He also
has a shed full of lathes when comparing or looking for a service to make in the four-layer board offerings (it’s common to
and milling machines
and CNC kit!

Right
Our small PCB
ruler project provided
some interesting
challenges to
PCB services

74
FORGE

Left
Technical details
of the OSH Park
PCB services


see limits given in thousandths of an inch because,
apparently, you can have both metric and imperial at You can email the support
the same time if you try hard enough). You can find
this and all the other details on the OSH Park KiCad email address and they
Design Rules page at hsmag.cc/oshparkrules. will get back to you offering Left


If you have questions about the OSH Park The DirtyPCBs PCB
services, they have an excellent track record in excellent advice specification is in
amongst a large
communication. You can email the support email About page
address and they will get back to you offering
excellent advice. We have even had the OSH Park
team open our KiCad project file and they have
fixed problems and then taken the time to teach
us solutions.
Different PCB manufacturers put the information
in different places. Another PCB service, DirtyPCBs,
bundle all their specifications and tolerances
information on their About page. They similarly list a
0.006” minimum track width and clearance across
both their two- and four-layer boards and cite their
other specifications and tolerances. The DirtyPCBs
service was designed as a minimal service with
its emphasis on ‘cheap’, therefore, it has no chat
service, and it’s difficult to contact the company to
ask questions. If you have challenges here, it can be
a better option to use search engines and find forum
conversations about the service to try and get the
answers you need!

75
Exploring PCB services

TUTORIAL

RULES RULE!
If, while developing a PCB project, you have a particular fabrication service in mind, you
can ensure your board design’s compatibility by setting up the Design Rules for your
board to match the service. The Design Rules is nested under the Board Setup window
we used in the previous section of this series to set up the different physical stackup
characteristics for different substrates. In the PCB Editor, navigate to File > Board
Setup and then open the drop-down menu labelled Design Rules. In the first section,
Constraints, you can set up limits for the minimum clearances, minimum track widths,
and other limits relating to the copper regions. You can also adjust the minimum via
sizes, hole sizes, and clearances, and also the minimum dimensions for text objects on
the silkscreen layer. The next item down in the Design Rules drop-down menu is the Pre-
defined Sizes tab. We’ve used this earlier in the series to set track widths for projects.
However, as a reminder, you could set this up at the beginning of a project whilst
considering any limitations or constraints your target PCB service has. Also, notice that
we can import the settings from a previous project – this is an excellent function if you
set up a project for a particular PCB service specification. Above
JLCPCB’s specifications are found on their Capabilities page
Jumping to the bottom of the Design Rules drop-down menu, we can see the Violation
Severity section. This section sets up how the Design Rule Checker (DRC) tool responds
if any of the rules set for a project are broken. As a primary word of warning, think very We have, of course, used JLCPCB/A a fair amount
carefully before setting any of these to ‘ignore’. It may well be that for a current project in this series. JLCPCB have a pretty exhaustive list
you don’t mind some of these issues, but it’s possible under different circumstances or of their specifications over on their Capabilities page.
projects, an ignored error could be critical.
They can offer up to a whopping 20 copper layers
Back in the PCB Editor window, to run the DRC at any point in your project, you can in their PCBs, with track widths and clearances a
either click the ‘Show the design rules checker window’ tool icon or you can select
default minimum of 0.005” in the two-layer offering,
‘Design Rules Checker’ from the Inspect drop-down menu. Once the window is open, you
can then click the Run DRC button for the PCB to be checked against the defined design
moving to 0.0035” for four-layer options and more.
rules. Note that getting an error or a warning doesn’t always mean that your PCB project Similar specifications are available from PCBWay.
isn’t working, but they are simply indications that there is something that hasn’t met the An advantage of this service is the maximum
design rules. dimensions of PCBs they can fabricate are 1100 ×
Rules don’t always have to be followed, but it’s always good to check which rules are 500 mm, whereas, for example, JLCPCB are 500 ×
broken so you can be sure that any that are broken are broken intentionally. For example, 400 mm. One thing of note about PCBWay is that
on our ruler PCB design, we got numerous silkscreen errors as the ruler sat over the you specify the board and the board dimensions
edge cut geometry, and we also got lots of courtyard errors where the courtyard areas
and add it to your shopping cart prior to uploading
of the mounting hole footprints we had used had overlapped. The actual distances
Gerbers, which can seem slightly counter-intuitive
between the mounting holes were all over the minimum clearance from each other,
so neither of these sets of issues actually mattered – it’s definitely worth checking compared to other services.
though. The DRC, when run, will add small red arrows or markers on your PCB design,
highlighting where the issues are located. If you close the DRC window, the markers still
remain on your design. When selecting a marker when the DRC window is closed, the
issue that the marker relates to will be shown in the lower toolbar on the PCB Editor. You
can reopen the DRC window and delete single markers or all markers using the relative
buttons. Obviously, if you don’t make changes to the PCB design and run the DRC again,
removed markers will be replaced.

Above
Many of the services offer online chat portals. These can
be useful when trying to negotiate problems or challenges
with a service

76
FORGE

With all of these services, it’s definitely worth substrate and a clear solder mask), a lighter 0.8 mm
Above
contacting them using the chat function or emailing board with a heavier 2oz copper layer, and a flex An interesting issue
if you want to check specifications. option. Whilst they offer good quality, they are occurred where
JLCPCB didn’t detect
incredibly affordable when working with smaller the edge cut geometry
DIVING DEEPER PCB designs. Finally on OSH Park, they are excellent on the flex antenna
design, which should
We have often featured OSH Park as a go- at communications. If you need to raise a ticket have rounded corners
to company for PCB fabrication in HackSpace to ask a question, they go above and beyond
magazine. They have an excellent track record in many services.
supporting and promoting open-source projects,


and they have that iconic purple solder mask finish
which is very visible across lots of maker/hardware Whilst they offer good
hacker projects. However, probably one of the main
reasons that OSH Park have often featured as a quality, they are incredibly
service is that you can directly upload KiCad PCB affordable when working


files to their website – you don’t have to go through
the process of making compatible Gerber files. This
with smaller PCB designs
makes the service really easy to use. If you are
reading this after a new milestone version of KiCad
has been released (for example, a future version 8), Different fabrication houses have different needs
you might find that it takes a little while for the OSH around the files and file formats that you upload.
Park website service to become compatible, but rest One area we have noticed creating issues is the DRL
assured, you can also upload a zip file of Gerbers in or drill files. In KiCad, you can create either a pair of
the same way as other services in the interim. OSH DRL files, one containing the non-plated through-
Park’s guidance on Gerber set up and requirements holes and another containing the plated drill holes,
is available at hsmag.cc/Gen_Gerbers. or you can merge these two files into one. JLCPCB
Beyond the standard OSH Park purple offering, wants these files supplied as a pair, whereas if you
there are options for the ‘After Dark’ finish (black upload Gerbers with two separate DRL files to

77
Exploring PCB services

TUTORIAL

OSH Park, you get an error message from OSH Park, service, they confirmed that they could see the edge
Above
Whilst PCBWay but it conveniently will merge the two files online cuts layer and assured us that if we placed the order,
rendered the ruler and also solve the issue for you. There can be other the board would be cut correctly. We tried playing
project correctly from
Gerber files, it couldn’t little glitches involving drill files. around with the Gerbers and we also posted the
initially process an
order due to an error
Some fabrication houses want there to be drill issue on the KiCad forum for discussion. It seemed
being created as there files even if the PCB has no drill holes in the design, that others generating their own Gerbers from our
was zero copper in the
copper layers for example, in the design of a single-sided PCB. project would get a correct render on the JLCPCB
This caused an interesting issue when we designed site. The difference we spotted was that they
the flex PCB antenna example in the last part of this weren’t including any drill files. Re-uploading without
series. We exported the design Gerbers and DRL drill files and the correct board outline and edge cut
geometry rendered correctly. As part of this process,


we discovered that OSH Park didn’t have this issue
Some fabrication houses and rendered the board correctly at upload. We
placed the order with them.
want there to be drill files The moral of this particular story is that Gerbers
even if the PCB has no drill aren’t standard, so be sure to check what you need,


and be prepared to talk to the PCB manufacturer if
holes in the design things don’t look right.
We had another issue relating to empty layers
when looking at different services to fabricate the
files even though the design contained no drilled ruler design. When uploading the design to
holes – this was just because we wanted to upload PCBWay, it would throw an error with the upload
the Gerbers to a range of services to see how they as the Gerber file for the copper layers contained
rendered and get quotes. no copper. Obviously this is very unusual for a
With JLCPCB, when we uploaded the zipped PCB as copper is usually the conductive layer
Gerber file, the preview would ignore the edge cuts connecting components and more. The ruler
geometry, so the curved corners of the design would project shows that with a more artistic use of PCB
disappear and, incorrectly, the board would appear fabrication, it’s possible to cause headaches for
as having square edges. Chatting to the online chat fabrication houses.

78
FORGE

We had a problem with one of our recent projects


when submitting the aluminium substrate LED
RULERS RULE!
module project to JLCPCB services. The 1-watt COB Making a PCB ruler is almost a right of passage in the PCB-making communities. They
LED we had identified in the JLCPCB parts library can be a simple, useful tool, a good business card, or perhaps even perform some extra
had a diagram on the datasheet of the LED which function. Having an interest in model and high-power rocketry, we made a ruler which
had polarity markings on the two semi-symmetrical has some accurately placed holes in it, into which you can place a pen. You can then pin
the hole at the 0 or 100 mm marker and draw circles that match common rocket motor
flat SMD pin connectors. We’d actually seen these
diameters or common Estes rocket body tube diameters. Handy for impromptu cardstock or
LEDs in real life – they have an etched - and + in balsa rocket component-making. It might seem strange to use a PCB manufacturer for this,
these metal connectors. but it’s actually a very affordable way of getting very accurate 2D designs made.
When we uploaded to JLCPCB, the website One slightly tricky aspect of creating a PCB ruler in KiCad is how to actually draw a
rendered the PCB with the components placed and graduated line to give the ruler its measuring graphic element. Again, we’ve used the
the JLCPCB 3D model of the LED had no polarity excellent open-source Inkscape to solve this in combination with KiCad 7’s SVG import
markings. We presumed it would be correct, and abilities.
as only ordering a small number and the LED is a In Inkscape, draw a straight line using the pen tool and use the height and width settings
large part, it wouldn’t be too onerous to swap them to set it to the length of the ruled section you require. We wanted a compact ruler PCB, so
around if they arrived incorrectly. After ordering, the we went with a 100 mm length. Next, select the line and then click Path > Path Effects. The
Path Effects dialog box should open on the right-hand side of the screen – there should be
process was halted, and JLCPCB contacted us to
a search bar at the top of this dialog. Type in ‘ruler’ and select the Ruler Path Effect that
discuss and check the polarity of the LED. We had appears in the results. This, in turn, should launch the Ruler Path Effects dialog. Set the
to point out that it was an issue with their 3D model ‘Units’ to ‘mm’ and then set the ‘Mark Distance’ to ‘1’. This should then add a graduation
that meant it was impossible to tell if it was rotated line one millimetre apart along your line. Next, you can set the length of the major length for
correctly, and an engineer at their end would only be the longer graduation lines and the minor length for the shorter lines. Finally, set the ‘Major
able to tell when they physically went and looked at Steps’ to ‘10’. You should now have a ruler graphic with the commonly used idea of a longer
the package. In the end, the aluminium LED PCBs marker every 10 mm.
were correctly manufactured. You could use KiCad to add the text to mark the numbers on your rule graphic, but we went
Our main takeaway point for working with any ahead and did this in Inkscape as it’s pretty easy to use the align and distribute tools to
bring a line of text labels into alignment with the ruler. We then resized the document using
PCB service is that most things are achievable with
document properties to the size of the design and saved it as an SVG to be imported to the
good communication, which increasingly becomes, silkscreen layer in KiCad in the PCB Editor. We’ve covered this before in the series, but as
in combination with the physical specifications we a reminder, it’s as simple as File > Import Graphics, and then, in the dialog, navigate to the
require, a valuable deciding factor in choosing which SVG, set it to import to the correct layer (in this case, the front silkscreen), and make sure
service to use. the scaling is set at ‘1’. It’s worth setting the PCB Editor grid to ‘1 mm’ so that you can align
other elements to the ruler design well. Finally, we were lazy and left the baseline in our
ruler graphic and then used the edge cuts geometry to remove it – this ensures that the
silkscreen ruler lines run right to the edge of the PCB. However, you can remove the original
line back in Inkscape. When you have your path effect applied, you can select the entire
ruler graphic and then use Path > Object to Path to convert the path effect into regular
paths. Then, using the node selection tool, you can select the bottom line and delete it. A tip,
as it’s difficult to grab the nodes at the end of the baseline, is to zoom in and then bend the
line away by dragging the baseline in between two of the graduation line nodes. Once the
line is bent away from the graduations, you can click it and delete it.

Above
In the original render preview, the LED polarity couldn’t be
ascertained as JLCPCB had a problem with the 3D model. After an
engineer inspected the part, the correct orientation was confirmed

79
Pico modular: A bit of polish

TUTORIAL

03
Pico modular:
A bit of polish
Better sound output, cases, and a tune-up

I
n part three of this series on building a Connecting it up is just a case of plugging the right
budget modular synth, we’re going to bits into the right bits. There’s a knob to twiddle for the
tidy up a few of the niggles in our nascent volume and that’s about it. It has an on-board jack that
synthesizer system. We’ve skipped over a we can plug headphones straight into, but the layout
few bits in order to get some output, even if of the board means we can’t mount it so that we can
it’s not perfect output. First, let’s make sure we access both this and the knob. We’re working on the
Ben Everard can get sound out and into a pair of headphones with mounting for this; while we do that, let’s take a look at
something a little more robust than a crocodile clip. how we’re mounting the rest of the synth.
So far, we’ve been taking the sound output directly
Ben’s house is slowly
being taken over by 3D
from the R2R ladder. This works but it’s very quiet. A MOUNTING
printers. He plans to much better solution is to add an amplifier, and you Just having circuits isn’t enough. We need a way to
solve this by printing an can get headphone amplifier modules cheaply. The keep these tidy and out of the way. In an effort to keep
extension, once he gets
enough printers. one we got takes a 5 V power supply, and left and right costs down, we’re trying to not use anything other
inputs that it amplifies. As with everything in this (or than standard parts and off-the-shelf modules. That
any other audio) build, there are a wide range of parts means no custom-made PCBs, or other things that
at different points on the price/quality spectrum. We’re could add to the cost. We’re trying to mount everything
unashamedly aiming to build an affordable synth, so on 3D-printed cases.
we’re starting on the low price end. Our requirements for this are that it’s as 3D-printed
This is an experiment and, at the moment, we’re as possible, as hackable as possible, and as expandable
not creating any particularly complex sounds. Once we as possible. The solution we’ve come up with may not
have a more complete system, we’ll test out some be perfect, but it’s working for us so far.
other headphone amplifiers and see if they have much First, we’ll take a look at how we’ve made it
of a bearing on quality. hackable. We wanted a case design that you could
Unfortunately, cheap headphone amplifiers don’t tweak and modify for your own modules without
come with much identifying information, so it’s hard for having to dive into the murky world of CAD. So,
us to give much of a guide to the one we have, other what we’ve done is created base files that you can
than what it looks like. carve up and modify using PrusaSlicer. This has basic
modification tools that let us add holes and text to
our creations. You can find these (as well as some
examples) at hsmag.cc/pmparts.
The bases have a jigsaw-like fitting that you can slot
together to build up a synth that’s an arbitrary number
of modules long. There are two widths – normal
and wide – and you can pick whichever best suits
your needs. Each case is an L-shape stretched out, and
it could be printed in one go, but we decided to split it
Right up into two parts. This means that it prints faster and
There’s just a single
connection on the resulting part is stronger. The two parts can either
banana sockets, so be glued together or attached with M2 bolts (8 to
just bolt them in and
solder them on 12 mm long work best).

80
FORGE

Left
There are many
similar modules
around, but this one
is working fine for
us at the moment

The base plate contains mounting holes for a Pico so they fit snugly and lock into place, but can still be
(Pico Ws also fit) and, again, these are attached with easily pulled out.
M2 screws. There are also screw holes for attaching Banana plugs are easier and cheaper than jack
the upright. Other than this, it’s blank. If you want sockets that are more commonly used in modular
to attach additional hardware, there are a couple synths, and we’ll look more at the other options when
of options: we get to interfacing between our modular system and
a more traditional system. Attaching these is simply a
1. Glue it on case of creating a hole and bolting the socket in place,
2. Add holes and then soldering it on. There are a few different
styles of banana socket around, so make sure you have
The first one is the method we’ve used for most the right-sized hole.
electronics hardware. Both circuit boards and PLA We’re still using springs for the power connection,
work quite well with hot glue. However, for a more and it seems to be working reasonably well, but we’ll
permanent solution, you can add screw holes. investigate this and more options when we start to get
PrusaSlicer has changed a bit recently, so we’d a larger system.
recommend updating to the latest version before going As well as the physical setup of the system, we’ve
any further. added writing. This helps us identify the module and
Import the STL into PrusaSlicer and make sure it’s remember what the inputs are. Again, we can do this
active (it will be green). You can now right-click on it directly in PrusaSlicer. Highlight the part so that it’s
and select Negative volume > cylinder. This will add green, and right-click it but, this time, select Add text.
a cylinder with a diameter of 28.2 mm. Unless you You can edit the text as well as the size. We’ve had the
happen to be adding a part exactly this size, use the best results using the default Segoe UI font, but in bold
Size [World] boxes on the right-hand side to make it with a minimum letter height of 7 mm. Any smaller
the size you want. You can either place it by eye, by than this and we’ve found it prone to snapping off or
dragging it to the place you want, or you can use the being illegible. The default depth is 4.5 mm, which is a
position boxes to place it precisely. We usually use a bit deep for us – 1 or 2 mm is plenty.
combination of both by dragging one hole to a place When you slice the file, you should see a pop-up
that looks right, and then using the positioning boxes with: ‘Sliced object looks like a logo or sign. Apply
to place others at the correct position away from this. colour changes automatically?’ If you click on this,
We’ve also experimented with different ways of it will pause the print when it gets to the text to let
connecting the modules together. In the first test, you change the filament to a different colour. You
we used springs into which you can fit wires. To be can make different bits of text different colours by
honest, this was mostly because we were nostalgic giving them different depths. We’d recommend about
for the electronics kits of the 1980s and 1990s. The 1 mm between each colour. Now that we can hear
connections were, at best, inconsistent. We’ve now our sounds better, and mount them better, we should
ditched these in favour of banana plugs. These are actually make sure they sound good. Let’s take a look
push-fit connectors with a slight expansion on the pin at getting the right pitches from our synth.

81
Pico modular: A bit of polish

TUTORIAL

IN TUNE import array


So far in this series, we’ve not worried too much about import time
the exact frequency a given voltage emits. This is fine import math
for testing, but really we want to make our synth play import digitalio
the right notes. There are basically two ways of doing
this – we could do all the calculations and make sure import board
everything is correct in theory. Or, alternatively, we import usb_midi
could test what it is in practice and then adjust our import adafruit_midi
code to fit what we detect. We opted to go with the from adafruit_midi.midi_message import note_
latter approach. parser
We created a VCO using the code we developed in from adafruit_midi.note_on import NoteOn
part one of this series, and connected it to a MIDI-to- from adafruit_midi.note_off import NoteOff
voltage bridge (from part two of the series). However, from adafruit_midi.control_change import
we don’t want to actually use the MIDI code. Instead, ControlChange
we used CircuitPython’s interactive mode to adjust from adafruit_midi.pitch_bend import PitchBend
some values and see how this affects things.
In the Mu editor, we opened a serial connection and import busio
pressed a key to enter interactive mode. We entered import adafruit_mcp4728
the following:
i2c = busio.I2C(board.GP1, board.GP0)
>>> import board mcp4728 = adafruit_mcp4728.MCP4728(i2c)
>>> import busio
>>> import adafruit_mcp4728 dacs = [mcp4728.channel_a, mcp4728.channel_b,
>>> i2c = busio.I2C(board.GP1, board.GP0) mcp4728.channel_c, mcp4728.channel_d]
>>> mcp4728 = adafruit_mcp4728.MCP4728(i2c) gate_pins = [board.GP15, board.GP14, board.GP13,
>>> gate = digitalio.DigitalInOut(board.GP15) board.GP12, board.GP11, board.GP10, board.GP9,
>>> gate.direction = digitalio.Direction.OUTPUT board.GP8]
>>> gate.value = True
>>> mcp4728.channel_a.value = 4000 gates = []

This sets the first channel to a particular voltage (given for pin in gate_pins:
as a 16-bit number). We connected our headphones gates.append(digitalio.DigitalInOut(pin))
and used a tuning app on our phone to find the actual
pitch at this point. We noted down the pitch and then for gate in gates:
repeated the last line with a new value, noted down gate.direction = digitalio.Direction.OUTPUT
the frequency, and so on. These points can be used to gate.value = False
create a curve that plots the relationship between the
DAC value on the MIDI-to-voltage converter and the midi_channel = 1
actual frequency played. midi = adafruit_midi.MIDI(midi_in=usb_midi.ports[0],
The closer together these points are, the more in_
accurately you’ll be able to hit a note. channel=(0,1,2,3,4,5,6,7))
There are many ways you can convert this set of
points into a function to calculate the correct DAC basenote = 60
values for frequency. Some involve fancy mathematics max_val = 65535 #the module takes a 16 bit number
with exotic names, like sliding cubic splines. even though it's a 12 bit dac
However, we did a very simple linear interpolation
which basically plots a straight line between two
points on the graph and takes that. It’s not the most octave_size = int(65535/3.3)
accurate method of calculating the value, but it’s fast notes = []
and straightforward. If you want more accuracy, it’s
easier to take more data points rather than do more current_val = 0
fancy mathematics. inc = int(octave_size/12)
The code for this is as follows: for i in range(int (3.3*12)):

82
FORGE

Left
This is still the old
front for PicoMidi. As
you can see, setting
the font too small can
cause bits to break off

notes.append(int(i*inc)) print("freq: ", noteToFreq(note))


print("dac val: ", frequency_to_dac_
def noteToFreq(note): val(noteToFreq(note)))
a = 440 return frequency_to_dac_val(noteToFreq(note))
return (a / 32) * (2 ** ((note - 9) / 12))
last_note = [0,0,0,0]
frequencies = [96.1, 108, 124.4, 142.6, 164.7, 190,
219.1, 251.3, while True:
289.2, 334.3, 385.8, 442.8, 510.5, msg = midi.receive()
587.1, 673.3, 775.2, 892] if isinstance(msg, NoteOn) and msg.velocity !=
0:
dac_vals = [ 0, 4000, 8000, 12000, 16000, 20000, if (msg.channel < 4):
24000, 28000, 32000, 36000, 40000, 44000, 48000, dacs[msg.channel].value = note_to_dac_
52000, 56000, 60000, 64000] val(msg.note)
last_note[msg.channel] = msg.note
def frequency_to_dac_val(want_freq):
if want_freq < 96.2: return 0 if (msg.channel < 8):
if want_freq > 892: return 64000 gates[msg.channel].value = True

elif (isinstance(msg, NoteOff) or


for number,freq in enumerate(frequencies): isinstance(msg, NoteOn) and msg.velocity
print("number, freq: ", number, freq) == 0):
if want_freq < freq:
print("number: ", number) if(msg.note == last_note[msg.channel]):
break gates[msg.channel].value = False
else:
gap = frequencies[number] - frequencies[number-1] pass
position = want_freq - frequencies[number-1]
proportion = position / gap With this in place, we can accurately control our VCO
from our MIDI controller.
dac_gap = dac_vals[number] - dac_vals[number-1] We’ve now got cases, better sound out, and a MIDI
dac_position = dac_gap * proportion system that can actually play in tune. In other words,
we’ve more or less got a working MIDI synth. The only
return int(dac_vals[number-1] + dac_position) problem is that it’s playing square waves and doesn’t
have any effects. Starting next issue, we’ll get creative
def note_to_dac_val(note): with our sound and look at ways of making it sound
print("note: ", note) more interesting.

83
DON’T MISS THE BRAND NEW ISSUE!

SUBSCRIBE
FOR JUST

£10!
> T
 HREE!issues
of The MagPi

> F
 REE!
Raspberry Pi
Pico W

> F
 REE!
delivery
to your door

NEW
+ FREE
MODEL!

RASPBERRY PI
*W

PICO W*
hil
es
toc
ks
las
t

Three issues and free Pico W for £10 is a UK-only offer. Free Pico W is included with a
12-month subscription in USA, Europe and Rest of World. Not included with renewals.
Offer subject to change or withdrawal at any time.

magpi.cc/subscribe
FIELD TEST
HACK MAKE BUILD CREATE
Hacker gear poked, prodded, taken apart, and investigated

92
PG
PG
86
ALPAKKA BEST OF
BREED
3D-print your own
games controller

PG

94 Bots, bots, bots, and

NUTS more bots

& BOLTS
Reviewing historical tech

PG

96
CROWDFUNDING
Cast your eye over a Raspberry Pi
robot and a screen printer
Bots! More bots and accessories

BEST OF BREED

ONLYTHE
BEST
Bots! More bots
and accessories
A collection of robotic-related kits and accessories

By Marc de Vinck

I
t’s time to look at robots and robot
accessories again. In the past, I have
covered robotic arms, wheeled robots,
walking bots, general robotic rovers and,
speaking of rovers, I even covered robotic
dogs and cats. Robotics has been around for a
long time. It’s a popular topic since it’s also how many
of us got into the DIY community. There are plenty of
kits out there, from beginner to advanced, and
hundreds, if not thousands, of different accessories.
I remember my first robot. It was a BEAM bot. If
you aren’t familiar with this type of simple robot, go
online and do some research – you’re in for a treat!
Generally speaking, BEAM bots are robots that use
simple analogue circuits rather than microprocessors
for control. They are fun, simple to build and many
times, when recycling an old piece of equipment like
a VCR or other techno trash, you might find all the
components needed to build one.
Once you build something like a simple BEAM bot,
you’ll inevitably want more control or functionality
with your bot. Fortunately, there are so many tutorials
online for building more advanced bots. It’s a robust
community, with lots of online resources and support.
In this Best of Breed, I’ll be looking at some of the
robotic kits and accessories that didn’t make it into
my previous articles. There are plenty of them!

86
FIELD TEST

Open Source Turtle Robot Kit


vs Inventor 2040 W
TINDIE $95 tindie.com PIMORONI $37 pimoroni.com

A
fter making some BEAM bots, my
next robot was in fact a turtle bot. I
believe it was based on a PIC
microcontroller. It wasn’t easy to
program, compared to modern-day
microcontrollers, but it was still a lot
of fun. This Open Source Turtle Robot Kit by
MakersBox reminds me of my first turtle bot.
However, this bot comes preloaded with an Adafruit
ItsyBitsy M4 microcontroller with Python firmware.
That sure does make it a lot easier to program! The
main body of the robot is 3D-printed, and it includes
everything you need to get up and running. It’s easy
to build and, once built, you can have fun changing
the code and customising it. Made specifically for
beginners, we think almost anyone will have fun with
the Turtle Robot Kit. It’s great being able to draw
patterns and write words autonomously. See a video
of the bot in action at hsmag.cc/TurtleBotYT.

T
he Inventor 2040 W from Pimoroni is a
perfect board for making just about
any kind of robotic contraption that VERDICT
you can imagine. You can power
multiple motors, up to six servos, add a Open Source
speaker, or interface with countless Turtle Robot Kit
sensors. All this is thanks to the integrated Raspberry A classic bot to
get started.

10/ 10
Pi Pico with its Dual Arm Cortex-M0+ running at up to
133MHz with 264kB of SRAM.
This is the kitchen sink breakout for the Raspberry
Pi Pico. In addition to everything mentioned earlier,
you can power your project with AA or AAA Inventor 2040 W
batteries, or even add a LiPo battery, thanks to its A great
integrated circuitry. It also features twelve accessory for
addressable LEDs, found on each of the servo Pico owners.

10/ 10
breakouts and the GPIO/ADC channels. It’s difficult to
condense all the features into one review, so head
over to the website to learn more.

87
Bots! More bots and accessories

BEST OF BREED

M.A.R.S. Rover Robot


PIMORONI $162 pimoroni.com

T
he Mobile Autonomous Robotic
System, aka M.A.R.S, is a Raspberry
Pi Zero or micro:bit-based six-wheel-
drive robotics kit. This robust robotics
platform is capable of crawling over
large obstacles, and navigating its
environment, thanks to an ultrasonic distance sensor
and steerable mast for additional sensors. The kit
VERDICT
includes six motors, four servos, and eleven
different PCB boards. Assembly takes a couple of M.A.R.S. Rover
hours. And once you’ve built it, you’ll have a capable Robot
little bot that looks cool too. The design is inspired A very cool-
by the Mars Curiosity 2020 Rover from NASA/JPL. looking bot!

9/ 10
Go to the website to learn more, and remember to
pick up a Raspberry Pi Zero or a micro:bit to go along
with this kit, because they are not included.

88
FIELD TEST

Zumo Robot for Arduino


ADAFRUIT $110 adafruit.com

T
he Zumo Robot is an Arduino-based
tracked robot that is less than 10 cm
× 10 cm, which qualifies it for mini
sumo competitions. Power is
provided by two micro metal gearbox
motors, and it features a stainless steel
VERDICT
bulldozer-like blade for pushing around Zumo Robot for
the competition. It has six infrared sensors for line Arduino
following or edge detection, an accelerometer, a A clean-looking
magnetometer, gyroscope, and a buzzer, allowing you bot.

9/ 10
to play your favourite victory song. No soldering
required – just add four AA batteries and an Arduino,
and you’ll be all set for some robotic sumo wrestling.

LEGO COMPATIBLE CONTINUOUS ROTATION SERVO

PIMORONI $6.35 pimoroni.com

If you’ve got LEGO, and you want to start building bots,


this Continuous Rotation Servo might be perfect for you.
Unlike a typical DC motor, there is a servo hidden inside
this plastic enclosure. This allows you to control both
speed and acceleration. All you need is a microcontroller
and some LEGO, and you’re well on your way to building
a bot.

89
Bots! More bots and accessories

BEST OF BREED

Bit:Bot XL Robot for micro:bit


PIMORONI $47 pimoroni.com

T
VERDICT
he Bit:Bot XL Robot for micro:bit is a and you can control speed and direction via the Bit:Bot XL Robot
colourful little turtle-like robot kit micro:bit. The robot has a front ball caster in lieu of for micro:bit
based on the original, albeit much traditional front wheels, allowing it to turn in any Got a micro:bit?
smaller, Bit:Bot. Just grab your direction or even spin on its own axis. It also features Grab this kit for
micro:bit, add it to the bot, and get twelve smart RGB LEDs, two digital line-following some fun!

9/ 10
started coding in Microsoft MakeCode. sensors, two analogue light sensors, a buzzer, and an
It doesn’t get much easier to build a bot. The bot is integrated AA battery holder. It’s a fun bot, especially
powered by two enclosed micro metal gear motors, for anyone just getting started with programming.

MECANUM WHEELS

PIMORONI $25.40 pimoroni.com

Are you building a bot and trying to figure out how to


integrate steering? How about a robot with mechanical
parts related to steering? Just alter the speed and
direction of the motors attached to the mecanum wheels,
and you can turn your bot in any direction. It adds a bit of
software complexity in lieu of mechanical complexity.
And, if you’ve ever seen a robot with these types of
wheels, you’ll know just how cool it looks too!

90
Learn coding
Discover how computers work
Build amazing things!

magpi.cc/beginnersguide
Alpakka

REVIEW

Alpakka
3D-print your own controller

INPUT LABS £VARIES inputlabs.io

By Ben Everard

M
aking a games controller is easier option of buying the base PCB that comes
easy – you just need a handful with one side of surface-mount components already
of buttons, a Raspberry Pi, and soldered on. We also got the additional components
about 20 lines of CircuitPython. directly from Input Labs to make sure we got the
We’ve done it many times. correct parts.
However, making a good games The remaining soldering is a mix of surface-mount
controller is a different challenge entirely. Subtle and through-hole, but it’s all very straightforward.
changes in the form factor affect how it feels in your There are no parts that should tax someone who’s
hand. The code has to relay the inputs accurately soldered before, and it would also make a reasonable
and with very low latency. What’s more, if you want first project, though given the cost of the PCB, it’d
to make it reproducible by other people, you need a probably be prudent to get a practice board for your
design that’s easy to copy and good documentation first few joints before taking this on. The assembly
to go with it. The team at Input Labs took on this instructions take you through the process, and there’s
Below
You have to solder challenge with the Alpakka gaming controller. even a 3D-printable jig to hold the PCB steady while
this side of the The design files are open-source, so you can start you solder.
PCB, but it’s pretty
straightforward completely from scratch if you like, but we took the With everything soldered into place, the next
step is 3D printing the physical parts. The parts are
designed to be printed in two different colours,
but obviously this is up to you. A couple of the
parts need specific slicer settings, and this is in the
documentation. There is one part that should be
printed in conductive filament because it acts as a
touchpad. Printing in conductive PLA isn’t particularly
difficult; however, it is expensive to get even a
small spool for just one part. There are a few hacks
people have used, including putting a bolt through
the case somewhere else and soldering this onto the
touchpads, or covering a non-conductive PLA part
in tinfoil. You can also purchase the part printed in
conductive PLA but, at 16 euros, it’s not cheap.
Tolerances on the 3D-printed parts are tight, and
there aren’t currently any different fit options for
anything other than the touch-sensitive part. We
found we had quite a bit of difficulty getting the

92
FIELD TEST

parts together. It took some shaving, sanding, and a sticks) and a keyboard-and-mouse desk setup. We
bit of lubricant to get everything moving nicely. The found we got much more control with the gyro setup Above
The brown filament
problem’s made worse by the fact that some of the than a regular gamepad, but mouse-and-keyboard is recycled PLA
switches that move the 3D-printed parts have very players might find it harder to get the same level coloured with algae

little push-back, so unless everything is moving freely, of control.


the buttons will stick. If you’re thinking of building Alpakka is almost endlessly hackable. Everything
one, we’d recommend printing out a few of the parts is based around the PCB, so unless you plan on
(perhaps the bottom section and the trigger buttons), respinning that, the button position is fixed, but the
and see how the tolerances work on your printer. software and 3D design is all available for you to
Once you’ve bought, do what you want to


soldered, and printed all with it. You don’t have
your parts, it’s just a case It took some shaving, to dive all the way into
of screwing everything sanding, and a bit of the source code to do
together, and again, here that – there are profiles
lubricant to get everything


the documentation walks that allow you to set
you through the process. moving nicely different functions to
different features on the
IN YOUR HANDS controller. VERDICT
Once you’ve built an Alpakka, it feels great in your Perhaps the most obvious missing feature from
A great,
hand. It’s sturdy and just weighty enough to feel Alpakka is wireless support. This is something the hackable
solid. The most unusual feature of the controller is team are working on with Pico W. If this is important controller.
the gyroscope. If you touch the conductive hexagon, to you, then it might be worth holding back and We’d just like a
the controller emulates a mouse, with the tilt of watching development until this is ready. few tolerance
the controller defining the mouse position. This is We love the idea of an open, hackable controller, options.

8/ 10
pretty intuitive, and we found it quick and easy to get and the Alpakka is well on its way to being this. Once
used to. This kind of sits the controller between a wireless support is added, it’ll compare favourably to
traditional gamepad (which typically has two thumb- any of the commercial controllers we’ve used.

93
Nuts and Bolts

REVIEW

Nuts and Bolts


A brief history of engineering

ROMA AGRAWAL £22 hsmag.cc/nandbbook

By Ben Everard

T
he life of a tech reviewer is thinking
deeply – perhaps too deeply – about
progress. Is version N+1 of a widget
really better than version N? Yes, it has
more gigabytes or transistors or fancier
graphics, but what does that mean? Is
it actually more useful? Will it result in an appreciable
difference to your life?
Yes, there is some value in novelty and enjoyment
to come from having a new shiny thing, but is it really
worth spending the monetary equivalent of tens or
hundreds of hours of work to upgrade?
Nuts and Bolts is the antidote to this. It claims to
look at seven inventions that changed the world, but
we’re not sure this is quite accurate. It looks at seven
lineages of inventions that have changed the world.
For example, while the book gets its name from nuts
and bolts, the actual invention talked about in the
chapter is nails. Roma Agrawal follows this thread
through rivets and screws until she reaches nuts and
bolts in just the final three pages of the chapter.
Agrawal takes us through technology by thread,
rather than by timeline, so the chapters cover similar
time periods, though in many cases the technology
is being developed in very different parts of the
world. Chapter one takes us from nails, through
rivets and screws, to nuts and bolts. Chapter two
looks at perhaps the most famous invention of all
time: the wheel. While this may seem like a single
invention, as Agrawal points out, it has in fact been
reinvented many times and, contrary to popular
belief, reinventing the wheel is not always a bad
thing. A spinning disc has powered everything from
the chariot Boudica rode when fighting against the
Roman legions, to the gyroscopes that help control
the International Space Station.

94
FIELD TEST

Next, we look at the spring. This has had some perform their roles better while retaining the same
obvious and not-so-obvious uses. As energy storage basic form.
mechanisms, they have enabled devices from The final chapter follows the development of
watches to archery bows, yet Agrawal also points pumps. This is perhaps the outlier because, while the
out the significant role they play in enabling modern same – or at least similar – problem is being solved,
cities to exist through their vibration-isolating abilities. there isn’t a single thread of development between,
We simply wouldn’t be able to live and work in close for example, the irrigation system at the Hanging
proximity if we had to live with all the noise we Gardens of Babylon and artificial hearts.
created echoing through the air. This book is well-written and excellently
researched. It links together scientific traditions


across the world in a coherent narrative. Given the
It’s a whirlwind tour scope of the material (which is most of technological
progress over the past couple of thousand years), it
rather than a is necessarily brief. This is perhaps best exemplified
deep-dive into particular by the scant two and a half pages on nuts and bolts.


It’s a whirlwind tour rather than a deep dive into
technologies
particular technologies. This speed lets you see how
the forces that fundamentally change technology
work, and focuses on the pivotal moments when
The magnets chapter probably travels the furthest technology takes a leap forward. It allows us to
in technological terms, as it goes from crude think about what technological improvement looks
lodestone-based compasses in Song dynasty China like without the marketing spin. By looking back,
to the World Wide Web. It’s certainly arguable that we can see how particular developments actually
this stretches the concept of a single invention changed lives in a way that’s hard to do when
beyond breaking point. However, there is a single looking at new developments. Like much of history,
thread of narrative that brings these together via it is an interesting story about the past that gives
Roma’s relatives, so we’ll allow her this indulgence in us useful lessons to incorporate into our daily lives VERDICT
family history. – at least, it does if your daily life involves being a
An entertaining
Two chapters on lenses and string follow, perhaps technology reviewer. summary of
the most straightforward line of progress. While most While it is quite self-indulgent to review the book what engineers
have improved in many ways since their inception, a from our own perspective, it does get to the heart have been up
Neanderthal would still recognise modern thread, and of what this book is about: what actual technological to for the past
scientists from the Middle Ages would recognise a progress looks like. As you’re reading this, you’re 2000 years.

10/ 10
modern lens. They are still primarily used to join stuff obviously the sort of person who reads tech reviews.
and to see things, respectively. An innovation here Hopefully, it’ll help you detect when we reviewers get
is in manufacturing and materials that allow them to a bit too caught up in the hype.

95
Crowdfunding now

REGULAR

CROWDFUNDING
NOW
Pi-Cast KVM
Access your computer from anywhere

From $199 hsmag.cc/picast Delivery: June 2024

N
ot to be confused with Kernel-based
Virtual Machines, the KVM in this
product stands for Keyboard, Video,
and Mouse. This device uses
Raspberry Pi’s USB Gadget mode
to appear to a computer that it’s plugged into
as a Keyboard and Mouse (and also other
USB Gadgets, such as mass storage).
You can plug this into any computer that
supports USB and HDMI, and it will take video
and give input to that machine. This means
that you can control the computer from the
PiKVM device which, in turn, can be controlled
over the internet. This gives you full remote
access to a computer – not just in the usual
way via the operating system, but as much
control as if you were sitting there. You can interact
with BIOS, emulated plugging and unplugging USB
mass storage devices, and more. Pi-Cast KVM is based
on PiKVM, an open-source project that also releases
hardware. However, the official PiKVM boards are
closed-source, while Pi-Cast is open (at least as far as
schematics). We haven’t tested any of them out, but
they have a similar feature set.

96
BUYER
BEWARE !
When backing a crowdfunding
campaign, you are not purchasing
a finished product, but supporting
a project working on something
new. There is a very real chance
that the product will never ship
and you’ll lose your money. It’s
a great way to support projects
you like and get some cheap
hardware in the process, but if
you use it purely as a chance to
snag cheap stuff, you may find
that you get burned.

Sake Hack
Drink in the trees

From $76 hsmag.cc/SakeHackProject Delivery: September 2024

T
he idea behind this is simple. Take a spirit Secondly, why this? If it is indeed a bottle and a
of your choice, and a wood of your choice, block of wood, why do I need this particular bottle
and infuse the spirit with the wood in just and block of wood? Timber prices may have gone up
half a day. This sounds like a great idea. We in recent years, but they’re not quite at this level yet.
have some questions though. Firstly, how? We’re a bit cynical about this, but we haven’t
As far as we can see, you get a bottle and a bit of tested it out, so perhaps we’re missing something. It
wood. It takes a lot longer than half a day to get the would be lovely to experiment with wood-flavoured
flavour from wood into alcohol. We know, we’ve drinks without having to wait years, and perhaps the
tried. Unless they’re using some clever trickery they good folks at Sake Hack have discovered how to do
don’t talk about, we can’t see how you’d get much that, but we just wish that they’d tell us a little more
flavour from this. about it.

97
#76 ON SALE
22 FEBRUARY

THE

ULTIMATE
WORKSHOP
ALSO
RASPBERRY PI PICO
3D PRINTING
LASER CUTTING
ELECTRONICS
AND MUCH MORE

DON’T MISS OUT

hsmag.cc/subscribe
Fractal fun
Fractals are everywhere. The branches on trees exhibit fractal-like behaviour, as
the veins on leaves, the blood vessels that supply our organs, the ice crystals
within snowflakes, and the endlessly undulating coastline. It turns out that our
teachers were right: mathematics really is beautiful, if only you’re looking in the
right place.
This issue, Karl Mose has brought the beauty of fractals inside using an incredibly
simple build: just a Raspberry Pi Zero, a screen, and a frame of your choice are
all it takes to build a portal into an ever-changing, endlessly fascinating world.
And it beats the hell out of algebra.
PiKVM
Manage
Manage your
servers
servers or PCs
remotely!
remotely!

Remote control redefined

PiKVM V4 Mini
Small, cost-effective, and powerful!

Power consumption in idle mode: just 2.67 Watts!


Transfer your mouse and keyboard actions
Access to all configuration settings like UEFI/BIOS
Capture video signal up to 1920x1200@60 Hz
Take full control of a remote PC’s power

PiKVM V4 Plus
The most feature-rich edition

More connectivity
Extra storage via internal USB 3.0
Upgraded powering options
More physical security features
Extra HDMI output
Advanced cooling solution

A cost-effective solution for data-centers,


IT departments or remote machines!

Availableatatthe
Available themain
mainRaspberry
Raspberry Pi
Pi resellers
resellers

List of official
resellers by country:

You might also like