Untitled Wireless AI Device — Build Dashboard

2 min read Original article ↗

Phase 1 — In Progress

RP2350 + CYW43439 — v1.0.0

GPIO Pinout

Pico 2W — Physical Pin Layout

SPI

I2C

I2S Mic

NeoPixel

Encoder

Buttons

WiFi

ADC

Power

Task Tracker

Wiring Checklist

Bottleneck Analysis

SPI Display Refresh

135×240 RGB565 = 64,800 bytes/frame · @ 40MHz SPI = ~1.3ms per full redraw · DMA frees CPU · Risk: Full-screen redraws block SPI bus

1.3 ms/frame

I2S Audio Throughput

48kHz × 32-bit = 192 KB/s continuous · DMA double-buffer: 2 × 16KB = 32KB · CPU must process buffer in <85ms · Risk: WiFi TX stalls starve DMA refill

192 KB/s

SRAM Budget

Audio buffers: 32 KB · Display sprite: 108 KB · WiFi TX queue: 8 KB · State + stack: ~82 KB · Total: ~231 KB / 520 KB

289 KB free

WiFi Streaming

Audio @ 192 KB/s needs reliable TCP/UDP · CYW43439 SPI @ 33MHz (internal) · Contention: WiFi SPI shares IRQ time · Mitigation: Opus compression → ~16 KB/s

~16 KB/s target

I2C Bus Load

DRV2605L: Burst writes only (haptic events) · TLV493D: 6 bytes @ 20ms = 300 B/s · Combined: <1% bus utilization @ 400kHz · No contention risk

<1% load

Power Budget

RP2350 active: ~25 mA · CYW43439 TX: ~240 mA peak · TFT backlight: ~20 mA · Total peak: ~300 mA · TPS61023: 1.2A max → OK

~300 mA peak

Bus Conflict Analysis

BusPinsPeripheralTypeStatus

Workspace

Files

  • firmware/
    • 📄 main.cpp
    • 📄 display.cpp
    • 📄 sensors.cpp
    • 📄 inputs.cpp
    • 📄 wifi.cpp
  • include/
    • 📄 pinmap.h
    • 📄 config.h

Pipeline: hardware_prototype · 0 errors · 5 nodes · 8 edges Engine: SlothDB · runtime: ready