Indholdsfortegnelse:

Raspitone: let at bruge Jukebox: 7 trin
Raspitone: let at bruge Jukebox: 7 trin

Video: Raspitone: let at bruge Jukebox: 7 trin

Video: Raspitone: let at bruge Jukebox: 7 trin
Video: Век ЖИВИ, век УЧИСЬ! Итальянская хозяюшка показала, как они готовят МЯСО на РОЖДЕСТВО! 2024, Juli
Anonim
Raspitone: let at bruge Jukebox
Raspitone: let at bruge Jukebox

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:

Billede
Billede

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

Kablingen
Kablingen
Kablingen
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

Kassen
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: