
Racer
StuckAtPrototype/Racer
These are structured into their own files. I could have used submodules, but decided against it.

As a part of Hack Club's "Fallout" challenge, I attempt to build a replica of Makoto's walkman (from Persona 3) using KiCad, Onshape, and hopes and dreams.
Walkman in-2026 is an open-source printed circuit board by AnomaliScript, from the AnomaliScript/Walkman-in-2026 repository on GitHub, published under the MIT licence. It is a 2-layer board of 92 × 59 mm with 22 parts on 34 nets, routed with 373 tracks and 9 vias.
It is built around the BSS138. Its parts include 9 resistors, 6 switches, 3 ICs, 2 transistors and 1 connector. It belongs with the ESP32 boards of this library.
As a part of Hack Club's "Fallout" challenge, I attempt to build a replica of Makoto's walkman (from Persona 3) using KiCad, Onshape, and hopes and dreams.
This Walkman composes of many capacitors, resistors, an Audio Jack, a microSD card socket, LCD display, four buttons, an on/off switch, and most importantly, a XIAO-ESP3-S3 to make it all work! Most, if not all of these components are THT, or "through-hole technology", meaning that the components have pins that go through holes in the PCB, making them easier to soldier, and that's why I chose THT components (with the exceptino of the microSD card reader), because I'm not a soldering expert (yet).
I made my own custom "standoffs" which are supports that support the LCD display, because it needs extra vertical room in order for its pins to be connected to the PCB. I 3D printed both a "screw" and a "non-screw" version of the standoffs, to test which one would work best (standoffs are small, and the smaller a print is, the worse small details, like screw patterns, will be).
The screw standoff's didn't work, becasue my 3D printer can't print with that amount of sub-millimeter precision, so I'll just have to use the "non-screw" version of the standoffs.
The biggest change from V0.1 was the addition of an Amazon-purchased breakout board that covered both the AudioJack (3.5mm diameter) and PCM5102A stereo. After all, the PCM5102A is indeed a really tiny chip, and with the soldering iron that I was getting, it wasn't likely that I could've soldered the chip using SMD (surface mount) on my own. Consequently, I had to rewire the whole PCB (this will happen many times...) to compensate for this change. What I specifically did was delete the AudioJack and PCM components from the PCB, and put a 16-pin connetor row in its place to set it up for wires to connect to the breakout module (a decision I would later go back on). I also cleaned up the BOM a little bit, but it still was missing a lot of components compared to the final one (which I will link in the bottom of this README).
I was planning to get many of my components from my school's makerspace, however since Georgia school years end in mid-May, I lost access to those spaces, and therefore couldn't access those resources: this meant that I had to go shop online (i.e. Amazon and Digikey). V0.2 was also when I finally started to consider how to power this whole contraption, and the conclusion I came up with was simply to add some punches holes (called "Jumper" in the KiCad schematic) to have the battery wires solder through.
The buttons on the Walkman PCB looks a bit off; maybe it's because they're not tilted 90 degrees! While implementing right-angle switches, I learned about the different types of drill holes that KiCad offers (I had the wrong type of hole for the switches' footprints which was giving me DRC errors).
This was also when I became very insecure about my power management system, so this was when I learned that the XIAO-ESP3-S3 in fact has a built-in nattery management system that rules out the need for Buck converters and other auxillary power managemtn components, which was a huge relief after having done power research for a couple of days straight. The only problem was how to get the power tracks/wires to connect to the bottom of the XIAO, becasue that's where the XIAO's battery pads (BATT) are. Seeing as to how laying the XIAO against teh PCB would make it impossible for a wire to reach under the XIAO, I decided to elevate it using connectors (not shown in the KiCad 3D Viewer below).
I went back on my decision to physically elevate my XIAO from the PCB. After a family vacation, my refreshed mind preferred to create pads on the XIAO footprint itself. By adding the BATT pads onto the footprint itself, the XIAO, when it comes in contact with the PCB direcly, would have its BATT pads touch the PCB's corresponding pads, requiring no extraneous equiment to connect the two. This customization of the orignal XIAO-ESP32-S3 footprint required me to refer to Seeed Studio's offical KiCad files in order to determine the dimensions and position of the BATT pads, becasue the XIAOs that I ordered were still in transit at the time, so I had no other reference.
The XIAO BATT pads and its PCB footprint counterpart, in theory, seemed to perfectly align with each other.
I also learned that I had ordered the wrong type of switch for the power, as I ordered a SW_SPST (a button) instead of a SW_DPST (an actual power switch that toggles), so I had to order SW_DPST switches. The LCD that I got was also an unexpected (but plesant) surprise: it came with the PCF8574 component (a component that allows for more GPIO pins) already soldered onto the LCD1602. After realizing that this aligned with my PCB schematic, I gladly deleted the PCF8574 from my schematic and PCB Editor, and more configuration was done.
Due to the unique pin that the LCD came with, however, I had to redo the footprint for the LCD as well.
Reviewing my the PCB, I realized that the 5V pin on the LCD wasn't connected to anything, and thus began the third reexamination of my PCB's power management. After scrutiny, I fixed the 5V pin on the LCD fairly quickly (connect the 5V on the LCD to the VBUS pin on the XIAO), but there was another issue that I found, and it had to do with the BSS138 components. BSS138s are what are called "bidirectional I2C level shifters", which means they mediate the translation between a higher voltage (e.g. 5V) and a lower voltage (3V). Cleaning up my schematic to mitigate risks of making errors due to confusion, I then revised the BSS connections.
Once again, I had to rewire everything (BSS138 is a surface-mount/SMD component, which made rerouting a little harder).
I also noticed that I really needed a 3D model for the LCD component, becasue that was not only the biggest part, but it's also one of the most important parts when it came to me designing a housing/case for my PCB. Surfing through the internet, I landed upon a sketchy-looking 3D model of the exact same component (I copied and pasted the Amazon name of the component into Google), and it was in some Autodesk-specific file format. After registering for a free trial for Autodesk products (specifically Fusion 360), I converted into an .stl file and imported into OnShape to look at it further. The model wasn't that bad, and when I linked the 3D model to my LCD footprint on the PCB in KiCad, it fit right in! One tiny change had to be made, and it was the deletion of the right-angle pins (I bent the pins on my LCD to make it straight to make it parallel to the PCB surface...I hope that doesn't mess up dimensioning...)
Remember the 16-pin connector that I mentioned? Their job was to act as pins that wires from the AudioJack breakout module could connect to, but seeing as to how it adds unnecessary space to the Walkman, I designed the AudioJack component as a footprint in the PCB Editor to get rid of the 16-pin connector (this did in fact save a lot of space). This required some dimensioning, which I did, and I made a rough OnShape model of it. Exporting it onto the 3D Viewer in my PCB Editor on KiCad, I moved it up a bit (which will represent me using pinn connectors to elevate it) in order to give it some room so it doesn't collide with the right-angle switches.
I utilized my 3D printer to print simplified versions of my PCB to check the footprints and pin dimensions for the XIAO, LCD component, and AudioJack component (not pictured), but after verification I ordered the PCB from JLCPCB, and now I wait for it to come (as well as some other LCSC components).
| Id | Name | Vendor | Qty | Cost |
|---|---|---|---|---|
| 1 | microSD card slot | DigiKey | 10 | $14 |
| 2 | BSS138 | DigiKey | 10 | $2 |
| 3 | Power Switch (taken from my friend's recommendation) | LCSC | 10 | $5.25 |
| 4 | XIAO ESP32S3 | Amazon | 3 | $27 |
| 5 | 1602 LCD + PCF 8524 module | Amazon | 3 | $14 |
| 6 | AudioJack + PCM 5102 module | Amazon | 2 | $9 |
| 7 | 1000mAh LiPo battery | Amazon | 1 | $9 |
| 8 | Right-Angle Switches | LCSC | 50 | $0.63 |
| X | X | X | X | ~$81 |
I started to get soldering supplies by asking my friend's dad for some, to which he responded with a simple roll of solder and an okay soldering iron. This worked out fine for the simpler components, but when it came to more complex soldering assemblies such as SMD components, I needed help. After some discussion with by more-experienced friend, he told me that I needed a pack of liquid/solid flux (just in case if the rosin-core solder didn't have enough), a heatbed for the SMD components, and some solder paste to complement the heatbed for easier soldering for SMD components.
| Id | Name | Vendor | Qty | Cost |
|---|---|---|---|---|
| 1 | Heatbed | Amazon | 1 | $27 |
| 2 | Flux | Amazon | 1 | $9 |
| 3 | Solder Paste | Amazon | 1 | $22 |
After getting these components, I set up shop in my garage, and I opened the garage door so that the yummy lead fumes could escape. However, I got moved to my back patio after my dad complained after a bunch of bugs came it in from the open garage door.
Finally, after having done most of the soldering to enable theoretical functionality for my Walkman, I tried hooking it up to my computer using a Logi USB-C cable, and after some vibecoding with Claude Opus, I got the Walkman to work...partially. The display was a little off, and no matter how many times I unplugged and replugged my earbuds, I still couldn't hear anything from the Walkman. Thankfully, the microSD card reader was working, as well as the LCD after some adjustment, because I saw it displaying the text of the songs that I had loaded onto the microSD card.
Switching out my earbuds for headphones that I usually use, I was finally able to hear the music that was playing!
However, the battery still needed to be implemented into the Walkman PCB, and I soon realized that the V1.0 Walkman PCB wouldn't be able to distribute the LiPo battery's power to all the peripherals on the PCB. This was because I wired the AudioJack, LCD display, and all the other peripherals other than the microSD card to all use VBUS (5V) power instead of 3.3V power. The problem lied in how the 3.3V pin, not the VBUS pin, was the only power distributor when the Walkman is disconnected from the XIAO's USB-C's power source.
With the LiPo power distribution not working and the LCD screen not being entirely accurate to Makoto's Walkman in Persona 3, I returned to the drawing board that is KiCad. By working with Claude, I found another LCD screen online that looked more similar to Makoto's Walkman screen. Looking at its datasheet, I tried adding it into my Walkman PCB schematic.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 5 | 10k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R2, R7, R8, R9, R10 |
| 5 | SW_Push | easyeda2kicad:SW-SMD_TC-S3601-3.5-260G-F0.6 | SW1, SW2, SW3, SW5, SW6 |
| 2 | BSS138 | Package_TO_SOT_SMD:SOT-23 | Q1, Q2 |
| 1 | 1k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R3 |
| 1 | 22k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R5 |
| 1 | 4.7k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R4 |
| 1 | 47k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R6 |
| 1 | Jumper_2_Open | TestPoint:TestPoint_2Pads_Pitch2.54mm_Drill0.8mm | JP1 |
| 1 | Micro_SD_Card | Connector_Card:microSD_HC_Molex_47219-2001 | J2 |
| 1 | SW_SPDT | Button_Switch_THT:SW_Slide_SPDT_Angled_CK_OS102011MA1Q | SW4 |
| 1 | XIAO-ESP32-S3-DIP | More_XIAO_Series_Footprints:XIAO-ESP32-S3-DIP | U1 |
| 1 | ~ | Amazon_PCM:PCM x AudioJack Combo | U5 |
| 1 | ~ | PCF x LCD combo:PCF8574 x LCD1602 combo | U2 |

StuckAtPrototype/Racer
These are structured into their own files. I could have used submodules, but decided against it.

willem-pennings/balancing-cube
A cube that balances itself in a corner or edge using reaction wheels

abhishek-kakkar/BeagleLogic
A Software Suite that implements a logic analyzer with the PRU on the BeagleBone / BeagleBone Black.


lachlanA/eagle-to-kicad
Eagle SCH/LIB to KiCad SCH/LIB ULP conversion script

No0ne/ps2x2pico
USB keyboard/mouse to PS/2 interface converter using a Raspberry Pi Pico

StuckAtPrototype/AirCube
Works standalone out of the box. Pairs with Home Assistant in minutes. Other platforms are supported through community-contributed extensions.

It measures 92 × 59 mm and has 2 copper layers, 1.6 mm thick.
22 parts, built around the BSS138. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the AnomaliScript/Walkman-in-2026 repository on GitHub, at the commit this page was made from: the board is Walkman-in-2026/Walkman-in-2026.kicad_pcb and its schematic Walkman-in-2026/Walkman-in-2026.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).