Skip to the content
2 layersCastVolumeKnob, the printed circuit board in 3D

Hardware Volume Knob for Google Cast devices

Copper layers
2
Thickness
1.6 mm
Parts
18
Nets
23
Pads
78
Tracks, vias
205, 19
Pours
1
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
23 Sep 2018
Updated
2 Dec 2019

Overview

CastVolumeKnob is an open-source printed circuit board by WebmasterTD, from the WebmasterTD/CastVolumeKnob repository on GitHub. It is a 2-layer board with 18 parts on 23 nets, routed with 205 tracks and 19 vias.

It is built around the ATTINY85-20PU, ATTINY85-15M and IRF9540NS. Its parts include 6 connectors, 4 resistors, 3 transistors, 2 ICs and 1 capacitor. It belongs with the AVR (ATmega, ATtiny) boards of this library.

Main components

3

README

README.md

CastVolumeKnob

is hardware volume control for Chromecast Audio devices, based on the ESP8266 microcontroller using micropython.

The problem

For controlling the volume on Chromecast devices you need to use your phone. - it is clumsy, not very intuitive.

The requirements

  • Easy to use, hardware based volume control.
  • Wireless
  • Visual feedback of the current volume level
  • Relatively cheap

The solution

CastVolumeKnob

This is the final form. Completely wireless, rechargeable device.

To wake it up you have to tap the knob once. After it wakes up it automatically connects to the first chromecast device, you can control its volume by turning the knob. To change the device tap the knob again. To stop the music playback press and hold the knob until the LEDs turn red.

Instructions:

Schematic

Schematic

Programming the ESP8266

  • install esptool and ampy

    shell
    pip install esptool
    pip install adafruit-ampy
  • erase the flash with esptool

    shell
    esptool.py --port COM5 erase_flash
  • download the micropython firmware

    MicroPython

  • deploy the firmware

    shell
    esptool.py --port COM5 --baud 460800 write_flash --flash_size=detect 0 esp8266-20170108-v1.8.7.bin
  • Configuring wificonf.py

  • put the code to the mcu

    shell
    ampy -p COM5 -b 115200 put     main.py
                    boot.py
                    encoder.py
                    wificonf.py
                    volume.py

Assembly

  • 3D print the case and glue the middle and the top part together
  • Solder everything to the PCB
  • Put the LED ring and Encoder in place
  • Screw the Board in place
  • Solder the Battery holder to the charging/boost converter board
  • Glue it in place
  • Screw the bottom part in

Parts

18
QtyValueFootprintReferences
310KResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR1, R2, R3
2MountingHole:MountingHole_3.2mm_M3_ISO14580_Pad,
2Conn_01x08Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_VerticalJ2, J4
10.3uFCapacitor_THT:C_Disc_D3.8mm_W2.6mm_P2.50mmC1
11KResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR4
12N3904Package_TO_SOT_THT:TO-92_InlineQ2
12N7000Package_TO_SOT_THT:TO-92_InlineQ1
1ATTINY85Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ6
1ATtiny85-20PUPackage_DIP:DIP-8_W7.62mm_Socket_LongPadsU2
1EncoderConnector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_HorizontalJ5
1IRF9540NPackage-TO:TO-220-3_Horizontal_TabDown-132Q3
1NeoPixelRingConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_HorizontalJ3
1POWER_5VConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_HorizontalJ1
1WeMos_miniwemos-d1-mini:wemos-d1-mini-connectors-onlyU1

Similar boards

  • 2 layers50 × 50 mmT85-with driver and poe, the printed circuit board in 3D

    T85-with driver and poe

    cnlohr/ethertiny

    A firmware-only half-duplex 10Base-T implementation for AVRs

    41 parts133
  • 2 layers23 × 45 mmCell monitor, the printed circuit board in 3D

    Cell monitor

    scttnlsn/cell-monitor

    Battery cell monitor and balancer

    13 parts39MIT
  • 2 layers41.1 × 110.7 mmJNTUB, the printed circuit board in 3D

    JNTUB

    joyfulnoisesynth/JNTUB

    JoyfulNoise Tiny Utility Board

    84 parts26
  • 2 layers40 × 30 mmTest board, the printed circuit board in 3D

    Test board

    Guiimartinho/routeai

    LLM-Powered Electronic Design Automation Platform for PCB Design

    4 parts13
  • 2 layers78.3 × 78.5 mm50x70 tiny, the printed circuit board in 3D

    50x70 tiny

    rallekralle11/Tinyreflow

    Inspired by afterearthltd's reflow plate, but using fewer and simpler components.

    23 parts10
  • 2 layersMIDIMonkey, the printed circuit board in 3D

    MIDIMonkey

    aleh/MIDIMonkey

    Listens to MIDI messages on one pin and triggers drums on the others

    8 parts9MIT
  • 2 layers46.9 × 41.4 mmGR PW Noise, the printed circuit board in 3D

    GR PW Noise

    GadgetReboot/White_Pink_Noise

    White noise and pink noise PCB

    40 parts7
  • 2 layers50.2 × 31.1 mmTV B Gone ML v1 2, the printed circuit board in 3D

    TV B Gone ML v1 2

    curiouselectric/TVBGone

    TV-B-Gone Design Files

    25 parts6MIT

Questions

What parts does the CastVolumeKnob use?

18 parts, built around the ATTINY85-20PU, ATTINY85-15M and IRF9540NS. 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 CastVolumeKnob KiCad files?

From the WebmasterTD/CastVolumeKnob repository on GitHub, at the commit this page was made from: the board is pcb_design/CastVolumeKnob/CastVolumeKnob.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the CastVolumeKnob design in my own project?

Its repository states no licence, so its author keeps all rights: ask WebmasterTD before reusing the design.