Turinys:

Raspitone: paprasta naudoti „Jukebox“: 7 žingsniai
Raspitone: paprasta naudoti „Jukebox“: 7 žingsniai

Video: Raspitone: paprasta naudoti „Jukebox“: 7 žingsniai

Video: Raspitone: paprasta naudoti „Jukebox“: 7 žingsniai
Video: На каком языке лучше звучит?🔥 2024, Lapkritis
Anonim
Raspitone: paprasta naudoti „Jukebox“
Raspitone: paprasta naudoti „Jukebox“

Sveiki, kitas mano projektas, kaip ir anksčiau, yra nelabai naudingas projektas:

Tai „Jukebox“, pagrįsta „Raspberry 3 B+“

Žinau, kažką panašaus galima lengvai padaryti naudojant išmanųjį telefoną ir „Bluetooth“garsiakalbį.

Tačiau mano projektui buvo dvi sunkios sąlygos:

Norėjau padaryti kažką „vintažinio“.

Ir apskritai, atsižvelgiant į tai, kad mano ponia yra visiškai beviltiška naudotis kompiuteriu ar „Bluetooth“ar bet kuo kitu XXI amžiuje (ir net 20 -ame), aš turėjau padaryti labai paprastą naudojimą ………

Taigi, specifikacijos buvo tokios:

Vienu mygtuko paspaudimu mašina paleidžiama

Jutiklinis ekranas (labai paprastas) muzikai valdyti.

Vienu paspaudimu ekrane sustabdysite mašiną.

Ir kad būtų geras garsas ………..

Prekės

Tam aš naudojau:

1 Avietė 3 B+

1 senas namų kinas, kuris buvo nenaudingas dėl DVD skaitytuvo OOS (senas „Samsung 2.1“su žemų dažnių garsiakalbiu ir 2 garsiakalbiais, kuriuos pakeičiau, kad tilptų į dėžutę)

1 HIFIBERRY DIGI+ plokštė (su maitinimo stiprintuvo optine išvestimi)

1 talpinis jutiklinis ekranas 7 colių (mano „Makeasy for Averes“su HDMI įvestimi ir maitinamas per USB, bet bet koks HDMI jutiklinis ekranas turi būti tinkamas)

1 maitinimo šaltinis 5V 5A

1 relės skydas

1 „Arduino nano“maitinimo įjungimo/išjungimo procesui valdyti

1 IR paskatino valdyti namų kiną (vadovaujamas 2N2222 NPN tranzistoriaus)

1 IR imtuvas (IR kodų mokymosi projekto daliai aš gaunu iš seno daugialypės terpės standžiojo disko su nuotoline komanda)

3 ledai

1 priežiūros režimo jungiklis

1 jungiklis, skirtas dirbti su arduino (įkėlimo metu arduino iš naujo nustatomas)

kai kurios JST ir Dupont jungtys

Ir dėl dėžutės

Mediena ir fanera (bet aš giliai neaprašysiu dėžutės gamybos). Tiesiog norėčiau pasakyti, kad dėl boomerio dėžutės viduje 10 mm fanera ir 18 mm mediena yra privalomos, jei nenorite matyti „Jukebox“, kertančio svetainę žaidžiant !!!!

1 žingsnis: aviečių dalies aprašymas:

„Raspi“turi valdyti įvairius dalykus:

1) komandos į namų kiną (per IR nuotolinio valdymo pultą)

2) muzikos failai

3) jutiklinis ekranas

4) Arduino širdies plakimas (kuris valdo Wdt (laikrodžio šuns laikmatis))

Aš pradėjau nuo „Raspbian strech“paskirstymo 16 G SD kortelėje (Kadangi mes nuskaitysime tik failus iš SD kortelės, HDD naudoti nebūtina). Negaišiu laiko šiai daliai, nes žiniatinklyje pilna pamokų apie tai.

Kituose žingsniuose pažiūrėkime skirtingas dalis….

2 žingsnis: IR nuotoliniai kodai

Kadangi negalėjau rasti namų kino grandinės plano, nusprendžiau jį valdyti nuotolinėmis komandomis

Pirmas žingsnis, kurį turėjau atlikti, buvo išmokti Raspi namų kino nuotolinio valdymo pulto kodus. Tam panaudojau labai gerą pamoką „Instructables“iš Austino Stantono IR kodų

Turėjau tam tikrų skirtumų, tikriausiai dėl naujos versijos, nes instrukcijos yra gana senos, failas hardware.conf nebeegzistuoja (bent jau aš jo neradau)

Taip pat atrodo, kad pamokoje naudojamas tranzistorius yra PNP tranzistorius, aš naudoju 2N2222, kuris yra NPN, bet rezultatas yra tas pats. (Išskyrus kabelius !!!!!!!!)

Smeigtuko priskyrimas pateiktas /boot/config.txt:

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

IR šviesos diodas bus taip prijungtas prie „Raspi“kaiščio22.

Viena svarbi pastaba: mokantis Raspi kodų privaloma naudoti komandoje išvardytus raktinius žodžius

irrecord --list-namespace

Čia yra failas, kurį sukūriau savo „Jukebox“:

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

# Skirkite laiko užbaigti šį failą, kaip aprašyta # https://sourceforge.net/p/lirc-remotes/wiki/Check… # ir padarykite jį prieinamą kitiems, nusiųsdami jį adresu # #

# Šis konfigūracijos failas buvo sukurtas automatiškai

# using lirc -0.9.4c (default) on Thu May 9 May 17:33:37 2019 # Naudojama komandinė eilutė: -d /dev /lirc0 /root/lircd.conf

# Branduolio versija (uname -r): 4.14.98 -v7+ # # Nuotolinis pavadinimas (kaip konfigūracijos failo): „jukebox“

# Nuotolinio įrenginio prekės ženklas, kurį laikote rankoje: # Nuotolinio įrenginio modelis Nr.

# Nuotolinio įrenginio informacijos URL:

# Ar nuotolinis įrenginys turi pridedamą fiksavimo įrenginį, pvz. g., a

# usb raktas?:

# Pridedami USB įrenginiai: USB tiekėjo ID, produkto ID

# ir įrenginio eilutė (naudokite dmesg arba lsusb):

# Valdomo įrenginio tipas

# (Televizorius, vaizdo grotuvas, garso įrašas, DVD, palydovas, kabelis, HTPC, …):

# Prietaisas (-ai), valdomas (-i) šiuo nuotolinio valdymo pultu:

pradėti nuotoliniu būdu

pavadinimą „jukebox“

bitai 16

vėliavos SPACE_ENC | CONST_LENGTH

eps 30

aep 100

antraštė 4470 4496

vienas 542 1693

542. 581

553

16

išankstiniai duomenys 0xC2CA

tarpas 107863

toggle_bit_mask 0x0

dažnis 38000

pradėti kodus

KEY_POWER 0x807F

KEY_AUX 0x8877

KEY_VOLUMEUP 0xCC33

KEY_VOLUMEDOWN 0xDC23

pabaigos kodai

pabaigos nuotolinio

Kaip matote, man reikia tik 4 komandų, kad galėčiau vairuoti namų kiną

Maitinimas (ON/OFF)

AUX => perjungti į optinį įvesties kanalą (nes HC visada prasideda DVD skaitytuve)

Ir garsumas +/-

Susijusios komandos vykdomos per LIRC komandas:

pavyzdžiui: „„ irsend SEND_ONCE “„ Jukebox “KEY_VOLUMEUP“

3 žingsnis: pagrindinė programa

Pagrindinė programa parašyta „Python“:

Kadangi esu naujas „Python“, manau, kad galima daug ką patobulinti, tačiau jis veikia….

Specifikacijos:

1) valdyti grafinį ekraną:

Tam aš naudojau APKJTER, kuris yra TKINTER, bet civilizuotas studentui (mano atvejis), tai reiškia daug lengviau naudoti, tikriausiai turint mažiau galimybių, tačiau mano tikslui to pakako.

2) leisti mp3 failus:

Python naudoju mplayer.

3) generuokite atsitiktinius skaičius, kad galėtumėte žaisti maišymo režimu:

Kadangi nenorėjau girdėti tos pačios dainos kiekvieną ketvirtį, sukūriau nedidelę programą, kad patikrintų, ar numerio nėra ankstesnių skaičių sąraše (x, priklausomai nuo grojaraščio ilgio).

Randint funkcija „python“nėra tokia „atsitiktinė“, kiek mačiau.

4) nusiųskite „širdies plakimą“Arduino

5) tvarkyti failų grotuvą:

Kadangi „Mplayer“yra asinchroninis, paleidus failą, „Python“negali žinoti, kada jis bus baigtas (bent jau neradau paprasto būdo)

Norėdami tai išspręsti, naudoju „mplayer“komandas, nurodančias failo ilgį ir dabartinio failo eigą

Tiek 4, tiek 5 naudojau „Appjar“suteiktą galimybę generuoti periodinę užduotį (kadangi „appjar“yra įvykių programa, tai yra būdas sukurti periodinį įvykį). funkcija yra:

#******************* paleiskite užduočių atlikėją ********************** app.registerEvent (uždavinys)

p.setPollTime (1000)

„Užduočių tvarkyklės“užduočių atlikėjas, kuris yra programos defektas, valdantis visus tai, kas nėra ekrano įvykiai (grojamo failo pabaiga, eigos juostos užpildymas, širdies plakimo siuntimas „Nano“ir kt.).

Kai tik pradėsite, ekranas atrodys taip:

Vaizdas
Vaizdas

Čia yra programa: (galima atidaryti naudojant „Notepad ++“arba „Geany“)

4 žingsnis: aviečių dalis: automatinis paleidimas ir naujų failų pridėjimas

Jei pažvelgsite į programą, pamatysite, kad naudoju kai kuriuos „bash“failus:

1) „Start_jukebox“:

Tiesą sakant, tikslas yra įjungti namų kiną ir pereiti prie D. IN įvesties (optinė įvestis mano namų kine)

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

„irsend SEND_ONCE“„Jukebox“KEY_POWER

miegoti 7

„irsend SEND_ONCE“„Jukebox“KEY_AUX

miegoti 2

2) stop_jukebox:

Norėdami išjungti namų kiną

pi@raspitone:/bin $ cat stop_jukebox

#!/bin/bash

„irsend SEND_ONCE“„Jukebox“KEY_POWER

Šiuos du „bash“failus „Python“vadina komanda „os.system“

Norėdami paleisti „Python“scenarijų, padariau nedidelį triukšmą

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

cd /home /pi

python jukebox_gui.py

Automatiniam paleidimui GUI režimu ką tik pakeičiau automatinio paleidimo failą/etc/xdg/lxsession/LXDE-pi

pi@raspitone:/etc/xdg/lxsession/LXDE-pi $ cat automatinis paleidimas@lxpanel-profilis LXDE-pi

@pcmanfm --desktop --profile LXDE-pi

@xscreensaver -no -purslų

@lxterminal --command = "dem_jukebox.bash"

point-rpi

Pridedami nauji mp3 failai:

Norėdami pridėti naujų failų, norėjau sukurti nedidelį „Python“scenarijų:

new_song_file.py

Pirmiausia paaiškinsiu sistemos failų organizavimą:

Visi failai yra /home /pi

mp3 failai ieškomi kataloge/home/pi/Music

Kiekvienas atlikėjas turi savo antrinį katalogą, kuriame saugomi susiję mp3 failai

pi@raspitone: ~/Muzika/Mike_oldfield $ ls -iš viso 760516

-rwxr ----- 1 pi pi 2254923 2017 m. liepos 30 d. A_New_Beginning.mp3

-rwxr ----- 1 pi pi 2691736 liepos 30 2017 Atvykimas.mp3

-rwxr ----- 1 pi pi 8383244 liepos 30 2017 Ascension.mp3

-rwxr ----- 1 pi pi 5410816 liepos 30, 2017 Blue_Night.mp3

-rwxr ----- 1 pi pi 13125199 2017 m. liepos 30 d. (Instrumental).mp3

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

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

-rwxr ----- 1 pi pi 9047745 2017 m. rugpjūčio 30 d. (Instrumental).mp3

-rwxr ----- 1 pi pi 9403263 2017 m. kovo 30 d.mp3

Kataloge „Dokumentai“galime rasti sukurtą paleisti failų sąrašą.

pi@raspitone: ~/Dokumentai $ 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

Taip pat galime rasti grojaraščių duomenis (bet tai sukurta naudojant „Python“scenarijų)

Mažas „Python“scenarijus prideda naujas dainas, išsaugotas „Music“, į sąrašą.txt, suformatavęs titrus UNIX formatu

Štai scenarijus: (galima atidaryti naudojant „Notepad ++“arba „Geany“)

5 veiksmas: energijos valdymas naudojant „Arduino Nano“

