

ECE445L Lab7
Embedded music-streaming system using ESP32 and TM4C MCUs, featuring USB-UART audio streaming, SPI DAC output, MOSFET-based analog filters, digital audio effects, real-time control via potentiometers, and a web-based interface.
- Size
- 152.4 × 127 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 215
- Nets
- 192
- Pads
- 647
- Tracks, vias
- 1,366, 282
- Routed
- Yes
- KiCad
- KiCad 9.0 (file 20241229)
- Created
- 16 Dec 2025
- Updated
- 17 Dec 2025
Overview
ECE445L Lab7 is an open-source printed circuit board by niranjannt, from the niranjannt/Local-Music-Streaming-Pipeline repository on GitHub. It is a 2-layer board of 152.4 × 127 mm with 215 parts on 192 nets, routed with 1,366 tracks and 282 vias.
It is built around the ESP32-D0WD-V3, OPA2350UA and TLV5616CD, with the FT232RQ, LM4041CILPR and MMBF170 among its other parts. Its parts include 111 resistors, 36 capacitors, 18 transistors, 15 ICs and 8 switches. It belongs with the interfaces and adapters and audio and music boards and the ESP32 boards of this library.
Main components
7ESP32-D0WD-V3
QFN-48-EP(5x5)-40℃~+125℃ -93dBm 150Mbps 180mA 2.3V~3.6V 2.412GHz~2.484GHz 2.4GHz 20.5dBm 95mA Bluetooth、WiFi SPI、UART、ADC、I2C、JTAG、I2S、PWM、PCM、SDIO transceiver QFN-48-EP(5x5) RF Transceiver ICs ROHSEspressif SystemsRF Transceiver ICsOPA2350UA
SOIC-8SOIC-8 Operational Amplifier ROHSTexas InstrumentsPrecision Op AmpsTLV5616CD
SOIC-80℃~+70℃ 1 1.9LSB 10nA 12 2.7V~5.5V 3us SPI Voltage Buffer SOIC-8 Digital to Analog Converters (DAC) ROHSTexas InstrumentsDigital To Analog Converters (DAC)FT232RQ
PQFN32USB to serial UART InterfaceFTDIUncategorisedLM4041CILPR
TO-92-3-40℃~+85℃@(Ta) 1.233V~10V 100ppm/℃ 12mA 20uVrms Adjustable Parallel ±0.5% TO-92-3 Voltage Reference ROHSTexas InstrumentsVoltage ReferenceMMBF170
SOT-23-55℃~+150℃ 1 N-channel 11pF 2.1V 2.2Ω@10V 200mA 22pF 2pF 300mW 60V SOT-23 MOSFETs ROHSDiodes IncorporatedMOSFETsEK-TM4C123GXL
-- Development Boards & Kits ROHSTexas InstrumentsDevelopment Boards & Kits
README
README.mdLocal Music Streaming Pipeline (ECE 445L Final Project)
This repository contains the final project for Embedded Design Laboratory (ECE 445L) at UT Austin, developed by Niranjan Telkikar, Ashton Knecht, Thompson Truong, and Nathan DeLaRosa. The project implements a music-streaming pipeline using local WAV files, combining frontend/backend software with embedded hardware.
Project Overview
Our system streams music from a web interface to an ESP32-Devkit-V1 and outputs audio through a 12-bit SPI DAC connected to a headphone jack. The pipeline includes both analog and digital filters controlled in real-time by circular potentiometers, allowing adjustment of treble, mid, bass, and digital effects such as flanger, distortion, and reverb.
Pipeline Flow
- Web Interface: Streams WAV files via Java Serial library to the ESP32 through a USB-UART converter.
- ESP32: Receives serial data and sends it to the SPI DAC (mono channel). It also handles digital filter adjustments.
- DAC: Outputs analog audio to headphones.
- TM4C123GH6PM: Reads potentiometer inputs for analog filters and adjusts MOSFET gain circuits for treble, mid, and bass channels in real-time.
- Visualizer: Displays right-bass changes in real-time using ADC input from the TM4C.
Team Contributions
-
Ashton Knecht:
- Designed and soldered the PCB with ESP32-Devkit-V1.
- Implemented MOSFET gain circuits for analog filters.
- Carefully routed PCB to minimize trace length.
-
Thompson Truong:
- Designed the enclosure and circular potentiometers for analog and digital filter control.
- Developed ESP-IDF code for digital filters on the ESP32 and analog filters on the TM4C.
-
Nathan DeLaRosa:
- Implemented audio playback and backend/frontend for the web interface.
- Wrote ESP-IDF code for streaming audio.
-
Niranjan Telkikar:
- Wrote and tested the mono DAC_Out function for the ESP32 (Arduino IDE/ESP-IDF).
- Developed a basic visualizer for real-time bass monitoring.
- Assisted with hardware debugging and ESP-IDF integration.
Hardware Components
- ESP32-Devkit-V1
- TM4C123GH6PM microcontroller
- 12-bit SPI DAC (mono)
- MOSFET-based analog gain circuits
- Circular potentiometers for analog and digital filters
- Headphone jack for output audio
Software Components
- Arduino IDE / ESP-IDF framework for microcontroller programming
- Java Serial library for web-to-ESP32 streaming
- Frontend/backend web interface for music streaming
- Real-time visualizer reading ADC inputs from TM4C
Usage
- Connect the ESP32 and TM4C to your computer via USB.
- Launch the web interface to stream WAV files.
- Adjust analog and digital filters using the circular potentiometers.
- Observe audio output through headphones and visualizer display.
Download a demo video of the project here!
Acknowledgements
This project was completed as part of ECE 445L: Embedded Design Laboratory at UT Austin.
Parts
215| Qty | Value | Footprint | References |
|---|---|---|---|
| 19 | 0.1u | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C1, C3, C10, C11, C12, C13, C15, C22, C23, C24, C25, C27, C28, C29, C30, C31 +3 |
| 19 | 10k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R5, R10, R12, R20, R21, R31, R33, R35, R36, R42, R43, R46, R53, R54, R62, R64 +3 |
| 18 | 2k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R11, R13, R22, R23, R24, R32, R44, R45, R55, R56, R103, R104, R105, R109, R110, R111 +2 |
| 18 | MMBF170 | Package_TO_SOT_SMD:SOT-23 | Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q10, Q11, Q12, Q13, Q14, Q15, Q16, Q17, Q18 +2 |
| 9 | 100 | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R74, R76, R78, R80, R82, R85, R89, R101, R107 |
| 8 | 10k | ECE445L:P120PK-Y25BR10K | R83, R86, R87, R90, R91, R92, R93, R94 |
| 8 | 40k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R16, R17, R28, R37, R49, R50, R60, R68 |
| 8 | OPA2350 | ECE445L:DIP-8_W7.62mm_LongPads | U5, U6, U7, U8, U10, U11, U12, U13 |
| 7 | 100k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R73, R75, R77, R79, R81, R84, R88 |
| 6 | 30k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R18, R19, R30, R51, R52, R61 |
| 5 | 0 | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R6, R7, R8, R27, R29 |
| 4 | 1.2n | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C4, C6, C16, C18 |
| 4 | 184k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R14, R25, R47, R58 |
| 4 | 200k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R39, R40, R70, R71 |
| 4 | 30n | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C5, C7, C17, C19 |
| 4 | 68.8k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R15, R26, R48, R59 |
| 4 | ~ | ECE445L:MountingHole_4_40 | H1, H2, H3, H4 |
| 3 | 10u | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C2, C14, C26 |
| 2 | +3V3 | ECE445L:Testpoint_1x02_P2.54mm | TP1, TP2 |
| 2 | 0.1uF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C35, C36 |
| 2 | 1.5V | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R98, R99 |
| 2 | 125 | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R100, R106 |
| 2 | 1N914 | ECE445L:Testpoint_1x02_P2.54mm | D3, D4 |
| 2 | 3.3k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R38, R69 |
| 2 | 3.7n | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C9, C21 |
| 2 | 50 | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R96, R97 |
| 2 | 50k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R41, R72 |
| 2 | 5K1 | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R1, R2 |
| 2 | 7.5k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R34, R66 |
| 2 | 75 | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R102, R108 |
| 2 | 9.5n | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C8, C20 |
| 2 | GND | ECE445L:Testpoint_1x02_P2.54mm | TP3, TP4 |
| 2 | TLV5616 | ECE445L:DIP-8_W7.62mm_LongPads | U9, U14 |
| 1 | +VRail | ECE445L:Testpoint_1x02_P2.54mm | TP5 |
| 1 | +VRef | ECE445L:Testpoint_1x02_P2.54mm | TP6 |
| 1 | 1.5k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R95 |
| 1 | 1k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R3 |
| 1 | 2479774-1 | ECE445L:24797741 | J1 |
| 1 | 47k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R4 |
| 1 | Adafruit ST7735R | ECE445L:adafruit_st7735r2 | U15 |
| 1 | AudioJack | ECE445L:STX3000 | J3 |
| 1 | Delay | ECE445L:SW_PUSH_6mm | SW7 |
| 1 | Distortion | ECE445L:SW_PUSH_6mm | SW5 |
| 1 | EK-TM4C123GXL | ECE445L:ti_EKTM4C123GXL | J2 |
| 1 | ESP32-D0WD-V3 | ECE445L:ESP32_30pin | U3 |
| 1 | FT232R | ECE445L:FT232R-Breakout | U4 |
| 1 | Flanger | ECE445L:SW_PUSH_6mm | SW4 |
| 1 | LCDMode | ECE445L:SW_PUSH_6mm | SW3 |
| 1 | LM2937ET-3.3_NOPB | ECE445L:TO254P470X1028X1955-3P | U1 |
| 1 | LM4041CILPR | ECE445L:ti_LM4041CILPR | U2 |
| 1 | LOGO | LOGO | G1 |
| 1 | L_Bass | ECE445L:Testpoint_1x02_P2.54mm | TP12 |
| 1 | L_Mid | ECE445L:Testpoint_1x02_P2.54mm | TP11 |
| 1 | L_Out | ECE445L:Testpoint_1x02_P2.54mm | TP14 |
| 1 | L_Treble | ECE445L:Testpoint_1x02_P2.54mm | TP10 |
| 1 | PD6 | ECE445L:LED_D5.0mm | D1 |
| 1 | PD7 | ECE445L:LED_D5.0mm | D2 |
| 1 | POWER | ECE445L:LED_D5.0mm | D5 |
| 1 | Pause | ECE445L:SW_PUSH_6mm | SW2 |
| 1 | R_Bass | ECE445L:Testpoint_1x02_P2.54mm | TP9 |
| 1 | R_Mid | ECE445L:Testpoint_1x02_P2.54mm | TP8 |
| 1 | R_Out | ECE445L:Testpoint_1x02_P2.54mm | TP13 |
| 1 | R_Treble | ECE445L:Testpoint_1x02_P2.54mm | TP7 |
| 1 | Reverb | ECE445L:SW_PUSH_6mm | SW6 |
| 1 | SW_SPST | ECE445L:SW-T3-1A-A-A3-S1 | SW1 |
| 1 | Tempo | ECE445L:SW_PUSH_6mm | SW8 |
Similar boards
- 2 layers

