starcalc e09ea07112 | ||
---|---|---|
Pi | ||
backup | ||
piconfig | ||
touchcircuit | ||
touchcontroller | ||
.gitignore | ||
Bananenkeyboard.code-workspace | ||
README.md | ||
plexibox.svg |
README.md
bananenkeyboard
Resistive touch sensors to sound by touching the probes or things connected to them.
Install
- Raspberry Pi OS Lite
- Release date: January 28th 2022
- System: 32-bit
- Kernel version: 5.10
- Debian version: 11 (bullseye)
Remember to activate "ssh" before booting first (touch "/boot/ssh" on the MicroSD-card)
After login (ssh) proceed with these steps:
sudo apt update
sudo apt upgrade
sudo apt -y install git python3-pip libsdl2-mixer-2.0-0 usbmount
git clone https://repos.ctdo.de/interfisch/bananenkeyboard/
pip3 install pyserial pygame
sudo sh -c 'echo "\n[all]\nenable_uart=1\n" >>/boot/config.txt'
sudo mkdir /etc/systemd/system/systemd-udevd.service.d
sudo sh -c 'echo "[Service]\nPrivateMounts=no" >/etc/systemd/system/systemd-udevd.service.d/00-my-custom-mountflags.conf'
chmod u+x ~/bananenkeyboard/Pi/s.py
sudo sh -c 'cp ~/bananenkeyboard/piconfig/rc.local /etc/rc.local'
Starten mit
cd ~/bananenkeyboard/Pi
python3 ./s.py
Bekannte funktionierende Konfiguration
- python3.7.3
- pygame 1.9.6
- libsdl-mixer1.2
Konvertieren und Stille herauskürzen aus Samples:
for file in *.mp3; do ffmpeg -i ${file} -af silenceremove=1:0:-30dB ${file/mp3/wav} -y; done
Als Quelle haben wir zB https://philharmonia.co.uk/resources/sound-samples/
TODO
- USB-Stick mit Samples anschließen, welche dann den "Standard" überschreiben
- Knopf, welcher die Empfindlichkeit einstellt. Realisiert über einen Knopf am Arduino. (An einem der Digitaleingänge). Wechselt dann zwischen "ein paar" Einstellungen der Empfindlichkeit durch.
- Daisy-Chaining Powerbank erforderlich? (Nicht wirklich zwingend, aber nice to have)
- Pi auf Readonly umbauen, damit ein Abschalten über ein "Stecker raus" funktioniert
Herausforderungen und Ansätze
- Manchmal springt der Eingangswert für einen Eingang auf 100 ("berührt"), obwohl keine Verbindung vorhanden ist. Er erholt sich nach einiger Zeit wieder (wenige Sekunden) und zeigt wieder korrekt >1000 ("unberührt") an. Das Zurückspringen passierte ohne Interaktion von außen.
- A0 und GND direkt am Arduino gemessen zeigt aber weiterhin den hohen Wert an, nur der Arduino misst einen niedrigen
- RPD verringert (Pull-Down zwischen den Transistoren) von 1M auf 470k - kein Effekt
- BAV99 (D0) Diode ausgelötet - kein Effekt. Allerdings ist beim Messen von Eingang zu GND eine negative Spannung zu sehen
- Touch-Eingang Pull-Down 1.5M - Nichts berührt verbleibt bei hohem Wert (daher eine gute Idee, sollte umgesetzt werden) - kein Effekt für das Problem
- Kabel entfernt - Effekt konnte nicht beobachtet werden. Kabel dran (1m Krokolkemmenkabel) - Effekt wieder da
- Resultat: Die Erdung hat gefehlt. Galvanisch getrenntes Netzteil und somit keine definierte Erde für den Arduino und den Raspberry Pi. Lösung ist daher, ein Erdungskabel anzuschließen, danach trat der Effekt nicht mehr auf.
Aktuelles TODO
- Widerstand an die Touch-Eingänge: 1M5R nach GND (jeweils, 8 Stück insgesamt)
- GND-Kabel aus dem Gehäuse herausführen