01 August 2026

PROJECT: Neato D5 Mod, Update #4 - Closing Thoughts


Many things have happened since the last update, the biggest of which being that the Neato D5 Mod PCBA (aka Neato Lupin Mod) is now obsolete as the Vacuula (formerly Brainslug) team have figured out how to run custom FW on the existing Neato Botvac HW :D


I had lots of fun with this project, so I'm making this last post to close things off.


Key Links:


Known Issues:

The FW required the modification below to improve WiFi stability on the XIAO ESP32-C6 module. I highly suspect this is related to the +3.3V rail drooping (brownout) during WiFi Tx, as I am powering the module directly from the debug port +3.3V output. Not ideal... but it's the best I could do without breaking into a +5V rail on the Neato Botvac mobo.

wifi:
  output_power: 17dB 
  #fast_connect: false
  #power_save_mode: none

I did try monitoring the +3.3V rail with rev B01 PCBA (with the help of a precision +1.024V reference for ADC read calibration), but as expected the ADC sampling was too slow to capture any meaningful data. Ideally I should have been using an oscilloscope with a current probe.


Neato Media:

Rev A01 PCBA shape & bend simulation in Altium Designer. The purple region is rigid FR4 stiffener.


I though I had it all figured out and ordered the above FPC (Flexible Printed Circuit) from JLCPCB. Then I assembled it and found that the bottom half collided with the Neato D5 bumper... guess who forgot to do a visual (printed paper) & virtual (SolidWorks) check with the bumper installed D:


So this time I made sure to check things properly before ordering the rev B01 FPC:


Once the FPCs arrived, I then assembled them using the Miniware MHP30. Below is a sped-up video (x10) of the solder reflow process. Left is digital microscope, right is thermal cam. Interesting how the hotplate temperature increases like wave:


And finally, here is the modded Neato Botvac D5. Ready to keep our place clean for that bit longer:

11 January 2026

PROJECT: Neato D5 Mod, Update #3 - DRAFT PCBA Shape


I have been playing around with SolidWorks Sheet Metal functionality and now have a DRAFT shape for the flex PCBA. Here's how it looks unfolded:


Here it is folded, with the various sections marked:


And here is the rather simple assembly which consists of:


Next steps:

  • Create above components in my Altium Database Library.
  • Import flattened PCB outline into Altium while I wait for JLCPCB to confirm stack-up and material queries.

06 January 2026

PROJECT: Neato D5 Mod, Update #2 - A Slight Change of Plans


After joining the Neato Connected Discord I ran into another smart banana (4_Fools) that proposed hiding the ESP32 behind the bumper and running a ribbon cable to the debug port like so:


So I plonked a Seeed ESP32-C6 (since they are known for quality HW, especially when speccing the internal antenna) and a generic 4P 0.1" female socket into the SolidWorks assembly and yea this looks like the best way to go, as it's a plug & play mod that (hopefully) does not require any modifications to the bumper:


Next step is to figure out the flex shape and reach out to JLCPCB for their flex, rigid stiffener, & adhesive spec.

30 December 2025

PROJECT: Neato D5 Mod, Update #1 - Info


First and last post of 2025... We on toddler time now fam :D

ISSUE:

Now that Neato has finally kicked the bucket (and all robot vacuums of their servers), our much loved D5 has become a bit less useful. We can still push the power button to start a manual (and unoptimized) route, but can't do so remotely... So no more vacuuming the house twice when we are out and about D:


IMMEDIATE FIX:

Continue using manual route until... (see below).


PROPOSAL:

Luckily some very smart bananas (Philip2809) have figured out that you can control the D5 (and many other models) via the debug port with the help of an ESP32 & Home Assistant. Currently interfacing to the debug port is done in two ways, the first looking quite cyberpunk and the latter requiring you to disassemble the whole robot:


But I though, why not have a bit more fun with it and design my own rigid-flex PCBA that sits nicely on the bumper. Initially I was thinking of placing the PCBA and cover on the top of bumper and running the flex underneath, but I soon found that there is a pinch point where the flex would exit. Plus there would be some tight bend radiuses which are far from ideal for a continuously (though minor) moving assembly:


Then I though about placing it on the side (position 2 below), but this would mean the right side of robot would not be able to run as close to the wall as before. So the next best position is at the front of the bumper, directly above the debug port (position 3 below). Sure this loses a bit of front bumper space, but it does mean the flex region of PCBA is short and does not have any complex bends:


DECISION:

Front of bumper (position 3) it is. Next step, figure out rigid-flex PCBA constrains from my very crude 3D scan (which you can get here):

06 April 2024

TRAVEL: Interstitial Spaces of Nippon


After 5 long years we finally made it back to Nippon 🌸

To continue my tradition of odd travel photo themes (see above link), below are some interstitial spaces between buildings. I always found these to be quite interesting, as seeing something like this is rare in spacious Melbourne.