- 2 layers114.4 × 88.9 mm

Senior Design
spencshis-prog/Watermelon_Lovers_FH10b
This repository contains the codebase for the project, including a frontend for user interaction and a backend (currently under development) for data processing and evaluation.
69 parts - 2 layers83.6 × 86.6 mm

- 2 layers128.8 × 114.8 mm

ECE445L Operator Final
Andres-Wearden/Lab10
The typical explanation for the repo structure. Lab specific instructions can be found further below.
60 parts - 2 layers152.4 × 88.9 mm

SwanGanzInterface
ATK-1/SeniorDesign_SwanGanz
The contributors to this senior design project were Nathan DeLaRosa, Ashton Knecht, Jack Son, and Jerry Xia under the supervision of Dr. Jonathan Valvano.
108 parts - 2 layers132 × 78 mm

ECE445L Lab7
AndrewYin04/VR-Goggles-Embedded-Lab
The typical explanation for the repo structure. Lab specific instructions can be found further below.
124 parts - 2 layers152.4 × 127 mm

ECE445L Final Project
DylanMeeks/ece445l-lab7-10
The typical explanation for the repo structure. Lab specific instructions can be found further below.
243 parts - 4 layers30 × 70 mm

Wearable
brnna05/senior-design-strength-training
Senior Design project for ECE 364D - Fitness wearable for strength training
73 parts
Questions
How big is the ECE445L Lab7 PCB?
It measures 152.4 × 127 mm and has 2 copper layers, 1.6 mm thick.
What parts does the ECE445L Lab7 use?
215 parts, built around the ESP32-D0WD-V3, OPA2350UA, TLV5616CD and FT232RQ. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the ECE445L Lab7 KiCad files?
From the niranjannt/Local-Music-Streaming-Pipeline repository on GitHub, at the commit this page was made from: the board is hw/ECE445L_Lab7/ECE445L_Lab7.kicad_pcb and its schematic hw/ECE319K_Starter/ECE319K_Starter.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the ECE445L Lab7 design in my own project?
Its repository states no licence, so its author keeps all rights: ask niranjannt before reusing the design.