Kazalo:

Raspitone: enostaven za uporabo Jukebox: 7 korakov
Raspitone: enostaven za uporabo Jukebox: 7 korakov

Video: Raspitone: enostaven za uporabo Jukebox: 7 korakov

Video: Raspitone: enostaven za uporabo Jukebox: 7 korakov
Video: Vidnami Review Create Videos Fast with the first intelligent video creator Formerly Content Samurai 2024, November
Anonim
Raspitone: enostaven za uporabo Jukebox
Raspitone: enostaven za uporabo Jukebox

Pozdravljeni, moj naslednji projekt, kot to počnem, ni zelo koristen:

To je avtomat, ki temelji na malini 3 B+

Vem, kaj takega je mogoče enostavno narediti s pametnim telefonom in zvočnikom Bluetooth.

Toda za svoj projekt sem imel dva težka pogoja:

Hotel sem narediti nekaj "vintage".

Na splošno, glede na dejstvo, da je moja gospa dokončno brezupna za računalnik ali bluetooth ali karkoli drugega iz 21. stoletja (in celo 20.), sem moral narediti nekaj zelo preprostega za uporabo ………

Torej, specifikacije so bile naslednje:

En sam gumb za zagon stroja

Zaslon na dotik (zelo preprost) za upravljanje glasbe.

Z enim dotikom zaslona ustavite stroj.

In za dober zvok ………

Zaloge

Za to sem uporabil:

1 malina 3 B+

1 stari domači kino, ki je bil neuporaben zaradi bralnika DVD -jev (stari Samsung 2.1 z nizkotoncem in 2 zvočnikoma, ki sem jih spremenil tako, da so ustrezali škatli)

1 plošča HIFIBERRY DIGI+ (z optičnim izhodom za ojačevalnik moči)

1 kapacitivni zaslon na dotik 7 (moj je Makeasy za maline z vhodom HDMI in napaja prek USB -ja, vendar mora biti vsak zaslon na dotik HDMI v redu)

1 napajalnik 5V 5A

1 relejni ščit

1 Arduino nano za upravljanje procesa vklopa/izklopa napajanja

1 IR vodil za vožnjo domačega kina (vodil ga je 2N2222 NPN tranzistor)

1 IR sprejemnik (za del projekta, ki se uči IR kod, ga dobim s starega večpredstavnostnega trdega diska z daljinskim ukazom)

3 led

1 stikalo za vzdrževalni način

1 stikalo za delo na arduinu (med nalaganjem se arduino ponastavi)

nekaj priključkov JST in Dupont

In za škatlo

Les in vezan les (vendar izdelave škatle ne bom podrobno opisoval). samo povedati, da sta glede bumera v škatli 10 mm vezanega lesa in 18 mm lesa obvezna, če med igranjem ne želite videti Jukeboxa, ki prečka dnevno sobo !!!!

1. korak: Opis dela maline:

Raspi mora upravljati različne stvari:

1) ukazi za domači kino (prek daljinskega upravljalnika IR)

2) glasbene datoteke

3) zaslon na dotik

4) Srčni utrip za Arduino (ki upravlja Wdt (časovni pas za opazovanje))

Začel sem z distribucijo Raspbian strech na SD kartici 16 G (Ker bomo datoteke brali samo s kartice SD, uporaba trdega diska ni potrebna). Ne bom porabil časa za ta del, saj je splet poln predavanj o tem.

Poglejmo različne dele v naslednjih korakih….

Korak: Kode za IR daljinsko upravljanje

Ker nisem našel načrta vezja za domači kino, sem se odločil, da ga vozim prek daljinskih ukazov

Prvi korak, ki sem ga moral dokončati, je bil naučiti se Raspi kode daljinskega ukaza za domači kino.

Imel sem nekaj razlik, verjetno zaradi nove različice, saj so navodila precej stara, datoteka hardware.conf ne obstaja več (vsaj jaz je nisem našel)

Zdi se tudi, da je tranzistor, uporabljen v tutu, tranzistor PNP, jaz pa sem uporabil 2N2222, ki je NPN, vendar je rezultat enak. (Razen kabliranja !!!!!!!!)

Dodelitev pin je podana v /boot/config.txt:

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

IR LED bo tako priključen na pin22 Raspija.

Ena pomembna pripomba: pri učenju kod za Raspi je obvezna uporaba ključnih besed, navedenih v ukazu

unrecord --list-namespace

Tu je datoteka, ki sem jo zgradil za svoj jukebox:

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

# Vzemite si čas za dokončanje te datoteke, kot je opisano v # https://sourceforge.net/p/lirc-remotes/wiki/Check… #, in jo dajte na voljo drugim tako, da jo pošljete na # #

# Ta konfiguracijska datoteka je bila samodejno ustvarjena

# z uporabo lirc -0.9.4c (privzeto) 9. maja 17:33:37 # Uporabljena ukazna vrstica: -d /dev /lirc0 /root/lircd.conf

