Sadržaj:

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

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

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

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

Ovo je džuboks zasnovan na malini 3 B+

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

Ali za svoj projekat imao sam dva teška preduslova:

Htio sam napraviti nešto "vintage".

I sve u svemu, s obzirom na činjenicu da je moja dama definitivno beznadežna za računarom ili bluetoothom ili bilo čim drugim 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:

Jedno dugme za pokretanje mašine

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

Jednim dodirom na ekranu zaustavite mašinu.

I za dobar zvuk ………

Supplies

Za ovo sam koristio:

1 malina 3 B+

1 staro kućno kino koje je bilo beskorisno zbog DVD čitača OOS (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 snage)

1 kapacitivni ekran osetljiv na dodir 7 (moj je Makeasy za maline sa HDMI ulazom i napaja se preko USB -a, ali svaki HDMI ekran osetljiv na dodir bi trebao 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, moj dobivam sa starog multimedijskog tvrdog diska s daljinskom komandom)

3 led

1 prekidač za način održavanja

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

neki JST i Dupont konektori

I za kutiju

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

Korak 1: Opis dijela maline:

Raspi mora upravljati različitim stvarima:

1) komande kućnom kinu (putem IC daljinskog upravljača)

2) muzičke datoteke

3) ekran osetljiv 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 HDD -a 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 mogao pronaći plan kola kućnog kina, odlučio sam se njime upravljati putem daljinskih komandi

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

Imao sam nekih razlika, vjerovatno 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, ja sam sa svoje strane koristio 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 će biti spojena na pin22 Raspija.

Jedna važna napomena: prilikom učenja kodova za Raspi obavezno je korištenje ključnih riječi navedenih 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

# koristeći lirc -0.9.4c (zadano) 9. četvrtka 17:33:37 # Korištena naredbena linija: -d /dev /lirc0 /root/lircd.conf

# Verzija kernela (uname -r): 4.14.98 -v7+ # # Daljinsko ime (od konfiguracijske datoteke): džuboks

# 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 snimanje 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 uređaja kojim se upravlja

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

# Uređaja kojima upravlja ovaj daljinski upravljač:

počni 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

početni kodovi

KEY_POWER 0x807F

KEY_AUX 0x8877

KEY_VOLUMEUP 0xCC33

KEY_VOLUMEDOWN 0xDC23

krajnji kodovi

kraj daljinski

Kao što vidite, potrebne su mi samo 4 komande za upravljanje kućnim kinom

Napajanje (ON/OFF)

AUX => za prebacivanje na optički ulazni kanal (jer HC uvijek počinje na DVD čitaču)

I jačina zvuka +/-

Povezane naredbe izvršavaju se pomoću naredbi 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 mnogo poboljšati, ali to radi….

Specifikacije:

1) upravljanje grafičkim ekranom:

Za ovo 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 svako tromjesečje, napravio sam mali program kako bih provjerio nije li broj prisutan na x prethodnoj listi brojeva (x ovisno o dužini playliste).

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

4) pošaljite "otkucaj srca" na Arduino

5) upravljajte datotečnim plejerom:

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

Da bih to riješio, koristio sam mplayer naredbe koje su dale dužinu 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 "task manager" 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 ekran izgleda ovako:

Image
Image

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:

U stvari, 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 poziva Python 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 za automatsko pokretanje 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 -no -splash

@lxterminal --command = "dem_jukebox.bash"

point-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:

Svi fajlovi su u /home /pi

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

Svaki izvođač ima svoj poddirektorij koji sadrži 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. jun 2017. Dolazak.mp3

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

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

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

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

-rwxr ----- 1 pi pi 2969869 30. jun 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đenu listu 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 listama reprodukcije (ali to je izgrađeno Python skriptom)

Mala Python skripta dodaje nove pjesme, sačuvane u Music, u list.txt nakon što je formatirala naslove 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 lako za početak, odlučio sam to učiniti malim nano:

Princip:

Kada pritisnete gumb za pokretanje, svi uređaji se 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 Raspberryja (znači da je proces pokretanja dovršen i da se program za džuboks pokreće).

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

Ako više nema otkucaja srca (znači da je program za džuboks zaustavljen) Nano čeka 20 sekundi (da 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 -a za označavanje načina održavanja (koristim džuboks za upravljanje ostalim raspi serverima putem ssh et vnc). Nano tada deaktivira proces pasa čuvara

Napomena:

ulaz za otkucaje srca iz Raspija treba smanjiti (ali Nano smatra 3.3V iz Raspija visokim nivoom)

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

Evo kratkog C programa (može se otvoriti sa Notepad ++)

Korak 6: Kabliranje

The Cabling
The Cabling
The Cabling
The Cabling

Za ekran:

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

Za prednju ploču:

USB kabl je takođe povezan sa Raspija kako bi se mogli učitavati nove datoteke ili praviti rezervne kopije.

USB kabel je povezan s Nano -om kako bi mogao pristupiti softveru (za izmjene ako je potrebno)

Priključujem i bežični ključ za tastaturu na malinu kako bih mogao održavati bez upotrebe 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 na Arduinu

na Arduinu

Pin 2 se koristi kao pin za prekidanje otkucaja srca iz Raspija.

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

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

Pin 7 je izlaz na relejni štit.

Evo datoteke za prevrtanje:

Korak 7: Kutija

Kutije
Kutije

Neću puno opisivati šta sam uradio jer to zavisi od pojačala i zvučnika koji se koriste.

Kao informacija, kućni bioskop se nalazi na dnu kutije.

Odmah preko zvučnika:

1 niskotonac

2 srednja zvučnika, koja sam izmijenila kako bih ih umetnula u kutiju.

Na vrhu:

Prednja ploča sa ekranom, LED diodama, prekidačima i USB utičnicama.

Drvo:

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

Prednja strana je 10 mm šperploča sa 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, na dnu stražnje ploče napravljena je velika rupa, 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 davanje ideje.

Pa to je to !!!!!!!!!

Hvala što ste me pročitali

I vidimo se sljedeći put u novim avanturama

Preporučuje se: