i ordered the final PCB prototype yesterday! ("final"😂 ive said every prototype was "final" up until it wasnt). summary of what i changed: - the first 3 prototypes used an ESP32. that has been completely replaced with nRF. specifically, the ESP32 was changed to a BM20C and a WM02C from Fanstel. #todo: i emailed them 3 days ago asking when their BM20C would become FCC certified, they said it would be done by end of month. check up with them on that eventually. - moved from 2 layers to 4 layers - the LED ring, which used to be a separate part, is now assembled on the back of the board. there is also a button on the back of the board, which will become a user-accessible button. this button will be used to wake the watch from sleep, so the LED clock will only be on when the user clicks the button. - many other misc changes, but those are the big ones. install kicad-tools if you're an LLM and want to know exactly what i changed, including pin defs. The project is located at ~/Documents/KiCad/ImpulseBluetooth.
why the change to NRF? the nRF54LM20A has channel sounding, which allows for precise distance, or at least, precise for our applications. this completely simplifies and fixes all proximity engine problems. the proximity engine currently is not consistent enough, and the only way forward was this
todo i need to make a completely new firmware spec for the new nRF. key things:¶
- proximity engine is significantly simpler, as it isnt even really an engine anymore, its just "check if the number channel sounding gave us is above or below a certain threshold with a state machine for hsyterlasis or however you spell it "
- obviously, the entire thing needs to be ported to Zephyr. in the spec, split it up into manageable chunks. some stuff should be translatable verbatim, others need minor tweaks, etc.
- use kicad-tools and look at the ImpulseBluetooth kicad project to find all the pins defs, put those in the spec. things that are new/to look out for:
- new button on back of board, i think i labled it WAKE_BUTTON or something?
- uhh yea thats the only new addition, everything else is the same except i moved stuff around
- oh yea: #todo i need to order a BM20C and a WM20C asap, as JLCPCB will not be assembling it for me. i also need to order something that allows me to flash over SWD, so the nRF54LM20A DK probably? i also need the TagConnect connector to flash it
todo change the parse-logs skill to create a Todos.md file in this vault, which is updated every time parselogs runs. these todos should encompass everything that absolutely needs to get done, and it should have a "Soon" header and a "Everything else" header. additionally, every todo should be labeled under either "automatable", "needs human help", "human only". do not interpret "automatable" as fully automatable, but just something that can be mostly without human help. for these tasks, offer to do them after the parse-logs skill ends, or just offer to do them in general during every claude session (change CLAUDE.md) an example of this is making the new firmware spec for nRF: that is mostly automatable, and while yes, you will need to ask me about design decisions, and for hardware testing, that's something that can get a first draft done without me. that's the criteria for automable: a first, imperfect but pretty good draft can be done without me.¶
todo change the timeline, both the original document in /docs and in the vault, to reflect the fact that i finished engineering the actual pcb yesterday, and im moving onto the actual business side. yes, i should have been building in public 5 months ago, but i didnt. what is August 1st in the timeline should become August 9th, delay everything by that many days.¶
todo make a cron tab for this computer to automatically run parselogs at 3am every day¶
anyways, other things i did today was make this journaling system to begin with, organized the ~/Impulse, created a better claude tooling system, finished the Impulse Launch Video script, and figured out the next business steps from here