Sadržaj:

Raspitone: Jukebox jednostavan za korištenje: 7 koraka
Raspitone: Jukebox jednostavan za korištenje: 7 koraka

Video: Raspitone: Jukebox jednostavan za korištenje: 7 koraka

Video: Raspitone: Jukebox jednostavan za korištenje: 7 koraka
Video: Леон впитывает как нерпа ► 4 Прохождение Resident Evil 4 (Remake) 2024, Studeni
Anonim
Raspitone: Jukebox jednostavan za korištenje
Raspitone: Jukebox jednostavan za korištenje

Poštovani, moj sljedeći projekt, kao što to i radim, nije baš koristan:

Ovo je džuboks baziran na malini 3 B+

Znam, ovako nešto se lako može učiniti pametnim telefonom i Bluetooth zvučnikom.

No za svoj projekt imao sam dva teška preduvjeta:

Htio sam napraviti nešto "vintage".

I sve u svemu, s obzirom na činjenicu da je moja dama definitivno beznadna za računalo ili bluetooth ili bilo što drugo iz 21. stoljeća (pa čak i 20.), morao sam učiniti nešto vrlo jednostavno za korištenje ………

Dakle, specifikacije su bile sljedeće:

Jedan jedini gumb za pokretanje stroja

Zaslon osjetljiv na dodir (vrlo jednostavan) za upravljanje glazbom.

Jednim dodirom na zaslonu zaustavite stroj.

I za dobar zvuk ………

Pribor

Za ovo sam koristio:

1 malina 3 B+

1 staro kućno kino koje je bilo beskorisno zbog OOS čitača DVD -a (stari Samsung 2.1 sa wooferom i 2 zvučnika koje sam izmijenio tako da odgovaraju kutiji)

1 HIFIBERRY DIGI+ ploča (s optičkim izlazom za pojačalo)

1 kapacitivni zaslon osjetljiv na dodir 7 (moj je Makeasy za maline s HDMI ulazom i napaja se putem USB -a, ali svaki HDMI zaslon osjetljiv na dodir trebao bi biti u redu)

1 napajanje 5V 5A

1 relejni štit

1 Arduino nano za upravljanje procesom uključivanja/isključivanja napajanja

1 IC vodio je za upravljanje kućnim kinom (vođen 2N2222 NPN tranzistorima)

1 IR prijemnik (za dio projekta koji uči o IR kodovima, ja svoj dobivam sa starog multimedijskog tvrdog diska s daljinskom naredbom)

3 led

1 prekidač za način održavanja

1 prekidač za rad na arduinu (tijekom učitavanja arduino se resetira)

neki konektori JST i Dupont

I za kutiju

Drvo i šperploča (ali neću detaljno opisivati izradu kutije). samo da kažem, što se tiče boomera unutar kutije, 10 mm šperploča i 18 mm drvo su obavezni ako ne želite vidjeti Jukebox kako prelazi dnevnu sobu tijekom igre !!!!

Korak 1: Opis dijela maline:

Raspi mora upravljati različitim stvarima:

1) naredbe za kućno kino (putem IC daljinskog upravljača)

2) glazbene datoteke

3) zaslon osjetljiv na dodir

4) Otkucaji srca za Arduino (koji upravlja Wdt -om (mjerač vremena psa))

Počeo sam od Raspbian strech distribucije na 16 G SD kartici (Budući da ćemo čitati samo datoteke sa SD kartice, upotreba tvrdog diska nije potrebna). Neću trošiti vrijeme na ovaj dio jer je web prepun tuta o tome.

Pogledajmo različite dijelove u sljedećim koracima….

Korak 2: IR daljinski kodovi

Kako nisam uspio pronaći plan kola kućnog kina, odlučio sam se njime upravljati putem daljinskih naredbi

Prvi korak koji sam morao dovršiti bio je naučiti Raspi kodove daljinske komande kućnog kina. Za to sam koristio vrlo dobre tutoteke u Instructables iz Austin Stanton IR kodova

Imao sam nekih razlika, vjerojatno zbog nove verzije jer su instrukcije prilično stare, datoteka hardware.conf više ne postoji (barem je nisam našao)

Čini se također da je tranzistor koji se koristi u tutu PNP tranzistor, sa svoje strane koristio sam 2N2222 koji je NPN, ali rezultat je isti. (Osim kabliranja !!!!!!!!)

Dodjela pin -a data je u /boot/config.txt:

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

IC LED dioda bit će tako spojena na pin22 Raspija.

Jedna važna napomena: pri učenju kodova za Raspi obavezno je koristiti ključne riječi navedene u naredbi

unrecord --list-namespace

Evo datoteke koju sam izgradio za svoj džuboks:

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

# Molimo odvojite malo vremena da završite ovu datoteku kako je opisano u # https://sourceforge.net/p/lirc-remotes/wiki/Check… # i učinite je dostupnom drugima slanjem na # #

# Ova konfiguracijska datoteka je automatski generirana