# Različica jedra (uname -r): 4.14.98 -v7+ # # Ime na daljavo (od konfiguracijske datoteke): jukebox

# Znamka oddaljene naprave, stvar, ki jo držite v roki: # Model oddaljene naprave št.:

# URL informacij o oddaljeni napravi:

# Ali ima oddaljena naprava vgrajeno napravo za zajemanje e. g., a

# usb ključ?:

# Za priložene naprave USB: ID prodajalca USB, ID izdelka

# in niz naprave (uporabite dmesg ali lsusb):

# Vrsta upravljane naprave

# (TV, videorekorder, avdio, DVD, satelit, kabel, HTPC, …):

# Naprav, ki jih upravlja ta daljinski upravljalnik:

začnite na daljavo

ime jukebox

bitov 16

zastave SPACE_ENC | CONST_LENGTH

eps 30

aeps 100

glava 4470 4496

ena 542 1693

nič 542 581

ptrail 553

pred_data_bits 16

pred_podatki 0xC2CA

vrzel 107863

toggle_bit_mask 0x0

frekvenca 38000

kode za začetek

KEY_POWER 0x807F

KEY_AUX 0x8877

KEY_VOLUMEUP 0xCC33

KEY_VOLUMEDOWN 0xDC23

končne kode

konec na daljavo

Kot vidite, potrebujem le 4 ukaze za vožnjo domačega kina

Napajanje (ON/OFF)

AUX => za preklop na optični vhodni kanal (ker se HC vedno zažene na bralniku DVD -jev)

In glasnost +/-

Povezani ukazi se izvajajo z ukazi LIRC:

na primer: "irsend SEND_ONCE jukebox KEY_VOLUMEUP"

3. korak: Glavni program

Glavni program je napisan v Pythonu:

Ker sem nov v Pythonu, mislim, da je mogoče veliko izboljšati, vendar deluje …

Specifikacije:

1) upravljajte grafični zaslon:

Za to sem uporabil APPJAR, ki je TKINTER, vendar civiliziran za študente (moj primer), to pomeni veliko lažjo uporabo, verjetno z manj možnosti, vendar je bilo za moj namen dovolj.

2) predvajajte datoteke mp3:

Za python sem uporabil mplayer.

3) ustvarite naključne številke za predvajanje v naključnem načinu:

Ker nisem želel slišati iste pesmi vsako četrtletje, sem zgradil majhen program, ki je preveril, ali številka ni na seznamu x prejšnjih številk (x odvisno od dolžine seznama predvajanja).

Funkcija randint v pythonu ni tako "naključna", kolikor sem videl.

4) pošljite "srčni utrip" na Arduino

5) upravljajte predvajalnik datotek:

Ker je Mplayer asinhroni, pri zagonu datoteke ni mogoče vedeti, kdaj je Python končan (vsaj nisem našel preprostega načina)

Za rešitev tega sem uporabil ukaze mplayer, ki podajajo dolžino datoteke in napredek v trenutni datoteki

Tako za 4 kot za 5 sem uporabil možnost, ki jo je dal Appjar, za ustvarjanje periodične naloge (ker je appjar program za dogodke, je to način za ustvarjanje periodičnega dogodka). funkcija je:

#**********************************************************************

p.setPollTime (1000)

Taskman za "upravitelja opravil", ki je def v programu, ki upravlja vse dogodke, ki niso prikazani na zaslonu (konec predvajane datoteke, vnesite vrstico napredka, pošljite srčni utrip v Nano,….)

Ko se zaslon zažene, izgleda tako:

Slika
Slika

Tu je program: (odpre se lahko prek Notepad ++ ali Geany)

4. korak: Del maline: samodejni zagon in dodajanje novih datotek

Če pogledate program, lahko vidite, da uporabljam nekaj bash datotek:

1) Start_jukebox:

Pravzaprav je namen vklopiti domači kino in preklopiti na vhod D. IN (optični vhod v mojem domačem kinu)

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

irsend SEND_ONCE jukebox KEY_POWER

spanje 7

irsend SEND_ONCE jukebox KEY_AUX

spanje 2

2) stop_jukebox:

Za izklop domačega kina

pi@raspitone:/bin $ cat stop_jukebox

#!/bin/bash

irsend SEND_ONCE jukebox KEY_POWER

Ti dve datoteki bash Python pokliče z ukazom os.system

Za zagon skripta Python sem naredil majhen udarec

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

cd /home /pi

python jukebox_gui.py

Za samodejni zagon v načinu grafičnega vmesnika sem samo spremenil datoteko samodejnega zagona v/etc/xdg/lxsession/LXDE-pi

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

@pcmanfm --desktop --profile LXDE-pi

@xscreensaver -no -splash

@lxterminal --command = "dem_jukebox.bash"

point-rpi

Dodajanje novih mp3 datotek:

Za dodajanje novih datotek sem raje naredil majhen namenski skript Python:

