INHOUDSOPGAWE:

Raspitone: maklik om te gebruik Jukebox: 7 stappe
Raspitone: maklik om te gebruik Jukebox: 7 stappe

Video: Raspitone: maklik om te gebruik Jukebox: 7 stappe

Video: Raspitone: maklik om te gebruik Jukebox: 7 stappe
Video: 🎉Enjoy a One-Hour Compilation of Our Top Moments From the Past Three Years. 🎞️🥳 2024, Julie
Anonim
Raspitone: maklik om te gebruik Jukebox
Raspitone: maklik om te gebruik Jukebox

Hallo, my volgende projek is, soos ek vroeër gedoen het, 'n nie baie nuttige projek:

Dit is 'n jukebox gebaseer op 'n Framboos 3 B+

Ek weet, so iets kan maklik gedoen word met 'n slimfoon en 'n Bluetooth -luidspreker.

Maar vir my projek het ek twee harde voorvereistes gehad:

Ek wou iets "vintage" maak.

En oor die algemeen, aangesien my vrou beslis hopeloos is vir rekenaar of bluetooth of enigiets anders uit die 21ste eeu (en selfs 20ste), moes ek iets baie eenvoudig doen om te gebruik ………..

Die spesifikasies was dus soos volg:

Een drukknoppie om die masjien te begin

'N Aanraakskerm (baie eenvoudig) om die musiek te bestuur.

'N Enkele tik op die skerm om die masjien te stop.

En om 'n goeie klank te hê ………..

Voorrade

Hiervoor gebruik ek:

1 Framboos 3 B+

1 ou tuisbioskoop wat nutteloos was as gevolg van OOS -DVD -leser ('n ou Samsung 2.1 met 'n woofer en 2 luidsprekers wat ek aangepas het om by die boks te pas)

1 HIFIBERRY DIGI+ -bord (met optiese uitset vir die kragversterker)

1 kapasitiewe aanraakskerm 7 (myne is maklik vir frambose met HDMI -ingang en word via USB aangedryf, maar enige HDMI -aanraakskerm moet OK wees)

1 kragvoorsiening 5V 5A

1 aflosskerm

1 Arduino nano om die krag AAN/UIT -proses te bestuur

1 IR het gelei tot die tuisbioskoop (gelei deur 'n 2N2222 NPN -transistor)

1 IR -ontvanger (vir die leer van die IR -kodes van die projek, kry ek myne van 'n ou multimedia -hardeskyf met afstandsbediening)

3 led's

1 skakelaar vir onderhoudsmodus

1 skakelaar om aan die arduino te werk (tydens die oplaai word die arduino herstel)

sommige JST- en Dupont -verbindings

En vir die boks

Hout en laaghout (maar ek sal nie die maak van die boks diep beskryf nie). net om te sê dat 10 mm laaghout en 18 mm hout met betrekking tot die boomer in die boks verpligtend is as u nie wil sien hoe die Jukebox die sitkamer oorsteek terwyl u speel nie !!!!

Stap 1: Framboosdeelbeskrywing:

Die Raspi moet verskillende dinge bestuur:

1) die opdragte na die tuisbioskoop (via IR -afstandsbediening)

2) die musieklêers

3) die aanraakskerm

4) Die hartklop van die Arduino (wat die Wdt bestuur (waghondtimer))