# pomoću lirc -0.9.4c (zadano) u četvrtak, 9. svibnja 17:33:37 2019 # Korištena naredbena linija: -d /dev /lirc0 /root/lircd.conf

# Verzija jezgre (uname -r): 4.14.98 -v7+ # # Udaljeni naziv (od konfiguracijske datoteke): jukebox

# Marka udaljenog uređaja, ono što držite u ruci: # Model udaljenog uređaja br:

# URL informacija o udaljenom uređaju:

# Ima li udaljeni uređaj paketni uređaj za hvatanje e. g., a

# USB ključ?:

# Za USB uređaje u paketu: ID dobavljača USB -a, ID proizvoda

# i niz uređaja (koristite dmesg ili lsusb):

# Vrsta upravljanog uređaja

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

# Uređaja kojima upravlja ovaj daljinski upravljač:

početi daljinski

ime džuboks

bitovi 16

zastavice SPACE_ENC | CONST_LENGTH

eps 30

aeps 100

zaglavlje 4470 4496

jedan 542 1693

nula 542 581

ptrail 553

pre_data_bits 16

pre_data 0xC2CA

jaz 107863

toggle_bit_mask 0x0

frekvencija 38000

kodovi za početak

KEY_POWER 0x807F

KEY_AUX 0x8877

KEY_VOLUMEUP 0xCC33

KEY_VOLUMEDOWN 0xDC23

krajnji kodovi

kraj daljinski

Kao što vidite, potrebne su mi samo 4 naredbe za vožnju kućnim kinom

Napajanje (ON/OFF)

AUX => za prelazak na optički ulazni kanal (budući da HC uvijek počinje na DVD čitaču)

I glasnoća +/-

Povezane naredbe izvršavaju se naredbama LIRC:

na primjer: "irsend SEND_ONCE džuboks KEY_VOLUMEUP"

Korak 3: Glavni program

Glavni program je napisan na Pythonu:

Budući da sam nov u Pythonu, pretpostavljam da se može puno poboljšati, ali to radi….

Specifikacije:

1) upravljanje grafičkim zaslonom:

Za to sam koristio APPJAR koji je TKINTER, ali civiliziran za studente (moj slučaj), što znači da je mnogo lakši za korištenje, vjerojatno s manje mogućnosti, ali to je bilo dovoljno za moju svrhu.

2) reproducirajte mp3 datoteke:

Koristio sam mplayer za python.

3) generirajte nasumične brojeve za igru u slučajnom redoslijedu:

Kako nisam htio čuti istu pjesmu svake četvrtine, napravio sam mali program za provjeru nije li broj prisutan na popisu x prethodnih brojeva (x ovisno o duljini popisa za reprodukciju).

Funkcija randint u pythonu nije toliko "slučajna" koliko sam vidio.

4) pošaljite "otkucaje srca" na Arduino

5) upravljajte datotečnim playerom:

Kako je Mplayer asinkroni, kada se datoteka pokrene, ne postoji način da se zna za Python kada je gotova (barem nisam pronašao jednostavan način)

Da bih to riješio, upotrijebio sam naredbe mplayer koje su dale duljinu datoteke i napredak u trenutnoj datoteci

I za 4 i za 5 koristio sam mogućnost koju je dao Appjar za generiranje periodičnog zadatka (budući da je appjar program za događaje, ovo je način za stvaranje periodičnog događaja). funkcija je:

#******************* start taskman ********************** app.registerEvent (taskman)

p.setPollTime (1000)

Taskman za "upravitelja zadataka" koji je def u programu koji upravlja svim događajima koji nisu na ekranu (kraj reproducirane datoteke, popunjavanje trake napretka, slanje otkucaja srca u Nano,….)

Nakon pokretanja zaslon izgleda ovako:

Slika
Slika

Evo programa: (može se otvoriti putem Notepad ++ ili Geany)

Korak 4: Malinin dio: automatsko pokretanje i dodavanje novih datoteka

Ako pogledate program, možete vidjeti da koristim neke bash datoteke:

1) Start_jukebox:

Zapravo, svrha je uključivanje kućnog kina i prelazak na ulaz D. IN (optički ulaz u mom kućnom kinu)

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

irsend SEND_ONCE džuboks KEY_POWER

spavaj 7

irsend SEND_ONCE džuboks KEY_AUX

spavati 2

2) stop_jukebox:

Isključivanje kućnog kina

pi@raspitone:/bin $ cat stop_jukebox

#!/bin/bash

irsend SEND_ONCE džuboks KEY_POWER

Ove dvije bash datoteke Python poziva naredbom os.system

Za pokretanje Python skripte napravio sam mali bash

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

cd /home /pi

python jukebox_gui.py

Za automatsko pokretanje u GUI načinu rada samo sam izmijenio datoteku automatskog pokretanja u/etc/xdg/lxsession/LXDE-pi

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

@pcmanfm --desktop --profil LXDE-pi

@xscreensaver -nema prskanja

@lxterminal --command = "dem_jukebox.bash"

