koeg 11 hours ago

I wanted a music player that didn’t distract me like a smartphone, something compact, powerful, and tactile. That’s how Meko, my high-performance e-ink Bluetooth music player, was born.

Almost a year ago, I came up with the idea for this project, a modern iPod, that frees you from the distraction of a smartphone. Fresh off my previous project (https://github.com/KOEGlike/mito), I felt that I could do anything, so I started designing my most ambitious project yet.

At the end of my chemistry class I had a sketch and a list of features that I wanted: Bluetooth, Wi-Fi, a μSD card slot, a high performance DAC and amp, physical controls and an e-ink display. I ended up choosing the iPod nano 2 as an inspiration, this is where the idea for a spinning wheel came from.

For my main processor, I chose the first-generation ESP32. It supports Wi-Fi, enabling streaming, and Bluetooth Classic for audio. It also has excellent Rust support. And for my DAC and amp, I went with the 32bit 384kHz ES9218.

After the design was complete on Jun 22, I order the PCBs and components and waited eagerly! When both packages arrived, I spent 5 hours assembling one PCB, though I kinda shot myself in the foot by using small components.

Now I just had to test if it actually worked! I plugged in my USB-C cable and … It didn’t show up as a USB device, this meant that I fucked up something massively. I went over the design of my USB circuity, and found out that I messed up the wiring of my USB to UART bridge, so couldn’t communicate with the device over USB. I decided to try using an external USB-to-UART bridge to communicate with the player. Once connected, I could finally read the SoC’s default output and move on to testing. I pressed program on a hello world application, and … It couldn’t flash the firmware. FUCK. I could read what the SoC was outputting over UART, but I couldn’t send anything to it. What caused this? I’m not sure. I spent days debugging, but due to the limited number of test points and my lack of test equipment, I couldn’t pinpoint the exact problem.

After all this, I felt depressed for weeks, I put all this time and effort into this project, and it just didn’t work, it was all for nothing.

A few months had to go by for me to regain my confidence in making hardware, and to come back stronger, and learn from my mistakes. Here is a list of thing I did differently for V2: * Switched over to the Nordic nRF53 from the ESP32. It doesn’t have Wi-Fi, but the ESP in comparison is a power hog, the nRF consumes 8 times less power than the ESP * Used larger components, for V1 I used 0402 passives, which are still hand solderable, but a pain. And, 1mmx1mm regulators in some places, which are borderline impossible to hand solder. In V2 I switched over to 0603 passives, and didn’t use dust sized components. * Chose easier-to-implement components, and removed unnecessary ones * Placed a ton of test points and isolation jumpers, to make debugging easier * Went with factory assembly instead of hand assembly, so I don’t have to guess if I messed up something in my hand soldering, or in my PCB

I completed the design for V2 last week and placed my order to the manufacturer this week. And hope that this time it will work.

Both V1 and V2 are fully journaled, the journals can be found in the repo.

I have to give a humongous shoutout to Hack Club, a non-profit and community for teen hackers, who made this project possible! Without Hack Club’s support, both prototypes would not have been possible. They encouraged me to continue on my hardware journey.

Hack Club Highway project link: https://highway.hackclub.com/projects/koeglike/meko-pcb Hack Club Blueprint project link: https://blueprint.hackclub.com/projects/21

Also, thank you to JCLPCBA for giving me a massive discount on my PCB and PCBA: https://jclpcba.en.alibaba.com/index.html

I also have to shout out Segger, for sponsoring me with a J-Link edu!

Repo: https://github.com/KOEGlike/meko