Tokyo


Saitama


Kiyotsu Gorge


Nagano (aka Nyan-gano)


Nozawaonsen


Tsumago-juku


Magome-juku

29 September 2023

UPDATE: Life ;^)

Feels odd to realize that it's been 9 months since the last update, and oh boy what an interesting 9 months it's been... But through all this chaos we have managed to make some fun memories with the little one, memories that somehow feel that bit more special then before ðŸ¥²

One thing we quickly realised is that we have way less time on our hands (surprise surprise), as our "free" time is now either catching up on chores/admin or trying to recharge our mental batteries. But as always we have found ways to adapt to the new situation (or so we claim), whether it be by improving project workflow/tracking or outsourcing tasks where/when possible.

So in this update I want to first talk about the former, improving project workflow, specifically how I now plan to use Altium Designer when working on PCBAs. Then to finish things off, I will show some snapshots of projects I have miraculously found the time to work on :O


Altium Designer Workflow & Templates

Looking back, my PCBA design workflow was not that efficient, which I guess was not a huge deal at the time... But now that free time is that bit harder to come by, I have tried to optimize a number of aspects. For example:

Old workflow

Revised workflow

Altium component creation & management

A SCH symbol & PCB footprint would be linked up in a relevant schematic library (SchLib), of which there were 12 (res, cap, IC…).

SCH symbols would typically be reused, but would be copied from one component to another. So updating a SCH symbol used by many components was very tedious as I had to update each one manually.

PCB footprints would always be created from scratch, as I could not easily check if a footprint already existed until I generated it (usually via IPC Compliant Footprint Wizard).

All components are now managed by a single database library (DbLib), which I edit via Microsoft Access. This makes it very easy to link up a single SCH symbol and/or PCB footprint to many components, so creating a new component is now much quicker. 

Since everything is linked up by a database, if I want to update a SCH symbol or a PCB footprint that's used by many parts all I have to do is make a single edit.

Lastly, PCB footprints (and their name) are created based on manufacturers recommendation (vs going direct to IPC Compliant Footprint Wizard). Making it easier to see if an existing footprint is present in the database.

Altium project creation

When creating a new Altium PRJ, I would first try to find a previous project that somewhat resembled what I was hoping to achieve. Then I would manually copy and modify all the project files (SCH, PCB, BOM…) & individual parameters… Inevitably missing something crucial along the way.

I now have an Altium PRJ template which automatically adds all relevant files (SCH, PCB, BOM…) when a project is created. Plus, all linked files now reference the project parameters, making it very easy to update project revisions & release datapacks.

Altium project release (datapack generation)

Once a project was finalised, I would manually go over all line items in the ActiveBOM and allocate a manufacturing part number to those that did not have one (like jelly bean resistors & capacitors that used a generic component).

With the ActiveBOM configured I would then create the project datapack (PCB FAB & ASSY files) by manually generating each output container in the OutJob. With 7 containers this meant 7 individual clicks, not including setting up the container names.

Now that all components are managed by a database library (DbLib), it's much easier to lock in the key details (MPN plus two alternative) during component creation. So, no more fiddling with ActiveBOM where MPN info would be lost between projects.

Lastly, datapack generation is now handled by the Project Releaser, which configures the output containers (PCB FAB, PCB ASSY, PRJ validation & snapshot…) based on project parameters. Letting me generate a datapack with the click of a single button :D

With all that said, the next step is to use the revised workflow & templates for my Prusa XL side filament sensor mod. But since Prusa have not yet shared the design files (like with the MK3S), I will have to get the printer first before I can make any major progress.


Project Snapshots

As promised, here are some snapshots of projects I have found the time to work on:

1. AR2 Barrel is nearly complete, just putting on the finishing touches (LED diffusers, shell fingers, spring holder...)


2. Waifu decided to hold her first DnD campaign and asked me to design and 3D print some props


3. Fortifying the work area because someone has learned how to crawl ; - ;

12 January 2023

UPDATE: Bottle Steriliser Buzzer & Work Party Costume

Feels like this year is going to be a bit of a slow one in terms of blog updates, see if you can figure out why below 🙃


Baby Bottle Steriliser Buzzer

Last year we got the Minbie Steriliser & Dryer v1, a compact baby bottle steriliser. And this year we found just how loud the piezo buzzer is... which is a bit odd considering some parents/bubs are easily woken up D: 

Luckily this one was an easily fix, just add an in-line potentiometer to adjust the volume:


Work Party Costume

Last year my work held the annual birthday party at the Melbourne Museum Science and Life Gallery, with the theme being "Night at the Museum, Moments, Figures and Natural History". For my costume I decided to go as an "alien disguised as a museum cleaner", which I showed with a rather nifty headpiece (see video below)

The costume managed to win the "Most Innovative Costume" award, which was a pleasant surprise :D