Devesh36/pocket-audio-player
A portable, rechargeable microSD audio player built around an RP2040, SPI flash, USB‑C charging/power management, LCD/button controls, PCM5102A I²S DAC, and TPA6132A headphone amplifier in a 3D‑printed enclosure.
- Version
- 1.0.12
- License
- unset
- Stars
- 0
validation.json
{
"formatVersion": 2,
"packageVersion": "1.0.12",
"checkedAt": "2026-10-11T16:49:12.461Z",
"authoredWith": "tscircuit",
"pcb": {
"sizeMm": [
60,
90,
1.6
],
"layers": 4,
"components": 97,
"traces": 274,
"vias": 229,
"nets": 75,
"errorRecords": 0
},
"checks": {
"typeScript": "passed",
"nativeAssembledBuild": "passed; exit 0",
"nativeExplodedBuild": "passed; exit 0",
"gerberShorts": {
"status": "passed; no shorts detected",
"layers": "all four",
"pixelsPerMm": 40,
"log": "logs/low-profile/gerber-shorts.log"
},
"displayAndPower": {
"checks": "passed",
"displayBus": "SPI1 GP26/27; microSD SPI0 GP4-7",
"battery": "JST-PH pin 1 GND, pin 2 VBAT; charged through MCP73831 from USB-C",
"chargeCurrentMaNominal": 100,
"results": [
{
"ref": "J_LCD",
"pin": 1,
"net": "LCD_BL"
},
{
"ref": "J_LCD",
"pin": 2,
"net": "LCD_RST"
},
{
"ref": "J_LCD",
"pin": 3,
"net": "LCD_DC"
},
{
"ref": "J_LCD",
"pin": 4,
"net": "LCD_CS"
},
{
"ref": "J_LCD",
"pin": 5,
"net": "LCD_CLK"
},
{
"ref": "J_LCD",
"pin": 6,
"net": "LCD_DIN"
},
{
"ref": "J_LCD",
"pin": 7,
"net": "GND"
},
{
"ref": "J_LCD",
"pin": 8,
"net": "V3V3"
},
{
"ref": "J_LCD",
"pin": 9,
"net": "GND"
},
{
"ref": "J_LCD",
"pin": 10,
"net": "GND"
},
{
"ref": "U1",
"pin": 30,
"net": "LCD_BL"
},
{
"ref": "U1",
"pin": 31,
"net": "LCD_DC"
},
{
"ref": "U1",
"pin": 32,
"net": "LCD_RST"
},
{
"ref": "U1",
"pin": 37,
"net": "LCD_CS"
},
{
"ref": "U1",
"pin": 38,
"net": "LCD_CLK"
},
{
"ref": "U1",
"pin": 39,
"net": "LCD_DIN"
},
{
"ref": "U1",
"pin": 40,
"net": "BAT_SENSE"
},
{
"ref": "U1",
"pin": 6,
"net": "SD_MISO"
},
{
"ref": "U1",
"pin": 7,
"net": "SD_CS"
},
{
"ref": "U1",
"pin": 8,
"net": "SD_CLK"
},
{
"ref": "U1",
"pin": 9,
"net": "SD_MOSI"
},
{
"ref": "J_BAT",
"pin": 1,
"net": "GND"
},
{
"ref": "J_BAT",
"pin": 2,
"net": "VBAT"
},
{
"ref": "U_CHG",
"pin": 2,
"net": "GND"
},
{
"ref": "U_CHG",
"pin": 3,
"net": "VBAT"
},
{
"ref": "U_CHG",
"pin": 4,
"net": "VBUS"
},
{
"ref": "U_CHG",
"pin": 5,
"net": "CHG_PROG"
},
{
"ref": "J_USB",
"pin": 15,
"net": "VBUS"
},
{
"ref": "J_USB",
"pin": 16,
"net": "VBUS"
},
{
"ref": "R_PROG",
"pin": 1,
"net": "CHG_PROG"
},
{
"ref": "R_PROG",
"pin": 2,
"net": "GND"
}
]
},
"enclosureGeometry": {
"checks": "passed",
"intersectionVolumesMm3": {
"baseLidOverlap": 0,
"oledLidOverlap": 0,
"oledBaseOverlap": 0,
"oledPcbOverlap": 0,
"pcbBaseOverlap": 0,
"pcbLidOverlap": 0,
"SELECTPressedLidOverlap": 0,
"SELECTPressedBaseOverlap": 0,
"SELECTLidOverlap": 0,
"SELECTBaseOverlap": 0,
"PREVPressedLidOverlap": 0,
"PREVPressedBaseOverlap": 0,
"PREVLidOverlap": 0,
"PREVBaseOverlap": 0,
"NEXTPressedLidOverlap": 0,
"NEXTPressedBaseOverlap": 0,
"NEXTLidOverlap": 0,
"NEXTBaseOverlap": 0,
"MENUPressedLidOverlap": 0,
"MENUPressedBaseOverlap": 0,
"MENULidOverlap": 0,
"MENUBaseOverlap": 0,
"PLAY_PAUSEPressedLidOverlap": 0,
"PLAY_PAUSEPressedBaseOverlap": 0,
"PLAY_PAUSELidOverlap": 0,
"PLAY_PAUSEBaseOverlap": 0,
"SELECTPREVOverlap": 0,
"SELECTNEXTOverlap": 0,
"SELECTMENUOverlap": 0,
"SELECTPLAY_PAUSEOverlap": 0,
"PREVNEXTOverlap": 0,
"PREVMENUOverlap": 0,
"PREVPLAY_PAUSEOverlap": 0,
"NEXTMENUOverlap": 0,
"NEXTPLAY_PAUSEOverlap": 0,
"MENUPLAY_PAUSEOverlap": 0,
"batteryBaseOverlap": 0,
"batteryPcbOverlap": 0,
"plusWirePcbOverlap": 0,
"plusWireBaseOverlap": 0,
"plusWireLidOverlap": 0,
"plusWirePressedSELECTOverlap": 0,
"plusWirePressedPREVOverlap": 0,
"plusWirePressedNEXTOverlap": 0,
"plusWirePressedMENUOverlap": 0,
"plusWirePressedPLAY_PAUSEOverlap": 0,
"minusWirePcbOverlap": 0,
"minusWireBaseOverlap": 0,
"minusWireLidOverlap": 0,
"minusWirePressedSELECTOverlap": 0,
"minusWirePressedPREVOverlap": 0,
"minusWirePressedNEXTOverlap": 0,
"minusWirePressedMENUOverlap": 0,
"minusWirePressedPLAY_PAUSEOverlap": 0,
"batteryPlugLidOverlap": 0,
"batteryPlugPressedSELECTOverlap": 0,
"batteryPlugPressedPREVOverlap": 0,
"batteryPlugPressedNEXTOverlap": 0,
"batteryPlugPressedMENUOverlap": 0,
"batteryPlugPressedPLAY_PAUSEOverlap": 0,
"lcdPlugLidOverlap": 0,
"lcdPlugScreenOverlap": 0,
"lcdPlugPressedSELECTOverlap": 0,
"lcdPlugPressedPREVOverlap": 0,
"lcdPlugPressedNEXTOverlap": 0,
"lcdPlugPressedMENUOverlap": 0,
"lcdPlugPressedPLAY_PAUSEOverlap": 0
},
"mountingHoles": [
[
-26,
-41
],
[
-26,
41
],
[
26,
-41
],
[
26,
41
]
],
"oledMounts": [
[
-22.8,
6.3500000000000005
],
[
-22.8,
28.05
],
[
22.8,
6.3500000000000005
],
[
22.8,
28.05
]
],
"oledDimensions": {
"width": 51.2,
"height": 27.3,
"boardBottomZ": 6.5,
"boardTopZ": 8.1,
"faceZ": 10,
"activeWidth": 42.72,
"activeHeight": 22.7,
"modelBottomZ": 3,
"manufacturer": "Waveshare 1.9inch LCD Module"
},
"bodySizeMm": [
64,
110,
18.1
],
"caseDimensions": {
"width": 64,
"height": 110,
"centerY": -7,
"floorZ": -7.5,
"floorThickness": 1,
"pcbBottomZ": -0.8,
"seamZ": 7.4,
"lidBottomZ": 9.4,
"lidTopZ": 10.6,
"wallThickness": 1.5,
"lipClearance": 0.3,
"displayWindow": {
"x": 0,
"y": 17.2,
"width": 43.72,
"height": 23.7
}
},
"pcbClearancePerSideMm": 0.5,
"lipClearancePerSideMm": 0.3,
"buttonGuideRadialClearanceMm": 0.3,
"buttonRestGapMm": 0.25,
"checkedButtonTravelMm": 0.45,
"batteryDimensions": {
"width": 29,
"height": 36,
"thickness": 4.75,
"center": [
0,
-29,
-3.5
],
"capacityMah": 500,
"nominalVoltage": 3.7,
"supplier": "Adafruit 1578",
"chargeCurrentMa": 100
},
"notes": "Digital geometry checks use the Waveshare 1.9-inch manufacturer CAD and a conservative module/socket envelope. Purchased hardware, the crimp harness, screws and printing tolerances still require physical fit testing."
},
"printedMesh": [
{
"file": "case-base.stl",
"triangles": 7008,
"nonManifoldEdges": 0,
"inconsistentWindingEdges": 0,
"surfaceComponents": 1
},
{
"file": "case-lid.stl",
"triangles": 4196,
"nonManifoldEdges": 0,
"inconsistentWindingEdges": 0,
"surfaceComponents": 1
},
{
"file": "button-plunger.stl",
"triangles": 840,
"nonManifoldEdges": 0,
"inconsistentWindingEdges": 0,
"surfaceComponents": 1
},
{
"file": "ring-button.stl",
"triangles": 1022,
"nonManifoldEdges": 0,
"inconsistentWindingEdges": 0,
"surfaceComponents": 1
}
],
"realDisplayMesh": {
"status": "passed",
"manufacturerMeshesChecked": 49,
"results": "dist/enclosure/lcd-hardware-fit.json"
},
"unchangedPcbComparedWith": "v1.0.11: physical PCB records and electrical connectivity match; existing four-layer short checks retained",
"lcdPopulatedBodyFit": {
"status": "passed",
"modeledPcbBodiesChecked": 21,
"results": "dist/enclosure/lcd-pcb-fit.json",
"scope": "Actual supplied body geometry; unmodeled bodies and fasteners require prototype checks"
},
"warningCleanup": {
"pcbGeometryUnchanged": true,
"matchedGeometryRecordTypes": [
"pcb_component",
"pcb_board",
"pcb_smtpad",
"pcb_solder_paste",
"pcb_silkscreen_path",
"pcb_silkscreen_circle",
"pcb_silkscreen_text",
"pcb_courtyard_outline",
"pcb_fabrication_note_path",
"pcb_courtyard_rect",
"pcb_hole",
"pcb_plated_hole",
"pcb_port",
"pcb_fabrication_note_text",
"pcb_trace",
"pcb_copper_pour",
"pcb_via"
],
"electricalConnectivityUnchanged": true,
"baseline": "v1.0.11",
"warnings": 0,
"errors": 0,
"schematicPages": 8,
"geometryComparisonOmissions": [
"Generated IDs",
"supplier_pin1_location_map (JLCPCB to LCSC)",
"cable_insertion_center (new connector metadata)"
],
"bom": "J_LCD and J_PWR annotated as LCSC/manual solder; omitted from JLC pick-and-place"
},
"cadModelsUnchanged": {
"comparedWith": "v1.0.11",
"modeledComponents": 114,
"status": "passed; models and placements match"
}
},
"display": {
"supplier": "Waveshare 1.9inch LCD Module",
"controller": "ST7789V2",
"pixels": [
170,
320
],
"landscapePixels": [
320,
170
],
"moduleMm": [
51.2,
27.3
],
"activeMm": [
42.72,
22.7
],
"connector": "JST BM08B-GHS-TBT(LF)(SN), GH 1.25mm, 8 contacts",
"cable": "GHR-08V-S to GHR-08V-S; match numbered contacts",
"matedHeightAbovePcbMm": 7.3,
"bus": "SPI1, 3.3V logic/power",
"pinOrder": [
"BL",
"RST",
"DC",
"CS",
"SCK",
"MOSI",
"GND",
"3V3"
],
"manufacturerModel": "assets/waveshare-1.9inch-lcd.stp",
"modelVerifiedAgainstCase": true,
"staticMenuPreview": true,
"sources": [
"https://www.waveshare.com/wiki/1.9inch_LCD_Module",
"https://files.waveshare.com/upload/7/7f/1.9inch_LCD_Module.pdf",
"https://www.jst.com/wp-content/uploads/2021/08/eGH-new.pdf"
]
},
"battery": {
"supplier": "Adafruit 1578",
"protected": true,
"nominalVoltage": 3.7,
"capacityMah": 500,
"sizeMm": [
29,
36,
4.75
],
"positionMm": [
0,
-29,
-3.5
],
"connector": "JST B2B-PH-K-S(LF)(SN), pin 1 GND; pin 2 VBAT",
"charger": "USB-C VBUS to MCP73831-2 to VBAT; no direct USB-to-cell connection",
"chargeCurrentMaNominal": 100,
"rProgOhms": 10000
},
"enclosure": {
"bodyMm": [
64,
110,
18.1
],
"wallMm": 1.5,
"lcdWindowMm": [
43.72,
23.7
],
"connectorsCheckedAtMatedHeight": true,
"floorMm": 1,
"frontMm": 1.2,
"screenCenterMm": [
0,
17.2
]
},
"usbPair": {
"dmLengthMm": 6.915622425179642,
"dpLengthMm": 7.164150562375762,
"skewMm": 0.24852813719612055,
"maximumSkewMm": 0.5,
"controlledImpedanceVerified": false
},
"crystalInput": {
"lengthMm": 9.869860056670976,
"maximumLengthMm": 10,
"vias": 0
},
"limitations": {
"firmwareIncluded": false,
"hardwareTested": false,
"physicalFitTested": false,
"unverifiedPlacementRotations": [
"L1",
"J_AUX"
],
"inductorManualSourcing": true,
"supplierAvailability": "J_LCD C133062 and J_PWR C492401 are separately purchased LCSC/manual-solder parts because the JLC search index returns no record. Purchase-time stock is not certified."
},
"routing": {
"signature": "7d470a40",
"localCopperRefinements": "routing/refinement-notes.json",
"nativeErrorsAfterRefinement": 0
},
"publication": {
"version": "1.0.12",
"status": "published; local and cloud builds passed",
"packageReleaseId": "a3d7fc37-f1b7-4951-b34b-b5867fe6c763",
"url": "https://tscircuit.com/Devesh36/pocket-audio-player#3d",
"uploadedFileCount": 90,
"cloudJobCompletedAt": "2026-10-11T17:09:07.804Z",
"cloudScriptExitCode": 0,
"releaseCircuitAndSourceVerification": {
"version": "1.0.12",
"packageReleaseId": "a3d7fc37-f1b7-4951-b34b-b5867fe6c763",
"cloudPcbErrorRecords": 0,
"slimMechanicalModelsMatch": true,
"matchedModels": [
"CASE_BASE",
"CASE_LID",
"BUTTON_SELECT",
"BUTTON_MENU",
"BUTTON_PREV",
"BUTTON_NEXT",
"BUTTON_PLAY_PAUSE",
"CONTROL_LEGENDS",
"BATTERY_FOIL",
"BATTERY_PROTECTION_CAP",
"J_BAT",
"LCD_GH_CABLE_PLUG"
],
"bodyMm": [
64,
110,
18.1
],
"realLcdAssetMatches": true,
"cloudArtifactUrl": "https://devesh36--pocket-audio-player-v1-0-12.tscircuit.app/index/circuit.json",
"cloudWarnings": 0,
"displayAndPowerConnections": 31,
"sourceFilesMatch": [
"audio-player-board.tsx",
"enclosure.tsx",
"oled-model.ts",
"routing/candidate.json",
"README.md"
]
},
"localCircuitAdvisoryWarnings": 0,
"cloudCircuitAdvisoryWarnings": 0
},
"sha256": {
"index.circuit.tsx": "ee4687af2b5e34c7639f45ca525fbd374d6b4df84ace1f890ed6c4cf2ae4b988",
"audio-player-board.tsx": "3efae53b043930cad59291694cb26ff0eb67b51d20c0868fda916ae973b189b8",
"board-router.ts": "73c52a233e994664bdf82e0980442b11e03394b7ccd9f5b4e49583b15dc196b4",
"fresh-router.ts": "9f59b1c6ce6d83b0b3cbe4109d8b2dafd4d3de8fb1f7d5db2186a8c4e49b4598",
"routing/candidate.json": "852bbd1581ebbbdbf4448aafce3a058b0bb6f3f8ebc26852e6bc23152fd0ef2b",
"dist/index/circuit.json": "c78d7579cd497576439027cc0e9418df9e240da37bdbedb20da4fbc26da1d094",
"dist/index/audio-player-fabrication.zip": "53f4bebb928a5209c3e9815c3880a29cb4c275d6660d07fa8d254c13d003654e",
"enclosure.tsx": "f364c82cef0e817029bae40450679d2cc0713905532ec1518341736d8688c412",
"oled-model.ts": "6a208c0bfda0f90ed92b0dcd27cf9033041040753415b261b4bfe6edc20232d7",
"lcd-model-plan.json": "8d9498bc7073562bd8199817b7f2370aadd73f5a7281c42a68f681010465f4ac",
"assets/waveshare-1.9inch-lcd.stp": "b0f1c0cf83221b95561fa0bdede212159476f65140dc4795f81c9ce45b7e6ca5"
}
}