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
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.