Kadangi norėjau ką nors lengvai pradėti, nusprendžiau tai padaryti nedideliu nano:

Principas:

Paspaudus paleidimo mygtuką, visi įrenginiai yra maitinami, nano paleidžiama (1 arba 2 sekundės) ir perima energijos valdymą, suveikdama relę, kuri atstumia mygtukų kontaktus.

Tada Nano laukia 35 sekundes, kad gautų širdies plakimą iš Raspberry (reiškia, kad paleidimo procesas baigtas ir paleidžiama „jukebox“programa).

Kol nano gauna širdies plakimą, relė įjungta (laikrodžio šuns laikmatis)

Jei širdies plakimas nebėra (tai reiškia, kad „jukebox“programa yra sustabdyta), „Nano“laukia 20 sekundžių (kad įsitikintų, jog raspi visiškai sustabdytas), kad atleistų maitinimo relę.

Tada „Jukebox“visiškai išjungiamas

Pridėjau jungiklį, kad suaktyvinčiau nano įvestį, nurodantį priežiūros režimą (naudoju „jukebox“kitiems savo raspi serveriams valdyti per „ssh et vnc“). Tada „Nano“išjungia sargybinio šuns procesą

Pastaba:

širdies susitraukimų įvestį iš Raspi reikia nuleisti (tačiau „Nano“3,3 V iš „Raspi“laiko aukštu lygiu)

Tai būtų galima padaryti su NE555, bet aš esu tingus ir visada turiu stalčiuje nano !!!!

Čia yra trumpa C programa (galima atidaryti naudojant „Notepad ++“)

6 žingsnis: Kabelis

Kabelis
Kabelis
Kabelis
Kabelis

Ekranui:

Ekranui maitinti ir vairuoti „Raspi“naudojamas HDMI kabelis ir USB kabelis.

Priekiniam skydeliui:

USB kabelis taip pat prijungtas iš „Raspi“, kad būtų galima įkelti naujus failus arba kurti atsargines kopijas.

Prie „Nano“prijungtas USB kabelis, kad būtų galima pasiekti programinę įrangą (prireikus atlikti pakeitimus)

Aš taip pat prijungiu belaidį klaviatūros raktą prie aviečių, kad galėčiau atlikti techninę priežiūrą nenaudojant išorinio USB kištuko

Kadangi naudojamos avietės ir „Arduino“, kabeliai yra gana paprasti.

Viskas yra ant juostelės matricos plokštės.

Iš aviečių 2 GPIO naudojami:

Kaištis22, skirtas IR šviesos diodams

27 kaištis širdies plakimui Arduino

ant Arduino

2 smeigtukas naudojamas kaip Raspi širdies plakimo pertraukimo kaištis.

Smeigtukai nuo 3 iki 5 naudojami vairuojant šviesos diodus (pradžia, Wdt, priežiūra).

6 kaištis skirtas priežiūros jungikliui.

7 kaištis išvedamas į relės skydą.

Čia yra frizingo failas:

7 žingsnis: dėžutė

Dėžė
Dėžė

Aš daug neaprašysiu, ką padariau, nes tai priklauso nuo galios stiprintuvo ir naudojamų garsiakalbių.

Kaip informacija, namų kinas yra dėžutės apačioje.

Šiek tiek virš garsiakalbių:

1 žemų dažnių garsiakalbis

2 vidutiniai garsiakalbiai, kuriuos pakeičiau, kad įterpčiau juos į dėžutę.

Ant viršaus:

Priekinis skydelis su ekranu, šviesos diodais, jungikliais ir USB kištukais.

Mediena:

Garsiakalbiams šoninės plokštės viršuje ir apačioje naudojau 18 mm medžio lentą.

Priekinė pusė yra 10 mm fanera su 40 mm varžtais.

Norėdami palengvinti laidų prijungimą ir priežiūrą (jei reikia !!!), aš uždėjau grandinę ant stalčiaus už priekinio skydo

Siekiant išvengti perkaitimo, galinio skydelio apačioje padaryta didelė skylė, o aš uždėjau 5 V ventiliatorių (8 cm) ant galinio skydo, šalia grandinės.

Aukščiau pateikta nuotrauka yra tik idėja.

Taigi, tiek to !!!!!!!!!

Ačiū, kad mane perskaitėte

Ir iki kito susitikimo naujų nuotykių

Rekomenduojamas: