Dylan's Projects
Hobbyist hardware and software from an engineer with too much time.
Friday, September 25, 2026
Friday, August 21, 2026
Improved Toddlophone
This is an iteration on my talkkonnect based toddler phone. This is a good talkkonnect build without any special DAC required; the USB speaker just connects right to the pi.
Parts:
- Raspberry Pi W (or preferably 2W)
- ROFALL USB PC Speaker ($14 each)
- 12mm momentary push buttons
- Three LEDs
Thursday, August 20, 2026
NFC Charger - Launch a custom shortcut every time you use a charger
iPhone shortcuts lets you launch any arbitrary action - like sending a text, going into Do Not Disturb mode, etc, through Shortcuts. Shortcuts can be kicked off when you charge your phone.
This is a specific charger that also has its own NFC tag. When you place your phone in the charger, it reads the NFC tag and takes any action that you want. My friend has his to open his daycare camera; the charger sits at his desk at work, and when he plops his phone down, his daycare camera shows up instantly. I set mine in my living room to go into Mindfulness mode to reduce interruptions.
The charger fits around these $4 AliExpress wireless chargers:
https://www.aliexpress.us/item/3256812245191124.html
And at the top, stick the NFC tag. About $5.00 for a roll of 100
https://www.aliexpress.us/item/3256812376400837.html
Model on Thingiverse: https://www.thingiverse.com/thing:7398637
Friday, June 5, 2026
Toddlophone - WiFi powered landline phones for all ages
I wanted my son (two and half years old) and his friends to be able to talk any time, but he's not *quite* ready for an iPhone. So I designed the Toddlophone.
This is based on TalkKonnect. TalkKonnect is one of many Mumble-based IP radios. Mumble is a free voice chat program that does voice chat very well. I host my own Mumble server at home, and all the Toddlophones connect to it.
TalkKonnect was by far the best client available for me. I also tried:
- Writing my own Python based Mumble client based on Pymumble - this didn't work out because the bridge between Pymumble and ALSA was way too brittle
- TalkiePi and various forks - this was not kept up to date and wouldn't work with the Linux kernel's updated Raspberry Pi GPIO interface
- Running the GUI Mumble client on XFCE / Raspbian - this was too much for my lowly Raspberry Pi W (the original 1.0 W) to handle
Ultimately TalkKonnect proved to be perfect, it just took me a while to find it. The XML configuration is excellent; on the onset of the project I knew I wanted a push-to-talk switch and three LEDs for status (online, broadcasting, and are there other participants). The configuration happened to let me specify GPIO pins for exactly this purpose. So if you're looking to build something similar in 2026, abandon these other projects like TalkiePi. The prepared TalkKonnect OS images were perfect - I could skip all of the compiling and just edit the XML, and it worked right out of the box. At my son's friends houses, I just put a wpa_supplicant.conf file in the boot partition and the Pi would connect automatically.
As usual I designed my own enclosure in TinkerCad. The device is powered with a Raspberry Pi Zero W, though pretty much any SBC would work. I connected a micro USB breakout to the 5v line to simplify the design. I used cheap generic USB DACs connected to simple 3.5mm phones.

