Skip to the content
2 layers54 × 82 mmBt audio rec, the printed circuit board in 3D

Firmware and hardware design for a wall-mounted Bluetooth audio player and environmental monitor

Size
54 × 82 mm
Copper layers
2
Thickness
1.6 mm
Parts
63
Nets
103
Pads
302
Tracks, vias
495, 154
Pours
5
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
1 Apr 2024
Updated
9 Oct 2026

Overview

Bt audio rec is an open-source printed circuit board by canardos, from the canardos/bluetooth-wall-player repository on GitHub, published under the MIT licence. It is a 2-layer board of 54 × 82 mm with 63 parts on 103 nets, routed with 495 tracks and 154 vias.

It is built around the BME280, MCP1661-E/OT and VCNL4200, with the SI1308EDL, AYF333135A and DMG2301L among its other parts. Its parts include 19 capacitors, 16 resistors, 11 connectors, 6 ICs and 4 transistors. It belongs with the audio and music and radio and wireless boards and the STM32 boards of this library.

Main components

8

README

README.md

Bluetooth Wall Audio Player

Bluetooth audio player

A low power, wall mounted, Bluetooth audio player, clock, and environmental monitor

[!Warning] This is personal project. It was built and works without issue for my purposes. It is made public here in case some part of it is useful to others, but neither the hardware nor firmware have been rigorously tested.

Features:

  • Media/volume controls
  • Song metadata display
  • Time, temperature, pressure, humidity display on idle
  • Ultra low power sleep with proximity sensing wakeup
  • Differential analog and S/PDIF digital audio output

This repo contains the firmware and PCB/enclosure design.

See custom electronics projects at DuckToast.com for full project details.

Build

The project uses the PlatformIO dependency management/build system. If you have PlatformIO installed, executing the run command in the root folder should 🙏 be all that is required for a successful build. The platformio.ini file contains the required configuration and PlatformIO will download the required platform dependencies and toolchain.

1. Clone repo and download submodules

shell
> git clone https://github.com/canardos/bluetooth-wall-player.git
> cd bluetooth-wall-player
> git submodule update --init

2. Build firmware (PlatformIO must be installed)

shell
> pio run

3. Upload to device

Similarly, use pio run --target upload to upload the firmware to the device. You'll likely need to update the upload settings in platformio.ini to reflect your settings, or use your own upload tool.

shell
> pio run --target upload

4. [optional] Create project files for IDE

If you want to view/edit the project in your favorite IDE, use PlatformIO to generate the appropriate setup/workspace files and import the project:

shell
> pio project init --ide [atom|clion|codeblocks|eclipse|emacs|netbeans|qtcreator|sublimetext|vim|visualstudio|vscode]

See the PlatformIO documentation for further details.

Using an alternate build system

Platform dependencies

If you wish to use a different build system, you will need:

ST STM32 CMSIS headersPeripheral/register definitions
CMSIS headers/sourceCMSIS HAL functionality - SysTick_Config, NVIC_xxx etc.
CMSIS Cortex-M3 system sourceSystemInit()/SystemCoreClockUpdate() implementation and SystemCoreClock
Startup source fileASM file containing the startup code and vector table
Linker scriptTells the linker how to setup everything in flash/SRAM

All of these are available in the STM32 SDK available from ST Micro.

Compiling / linking

platformio.ini lists the required compiler flags. Be sure to use --specs=nano.specs and --specs=nosys.specs when linking using your own tools.

Compiler

The project was built with gcc-arm-none-eabi 9.2.1 It should work with any later GCC version and possibly with other compilers. The code contains some GCC flags and some C99 VLAs.

Target requirements
MCUSTM32F1xx
Flash>42kb
SRAM>8kb

Dependencies (firmware)

CMSIS

PlatformIO should automatically include/link the correct headers/sources from the STM32 SDK. Version 9.0.0 was used in production.

Libpekin

Libpekin is a collection of shared MCU-related code resulting from this and other projects. It's included as a Git submodule in the lib folder. PlatformIO will include the lib subfolders automatically.

Hardware

PCB

The PCB was designed with KiCad v.5, but the files have been upgraded to v.7 and are located in /hardware/pcb. Gerber output for the first revision is located in /hardware/pcb/plots_rev_a.

[!Important] Several fixes have been made to the design, which are implemented in the latest schematic/pcb files, but are not present in the revision A plot output.

See the KiCad documentation for information on installing and using KiCad.

Custom symbols and footprints required by the board are included as a Git submodule at /hardware/pcb/kicad-mycustom-lib, and are included in the KiCad project as a project-specific library.

Enclosure

The enclosure design includes a laser-cut wooden facade. The CAD files for the design are located in /hardware/enclosure/laser_cut_facade.

A Sketchup model I used to model the mechanical constraints of the design is included in /hardware/enclosure.

Folder structure

text
BTWallPlayer
|
+--artwork           | SVG sources for animation
|  |
|  +--render         | bitmap output frames
|
+--hardware
|  |
|  +--pcb           | KiCad schematic and board design files
|  +--enclosure     | Enclosure Sketchup model and laser cutting
|                   | design files
|
+--lib
|  |
|  +--libpekin       | Libpekin platform independent code
|  +--libpekin_stm32 | Libpekin STM32 specific code
|
+--src
|  |
|  +--data           | Image and font data
|  +--devices        | Hardware device drivers
|
|--test              | No tests in use

License

This software is available under the MIT license.

Parts

63
QtyValueFootprintReferences
64.7uFCapacitor_SMD:C_0603_1608MetricC2, C3, C4, C12, C13, C14
50.1uFCapacitor_SMD:C_0402_1005MetricC6, C7, C9, C10, C11
40.01uFCapacitor_SMD:C_0402_1005MetricC8, C15, C16, C18
420kResistor_SMD:R_0603_1608MetricR3, R4, R5, R14
3100RResistor_SMD:R_0603_1608MetricR6, R7, R8
3Si1308EDLPackage_TO_SOT_SMD:SOT-323_SC-70Q1, Q2, Q3
224pFCapacitor_SMD:C_0402_1005MetricC1, C5
24.7kResistor_SMD:R_0603_1608MetricR10, R11
1.MyCustom_dukio_logos:dukio-20mm
11.8RResistor_SMD:R_0603_1608MetricR13
113RResistor_SMD:R_0603_1608MetricR17
1180kResistor_SMD:R_0603_1608MetricR16
11MResistor_SMD:R_0603_1608MetricR15
11kResistor_SMD:R_0603_1608MetricR12
11uFCapacitor_SMD:C_0805_2012MetricC17
1330RResistor_SMD:R_0603_1608MetricR1
1500mAResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalF1
1560kResistor_SMD:R_0603_1608MetricR2
1680uFCapacitor_THT:C_Radial_D6.3mm_H7.0mm_P2.50mmC19
18MHzCrystal:Crystal_SMD_HC49-SDY1
1AYF333135.MyCustom_general:FPC_Socket_0.3_31_Panasonic_AYF333135J2
1BME280Package_LGA:Bosch_LGA-8_2.5x2.5mm_P0.65mm_ClockwisePinNumberingU3
1ButtonsConnector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_HorizontalJ8
1DMG2301LPackage_TO_SOT_SMD:SOT-23Q4
1DebugConnector_PinSocket_2.54mm:PinSocket_2x04_P2.54mm_VerticalJ6
1ERMConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_HorizontalJ4
1MBR0520Diode_SMD:D_SOD-123D1
1MCP1661Package_TO_SOT_SMD:SOT-23-5U2
1OutLConnector_JST:JST_PH_B3B-PH-K_1x03_P2.00mm_VerticalJ1
1OutRConnector_JST:JST_PH_B3B-PH-K_1x03_P2.00mm_VerticalJ5
1OutSPDIFConnector_JST:JST_PH_B2B-PH-K_1x02_P2.00mm_VerticalJ7
1PCB_LEDDiode_SMD:D_0603_1608MetricD2
1PROX HeaderConnector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_VerticalJ15
1PROX SocketConnector_PinSocket_2.54mm:PinSocket_2x03_P2.54mm_VerticalJ14
1PowerConnector_Molex:Molex_KK-254_AE-6410-03A_1x03_P2.54mm_VerticalJ13
1RN52 factory resetConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_HorizontalJ3
1RN52-I_RM116.MyCustom_general:Bluetooth_module_Microchip_RN52IC1
1RV-8803-C7-TA-QC.MyCustom_general:RTC_Microcrystal_RV-8803-C7-TA-QCY2
1STM32F103C8TxPackage_QFP:LQFP-48_7x7mm_P0.5mmU1
1TPS22860DBVRPackage_TO_SOT_SMD:SOT-23-6U4
1VCNL4200.MyCustom_general:Proximity_Sensor_Vishay_VCNL4200IC2
1VLCF4024T-4R7.MyCustom_general:Inductor_L_TDK_VLCF4024L1

Similar boards

  • 4 layers91.4 × 88.4 mmSAcre, the printed circuit board in 3D

    SAcre

    Cosmin-DB/SAcre

    Diseño electrónico de un dispositivo portátil basado en ESP32.

    93 parts
  • 2 layers49.5 × 50.3 mmSharp dsi, the printed circuit board in 3D

    Sharp dsi

    jlywxy/project-display

    Mobile Display Test & Debug

    52 parts16GPL-2.0
  • 6 layers180 × 74 mmHandHeld One, the printed circuit board in 3D

    HandHeld One

    phytec-labs/phytec-handheld-one

    PCB files for Handheld Ones Demo

    178 parts1
  • 2 layers28.5 × 15 mmVCNL4200MailBox, the printed circuit board in 3D

    VCNL4200MailBox

    kevinkessler/MailSensors-PCB

    PCB for the MailSensor Lora project

    12 parts
  • 2 layers92.8 × 74 mmSdi12-esphome, the printed circuit board in 3D

    Sdi12-esphome

    fraxinas/sdi12-esphome

    SDI-12 professional meteorologic sensors interface for ESPHome

    37 parts8
  • 2 layers101 × 76.2 mmBoardlock, the printed circuit board in 3D

    Boardlock

    ECE477Group13/hardware_pcb

    GitHub backup of PCB design files (Schematic and Board files)

    131 parts
  • 6 layers72 × 101.3 mmRUSP Mainboard, the printed circuit board in 3D

    RUSP Mainboard

    skysedge/RUST_Hardware

    KiCad design files for RUSP

    256 parts1

Questions

How big is the Bt audio rec PCB?

It measures 54 × 82 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Bt audio rec use?

63 parts, built around the BME280, MCP1661-E/OT, VCNL4200 and SI1308EDL. 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 Bt audio rec KiCad files?

From the canardos/bluetooth-wall-player repository on GitHub, at the commit this page was made from: the board is hardware/pcb/bt_audio_rec.kicad_pcb and its schematic hardware/pcb/bt_audio_rec.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Bt audio rec design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).