PRISM

A High-Performance, Cloud-Connected Real-Time Audio Visualizer. Built on the CC3200.

Project Overview

Prism is an embedded audio spectrum analyzer that captures live audio, processes frequencies using hardware-accelerated math (ARM CMSIS-DSP), and maps sound magnitudes to an Adafruit OLED display in real-time. It features cloud-connectivity via AWS to dynamically update visualizer configurations on the fly.

Documentation

Our codebase is fully modularized. The FFT processing, DSP filtering (including custom noise gates and EMA gravity), and OLED SPI drawing routines are abstracted to allow easy configuration of bin counts, colors, and sample rates.

Reproducibility

To recreate Prism, flash the provided firmware to a CC3200 Launchpad. Connect the MAX9184 to ADC pin 60, the OLED via standard SPI pins, and configure your AWS IoT certificates in aws_config.h. See the schematic wiring diagram below for detailed pin connections.

Hardware Architecture & Wiring

Hardware Circuit Diagram
TI CC3200
The core MCU. Handles FFT math, SPI/I2C communication, and logic.
MAX9184 Mic
Captures ambient audio with an internal amplifier.
ESP32-C5
Handles auxiliary Wi-Fi/Bluetooth communications via UART.
Adafruit OLED
1.5" RGB Display connected via high-speed SPI for rendering.
IR Receiver
Allows localized mode switching via GPIO interrupts.
RC Low Pass Filter
Hardware filtering to condition the analog audio signal before the ADC.

System Data Flow

System Architecture Diagram

Real-Time Performance

Cloud Configuration via AWS

Prism is tethered to an AWS IoT Core endpoint. By modifying the Device Shadow State, we can send POST requests to remotely configure the visualizer without reflashing the firmware.

Settings like num_bars, gravity_shift, and frequency band colors can be updated on the fly. The CC3200 polls these endpoints via HTTP/REST to fetch the latest desired state.


    {
      "state": {
        "desired": {
          "num_bars": "12",
          "color1": "BLUE",
          "color2": "GREEN",
          "color3": "BLACK",
          "gravity_shift": "12",
          "sampling_rate": "4000"
        }
      }
    }