SpkrMic

Connecting…
Atom: --   Board: --
Sits idle down the well until asked - press to take a reading.

Orientation

Compares the current tilt against a one-time reference reading taken while the board hangs plumb (P1 straight up) - works without needing to know exactly how the accelerometer chips are rotated on the PCB.

Mic self-test (chirp)

Checks a quiet baseline on each mic, plays a short sweep tone through the speakers, then checks again - a mic "hears" the chirp if its level jumps well above its own baseline. Tap or blow on a mic and re-run to see which channel number it is.

Live mic level (per-mic, real filtered amplitude)

Pick a mic and click the button - runs for 8 seconds (about 1s to actually start, since the Atom polls once a second). "All 4" round-robins across every mic each 250ms window and expects you to tap/blow on one yourself; picking one specific mic instead dedicates the whole test to watching just that channel and automatically plays a staircase of 8 sustained tones - 500, 1000, 2000, 3000, 4000, 5000, 6000, 7500Hz, one roughly every 1.3s - instead of needing a manual tap. A sustained tone concentrates all its energy at one frequency (unlike a swept chirp, which only spends a moment on any single frequency). Watch the peaks (graph) or the "peak" column (table): each bump lines up with the tone that just played, so the bump heights trace the mic's response curve across frequency.


Frequency scan (which frequencies work, where the blind spots are)

The board plays short test tones one frequency at a time while all four mics listen, and measures how strongly each mic hears each tone. It shows which frequencies come through best, where the response has dips (blind spots), and how well the two mics of each pair agree with each other. The dips depend on where the board sits, so repeat the scan wherever you set it up. Start with the coarse scan, then zoom in on anything interesting.

From to Hz, every Hz

Raw recordings

Synchronized 4-mic recordings saved on this computer by tools/capture_raw.py (all four mics start on the same instant). Pick one and look at it as a waveform, a spectrogram, an average spectrum, or a table of levels. The list refreshes when you press Refresh. "Record now" asks the board to record and send the recording through the Atom (about 6 seconds; it works with no USB cable) - the result appears here when it has arrived complete and checked.

Record now
Show to ms

Board debug log

Everything the board prints for debugging, sent over the Atom link - so it works when the USB debug port is not reachable. Lines are stamped with this computer's clock and the board's own uptime; a line marked "board restarted" means its uptime went back to zero. Only the newest 3000 lines are kept, and the log is empty again if this dashboard is restarted. Bulk recording data is never sent here.


    
>

Commands go to the board through the Atom (about a second) and the answer appears in the log above. rec still sends its data over the board's USB console, not through here. Anyone who can open this page can send these, so this is for a closed network for now.

Push firmware update

Drop a signed .bin here, or click to choose a file

Send to board

Running on board --
Currently staged
This tells the Atom to push the currently staged firmware to the STM32 on its next check (within ~10s) - equivalent to pressing the physical button under its screen.