Ek het begin met 'n Raspbian -strech -verspreiding op 'n 16 G SD -kaart (aangesien ons slegs lêers van die SD -kaart sal lees, is die gebruik van 'n HDD nie nodig nie). Ek sal nie tyd hieraan bestee nie, aangesien die web daaroor vol les is.

Kom ons kyk na die verskillende dele in die volgende stappe …

Stap 2: Die IR -afstandskodes

Aangesien ek nie die kringplan van die tuisbioscoop kon vind nie, het ek besluit om dit via afstandsopdragte te bestuur

Die eerste stap wat ek moes voltooi, was om die kodes van die afstandsbediening van die tuisbioscoop Raspi te leer ken. Daarom het ek die baie goeie tuto in Instructables van Austin Stanton IR -kodes gebruik

Ek het 'n paar verskille gehad, waarskynlik as gevolg van 'n nuwe weergawe, aangesien die instruksies redelik oud is; die hardware.conf -lêer bestaan nie meer nie (ek het dit ten minste nie gevind nie)

Dit lyk ook asof die transistor wat in die tuto gebruik word, 'n PNP -transistor is; ek het vir my 'n 2N2222 gebruik wat NPN is, maar die resultaat is dieselfde. (Behalwe die bekabeling !!!!!!!!)

Die pen -opdrag word gegee in /boot/config.txt:

#autorisation de lirc le 2019-07-08dtoverlay = lirc-rpi, gpio_out_pin = 22, gpio_in_pin = 23

Die IR -LED sal so gekoppel wees aan pin22 van die Raspi.

Een belangrike opmerking: as u die kodes vir Raspi leer, is dit verpligtend om die sleutelwoorde in die opdrag te gebruik

irrecord-lys-naamruimte

Hier is die lêer wat ek vir my jukebox gebou het:

pi@raspitone:/etc/lirc $ cat lircd.conf

# Neem die tyd om hierdie lêer te voltooi, soos beskryf in # https://sourceforge.net/p/lirc-remotes/wiki/Check… # en maak dit beskikbaar vir ander deur dit na # # te stuur

# Hierdie konfigurasielêer is outomaties gegenereer

# gebruik lirc -0.9.4c (standaard) op Do 9 Mei 17:33:37 2019 # Opdragreël gebruik: -d /dev /lirc0 /root/lircd.conf

# Kernweergawe (uname -r): 4.14.98 -v7+ # # Naam op afstand (vanaf konfigurasielêer): jukebox

# Merk van afgeleë toestel, die ding wat u in u hand hou: # Afstandsbedieningstoestel model nr:

# Gegee url vir eksterne toestelle:

# Het 'n afgeleë toestel 'n saamgevangde opneemapparaat e. g., a

# usb -dongle?:

# Vir saamgestelde USB -toestelle: usb -verkoper -ID, produk -ID

# en toestelstring (gebruik dmesg of lsusb):

# Tipe toestel beheer

# (TV, video, klank, DVD, satelliet, kabel, HTPC, …):

# Toestelle wat deur hierdie afstandbeheer beheer word:

begin op afstand

naam jukebox

stukkies 16

vlae SPACE_ENC | CONST_LENGTH

eps 30

aeps 100

kop 4470 4496

een 542 1693

nul 542 581

ptrail 553

pre_data_bits 16

pre_data 0xC2CA

gaping 107863

toggle_bit_mask 0x0

frekwensie 38000

kodes begin

KEY_POWER 0x807F

KEY_AUX 0x8877

KEY_VOLUMEUP 0xCC33

KEY_VOLUMEDOWN 0xDC23

eindkodes

einde afstandsbediening

Soos u kan sien, benodig ek net 4 opdragte om die Home Cinema te bestuur

Krag (AAN/UIT)

AUX => om oor te skakel na die optiese ingangskanaal (aangesien die HC altyd op DVD -leser begin)

En volume +/-

Die verwante opdragte word uitgevoer via die LIRC -opdragte:

byvoorbeeld: "stuur SEND_ONCE jukebox KEY_VOLUMEUP terug"

Stap 3: Hoofprogram

Die hoofprogram is in Python geskryf:

Aangesien ek nuut is in Python, dink ek dat daar baie verbeterings kan wees, maar dit werk …

Die spesifikasies:

1) bestuur die grafiese skerm:

Hiervoor het ek APPJAR gebruik, wat TKINTER is, maar beskaafd vir studente (my geval), dit beteken baie makliker om te gebruik, waarskynlik met minder moontlikhede, maar dit was genoeg vir my doel.

2) speel die mp3 -lêers:

Ek het mplayer vir luislang gebruik.

3) genereer ewekansige getalle vir speel in die skuifmodus:

Aangesien ek nie elke kwartaal dieselfde liedjie wou hoor nie, het ek 'n klein program opgestel om te kyk of die nommer nie in die x vorige nommerslys voorkom nie (x afhangende van die lengte van die snitlys).

Die randint -funksie in luislang is so ver as wat ek gesien het, nie so 'ewekansig' nie.

4) stuur die 'hartklop' na die Arduino

5) bestuur lêerspeler:

Aangesien Mplayer asynchroon is, is daar geen manier om Python te weet wanneer dit klaar is nie (ten minste het ek nie 'n eenvoudige manier gevind nie)

Om dit op te los, gebruik ek die mplayer -opdragte met die lengte van die lêer en die vordering in die huidige lêer

Vir beide 4 en 5 het ek die moontlikheid van Appjar gebruik om 'n periodieke taak te genereer (aangesien appjar 'n gebeurtenisprogram is, is dit 'n manier om 'n periodieke gebeurtenis te skep). die funksie is:

#******************** begin taakman ********************** app.registerEvent (taakman)

p.setPollTime (1000)

Taakman vir 'taakbestuurder', 'n defek in die program wat al die gebeurtenisse wat nie op die skerm is nie, bestuur (einde van die gespeelde lêer, vul die vorderingsbalk in, stuur 'n hartklop na Nano, …)

Nadat die skerm begin het, lyk dit so:

Beeld
Beeld

Hier is die program: (kan oopgemaak word via Notepad ++ of Geany)

Stap 4: Framboosdeel: begin outomaties en voeg nuwe lêers by

As u na die program kyk, kan u sien dat ek 'n paar bash -lêers gebruik:

1) Start_jukebox:

Die doel is eintlik om die tuisbioscoop aan te skakel en oor te skakel na die D. IN -invoer (optiese insette in my tuisbioskoop)

pi@raspitone:/bin $ cat start_jukebox#!/bin/bash

stuur SEND_ONCE jukebox KEY_POWER

slaap 7

stuur SEND_ONCE jukebox KEY_AUX

slaap 2

2) stop_jukebox:

Om die tuisbioskoop uit te skakel

pi@raspitone:/bin $ cat stop_jukebox

#!/bin/bash

stuur SEND_ONCE jukebox KEY_POWER

Hierdie twee bash -lêers word deur Python genoem met die opdrag os.system

Om die Python -script te begin, het ek 'n klein bash gemaak

pi@raspitone: ~ $ cat dem_jukebox.bash#!/bin/bash

cd /huis /pi

python jukebox_gui.py

Vir die outomatiese begin in die GUI-modus, het ek die outostart-lêer pas verander in/etc/xdg/lxsession/LXDE-pi

pi@raspitone:/etc/xdg/lxsession/LXDE-pi $ cat autostart@lxpanel --profiel LXDE-pi

@pcmanfm --desktop --profiel LXDE-pi

@xscreensaver -geen -spat

@lxterminal --command = "dem_jukebox.bash"

punt-rpi

Voeg nuwe mp3 -lêers by:

Om nuwe lêers by te voeg, het ek verkies om 'n klein toegewyde Python -script te maak:

new_song_file.py

Ek sal eers die organisasie van die stelsellêers verduidelik:

Al die lêers is in /home /pi

mp3 -lêers word in die/home/pi/musiek -gids gestoor

Elke kunstenaar het sy eie subgids wat die verwante mp3 -lêers huisves

pi@raspitone: ~/Music/Mike_oldfield $ ls -altesaam 760516

-rwxr ----- 1 pi pi 2254923 30 Junie 2017 A_New_Beginning.mp3

-rwxr ----- 1 pi pi 2691736 30 Junie 2017 Aankoms.mp3

-rwxr ----- 1 pi pi 8383244 30 Junie 2017 Hemelvaart.mp3

-rwxr ----- 1 pi pi 5410816 30 Junie 2017 Blue_Night.mp3

-rwxr ----- 1 pi pi 13125199 30 Junie 2017 Castaway_ (Instrumental).mp3

-rwxr ----- 1 pi pi 12903583 30 Junie 2017 Castaway.mp3

-rwxr ----- 1 pi pi 2969869 30 Junie 2017 Celt.mp3

-rwxr ----- 1 pi pi 9047745 30 Junie 2017 Chariots_ (instrumentaal).mp3

-rwxr ----- 1 pi pi 9403263 30 Junie 2017 Chariots.mp3

In die gids Dokumente kan ons die ingeboude lys lêers vind wat gespeel moet word.

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

Ons kan ook die data van die snitlyste vind (maar dit word gebou deur die Python -script)

