Indholdsfortegnelse:
- Forbrugsvarer
- Trin 1: Beskrivelse af hindbærdel:
- Trin 2: IR -fjernkoderne
- Trin 3: Hovedprogram
- Trin 4: Hindbærdel: Autostart og tilføjelse af nye filer
- Trin 5: Strømstyringen via Arduino Nano
- Trin 6: Kablingen
- Trin 7: Kassen
Video: Raspitone: let at bruge Jukebox: 7 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:27
Hej, mit næste projekt er, som jeg plejer at gøre, et ikke særlig nyttigt projekt:
Dette er en jukebox baseret på en Raspberry 3 B+
Jeg ved, sådan noget kan let gøres med en smartphone og en Bluetooth -højttaler.
Men til mit projekt havde jeg to hårde forudsætninger:
Jeg ville lave noget "vintage".
Og generelt set, i betragtning af at min dame definitivt er håbløs til computer eller bluetooth eller noget andet fra det 21. århundrede (og endda det 20.), måtte jeg gøre noget meget enkelt at bruge ………
Så specifikationerne var som følger:
En enkelt trykknap for at starte maskinen
En berøringsskærm (meget enkel) til at styre musikken.
Et enkelt tryk på skærmen for at stoppe maskinen.
Og for at få en god lyd ………
Forbrugsvarer
Til dette brugte jeg:
1 Hindbær 3 B+
1 gammel hjemmebiograf, der var ubrugelig på grund af DVD -læser OOS (en gammel Samsung 2.1 med en woofer og 2 højttalere, som jeg ændrede for at passe til boksen)
1 HIFIBERRY DIGI+ -kort (med optisk udgang til effektforstærkeren)
1 kapacitiv berøringsskærm 7 (min er let til hindbær med HDMI -indgang og drives via USB, men enhver HDMI -berøringsskærm skal være OK)
1 strømforsyning 5V 5A
1 relæskjold
1 Arduino nano til at styre tænd/sluk -processen
1 IR førte til at drive hjemmebiografen (ledet drevet af en 2N2222 NPN transistor)
1 IR -modtager (for IR -kodens læringsdel af projektet får jeg min fra en gammel multimedie -harddisk med fjernkommando)
3 led
1 kontakt til vedligeholdelsestilstand
1 switch til arbejde på arduino (under upload nulstilles arduinoen)
nogle JST- og Dupont -stik
Og til kassen
Træ og krydsfiner (men jeg vil ikke beskrive dybt fremstillingen af kassen dybt). bare for at sige, at hvad angår boomer inde i kassen, er 10 mm krydsfiner og 18 mm træ obligatorisk, hvis du ikke vil se Jukebox krydse stuen, mens du spiller !!!!
Trin 1: Beskrivelse af hindbærdel:
Raspi skal styre forskellige ting:
1) kommandoerne til hjemmebiografen (via IR -fjernbetjening)
2) musikfilerne
3) berøringsskærmen
4) Hjerteslag til Arduino (som administrerer Wdt (vagthund timer))
Jeg startede med en Raspbian strech -distribution på et 16 G SD -kort (Da vi kun vil læse filer fra SD -kortet, er brug af en HDD ikke nødvendig). Jeg vil ikke bruge tid på denne del, da internettet er fuld af undervisning om det..
Lad os se de forskellige dele i de næste trin….
Trin 2: IR -fjernkoderne
Da jeg ikke kunne finde kredsløbsplanen for hjemmebiografen, besluttede jeg at køre den via fjernkommandoer
Det første trin, jeg var nødt til at fuldføre, var at lære at Raspi koderne for hjemmebiografens fjernkommando. Til det brugte jeg den meget gode tuto i Instructables fra Austin Stanton IR -koder
Jeg havde nogle forskelle, sandsynligvis på grund af ny version, da instruktionerne er ret gamle, hardware.conf -filen findes ikke længere (jeg fandt den i hvert fald ikke)
Det ser også ud til, at transistoren, der bruges i tutoen, er en PNP -transistor, for mit vedkommende brugte jeg en 2N2222, som er NPN, men resultatet er det samme. (Undtagen kabelføring !!!!!!!!)
Pin -tildelingen er angivet 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 tilsluttet pin22 på Raspi.
En vigtig bemærkning: Når du lærer koderne til Raspi, er det obligatorisk at bruge de søgeord, der er angivet i kommandoen
irrecord --list-navneområde
Her er den fil, jeg byggede til min jukebox:
pi@raspitone:/etc/lirc $ cat lircd.conf
# Tag dig tid til at afslutte denne fil som beskrevet i # https://sourceforge.net/p/lirc-remotes/wiki/Check… # og gør den tilgængelig for andre ved at sende den til # #
# Denne konfigurationsfil blev automatisk genereret
# bruger lirc -0.9.4c (standard) tors 9. maj 17:33:37 2019 # Brugt kommandolinje: -d /dev /lirc0 /root/lircd.conf
# Kerneversion (uname -r): 4.14.98 -v7+ # # Fjernnavn (fra konfigurationsfil): jukebox
# Fjernbetjenings mærke, det du holder i hånden: # Fjernenhed model nr:
# Ekstern url -info -url:
# Har fjernenheden en medfølgende opsamlingsenhed e. g., a
# usb -dongle?:
# For medfølgende USB -enheder: usb -leverandør -id, produkt -id
# og enhedsstreng (brug dmesg eller lsusb):
# Type enhed kontrolleret
# (TV, VCR, lyd, DVD, satellit, kabel, HTPC, …):
# Enhed (er) styret af denne fjernbetjening:
begynde fjernbetjening
navn jukebox
bits 16
flag SPACE_ENC | CONST_LENGTH
eps 30
aeps 100
header 4470 4496
en 542 1693
nul 542 581
ptrail 553
pre_data_bits 16
pre_data 0xC2CA
hul 107863
toggle_bit_mask 0x0
frekvens 38000
begynde koder
KEY_POWER 0x807F
KEY_AUX 0x8877
KEY_VOLUMEUP 0xCC33
KEY_VOLUMEDOWN 0xDC23
slutkoder
ende fjernbetjening
Som du kan se, har jeg bare brug for 4 kommandoer for at køre hjemmebiografen
Strøm (ON/OFF)
AUX => for at skifte til den optiske inputkanal (da HC altid starter på DVD -læser)
Og lydstyrke +/-
De relaterede kommandoer udføres via LIRC -kommandoerne:
f.eks.: "irsend SEND_ONCE jukebox KEY_VOLUMEUP"
Trin 3: Hovedprogram
Hovedprogrammet er skrevet i Python:
Da jeg er ny i Python, gætter jeg på, at der er mange forbedringer, der kan gøres, men det kører….
Specifikationerne:
1) administrer den grafiske skærm:
Til dette brugte jeg APPJAR, som er TKINTER men civiliseret til studerende (min sag), det betyder meget lettere at bruge, sandsynligvis med færre muligheder, men det var nok til mit formål.
2) afspil mp3 -filer:
Jeg brugte mplayer til python.
3) generer tilfældige tal til afspilning i blandet tilstand:
Da jeg ikke ønskede at høre den samme sang hvert kvartal, byggede jeg et lille program for at kontrollere, om nummeret ikke var til stede i listen x tidligere numre (x afhængigt af afspilningslistens længde).
Randint -funktionen i python er ikke så "tilfældig", så vidt jeg så.
4) send "hjerteslaget" til Arduino
5) administrer filafspiller:
Da Mplayer er asynkron, når filen startes, er der ingen måde at vide for Python, når den er færdig (jeg fandt i hvert fald ikke en enkel måde)
For at løse det brugte jeg mplayer -kommandoerne, der angav filens længde og fremskridt i den aktuelle fil
For både 4 og 5 brugte jeg den mulighed, som Appjar gav, til at generere en periodisk opgave (da appjar er et hændelsesprogram, er dette en måde at oprette en periodisk begivenhed på). funktionen er:
#******************** start taskman ********************** app.registerEvent (taskman)
p.setPollTime (1000)
Taskman for "task manager", som er en def i programmet, der administrerer alle, hvad der ikke er skærmhændelser (slut på den afspillede fil, udfyld statuslinje, send hjerteslag til Nano, …)
Når skærmen er startet, ser den sådan ud:
Her er programmet: (kan åbnes via Notesblok ++ eller Geany)
Trin 4: Hindbærdel: Autostart og tilføjelse af nye filer
Hvis du ser på programmet, kan du se, at jeg bruger nogle bash -filer:
1) Start_jukebox:
Formålet er faktisk at tænde hjemmebiografen og skifte til D. IN -indgangen (optisk input i min hjemmebiograf)
pi@raspitone:/bin $ cat start_jukebox#!/bin/bash
send SEND_ONCE jukebox KEY_POWER
søvn 7
send SEND_ONCE jukebox KEY_AUX
søvn 2
2) stop_jukebox:
For at slukke hjemmebiografen
pi@raspitone:/bin $ cat stop_jukebox
#!/bin/bash
send SEND_ONCE jukebox KEY_POWER
Disse to bash -filer kaldes af Python med kommandoen os.system
For at starte Python -scriptet lavede jeg en lille bash
pi@raspitone: ~ $ cat dem_jukebox.bash#!/bin/bash
cd /home /pi
python jukebox_gui.py
Til automatisk start i GUI-tilstand har jeg lige ændret autostart-filen 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
Tilføjelse af nye mp3 -filer:
For at tilføje nye filer foretrak jeg at lave et lille dedikeret Python -script:
ny_sang_fil.py
Jeg vil først forklare systemfilernes organisation:
Alle filerne er i /home /pi
mp3 -filer gemmes i/home/pi/Music -biblioteket
Hver kunstner har sin egen undermappe, der er vært for de relaterede mp3 -filer
pi@raspitone: ~/Music/Mike_oldfield $ ls -ltotalt 760516
-rwxr ----- 1 pi pi 2254923 juni 30 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 Vogne.mp3
I biblioteksdokumenterne kan vi finde den indbyggede liste over filer, der skal afspilles.
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å finde dataene over afspilningslister (men dette er bygget af Python -scriptet)
Det lille Python -script tilføjer de nye sange, der er gemt i musik, i list.txt efter at have formateret titlerne i UNIX -format
Her er scriptet: (kan åbnes via Notesblok ++ eller Geany)
Trin 5: Strømstyringen via Arduino Nano
Da jeg ville have noget let at starte, besluttede jeg at få det gjort af en lille nano:
Princippet:
Når du trykker på startknappen, får alle enheder strøm, nano starter (1 eller 2 sekunder) og overtager strømstyringen ved at udløse et relæ, der afbryder trykknapkontakterne.
Derefter venter Nano i 35 sekunder på at modtage hjerteslag fra Raspberry (betyder, at startprocessen er fuldført, og jukebox -programmet kører).
Så længe nano modtager hjerteslag, holder det relæet tændt (vagthund timer)
Hvis der ikke længere er noget hjerteslag (betyder, at jukebox -programmet er stoppet) venter Nano i 20 sekunder (for at være sikker på, at raspien er helt stoppet) for at frigive effektrelæet.
Jukeboxen er derefter totalt slukket
Jeg tilføjede en switch til at aktivere en input fra nano for at angive vedligeholdelsestilstand (jeg bruger jukeboxen til at administrere mine andre raspi -servere via ssh et vnc). Nano deaktiverer derefter vagthundsprocessen
Bemærkning:
input til hjerteslag fra Raspi skal trækkes ned (men 3.3V fra Raspi betragtes som et højt niveau af Nano)
Det kunne gøres med NE555, men jeg er doven og har altid nogle nano'er i min skuffe !!!!
Her er det korte C -program (kan åbnes med Notesblok ++)
Trin 6: Kablingen
Til skærmen:
Et HDMI -kabel og et USB -kabel bruges på Raspi til at drive og drive skærmen.
Til frontpanelet:
Et USB -kabel er også tilsluttet fra Raspi for at kunne uploade nye filer eller lave sikkerhedskopier.
Et USB -kabel er tilsluttet fra Nano for at få adgang til soft (for ændringer om nødvendigt)
Jeg tilslutter også en trådløs tastaturdongle på hindbær for at kunne foretage vedligeholdelse uden at bruge det eksterne USB -stik
Da Raspberry og Arduino bruges, er kablingen ret enkel.
Alt er placeret på en stripmatrixplade.
Fra hindbær 2 anvendes GPIO:
Pin22 til IR LED
Pin 27 til hjerteslag til Arduino
på Arduino
Pin 2 bruges som afbrydelsesnål til hjerterytmen fra Raspi.
Pins 3 til 5 bruges til at køre LED'erne (Start, Wdt, Vedligeholdelse).
Pin 6 er til vedligeholdelsesafbryderen.
Pin 7 er output til relæafskærmning.
Her er fritzing -filen:
Trin 7: Kassen
Jeg vil ikke beskrive meget, hvad jeg gjorde, da det afhænger af forstærkeren og de højttalere, der bruges.
Som information er hjemmebiografen placeret i bunden af kassen.
Lige over højttalerne:
1 bashøjttaler
2 mellemhøjttalere, som jeg ændrede for at indsætte dem i æsken.
På toppen:
Frontpanel med skærm, lysdioder, kontakter og USB -stik.
Træet:
Til højttalerne sidepaneler øverst og nederst brugte jeg 18 mm træplank.
Forsiden er 10 mm krydsfiner med 40 mm skruer.
For at lette kabelføring og vedligeholdelse (hvis det er nødvendigt !!!) satte jeg kredsløbet på en skuffe bag frontpanelet
For at undgå overophedning laves et stort hul i bunden af bagpanelet, og jeg sætter en 5V blæser (8 cm) på bagpanelet lige ved siden af kredsløbet.
Billedet ovenfor er bare for at give en idé.
Så det er det !!!!!!!!!
Tak fordi du læste mig
Og vi ses næste gang til nye eventyr
Anbefalede:
Sådan opsættes en Raspberry Pi og begynder at bruge den: 4 trin
Sådan opsættes en Raspberry Pi og begynder at bruge den: For fremtidens læsere er vi i 2020. Året, hvor du, hvis du er heldig at være sund og ikke er smittet af Covid-19, dig pludselig , fik mere fritid, end du nogensinde havde forestillet dig. Så hvordan kan jeg optage mig selv på en ikke for dum måde? Åh ja
En måde at bruge en inertial måleenhed?: 6 trin
En måde at bruge en inertial måleenhed?: Konteksten: Jeg bygger for sjov en robot, som jeg vil flytte autonomt inde i et hus. Det er et langt arbejde, og jeg gør trin for trin. Jeg har allerede udgivet 2 instruktioner om dette emne: en om at lave en hjulkoder en om
ANSIGTSSPORING VED AT BRUGE ARDUINO !!!: 7 trin
FACE TRACKING BRUG AF ARDUINO !!!: I en tidligere instruerbar delte jeg, hvordan du kan kommunikere mellem Arduino og Python ved hjælp af 'pyserial' modul og styre en LED. Hvis du ikke har set det, så tjek det ud her: KOMMUNIKATION MELLEM ARDUINO & PYTHON! Og hvordan du kan registrere farve o
DESINFEKTIONSMASKINSIMULERING VED AT BRUGE TINKERCAD: 6 trin
DESINFEKTIONSMASKINSIMULERING VED AT BRUGE TINKERCAD: I denne uigennemsigtige vil vi se, hvordan vi laver en simulering af desinfektionsmaskine, Contact less Automatic Sanitizer er en desinfektionsmaskine, fordi vi ikke bruger vores hænder til at betjene maskinen i stedet for nærhedens infrarøde sensor
DIY MusiLED, musik-synkroniserede lysdioder med et klik Windows & Linux-applikation (32-bit og 64-bit). Let at genskabe, let at bruge, let at transportere .: 3 trin
DIY MusiLED, musik-synkroniserede lysdioder med et klik Windows & Linux-applikation (32-bit og 64-bit). Let at genskabe, let at bruge, let at transportere .: Dette projekt hjælper dig med at forbinde 18 lysdioder (6 røde + 6 blå + 6 gule) til dit Arduino-kort og analysere din computers lydkorts realtids signaler og videresende dem til lysdioderne for at tænde dem i takt med slageffekterne (Snare, High Hat, Kick)