Wednesday, June 3, 2026
Recycling or Compost smart light
I can never remember whether they’re gonna pick up recycling or compost. They switch every week. I set up a smart light to alternate between green and blue. When the light is green, time to bring out the green bin.
I used an iPhone skill to manage it. The skill counts the number of weeks since some arbitrary date in the past, divides that by two, and takes the remainder. If it’s 1, compost, if 0, recycling.
Monday, April 6, 2026
Restoring my Ender 3
My Ender 3 is from 2018. It's not exactly vintage technology but in the 3d printer world, it's not brand new either.
It has a bed that is really challenging to level. I think because of the heater, one end can’t quite get level with running out of travel on the adjustment wheel. So I installed a leveling probe. Now the printer is working better than it ever has. Here's to many more years of service!
I bought a BIGTREETECH MicroProbe V2 from AliExpress for about $19. It was the cheapest probe I could find at the time, but now BL Touch and CR Touch are going for around $17. If I were to do it again I would go for a BL Touch, because this one had a few problems.
Here is my detailed setup experience setting up this clone BL Touch, in case Google got you here and you're trying to save time doing the same thing!
Wiring
To wire it up, this Reddit post had some good suggestions: "The definitive guide to wiring BLTouch V3 on ICSP" My wiring looks like his, except my sensor pin is where the old Z stop was connected (the Z stop was removed). So the black/white pair here would go into Z stop, with the white wire towards the USB end. But my brown/yellow/red wires look the same. You could, of course, wire it exactly the same way as the picture here.
Firmware
My Ender 3 has the classic AVR / Atmel 3124P. At first I tried installing the Marlin firmware to support the new probe, but Marlin couldn't compile into a firmware that would fit on this underpowered board. So I instead had to use Klipper.
The only thing I don't like about Klipper is naming. Klipper is fine, but Mainsail and Moonraker are just confusing. The documentation made Mainsail and Moonraker sound like rather generic "yet another" API layers, but they are actually specific to Klipper. The documentation also made it seem like you would need to interact with these different systems. The bottom line is, you don't have to think too hard about these projects. You can just install Klipper and give it gcode through a web interface.
Klipper recommends using a Raspberry Pi or equivalent SBC to power your printer, but for me, I found it much easier and straightforward to just install Klipper on my workshop computer. I used to have a dedicated Pi driving my printer but it was more hassle than the value it provided. My workshop computer runs Klipper great.
The only thing you really need is KIAUH. I ran that installer and installed Klipper, Moonraker and Mainsail. I didn't need anything else. KIAUH also flashed the Klipper firmware to my printer.
Printer Configuration
This is the relevant part of my Klipper printer configuration. Note that for whatever reason, my printer's pins were inverted. I discovered this by issuing Kipper commands for deploying and querying the sensor. Other than discovering that the pins were inverted here, the Klipper documentation for BL touch was mostly accurate.
[bltouch]
sensor_pin: ^!PC4 # Inverted z stop
control_pin: !PB5 # Inverted ICSP
probe_with_touch_mode: False
pin_up_reports_not_triggered: False
pin_up_touch_mode_reports_triggered: True
stow_on_each_sample: True
x_offset: -44 # change these to match the
y_offset: -14 # mounting hardware you're using
z_offset: 0.365
speed: 5.0
[bed_mesh]
speed: 120
horizontal_move_z: 5
mesh_min: 10, 10
mesh_max: 180, 180
probe_count: 5
scan_overshoot: 8
Mounting
I used this Thingiverse object. I suppose that my BL touch clone is shorter than an actual BL touch. I used the tallest variation here. I mounted it such that when the probe was extended, it came below the extruder head, and when retracted, it was above. This took a couple tries to get right. Once it was in about the right spot, I "welded" it in place (the screw holes didn't quite line up how they needed to). And the probe was attached using zip ties rather than screws.
The X and Y offsets come from Thingiverse. The Z offset is calibrated in Klipper - just bring the extruder down and measure.
Printing Flow
My clone had one small problem - the probe wouldn't retract on command. But you could tap it up with your finger. So I added some instructions in Cura to pause the print right before everything is ready to go, and I can just tap the probe back into place, so it doesn't scrape against the build.
; Ender 3 Custom Start G-code
G92 E0 ; Reset Extruder
G28 ; Home all axes
G1 Z40 F3000 ; Raise Z 40mm so you have room
M300 S1000 P500
G4 S10 ; Pause for 10 seconds (wait for you to retract BLTouch manually)
M300 S1000 P500
G1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed
G1 X0.1 Y20 Z0.3 F5000.0 ; Move to start position
G1 X0.1 Y200.0 Z0.3 F1500.0 E15 ; Draw the first line
G1 X0.4 Y200.0 Z0.3 F5000.0 ; Move to side a little
G1 X0.4 Y20 Z0.3 F1500.0 E30 ; Draw the second line
G92 E0 ; Reset Extruder
G1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed
G1 X5 Y20 Z0.3 F5000.0 ; Move over to prevent blob squish
That's it! And before every print I can run a bed mesh.
Thursday, March 26, 2026
New website - Rush.Gifts
I love Amazon wishlists, but nobody knows where to find them.
Rush.Gifts simply links to wishlists for me and my family.
Subdomains like Dylan.Rush.Gifts will link to specific lists.