točka-rpi

Dodavanje novih mp3 datoteka:

Za dodavanje novih datoteka radije sam napravio malu namjensku Python skriptu:

new_song_file.py

Prvo ću objasniti organizaciju sistemskih datoteka:

Sve datoteke su u /home /pi

mp3 datoteke nalaze se u/home/pi/Music direktoriju

Svaki izvođač ima svoj podimenik u kojem se nalaze povezane mp3 datoteke

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

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

-rwxr ----- 1 pi pi 2691736 30. lipnja 2017 Dolazak.mp3

-rwxr ----- 1 pi pi 8383244 30. lipnja 2017 Uzašašće.mp3

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

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

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

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

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

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

U direktoriju Dokumenti možemo pronaći izgrađeni popis datoteka za reprodukciju.

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

Također možemo pronaći podatke o popisima za reprodukciju (ali to je izgrađeno Python skriptom)

Mala Python skripta dodaje nove pjesme, spremljene u Glazbi, u list.txt nakon formatiranja naslova u UNIX formatu

Evo skripte: (može se otvoriti putem Notepad ++ ili Geany)

Korak 5: Upravljanje napajanjem putem Arduino Nano

Kako sam želio imati nešto jednostavno za početak, odlučio sam to učiniti malim nano:

Princip:

Kad pritisnete gumb za pokretanje, svi se uređaji napajaju, nano se pokreće (1 ili 2 sekunde) i preuzima upravljanje napajanjem aktiviranjem releja koji preskače kontakte gumba.

Zatim Nano čeka 35 sekundi da primi otkucaje srca od maline (znači da je proces pokretanja dovršen i program jukebox pokrenut).

Dok nano prima otkucaje srca, relej je uključen (mjerač vremena psa)

Ako više nema otkucaja srca (znači da je program za jukebox zaustavljen) Nano čeka 20 sekundi (kako bi bio siguran da je raspi potpuno zaustavljen) da oslobodi relej za napajanje.

Džuboks se tada potpuno isključuje

Dodao sam prekidač za aktiviranje unosa nano za označavanje načina održavanja (ja koristim džuboks za upravljanje svojim drugim raspi poslužiteljima putem ssh et vnc). Nano tada deaktivira proces pasa čuvara

Napomena:

ulaz za otkucaje srca iz Raspija mora biti smanjen (ali Nano smatra da 3.3V iz Raspija smatra visokom razinom)

Moglo bi se to učiniti s NE555, ali ja sam lijen i uvijek imam neke nano u ladici !!!!

Evo kratkog C programa (može se otvoriti pomoću Notepada ++)

Korak 6: Kabliranje

Kabliranje
Kabliranje
Kabliranje
Kabliranje

Za ekran:

HDMI kabel i USB kabel koriste se na Raspiju za napajanje i pokretanje zaslona.

Za prednju ploču:

USB kabel je također spojen s Raspija da biste mogli učitati nove datoteke ili napraviti sigurnosnu kopiju.

USB kabel je spojen s Nano -a radi pristupa softveru (za izmjene ako je potrebno)

Uključujem i bežični ključ za tipkovnicu na malinu kako bih mogao održavati bez korištenja vanjskog USB priključka

Kako se koriste Raspberry i Arduino, ožičenje je prilično jednostavno.

Sve se nalazi na matričnoj ploči.

Od maline 2 GPIO se koriste:

Pin22 za IR LED

Pin 27 za otkucaje srca za Arduino

na Arduinu

Pin 2 se koristi kao prekidni pin za otkucaje srca iz Raspija.

Igle 3 do 5 koriste se za vožnju LED dioda (Start, Wdt, održavanje).

Pin 6 služi za prekidač za održavanje.

Pin 7 izlazi na relejni štit.

Evo datoteke za prevrtanje:

Korak 7: Kutija

Kutija
Kutija

Neću puno opisivati što sam učinio jer ovisi o pojačalu snage i o korištenim zvučnicima.

Kao informacija, kućno kino nalazi se na dnu kutije.

Odmah preko zvučnika:

1 niskotonac

2 srednja zvučnika, koja sam izmijenila tako da ih umetnem u kutiju.

Na vrhu:

Prednja ploča s zaslonom, LED diodama, prekidačima i USB utičnicama.

Drvo:

Za zvučnike, bočne ploče s gornje i donje strane koristio sam dasku od 18 mm.

Prednja strana je 10 mm šperploča s vijcima od 40 mm.

Kako bih olakšao ožičenje i održavanje (ako je potrebno !!!), sklop sam stavio na ladicu iza prednje ploče

Kako bi se izbjeglo pregrijavanje, velika rupa je napravljena na dnu stražnje ploče, a ja sam stavio ventilator od 5 V (8 cm) na stražnju ploču odmah do strujnog kruga.

Gornja slika služi samo za ideju.

Znaci to je to !!!!!!!!!

Hvala vam što ste me pročitali

I vidimo se sljedeći put u novim avanturama

Preporučeni: