README.md | ||
roundedcube.scad | ||
soundslab_10000_v1.scad | ||
SoundslabDisplay.py | ||
UInotes.md |
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.
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
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
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
added hat to pi zero
booted pi
sudo wget -O - script.raspiaudio.com | bash
reboot
install and configure display hat
https://www.waveshare.com/wiki/Libraries_Installation_for_RPi
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.
install UI script from gitea
TODO: write this script!
install startup scripts from gitea
TODO: write these scripts!