I’ve decided to put in a knob to control the volume directly on the box itself. It will be controlled by volumio itself via a plugin, much like the GPIO Buttons plugin.
Since this is really a development kit approach, the hardware consists of:
- A KY-040 rotary encoder and
- A screw-based prototype board
Both are relatively easy and cheap to find and buy.
Rotary encoder
The encoder is straight-forward cheap version, with a push button too, just in case. It’s even mounted on a PCB and has pins too, so it’s practically plug-and-play
The prototype board
This allows me to connect the clock pin (volume UP), data pin (volume DOWN) to e.g. D7 (GPIO23) and D8 (GPIO24) respectively. Now, we only need to create a plugin to put the encoding in the right place. Next post will detail the software side of volume control :)
Annex - Mapping
The mapping between raspberry pi pins, GPIO and the screw-able parts is:
Raspberry PI Pin N.O. | Pin name | Arduino Shield | Description |
---|---|---|---|
1 | 3.3V | 3.3V | |
2 | 5V | 5V | |
3 | GPIO02 | A4 | SDA |
4 | 5V | 5V | |
5 | GPIO03 | A5 | SCL |
6 | GND | GND | |
7 | GPIO04 | A0 | |
8 | GPIO14 | D1 | TXD |
9 | GND | GND | |
10 | GPIO15 | D0 | RXD |
11 | GPIO17 | D2 | |
12 | GPIO18 | D3 | |
13 | GPIO27 | D5 | |
14 | GND | GND | |
15 | GPIO22 | D6 | |
16 | GPIO23 | D7 | |
17 | 3.3V | 3.3V | |
18 | GPIO24 | D8 | |
19 | GPIO10 | D11 | SPI_MOSI |
20 | GND | GND | |
21 | GPIO09 | D12 | SPI_MISO |
22 | GPIO25 | D9 | |
23 | GPIO11 | D13 | SPI_SCK |
24 | GPIO08 | D10 | SPI_CE0 |
25 | GND | GND | |
26 | GPIO07 | D4 | SPI_CE1 |
27 | ID_SD | ||
28 | ID_SC | ||
29 | GPIO05 | A1 | |
30 | GND | GND | |
31 | GPIO06 | A2 | |
32 | GPIO12 | A3 | |
33 | GPIO13 | D14 | |
34 | GND | GND | |
35 | GPIO19 | D16 | |
36 | GPIO16 | D15 | |
37 | GPIO26 | D19 | |
38 | GPIO20 | D17 | |
39 | GND | GND | |
40 | GPIO21 | D18 |