Warp Drive
A desk toy for children aged 6 to 12: warp with the knob, return to zero, meet one of 18 things in space. I listed it for sale on my shop.
Breadboard to final CAD in 81 days, and the unit was listed for sale on my own shop, with the firmware open source, MIT, on GitHub.
- my part
- Solo: electronics, CAD and 3D printing. AI coding assistants wrote most of the firmware; I set what it should do, tested it on the device and fixed what they got wrong.
- when
- March to June 2025, firmware to November
- context
- Personal
- status
- Released
- size
- 75 × 68 × 19 mm shell, 32 mm to the top of the knobsourceBounding boxes of the shell body and the whole assembly in Cosmic Knobulator/CAD/WARP DRIVE V3.2.obj (Shapr3D, saved 10 June 2025), measured 22 October 2026.

Warp Drive, in 3D

outcomes
18
things to find in spacemeasured · sourceenum class CelestialObject in warpdrive_esp32_tft.ino:695-716, 18 members before NUM_TYPES (recounted 22 Oct 2026); story_mode.h has the same 18 stops.
3
modes: Discovery, Quiz and Storymeasured · sourcemenuItems in warpdrive_esp32_tft.ino:760-763.
81
days from breadboard to final CADmeasured · sourceBreadboard photo EXIF 21 Mar 2025 21:39 (setup_photo.jpg); CAD WARP DRIVE V3.2.step and .obj saved 10 Jun 2025, the day the inside of the blue unit was photographed (EXIF 10 Jun 2025 19:49).
What it is
Warp Drive is a desk toy for children aged 6 to 12. Turn the knob up and the stars streak past; bring it back to zero and you drop out of warp, four times in five in front of one of 18 things in space, from a comet to the Ring Nebula. The fifth time it is empty space. I wired it, drew the shell and printed it myself. AI coding assistants wrote most of the firmware; I set what it should do, tested it on the device and fixed what they got wrong. Then I listed it on my own shop. A handful went out, and some were sold.
A starfield was running on my bench by 21 March 2025, on an ESP8266 board with a 128 by 128 screen and a knob. The work was everything after that: a shell, a second button, sound, light and a buzz, and a unit finished enough to put on a shop page.

a 10k pot under the knobsourceB10K potentiometer 10K.stp, the part modelled in Cosmic Knobulator/CAD (9 May 2025)
a slot for hooks, a nod to v1sourceTejas, answers of 29 Oct 2026, Q4: not a switch, a slot in the device for hooks and the like, a homage to v1. The firmware reads no switch pin either.
a 10k pot under the knobsourceB10K potentiometer 10K.stp, the part modelled in Cosmic Knobulator/CAD (9 May 2025)
a slot for hooks, a nod to v1sourceTejas, answers of 29 Oct 2026, Q4: not a switch, a slot in the device for hooks and the like, a homage to v1. The firmware reads no switch pin either.
Breadboard to shelf
The builds I photographed, in order as far as I can date them. The dates come from the photos and the files around them; the first printed box has no dated photo, and it is the box I exported from CAD on 23 and 24 March.

Breadboard, 21 Mar

First printed box, March

Handheld, April

Bench rigs, May

Blue unit, June
Five decisions
Each one is dated by the file or the photo it shows up in.
decision 1
Twelve CAD exports in eighteen days

I drew the shell in Shapr3D, and twelve of its exports fall in eighteen days, a few of them only a minute or three apart. The first three, on 23 and 24 March, are a plain box with a window for the screen and a lid, the first box I printed. On 7 April it became an L, the screen on one side and the knob on the other, and by that night it was two halves with a loop and a cap for one button. The last exports, on 8 and 10 April, refine those halves into the grey handheld in the April photos. I printed the shells myself, on the Flashforge Inventor I had during development; my printer now is a Bambu P2S.
12exportsmeasured · sourceShapr3D export filenames in Cosmic Knobulator/CAD/archive, 23 Mar 2025 17:10 to 10 Apr 2025 00:01in 18 days, 23 March to 10 April
decision 2
A bigger screen, with room for words

