• Beginning to plan out and test 3d enclosure

    Jamal-Ra-Davis08/07/2023 at 02:33 0 comments

    Now that most of the software work is in good shape, I'm ready to begin prototyping how the size of physical speaker to look, and how the mounting will work. I printed out DmitriK42's Thomas helmet design at 40% scale to get a feel for the size. This gives me a good starting point, and hopefully it will make planning out the form factor PCBs for the control and LED boards an easier process.

  • Been gone a while, but have major updates

    Jamal-Ra-Davis08/07/2023 at 02:05 0 comments

    Lots of progress since the last update, the most major being switching from Arduino to ESP-IDF for the dev environment:

    • Switch from Arduino to ESP-IDF was driven by issues encountered when using the EPS32 A2DP library. Running into problems where the audio streaming stop suddenly and be unrecoverable until the system was reset. Switching to ESP-IDF Let me use the underlying library directly and has also given me more control over the project in general. Since making the switch, audio streaming has been reliable
    • Updated FFT display to use the entire display area and am now using a logarithmic scale for the FFT display. This results in a better spectrum display.
    • Display:
      • Now using SPI hardware to send data to the shift registers that drive the display. SPI clock speed is 16MHz, at this speed it only takes 3us to clock out 1 row of the display data.
      • Now using hardware timer to generate the interrupts used to start transmission of each row of display data. The higher precision of the hardware timer allows the display to be updated at a consistent 90Hz.
      • Added option for triple buffering to allow for Vsynced display updates
    • Added in basic state management (IDLE, STREAMING, and SLEEP). System will show information and animations while in IDLE and do FFT display while in STREAMING state.
    • Ported over MAX17048 fuel gauge driver and enabled alerts for battery SOC changes and low SOC. 
    • Added in font rendering functionality, which is used to display test string on bootup and current battery SOC while system is in IDLE state.
    • Created events manager that allows for callback functions to be registered to system events 
      • Volume +/- buttons now increase and decrease volume of audio playback, and send volume value to Bluetooth host so volume setting can be reflected on host too
      • Low battery SOC (10% or less) will cause status LED to flash red
      • Bluetooth connection status events: Status LED will pulse blue while awaiting a connection, and get set to white when a connection is established

  • Bluetooth audio playback and FFT processing

    Jamal-Ra-Davis11/28/2022 at 06:33 0 comments

    Used EPS32 A2DP library to setup dev board as a Bluetooth audio sink and generate I2S data to send to audio amp. This library also allows for receiving raw incoming audio data via a callback function, I then performed an FFT on the incoming data and used the results to update the display.

    Work left to do:

    • Volume and pairing control via buttons
    • Status LED to reflect pairing and battery status
    • Audio playback from SD card
    • Text and animations when not playing audio

  • Development board fabbed/assembled

    Jamal-Ra-Davis11/28/2022 at 06:30 0 comments

    Designed development board to vet out project design while allowing for easy access to key test points (Power rails, I2C, I2S, and UART) and to test different hardware gain settings for the audio amp. This development board includes: 

    • ESP32 Module
    • The LED matrix and shift register driving circuitry
    • RGB status LED
    • micro SD card
    • I2S audio amp
    • FTDI chip
    • Fuel Gauge module
    • 3.3V Buck regulator
    • Push buttons (Volume, Pairing, Reset)

    The development board was fabbed and assembled by JLCPCB, shown below: