Innholdsfortegnelse:
- Rekvisita
- Trinn 1: Beskrivelse av bringebærdel:
- Trinn 2: IR -fjernkodene
- Trinn 3: Hovedprogram
- Trinn 4: Bringebærdel: Autostart og Legge til nye filer
- Trinn 5: Strømstyring via Arduino Nano
- Trinn 6: Kabling
- Trinn 7: Boksen
Video: Raspitone: enkel å bruke Jukebox: 7 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:22
Hei, mitt neste prosjekt er, som jeg pleier å gjøre, et lite nyttig prosjekt:
Dette er en jukeboks basert på en Raspberry 3 B+
Jeg vet, noe slikt kan enkelt gjøres med en smarttelefon og en Bluetooth -høyttaler.
Men for prosjektet mitt hadde jeg to harde forutsetninger:
Jeg ville lage noe "vintage".
Og totalt sett, siden damen min definitivt er håpløs for datamaskin eller bluetooth eller noe annet fra det 21. århundre (og til og med det 20.), måtte jeg gjøre noe veldig enkelt å bruke ………
Så spesifikasjonene var som følger:
En enkelt trykknapp for å starte maskinen
En berøringsskjerm (veldig enkel) for å administrere musikken.
Et enkelt trykk på skjermen for å stoppe maskinen.
Og for å ha en god lyd ………
Rekvisita
Til dette brukte jeg:
1 Bringebær 3 B+
1 gammel hjemmekino som var ubrukelig på grunn av DVD -leser OOS (en gammel Samsung 2.1 med en woofer og 2 høyttalere som jeg endret for å passe til boksen)
1 HIFIBERRY DIGI+ -kort (med optisk utgang for effektforsterkeren)
1 kapasitiv berøringsskjerm 7 (min er lett å gjøre for bringebær med HDMI -inngang og drives via USB, men enhver HDMI -berøringsskjerm skal være OK)
1 strømforsyning 5V 5A
1 reléskjerm
1 Arduino nano for å styre strømmen PÅ/AV
1 IR førte til å drive hjemmekinoen (ledet drevet av en 2N2222 NPN -transistor)
1 IR -mottaker (for læring av IR -koder i prosjektet, får jeg min fra en gammel multimedie -harddisk med fjernkommando)
3 led
1 bryter for vedlikeholdsmodus
1 bryter for arbeid på arduino (under opplasting blir arduinoen tilbakestilt)
noen JST- og Dupont -kontakter
Og for boksen
Tre og kryssfiner (men jeg vil ikke beskrive dypt hvordan boksen er laget). bare for å si at når det gjelder boomer inne i esken, er 10 mm kryssfiner og 18 mm tre obligatorisk hvis du ikke vil se Jukebox krysse stua mens du spiller !!!!
Trinn 1: Beskrivelse av bringebærdel:
Raspi må håndtere forskjellige ting:
1) kommandoene til hjemmekinoen (via IR -fjernkontroll)
2) musikkfilene
3) berøringsskjermen
4) Hjerteslag til Arduino (som administrerer Wdt (vakthundtimer))
Jeg begynte fra en Raspbian strech -distribusjon på et 16 G SD -kort (Siden vi bare vil lese filer fra SD -kortet, er det ikke nødvendig å bruke en harddisk). Jeg vil ikke bruke tid på denne delen ettersom nettet er fullt av veiledning om det..
La oss se de forskjellige delene i de neste trinnene ….
Trinn 2: IR -fjernkodene
Siden jeg ikke fant kretsplanen for hjemmekinoen, bestemte jeg meg for å kjøre den via fjernkommandoer
Det første trinnet jeg måtte fullføre var å lære å Raspi kodene til fjernkontrollen for hjemmekino. For det brukte jeg den veldig gode tutoen i Instructables fra Austin Stanton IR -koder
Jeg hadde noen forskjeller, sannsynligvis på grunn av ny versjon ettersom instruksjonene er ganske gamle, hardware.conf -filen eksisterer ikke lenger (i det minste fant jeg den ikke)
Det ser også ut til at transistoren som brukes i tutoen er en PNP -transistor, for min del brukte jeg en 2N2222 som er NPN, men resultatet er det samme. (Bortsett fra kabling !!!!!!!!)
Pin -tildelingen er gitt i /boot/config.txt:
#autorisation de lirc le 2019-07-08dtoverlay = lirc-rpi, gpio_out_pin = 22, gpio_in_pin = 23
IR -LED -en vil være koblet til pin22 på Raspi.
En viktig kommentar: når du lærer kodene til Raspi, er det obligatorisk å bruke søkeordene som er oppført i kommandoen
irrecord --list-namespace
Her er filen jeg bygde for jukeboksen min:
pi@raspitone:/etc/lirc $ cat lircd.conf
# Ta deg tid til å fullføre denne filen som beskrevet i # https://sourceforge.net/p/lirc-remotes/wiki/Check… # og gjør den tilgjengelig for andre ved å sende den til # #
# Denne konfigurasjonsfilen ble automatisk generert
# bruker lirc -0.9.4c (standard) Tor 9. mai 17:33:37 2019 # Kommandolinje brukt: -d /dev /lirc0 /root/lircd.conf
# Kernel versjon (uname -r): 4.14.98 -v7+ # # Fjernnavn (fra konfigurasjonsfil): jukebox
# Merke på ekstern enhet, tingen du holder i hånden: # Ekstern enhet modell nr:
# Ekstern informasjon info url:
# Har den eksterne enheten en medfølgende oppfangingsenhet e. g., a
# usb -dongle?:
# For medfølgende USB -enheter: USB -leverandør -ID, produkt -ID
# og enhetsstreng (bruk dmesg eller lsusb):
# Type enhet kontrollert
# (TV, videospiller, lyd, DVD, satellitt, kabel, HTPC, …):
# Enhet (er) kontrollert av denne fjernkontrollen:
begynne eksternt
navn jukebox
biter 16
flagg SPACE_ENC | CONST_LENGTH
eps 30
aeps 100
topptekst 4470 4496
en 542 1693
null 542 581
ptrail 553
pre_data_bits 16
pre_data 0xC2CA
gap 107863
toggle_bit_mask 0x0
frekvens 38000
begynne koder
KEY_POWER 0x807F
KEY_AUX 0x8877
KEY_VOLUMEUP 0xCC33
KEY_VOLUMEDOWN 0xDC23
sluttkoder
ende fjernkontroll
Som du kan se, trenger jeg bare 4 kommandoer for å kjøre hjemmekinoen
Strøm (PÅ/AV)
AUX => for å bytte til den optiske inngangskanalen (ettersom HC alltid starter på DVD -leser)
Og volum +/-
De relaterte kommandoene utføres via LIRC -kommandoene:
for eksempel: "send SEND_ONCE jukeboks KEY_VOLUMEUP"
Trinn 3: Hovedprogram
Hovedprogrammet er skrevet i Python:
Siden jeg er ny i Python antar jeg at det er mye forbedring som kan gjøres, men det går ….
Spesifikasjonene:
1) administrer den grafiske skjermen:
For dette brukte jeg APPJAR som er TKINTER, men sivilisert for studenter (saken min), dette betyr mye lettere å bruke, sannsynligvis med færre muligheter, men det var nok til mitt formål.
2) Spill mp3 -filene:
Jeg brukte mplayer for python.
3) generer tilfeldige tall for å spille i blandemodus:
Ettersom jeg ikke ønsket å høre den samme sangen hvert kvartal, bygde jeg et lite program for å sjekke om tallet ikke var tilstede i listen x forrige tall (x avhengig av lengden på spillelisten).
Randint -funksjonen i python er ikke så "tilfeldig" så langt jeg så.
4) send "hjerteslag" til Arduino
5) administrer filspilleren:
Siden Mplayer er asynkron, er det ingen måte å vite for Python når filen er startet (i det minste fant jeg ikke en enkel måte)
For å løse at jeg brukte mplayer -kommandoene som ga lengden på filen og fremdriften i den nåværende filen
For både 4 og 5 brukte jeg muligheten gitt av Appjar til å generere en periodisk oppgave (ettersom appjar er et hendelsesprogram er dette en måte å lage en periodisk hendelse på). funksjonen er:
#******************* start oppgavemann ********************** app.registerEvent (taskman)
p.setPollTime (1000)
Taskman for "task manager" som er en def i programmet som administrerer alle det som ikke er skjermhendelser (slutten av den spilte filen, fyll ut fremdriftslinjen, send hjerteslag til Nano, …)
Når skjermen har startet, ser den slik ut:
Her er programmet: (kan åpnes via Notisblokk ++ eller Geany)
Trinn 4: Bringebærdel: Autostart og Legge til nye filer
Hvis du ser på programmet, kan du se at jeg bruker noen bash -filer:
1) Start_jukebox:
Hensikten er faktisk å slå på hjemmekinoen og gå over til D. IN -inngangen (optisk inngang i min hjemmekino)
pi@raspitone:/bin $ cat start_jukebox#!/bin/bash
send SEND_ONCE jukeboks KEY_POWER
sove 7
send SEND_ONCE jukeboks KEY_AUX
sove 2
2) stop_jukebox:
Slå av hjemmekinoen
pi@raspitone:/bin $ cat stop_jukebox
#!/bin/bash
send SEND_ONCE jukeboks KEY_POWER
Disse to bash -filene kalles av Python med kommandoen os.system
For å starte Python -skriptet laget jeg en liten bash
pi@raspitone: ~ $ cat dem_jukebox.bash#!/bin/bash
cd /home /pi
python jukebox_gui.py
For automatisk start i GUI-modus endret jeg nettopp autostartfilen i/etc/xdg/lxsession/LXDE-pi
pi@raspitone:/etc/xdg/lxsession/LXDE-pi $ cat autostart@lxpanel --profil LXDE-pi
@pcmanfm --desktop --profil LXDE-pi
@xscreensaver -no -splash
@lxterminal --command = "dem_jukebox.bash"
punkt-rpi
Legge til nye mp3 -filer:
For å legge til nye filer foretrakk jeg å lage et lite dedikert Python -skript:
new_song_file.py
Jeg vil først forklare systemfilorganisasjonen:
Alle filene er i /home /pi
mp3 -filer lagres i/home/pi/Music -katalogen
Hver artist har sin egen undermappe som er vert for de relaterte mp3 -filene
pi@raspitone: ~/Music/Mike_oldfield $ ls -totalt 760516
-rwxr ----- 1 pi pi 2254923 30. juni 2017 A_New_Beginning.mp3
-rwxr ----- 1 pi pi 2691736 30. juni 2017 Ankomst.mp3
-rwxr ----- 1 pi pi 8383244 30. juni 2017 Ascension.mp3
-rwxr ----- 1 pi pi 5410816 30. juni 2017 Blue_Night.mp3
-rwxr ----- 1 pi pi 13125199 30. juni 2017 Castaway_ (Instrumental).mp3
-rwxr ----- 1 pi pi 12903583 30. juni 2017 Castaway.mp3
-rwxr ----- 1 pi pi 2969869 30. juni 2017 Celt.mp3
-rwxr ----- 1 pi pi 9047745 30. juni 2017 Chariots_ (Instrumental).mp3
-rwxr ----- 1 pi pi 9403263 30. juni 2017 vogner.mp3
I katalogen Dokumenter finner vi den bygde listen over filer som skal spilles av.
pi@raspitone: ~/Documents $ cat list.txtFranz_Ferdinand/Michael_live.mp3
Franz_Ferdinand/evil_and_a_heathen.mp3
Franz_Ferdinand/Walk_Away_live.mp3
Franz_Ferdinand/love_and_destroy.mp3
Franz_Ferdinand/his_fffire.mp3
Franz_Ferdinand/eleanor_put_your_boots_on.mp3
Franz_Ferdinand/missing_you.mp3
Franz_Ferdinand/this_fire_ (playgroup_remix).mp3
Franz_Ferdinand/Jacqueline.mp3
Vi kan også finne spillelistedata (men dette er bygget av Python -skriptet)
Det lille Python -skriptet legger til de nye sangene, lagret i musikk, i list.txt etter å ha formatert tittlene i UNIX -format
Her er skriptet: (kan åpnes via Notisblokk ++ eller Geany)
Trinn 5: Strømstyring via Arduino Nano
Ettersom jeg ønsket å ha noe enkelt å starte, bestemte jeg meg for å gjøre det gjort av en liten nano:
Prinsippet:
Når du trykker på startknappen, får alle enhetene strøm, nano starter (1 eller 2 sekunder) og tar over strømstyringen ved å utløse et relé som skifter trykknappkontaktene.
Deretter venter Nano i 35 sekunder for å motta hjerteslag fra bringebær (betyr at startprosessen er fullført og jukeboksprogrammet kjører).
Så lenge nano mottar hjerteslag, holder den reléet på (Watch dog timer)
Hvis ingen hjerterytme lenger (betyr at jukeboksprogrammet er stoppet) venter Nano i 20 sekunder (for å være sikker på at raspi er helt stoppet) for å slippe strømreléet.
Jukeboksen slås deretter helt av
Jeg la til en bryter for å aktivere en inngang fra nano for å indikere vedlikeholdsmodus (jeg bruker jukeboksen til å administrere mine andre raspi -servere via ssh et vnc). Nano deaktiverer deretter vakthundprosessen
Bemerke:
inngangen for hjerteslag fra Raspi må trekkes ned (men 3.3V fra Raspi regnes som høyt nivå av Nano)
Det kan gjøres med NE555, men jeg er lat og har alltid noen nano i skuffen min !!!!
Her er det korte C -programmet (kan åpnes med Notisblokk ++)
Trinn 6: Kabling
For skjermen:
En HDMI -kabel og en USB -kabel brukes på Raspi for å drive og drive skjermen.
For frontpanelet:
En USB -kabel er også koblet til fra Raspi for å kunne laste opp nye filer eller ta sikkerhetskopier.
En USB -kabel er tilkoblet fra Nano for å få tilgang til soften (for endringer om nødvendig)
Jeg kobler også til en trådløs tastaturdongle på bringebæret for å kunne utføre vedlikehold uten å bruke den eksterne USB -kontakten
Når Raspberry og Arduino brukes, er kablingen ganske enkel.
Alt er plassert på et stripmatrisekort.
Fra bringebær 2 brukes GPIO:
Pin22 for IR LED
Pin 27 for hjerteslag til Arduino
på Arduino
Pinne 2 brukes som en avbruddsnål for hjerteslaget fra Raspi.
Pins 3 til 5 brukes til å kjøre LED -lampene (Start, Wdt, Maintenance).
Pin 6 er for vedlikeholdsbryteren.
Pin 7 er utgang til reléskjerm.
Her er fritzing -filen:
Trinn 7: Boksen
Jeg vil ikke beskrive mye hva jeg gjorde, da det avhenger av effektforsterkeren og høyttalerne som brukes.
Som informasjon er hjemmekinoen plassert i bunnen av esken.
Litt over høyttalerne:
1 bashøyttaler
2 mellomhøyttalere, som jeg modifiserte for å sette dem inn i esken.
På toppen:
Frontpanelet med skjermen, lysdiodene, bryterne og USB -pluggene.
Skogen:
For høyttalerne, sidepanelene topp og bunn brukte jeg 18 mm treplank.
Forsiden er 10 mm kryssfiner med 40 mm skruer.
For å lette kablingen og vedlikeholdet (om nødvendig !!!) la jeg kretsen på en skuff bak frontpanelet
For å unngå overoppheting gjøres et stort hull på bunnen av den bakre panelen, og jeg legger en 5V vifte (8 cm) på den bakre panelen like ved kretsen.
Bildet ovenfor er bare for å gi en ide.
Så det er det !!!!!!!!!
Takk for at du leste meg
Og vi sees neste gang for nye eventyr
Anbefalt:
F450 Quadcopter Bruke KK 2.1.5 Enkel: 6 trinn
F450 Quadcopter Using KK 2.1.5 Easy: Hello there! This is Teerth Warang hereToday we will make a F450 Frame quadcopter using a KK 2.1.5 Flight Controller Det drives av en KK 2.1.5 Flight Controller og en FlySky Basic CT6B sender og mottaker flykontroller KK 2.1.5 har en disp
Hvordan bruke DS1307 Bruke Arduino: 7 trinn
Hvordan bruke DS1307 Bruke Arduino: DS1307 er en sanntidsklokke IC (RTC). Denne IC brukes til å gi tidsdata. Tildelt tid starter fra sekunder, minutt, timer, dager, dato, måned og år. Denne IC krever ytterligere eksterne komponenter som Crystal og 3,6V batterier. Krystall
Hvordan bruke en tenåring til å skrive ut bilder på Splatoon 2 Bruke SplatPost -skriveren: 10 trinn
Hvordan bruke en tenåring til å skrive ut bilder på Splatoon 2 Bruke SplatPost -skriveren: I denne instruksen vil jeg vise hvordan du bruker SplatPost -skriveren av ShinyQuagsire. Uten klare instruksjoner ville noen som ikke har erfaring med kommandolinjen ha litt problemer. Målet mitt er å forenkle trinnene ned til poi
Neopixel Ws2812 Rainbow LED-glød med M5stick-C - Kjører Rainbow på Neopixel Ws2812 Bruke M5stack M5stick C Bruke Arduino IDE: 5 trinn
Neopixel Ws2812 Rainbow LED-glød med M5stick-C | Running Rainbow på Neopixel Ws2812 Bruke M5stack M5stick C Bruke Arduino IDE: Hei folkens i denne instruksen, vi lærer hvordan du bruker neopixel ws2812 LED eller led strip eller led matrise eller led ring med m5stack m5stick-C utviklingstavle med Arduino IDE, og vi skal lage et regnbuemønster med den
Hvordan bruke Wiimote som en datamus ved å bruke stearinlys som sensor !!: 3 trinn
Slik bruker du Wiimote som en datamus ved å bruke stearinlys som en sensor !!: Denne guiden viser deg hvordan du kobler din Wii -fjernkontroll (Wiimote) til din PC og bruker den som en mus