the working name
the working name
By 9 May I had a 2-inch, 240 by 320 screen on the bench, wired to a knob and showing a three-mode menu under the working name, Cosmic Knobulator. The extra room is what Story mode uses: a paragraph of narration under each object. The firmware asks for PSRAM for its sprites and falls back to the heap if it can’t, and its loop aims at about 60 frames a second.
4.7×the pixelsmeasured · source128 × 128 = 16,384 px (V1 header, ST7735) against 240 × 320 = 76,800 px (User_Setup.h:87-91, ST7789; ino:240-241)of the first screen
decision 3
A loop on a bag, then a box on a desk

reads upside down
reads upside down
The grey handheld had a loop, and on 11 May it was clipped to my backpack with a carabiner. Hanging there, the screen reads upside down. People didn’t find the handheld ergonomic, and I took the shell on as a redesign exercise. A later body in CAD, on 12 May, is a flat box 75 by 68 mm that sits on a desk with the screen the right way up, and it read much better for the kind of device the toy was turning into. That box is the shape that went on sale.
decision 4
A second button, for more

in firmware, 17 MaysourceCommits fbf3385 and eafb08e, 17 May 2025: "incorporated second button and fact display for discovery mode", "Added second button in quiz mode and story mode". Those are firmware commits; the date the button went into the shell is not on file. The right-hand button is the second one by the labels in the browser port.
in firmware, 17 MaysourceCommits fbf3385 and eafb08e, 17 May 2025: "incorporated second button and fact display for discovery mode", "Added second button in quiz mode and story mode". Those are firmware commits; the date the button went into the shell is not on file. The right-hand button is the second one by the labels in the browser port.
The handheld had one button, and its screen said what it did: “KNOB:SEL BTN:GO”. On 17 May the firmware gained a second one, and I gave it the extra jobs. In Discovery it opens a fact about what you found, in Story a fact about the stop, and in Quiz a helpline that marks two wrong answers. From 22 May it also opens the sound and light settings on the menu. The first button stays go and back.
decision 5
Wi-Fi off, everything drawn on the chip

ESP32-S3 Super MinisourceTejas, answers of 29 Oct 2026, Q5: the boards went ESP8266, then ESP32, then the ESP32-S3 Super Mini. The firmware targets an ESP32-S3 (README.md:4, 95), and CAD has an ESP32S3 Super Mini.step part (9 May 2025).
buzzer, 22 MaysourceCommit 75c6d72, 22 May 2025: "added buzzer and sound effects"
LiPo cellsourceThe wrapped cell in this photo. Its own label is not visible; the CAD part for it is Li Bat 503035P.step in Cosmic Knobulator/CAD (9 May 2025).
ESP32-S3 Super MinisourceTejas, answers of 29 Oct 2026, Q5: the boards went ESP8266, then ESP32, then the ESP32-S3 Super Mini. The firmware targets an ESP32-S3 (README.md:4, 95), and CAD has an ESP32S3 Super Mini.step part (9 May 2025).
buzzer, 22 MaysourceCommit 75c6d72, 22 May 2025: "added buzzer and sound effects"
LiPo cellsourceThe wrapped cell in this photo. Its own label is not visible; the CAD part for it is Li Bat 503035P.step in Cosmic Knobulator/CAD (9 May 2025).
The board went from an ESP8266 to an ESP32 and then to the ESP32-S3 Super Mini in this unit. Every object is drawn in code on it, in files like comet.h and ring_nebula.h, with no images to load. I switched Wi-Fi and Bluetooth off in setup to save the battery, which also means there’s no app and no account. The motor buzzes harder the faster you warp, after a short burst at ignition, and the buzzer and LEDs can be turned off from the menu. Inside, it’s hand-soldered and hot-glued, and it looks it.
Play it
This is the toy’s Discovery mode, ported to TypeScript and running in your browser: the same 18 objects, beeps, lights and buzz. Quiz and Story aren’t ported; they live on the toy.
Loading the toy’s ported Discovery mode.
Turn the knob up and the stars streak; bring it back to zero and you drop out in front of something four times in five, and in empty space the fifth. No object comes back until you have seen all 18, and each one stays until you turn the knob up or go back to the menu. The page asks an Android phone to vibrate while a hand is on the toy and for a few seconds after, and on iOS 18 it clicks a hidden switch, which should give a tick. When I tried it on phones, it worked on some of them, as far as I remember.
Hold the left button for three seconds and the toy says goodbye: “Designed on earth”, my name and my mark. That screen went into the firmware on 4 September 2025, and the face in the corner of this site is a redrawing of it.