Die klein Python -skrif voeg die nuwe liedjies, gestoor in musiek, in die list.txt by nadat die titels in UNIX -formaat geformateer is

Hier is die script: (kan oopgemaak word via Notepad ++ of Geany)

Stap 5: Die kragbeheer via Arduino Nano

Omdat ek iets maklik wou begin, het ek besluit om dit deur 'n klein nano te laat doen:

Die beginsel:

As u op die startknoppie druk, word alle toestelle aangeskakel, die nano begin (1 of 2 sekondes) en neem die kragbeheer oor deur 'n relais te aktiveer wat die drukknopkontakte vermy.

Dan wag Nano 35 sekondes om die hartklop van Framboos te ontvang (beteken dat die beginproses voltooi is en die jukebox -program loop).

Solank nano die hartklop ontvang, hou dit die aflos aan (Watch dog timer)

As daar geen hartklop meer is nie (beteken dat die jukebox -program gestop is) wag Nano 20 sekondes (om seker te maak dat die raspi heeltemal gestop is) om die kragrelais los te laat.

Die jukebox word dan heeltemal afgeskakel

Ek het 'n skakelaar bygevoeg om die invoer van die nano te aktiveer om die onderhoudsmodus aan te dui (ek gebruik die jukebox om my ander raspi -bedieners via ssh et vnc te bestuur). Nano deaktiveer dan die waghondproses

Opmerking:

die inset vir die hartklop van Raspi moet afgetrek word (maar die 3.3V van Raspi word deur Nano as 'n hoë vlak beskou)

Dit kan met NE555 gedoen word, maar ek is lui en het altyd nano's in my laai !!!!

Hier is die kort C -program (kan oopgemaak word met Notepad ++)

Stap 6: Die kabels

Die kabels
Die kabels
Die kabels
Die kabels

Vir die skerm:

'N HDMI -kabel en 'n USB -kabel word op Raspi gebruik om die skerm aan te dryf en aan te dryf.

Vir die voorpaneel:

'N USB -kabel is ook van die Raspi gekoppel om nuwe lêers te kan oplaai of rugsteun te maak.

'N USB -kabel is van die Nano gekoppel om toegang tot die sagteware te kry (indien nodig, vir aanpassings)

Ek koppel ook 'n draadlose sleutelbord -dongle op die framboos om onderhoud te kan doen sonder om die eksterne USB -prop te gebruik

Aangesien Framboos en Arduino gebruik word, is die bekabeling redelik eenvoudig.

Alles is op 'n strookmatriksbord geleë.

Van framboos 2 word GPIO gebruik:

Pin22 vir IR LED

Speld 27 vir hartklop na Arduino

op Arduino

Speld 2 word gebruik as 'n onderbrekingspen vir die hartklop van Raspi.

Spelde 3 tot 5 word gebruik vir die bestuur van die LED's (Start, Wdt, Maintenance).

Speld 6 is vir die onderhoudskakelaar.

Speld 7 word na die aflosskerm gestuur.

Hier is die fritzing file:

Stap 7: Die boks

Die boks
Die boks

Ek sal nie veel beskryf wat ek gedoen het nie, want dit hang af van die versterker en die luidsprekers wat gebruik word.

As inligting is die tuisbioskoop onder in die boks.

Net oor die sprekers:

1 woofer

2 medium luidsprekers wat ek verander het om dit in die boks te plaas.

Bo op:

Die voorpaneel met die skerm, die LED's, die skakelaars en die USB -proppe.

Die hout:

Vir die luidsprekers, die sypanele aan die bokant en onderkant het ek 18 mm houtplank gebruik.

Die voorkant is 10 mm laaghout met 40 mm skroewe.

Om die bekabeling en die onderhoud te vergemaklik (indien nodig !!!) Plaas ek die stroombane op 'n laai agter die voorpaneel

Om oorverhitting te voorkom, word 'n groot gat aan die onderkant van die agterpaneel gemaak en ek plaas 'n 5V -waaier (8 cm) op die agterpaneel net langs die stroombaan.

Die prent hierbo is net 'n idee.

So, dit is dit !!!!!!!!!

Dankie dat u my gelees het

En tot volgende keer vir nuwe avonture

Aanbeveel: