[WIP] a project to build an inexpensive portable personal digital audio player with a simple interface yet advanced functionality.
Go to file
2020-08-02 16:48:59 -07:00
DisplayOff.py add DisplayOff script, which turns off backlight and then stops the display driver - running Soundslab will start it back up. 2020-07-21 18:49:51 -07:00
README.md Update README a little bit so I don't fall too far behind 2020-07-21 18:35:31 -07:00
roundedcube.scad add roundedcube.scad, first pass at additional port access points in case 2020-07-16 11:18:15 -07:00
soundslab_10000_v1.scad add roundedcube.scad, first pass at additional port access points in case 2020-07-16 11:18:15 -07:00
SoundslabDisplay.py further menu refinement 2020-08-02 15:00:08 -07:00
SoundslabInput.py missed one 2020-08-02 16:48:59 -07:00
UInotes.md update number of buttons and function indicator info for four-button screen 2020-07-08 16:40:31 -07:00

Project Overview

This is my first pass at building myself a small, portable, decent sounding digital audio player based around a raspberry pi zero and some additional hardware along with a 3d printed case.

My goal is to build myself a music player I can carry as my primary listening device that sounds good, can carry a large portion of my music library, has a simple user interface, has a more powerful backend interface, and does not cost a fortune.

For this first iteration, I have selected three HATs - a display hat with d-pad and utility buttons, a digital audio board, and an uninterruptible power supply board with battery. The selections of the hardware chosen was based more on availability at the time of ordering than any in-depth research in to the pros and cons of each device amongst its peers. As it turns out, there are a few GPIO pin assignments that two or more of the HATs will be trying to use for their own devices (ha) so I'll have to bodge that wire when I get to it.

For this second iteration, I have selected two HATs - a Pirate Audio Headphone Amp HAT with LCD display and four buttons, and an uninterruptible power supply board with battery. I swapped out the separate audio DAC hat and display/button hat when I found the volume level too low on the raspiaudio DAC hat for my purposes. The Pirate Audio hat should alleviate this issue and slightly simplifies things overall. However, it is missing the five-way tactile switch that the first iteration had and which I planned on using extensively, so I'm also adding in a five-way tactile switch separately on a small breakout board, and I'll wire the breakout board to some open GPIO pins.

UPDATE on the five-way tactile switch: after initial tests, it is only registering the directional button presses if it is also actuated firmly enough to register the center button as well. I will be trying a replacement switch to see if that helps.

The other hardware consists of a raspberry pi zero w board, a 32gb micro sd card, a micro-usb to usb-a plug cable, and a 256gb usb flash drive. The flash drive will be the music library storage and will be externally accessibly, should I want to remove it to modify the library contents on a system with a faster storage bus going for it. also, I could carry around a tiny fake pleather cassette carrying case that had a couple dozen usb flash drives in it and have literally terabytes of high quality music at my disposable. tres chic!

bill of materials

This is still tentative and incomplete.

Pirate Audio: Headphone Amp HAT

Geekworm Raspi UPS HAT v1.1

Raspberry Pi Zero W

10,000mAh 3.7v LiPo Battery

Five-way tactile switch and breakout board

One (1) through-hole USB-A Port

A USB flash drive to store music (stays mounted in device - smaller (physically) is better)

Various lengths of wire

installation and dev log

TODO: clean up log entries, flesh out details for readers

TODO: add project goals, features, BoM, relevant links

TODO: set up repo directory structure

TODO: move all these todos into issues or something i dunno

initial setup

THIS IS ALL OUT OF DATE AND AWAITING REFINEMENT

wrote raspbian image to sd card

added empty file /boot/ssh

added file /boot/wpa_supplicant.conf:

country=US
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="WIFI_SSID"
    scan_ssid=1
    psk="WIFI_PASSWORD"
    key_mgmt=WPA-PSK
}

booted pi

logged in via ssh

changed passwd

sudo raspi-config

  • set up locale

  • disable wait for network at boot

  • resize filesystem in advanced

reboot

logged in via ssh

confirmed filesystem resize

sudo apt update && sudo apt upgrade -y && sudo apt install tmux usbmount vim wiringpi python3-pip

sudo vim /etc/hostname

changed to soundslab

shutdown -h now

install and configure DAC hat

THIS NEEDS TO BE UPDATED TO PIRATE AUDIO INSTRUCTIONS

added hat to pi zero

booted pi

sudo wget -O - script.raspiaudio.com | bash

sudo apt remove pulseaudio

reboot

TODO: add alsa configuration from /etc/asound.conf

install and configure display hat

THIS NEEDS TO BE UPDATED TO PIRATE AUDIO INSTRUCTIONS

More info

wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.60.tar.gz
tar zxvf bcm2835-1.60.tar.gz 
cd bcm2835-1.60/
sudo ./configure
sudo make && sudo make check && sudo make install

sudo pip3 install RPi.GPIO

install and configure UPS hat

## install musikcube from github https://github.com/clangen/musikcube/wiki/raspberry-pi

TODO: omg this pulls in a lot of dependencies installing the debian package, a bunch of x11 we're never going to need - I should look into whether or not there are any decent 'no X' options for some of the culprits.

Friendship ended with musikcube api. New bff is mpd:

apt install mpd

TODO: write configuration

install UI script from gitea

TODO: write this script!

install startup scripts from gitea

TODO: write these scripts!

reboot into soundslab!