Innehållsförteckning:
- Tillbehör
- Steg 1: Beskrivning av hallon:
- Steg 2: IR -fjärrkoder
- Steg 3: Huvudprogram
- Steg 4: Hallon del: autostart och Lägg till nya filer
- Steg 5: Energihanteringen Via Arduino Nano
- Steg 6: Kablarna
- Steg 7: Boxen
Video: Raspitone: lätt att använda Jukebox: 7 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:41
Hej, mitt nästa projekt är, som jag brukar göra, ett inte särskilt användbart projekt:
Detta är en jukebox baserad på en Raspberry 3 B+
Jag vet, något liknande kan enkelt göras med en smartphone och en Bluetooth -högtalare.
Men för mitt projekt hade jag två hårda förutsättningar:
Jag ville göra något "vintage".
Och totalt sett, med tanke på det faktum att min dam är definitivt hopplös för dator eller bluetooth eller något annat från 2000 -talet, (och till och med 20: e), var jag tvungen att göra något väldigt enkelt att använda ………..
Så, specifikationerna var följande:
En enda tryckknapp för att starta maskinen
En pekskärm (mycket enkel) för att hantera musiken.
En knapptryckning på skärmen för att stoppa maskinen.
Och för att få ett bra ljud ………..
Tillbehör
Till detta använde jag:
1 Hallon 3 B+
1 gammal hemmabio som var värdelös på grund av DVD -läsare OOS (en gammal Samsung 2.1 med en bashögtalare och 2 högtalare som jag modifierade för att passa till boxen)
1 HIFIBERRY DIGI+ -kort (med optisk utgång för effektförstärkaren)
1 kapacitiv pekskärm 7 (min är Makeasy för hallon med HDMI -ingång och drivs via USB men vilken HDMI -pekskärm som helst ska vara OK)
1 strömförsörjning 5V 5A
1 reläsköld
1 Arduino nano för att hantera strömmen PÅ/AV
1 IR ledde för att driva hemmabio (ledd drivs av en 2N2222 NPN -transistor)
1 IR -mottagare (för IR -kodens inlärning av projektet får jag min från en gammal multimediahårddisk med fjärrkommando)
3 led
1 omkopplare för underhållsläge
1 switch för arbete på arduino (under uppladdningen återställs arduino)
några JST- och Dupont -kontakter
Och för lådan
Trä och plywood (men jag kommer inte att djupt beskriva tillverkningen av lådan). bara för att säga att när det gäller boomer inuti lådan är 10 mm plywood och 18 mm trä obligatoriskt om du inte vill se Jukeboxen korsa vardagsrummet medan du spelar !!!!
Steg 1: Beskrivning av hallon:
Raspi måste hantera olika saker:
1) kommandon till hemmabio (via IR -fjärrkontroll)
2) musikfilerna
3) pekskärmen
4) Hjärtslag till Arduino (som hanterar Wdt (vakthund timer))
Jag började från en Raspbian strech -distribution på ett 16 G SD -kort (Eftersom vi bara kommer att läsa filer från SD -kortet är det inte nödvändigt att använda en hårddisk). Jag kommer inte att spendera tid på den här delen eftersom webben är full av instruktioner om det..
Låt oss se de olika delarna i nästa steg….
Steg 2: IR -fjärrkoder
Eftersom jag inte kunde hitta kretsplanen för hemmabio, bestämde jag mig för att köra den via fjärrkommandon
Det första steget jag var tvungen att slutföra var att lära mig Raspi koder för fjärrkommandot för hemmabio. För det använde jag den mycket bra handledningen i Instructables från Austin Stanton IR -koder
Jag hade vissa skillnader, förmodligen på grund av ny version eftersom instruktionerna är ganska gamla, filen hardware.conf finns inte längre (åtminstone hittade jag den inte)
Det verkar också som att transistorn som används i tuto är en PNP -transistor, för min del använde jag en 2N2222 som är NPN men resultatet är detsamma. (Förutom kablage !!!!!!!!)
Stifttilldelningen ges i /boot/config.txt:
#autorisation de lirc le 2019-07-08dtoverlay = lirc-rpi, gpio_out_pin = 22, gpio_in_pin = 23
IR -lysdioden kommer att vara så ansluten till pin22 på Raspi.
En viktig anmärkning: när man lär sig koderna till Raspi är det obligatoriskt att använda nyckelorden som anges i kommandot
irrecord --list-namespace
Här är filen jag byggde för min jukebox:
pi@raspitone:/etc/lirc $ cat lircd.conf
# Ta dig tid att slutföra den här filen enligt beskrivningen i # https://sourceforge.net/p/lirc-remotes/wiki/Check… # och gör den tillgänglig för andra genom att skicka den till # #
# Denna konfigurationsfil genererades automatiskt
# använder lirc -0.9.4c (standard) tors 9 maj 17:33:37 2019 # Kommandorad används: -d /dev /lirc0 /root/lircd.conf
# Kärnversion (uname -r): 4.14.98 -v7+ # # Fjärranamn (från konfigurationsfilen): jukebox
# Märke på fjärrenhet, det du håller i handen: # Fjärrenhet modell nr:
# Fjärranslutningsinformation:
# Har fjärrenheten en medföljande inspelningsenhet e. g., a
# usb -dongel?:
# För medföljande USB -enheter: usb -leverantörs -id, produkt -id
# och enhetssträng (använd dmesg eller lsusb):
# Typ av enhet kontrollerad
# (TV, video, ljud, DVD, satellit, kabel, HTPC, …):
# Enheter som styrs av den här fjärrkontrollen:
börja fjärrkontrollen
namn jukebox
bitar 16
flaggor SPACE_ENC | CONST_LENGTH
eps 30
aeps 100
rubrik 4470 4496
en 542 1693
noll 542 581
ptrail 553
pre_data_bits 16
pre_data 0xC2CA
gap 107863
toggle_bit_mask 0x0
frekvens 38000
börja koder
KEY_POWER 0x807F
KEY_AUX 0x8877
KEY_VOLUMEUP 0xCC33
KEY_VOLUMEDOWN 0xDC23
slutkoder
avsluta fjärrkontrollen
Som du kan se behöver jag bara 4 kommandon för att köra hemmabio
Ström (PÅ/AV)
AUX => för att växla till den optiska ingångskanalen (eftersom HC alltid startar på DVD -läsare)
Och volym +/-
De relaterade kommandona körs via LIRC -kommandona:
till exempel: "skicka SEND_ONCE jukebox KEY_VOLUMEUP"
Steg 3: Huvudprogram
Huvudprogrammet är skrivet i Python:
Eftersom jag är ny i Python antar jag att det finns många förbättringar som kan göras, men det körs ….
Specifikationerna:
1) hantera den grafiska skärmen:
För detta använde jag APPJAR som är TKINTER men civiliserad för studenter (mitt fall), det betyder mycket lättare att använda, förmodligen med mindre möjligheter, men det var tillräckligt för mitt syfte.
2) spela upp mp3 -filer:
Jag använde mplayer för python.
3) generera slumpmässiga nummer för att spela i blandningsläge:
Eftersom jag inte ville höra samma låt varje kvartal, byggde jag ett litet program för att kontrollera om numret inte fanns i listan x föregående nummer (x beroende på spellistans längd).
Randint -funktionen i python är inte så "slumpmässig" så långt jag såg.
4) skicka "hjärtslaget" till Arduino
5) hantera filspelare:
Eftersom Mplayer är asynkron, när filen startas finns det inget sätt att veta för Python när den är klar (åtminstone hittade jag inte ett enkelt sätt)
För att lösa det använde jag mplayer -kommandona som gav filens längd och framstegen i den aktuella filen
För både 4 och 5 använde jag möjligheten som Appjar gav för att generera en periodisk uppgift (eftersom appjar är ett händelseprogram är detta ett sätt att skapa en periodisk händelse). funktionen är:
#******************** starta taskman ********************** app.registerEvent (taskman)
p.setPollTime (1000)
Uppgiftsman för "uppgiftshanteraren" som är en def i programmet som hanterar alla vad som inte är skärmhändelser (slutet av den spelade filen, fylla i förloppsindikator, skicka hjärtslag till Nano, …)
När skärmen väl startat ser ut så här:
Här är programmet: (kan öppnas via Anteckningar ++ eller Geany)
Steg 4: Hallon del: autostart och Lägg till nya filer
Om du tittar på programmet kan du se att jag använder några bash -filer:
1) Start_jukebox:
Faktum är att syftet är att slå på hemmabio och växla till D. IN -ingången (optisk ingång i min hemmabio)
pi@raspitone:/bin $ cat start_jukebox#!/bin/bash
skicka SEND_ONCE jukebox KEY_POWER
sova 7
skicka SEND_ONCE jukebox KEY_AUX
sova 2
2) stop_jukebox:
För att stänga av hemmabio
pi@raspitone:/bin $ cat stop_jukebox
#!/bin/bash
skicka SEND_ONCE jukebox KEY_POWER
Dessa två bash -filer anropas av Python med kommandot os.system
För att starta Python -skriptet gjorde jag en liten bash
pi@raspitone: ~ $ cat dem_jukebox.bash#!/bin/bash
cd /home /pi
python jukebox_gui.py
För automatisk start i GUI-läge har jag precis ändrat 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
Lägga till nya mp3 -filer:
För att lägga till nya filer föredrog jag att göra ett litet dedikerat Python -skript:
new_song_file.py
Jag kommer först att förklara systemfilernas organisation:
Alla filer finns i /home /pi
mp3 -filer lagras i/home/pi/Musik -katalogen
Varje artist har sin egen underkatalog som är värd för de relaterade mp3 -filerna
pi@raspitone: ~/Music/Mike_oldfield $ ls -totalt 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 Vagnar.mp3
I katalogen Dokument kan vi hitta den inbyggda listan över filer att spela.
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 också hitta spellistans data (men detta är byggt av Python -skriptet)
Det lilla Python -manuset lägger till de nya låtarna, sparade i musik, i list.txt efter att ha formaterat titlarna i UNIX -format
Här är skriptet: (kan öppnas via Anteckningar ++ eller Geany)
Steg 5: Energihanteringen Via Arduino Nano
Eftersom jag ville ha något lätt att börja, bestämde jag mig för att göra det gjort av en liten nano:
Principen:
När du trycker på startknappen är alla enheter drivna, nano startar (1 eller 2 sekunder) och tar över energihanteringen genom att utlösa ett relä som shuntar tryckknappens kontakter.
Därefter väntar Nano i 35 sekunder på att få hjärtslaget från Hallon (betyder att startprocessen är klar och jukebox -programmet körs).
Så länge nano tar emot hjärtslaget håller den reläet på (vakthundstimer)
Om ingen hjärtslag längre (betyder att jukebox -programmet är stoppat) väntar Nano i 20 sekunder (för att vara säker på att raspin är helt stoppad) för att släppa strömreläet.
Jukeboxen är sedan helt avstängd
Jag lade till en switch för att aktivera en ingång från nano för att ange underhållsläge (jag använder jukeboxen för att hantera mina andra raspiservrar via ssh et vnc). Nano inaktiverar sedan vakthundsprocessen
Anmärkning:
ingången för hjärtslaget från Raspi måste dras ner (men 3.3V från Raspi anses vara hög nivå av Nano)
Det kan göras med NE555 men jag är lat och har alltid några nano i lådan !!!!
Här är det korta C -programmet (kan öppnas med Anteckningar ++)
Steg 6: Kablarna
För skärmen:
En HDMI -kabel och en USB -kabel används på Raspi för att driva och driva skärmen.
För frontpanelen:
En USB -kabel är också ansluten från Raspi för att kunna ladda upp nya filer eller göra säkerhetskopior.
En USB -kabel är ansluten från Nano för att kunna komma åt soften (för ändringar om det behövs)
Jag ansluter också en trådlös tangentbordsdongel på hallon för att kunna utföra underhåll utan att använda den externa USB -kontakten
Eftersom Raspberry och Arduino används är kablarna ganska enkla.
Allt finns på en bandmatrisskiva.
Från hallon 2 används GPIO:
Pin22 för IR LED
Pin 27 för hjärtslag till Arduino
på Arduino
Pin 2 används som avbrottsstift för hjärtslaget från Raspi.
Stiften 3 till 5 används för att driva lysdioderna (Start, Wdt, underhåll).
Stift 6 är för underhållsbrytaren.
Stift 7 matas ut till reläskärm.
Här är fritzing -filen:
Steg 7: Boxen
Jag kommer inte att beskriva mycket vad jag gjorde eftersom det beror på effektförstärkaren och de högtalare som används.
Som information finns hemmabio i botten av lådan.
Strax över högtalarna:
1 bashögtalare
2 mellanhögtalare, som jag modifierade för att sätta in dem i lådan.
På toppen:
Frontpanelen med skärmen, lysdioderna, switcharna och USB -kontakterna.
Skogen:
För högtalarna, sidopanelerna topp och botten använde jag 18 mm träplanka.
Framsidan är 10 mm plywood med 40 mm skruvar.
För att underlätta kablage och underhåll (vid behov !!!) lägger jag kretsen på en låda bakom den främre panelen
För att undvika överhettning görs ett stort hål på undersidan av den bakre panelen och jag sätter en 5V fläkt (8 cm) på den bakre panelen precis bredvid kretsen.
Bilden ovan är bara för att ge en idé.
Så det är det !!!!!!!!!
Tack för att du läste mig
Och vi ses nästa gång för nya äventyr
Rekommenderad:
Neopixel Ws2812 Rainbow LED-glöd med M5stick-C - Köra Rainbow på Neopixel Ws2812 Använda M5stack M5stick C Använda Arduino IDE: 5 steg
Neopixel Ws2812 Rainbow LED-glöd med M5stick-C | Köra Rainbow på Neopixel Ws2812 Använda M5stack M5stick C Använda Arduino IDE: Hej killar i denna instruktioner kommer vi att lära oss hur man använder neopixel ws2812 lysdioder eller ledremsor eller ledmatris eller ledring med m5stack m5stick-C utvecklingsbräda med Arduino IDE och vi kommer att göra ett regnbågsmönster med det
DIY MusiLED, musiksynkroniserade lysdioder med ett klick Windows och Linux-applikation (32-bitars och 64-bitars). Lätt att återskapa, lätt att använda, lätt att porta .: 3 steg
DIY MusiLED, musiksynkroniserade lysdioder med ett klick Windows och Linux-applikation (32-bitars och 64-bitars). Lätt att återskapa, lätt att använda, lätt att porta .: Detta projekt hjälper dig att ansluta 18 lysdioder (6 röda + 6 blå + 6 gula) till ditt Arduino-kort och analysera datorns ljudkortets realtidsignaler och vidarebefordra dem till lysdioderna för att tända dem enligt slageffekterna (Snare, High Hat, Kick)
Övertyga dig själv om att bara använda en 12V-till-AC-omriktare för LED-ljussträngar istället för att koppla om dem för 12V: 3 steg
Övertyga dig själv om att bara använda en 12V-till-AC-linjeomvandlare för LED-ljussträngar istället för att koppla om dem för 12V: Min plan var enkel. Jag ville klippa upp en väggdriven LED-ljussträng i bitar och sedan dra om den för att gå av 12 volt. Alternativet var att använda en kraftomvandlare, men vi vet alla att de är fruktansvärt ineffektiva, eller hur? Höger? Eller är de det?
Att använda Parallax Basic Stamp II för att ringa en dörrklocka på distans: 4 steg (med bilder)
Att använda Parallax Basic Stamp II för att ringa en dörrklocka på distans: Problemet? En hund som blir alldeles för upphetsad när dörrklockan ringer. Lösningen? Ring på dörren vid slumpmässiga tillfällen när ingen är där, och ingen svarar på den, för att motkonditionera hunden - för att bryta föreningen som en ringande dörrklocka e
Programmera din dator att stängas av automatiskt genom att ange vilken tid du vill att den ska göra det: 4 steg
Programmera din dator för att stänga av automatiskt genom att ange vilken tid du vill att den ska göra det: hej, det är en annan instruktion som tagits från mitt dagliga liv … förra gången var jag tvungen att ladda ner massor av programvara till min dator och jag var tvungen att låta den ladda ner över natten ville jag inte ha datorn påslagen hela natten efter att jag hade laddat ner och vid