Skip to content

Commit e1504b9

Browse files
committed
Update README.md
1 parent 367a134 commit e1504b9

File tree

2 files changed

+53
-16
lines changed

2 files changed

+53
-16
lines changed

README.md

Lines changed: 53 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,39 +2,56 @@
22

33
![Bluetooth audio player](bt-wall-player.jpg?raw=true)
44

5-
**A low power, wall mounted, Bluetooth audio player, clock, and environmental monitor**
5+
## A low power, wall mounted, Bluetooth audio player, clock, and environmental monitor
66

7-
**This repo contains the firmware and PCB/enclosure design**
7+
> [!Warning]
8+
> 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**.
89
9-
Features:
10+
**Features:**
1011

1112
- Media/volume controls
1213
- Song metadata display
1314
- Time, temperature, pressure, humidity display on idle
1415
- Ultra low power sleep with proximity sensing wakeup
1516
- Differential analog and S/PDIF digital audio output
1617

17-
**Full project details at [duk.io](https://blog.duk.io/custom-electronics-projects/)**
18+
**This repo contains the firmware and PCB/enclosure design.**
19+
20+
**See [custom electronics projects at duk.io](https://www.duk.io/blog/electronics-projects/) for full project details.**
1821

1922
## Build
2023

21-
The project uses the [PlatformIO](https://platformio.org/) 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.
24+
The project uses the [PlatformIO](https://platformio.org/) 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.
25+
26+
**1. Clone repo and download submodules**
2227

28+
```shell
29+
> git clone https://github.com/canardos/bluetooth-wall-player.git
30+
> cd bluetooth-wall-player
31+
> git submodule update --init
2332
```
33+
34+
**2. Build firmware (PlatformIO must be installed)**
35+
36+
```shell
2437
> pio run
2538

2639
```
2740

41+
**3. Upload to device**
42+
2843
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.
2944

30-
```
45+
```shell
3146
> pio run --target upload
3247

3348
```
3449

50+
**4. [optional] Create project files for IDE**
51+
3552
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:
3653

37-
```
54+
```shell
3855
> pio project init --ide [atom|clion|codeblocks|eclipse|emacs|netbeans|qtcreator|sublimetext|vim|visualstudio|vscode]
3956
```
4057

@@ -54,11 +71,11 @@ If you wish to use a different build system, you will need:
5471
| Startup source file | ASM file containing the startup code and vector table |
5572
| Linker script | Tells the linker how to setup everything in flash/SRAM |
5673

57-
All of these are available in the ST STM32 SDK available from ST Micro.
74+
All of these are available in the [STM32 SDK](https://www.st.com/en/development-tools/stm32-software-development-tools.html) available from ST Micro.
5875

5976
**Compiling / linking**
6077

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

6380
#### Compiler
6481

@@ -69,18 +86,37 @@ The project was built with `gcc-arm-none-eabi 9.2.1` It should work with any lat
6986
| | |
7087
|-|-|
7188
|MCU | STM32F1xx |
72-
|Flash| >42kb |
73-
|SRAM | >8kb |
89+
|Flash| >42kb |
90+
|SRAM | >8kb |
7491

75-
## Dependencies
92+
## Dependencies (firmware)
7693

7794
**CMSIS**
7895

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

8198
**Libpekin**
8299

83-
[Libpekin](https://github.com/canardos/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.
100+
[Libpekin](https://github.com/canardos/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.
101+
102+
## Hardware
103+
104+
#### PCB
105+
106+
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`.
107+
108+
> [!Important]
109+
> [Several fixes have been made to the design](https://www.duk.io/blog/electronics-projects/bt-player/bluetooth-audio-player-conclusion/#problems-and-screwups), which are implemented in the latest schematic/pcb files, but are not present in the revision A plot output.
110+
111+
See the [KiCad documentation](https://docs.kicad.org/) for information on installing and using KiCad.
112+
113+
**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.**
114+
115+
#### Enclosure
116+
117+
The [enclosure design](http://www.duk.io/blog/electronics-projects/bt-player/bluetooth-audio-player-mechanical-design/#mechanical-design) includes a [laser-cut wooden facade](http://www.duk.io/blog/electronics-projects/bt-player/bluetooth-audio-player-mechanical-design/#laser-etched-wood-facade). The CAD files for the design are located in `/hardware/enclosure/laser_cut_facade`.
118+
119+
A Sketchup model I used to model the mechanical constraints of the design is included in `/hardware/enclosure`.
84120

85121
## Folder structure
86122

@@ -94,7 +130,8 @@ BTWallPlayer
94130
+--hardware
95131
| |
96132
| +--pcb | KiCad schematic and board design files
97-
| +--enclosure | Enclosure laser cutting design files
133+
| +--enclosure | Enclosure Sketchup model and laser cutting
134+
| | design files
98135
|
99136
+--lib
100137
| |
@@ -112,4 +149,4 @@ BTWallPlayer
112149

113150
## License
114151

115-
This software is available under the [MIT license](https://opensource.org/license/MIT).
152+
This software is available under the [MIT license](https://opensource.org/license/MIT).

bt-wall-player.jpg

93.8 KB
Loading

0 commit comments

Comments
 (0)