new_song_file.py

Najprej bom razložil organizacijo sistemskih datotek:

Vse datoteke so v /home /pi

mp3 datoteke so shranjene v imeniku/home/pi/Music

Vsak izvajalec ima svoj podimenik, v katerem so povezane mp3 datoteke

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

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

-rwxr ----- 1 pi pi 2691736 30. junij 2017 Prihod.mp3

-rwxr ----- 1 pi pi 8383244 30. junij 2017 Vnebovzetje.mp3

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

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

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

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

-rwxr ----- 1 pi pi 9047745 30. junij 2017 Chariots_ (Instrumental).mp3

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

V imeniku Dokumenti najdemo zgrajen seznam datotek za predvajanje.

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

Lahko najdemo tudi podatke o seznamih predvajanja (vendar to gradi skript Python)

Majhen skript Python doda nove pesmi, shranjene v Glasbi, v list.txt po tem, ko je naslove formatiral v formatu UNIX

Tu je skript: (lahko ga odprete prek Notepad ++ ali Geany)

5. korak: Upravljanje napajanja prek Arduino Nano

Ker sem hotel imeti nekaj preprostega za začetek, sem se odločil, da to naredim z majhnim nano:

Načelo:

Ko pritisnete gumb za zagon, se vse naprave napajajo, nano se zažene (1 ali 2 sekundi) in prevzame upravljanje porabe z sprožitvijo releja, ki odklopi stike gumba.

Nato Nano počaka 35 sekund, da prejme srčni utrip iz maline (pomeni, da je postopek zagona končan in program jukebox se zažene).

Dokler nano sprejema srčni utrip, rele drži vklopljen (časovnik za gledanje psov)

Če srčni utrip ni več (pomeni, da je program jukebox ustavljen), Nano počaka 20 sekund (da se prepriča, da je raspi popolnoma ustavljen), da sprosti rele za napajanje.

Jukebox se nato popolnoma izklopi

Dodal sem stikalo za aktiviranje vnosa nano za označevanje načina vzdrževanja (jukebox uporabljam za upravljanje drugih strežnikov raspi prek ssh et vnc). Nano nato izklopi postopek čuvajskega psa

Opomba:

vhod za srčni utrip iz Raspija je treba potegniti navzdol (vendar Nano 3.3V iz Raspija šteje za visoko raven)

To bi lahko naredili z NE555, vendar sem len in imam vedno nekaj nano v predalu !!!!

Tu je kratek program C (lahko ga odprete z Notepad ++)

Korak 6: Kabli

Kabli
Kabli
Kabli
Kabli

Za zaslon:

Za napajanje in pogon zaslona na Raspiju uporabljata kabel HDMI in kabel USB.

Za sprednjo ploščo:

Iz Raspija je priključen tudi kabel USB, ki omogoča nalaganje novih datotek ali varnostno kopiranje.

Za dostop do programske opreme Nano je priključen kabel USB (za spremembe po potrebi)

Na malino priključim tudi brezžični ključ za tipkovnico, da lahko vzdržujem brez uporabe zunanjega vtiča USB

Ker se uporabljata Raspberry in Arduino, je ožičenje precej preprosto.

Vse se nahaja na matrični plošči s trakovi.

Od maline 2 GPIO se uporabljajo:

Pin22 za IR LED

Pin 27 za utrip srca za Arduino

na Arduinu

Pin 2 se uporablja kot prekinitveni pin za srčni utrip iz Raspija.

Zatiči od 3 do 5 se uporabljajo za pogon LED (Start, Wdt, Maintenance).

Pin 6 je za stikalo za vzdrževanje.

Pin 7 je izhod na relejni ščit.

Tukaj je datoteka za frcanje:

7. korak: Škatla

Škatla
Škatla

Ne bom veliko opisoval, kaj sem naredil, saj je odvisno od ojačevalnika moči in uporabljenih zvočnikov.

Kot informacija je domači kino na dnu škatle.

Tik nad zvočniki:

1 nizkotonec

2 srednje velika zvočnika, ki sem jih spremenil tako, da sem jih vstavil v škatlo.

Na vrh:

Sprednja plošča z zaslonom, LED diodami, stikali in vtiči USB.

Les:

Za zvočnike, stranske plošče zgoraj in spodaj sem uporabil 18 mm leseno desko.

Sprednja stran je 10 mm vezanega lesa s 40 mm vijaki.

Za lažje ožičenje in vzdrževanje (če je potrebno !!!) sem vezje postavil na predal za sprednjo ploščo

Da bi se izognili pregrevanju, je na dnu zadnje plošče narejena velika luknja, zraven vezja pa sem na zadnjo ploščo postavil 5V ventilator (8 cm).

Zgornja slika je samo za predstavo.

Torej, to je to !!!!!!!!!

Hvala, ker ste me prebrali

In naslednjič se vidimo za nove dogodivščine

Priporočena: