Obsah:

Raspitone: Jukebox se snadno používá: 7 kroků
Raspitone: Jukebox se snadno používá: 7 kroků

Video: Raspitone: Jukebox se snadno používá: 7 kroků

Video: Raspitone: Jukebox se snadno používá: 7 kroků
Video: #pov she’s tired of hearing you apologize for making the same mistake again and again 2024, Červenec
Anonim
Raspitone: snadno použitelný Jukebox
Raspitone: snadno použitelný Jukebox

Dobrý den, můj další projekt je, jak to dělám, nepříliš užitečný projekt:

Jedná se o jukebox založený na Raspberry 3 B+

Vím, něco takového lze snadno provést pomocí smartphonu a reproduktoru Bluetooth.

Ale pro svůj projekt jsem měl dva tvrdé předpoklady:

Chtěl jsem udělat něco „vintage“.

A celkově, vzhledem k tomu, že moje paní je definitivně beznadějná pro počítač nebo bluetooth nebo cokoli jiného z 21. století (a dokonce 20.), musel jsem udělat něco velmi jednoduchého k použití …

Specifikace tedy byly následující:

Jediné tlačítko ke spuštění stroje

Dotykový displej (velmi jednoduchý) pro správu hudby.

Stroj zastavíte jediným dotykem na obrazovce.

A mít dobrý zvuk ………..

Zásoby

K tomu jsem použil:

1 malina 3 B+

1 staré domácí kino, které bylo zbytečné kvůli čtečce DVD OOS (starý Samsung 2.1 s basovým reproduktorem a 2 reproduktory, které jsem upravil tak, aby se vešly do krabice)

1 deska HIFIBERRY DIGI+ (s optickým výstupem pro výkonový zesilovač)

1 kapacitní dotyková obrazovka 7 (moje je Makeasy pro malinu se vstupem HDMI a napájená přes USB, ale jakákoli dotyková obrazovka HDMI by měla být v pořádku)

1 napájecí zdroj 5V 5A

1 štít relé

1 Arduino nano pro řízení procesu zapnutí/vypnutí napájení

1 IR LED pro ovládání domácího kina (LED řízené tranzistorem 2N2222 NPN)

1 IR přijímač (pro část projektu, která se učí IR kódy, získám svůj ze starého multimediálního pevného disku se vzdáleným příkazem)

3 LED

1 přepínač pro režim údržby

1 přepínač pro práci na Arduinu (během nahrávání se Arduino resetuje)

některé konektory JST a Dupont

A pro krabici

Dřevo a překližka (nebudu však hlouběji popisovat výrobu krabice). jen abychom řekli, že pokud jde o boomer uvnitř krabice, 10 mm překližka a 18 mm dřevo jsou povinné, pokud nechcete při hraní vidět, jak Jukebox přechází přes obývací pokoj !!!!

Krok 1: Popis součásti maliny:

Raspi musí spravovat různé věci:

1) příkazy pro domácí kino (přes IR dálkové ovládání)

2) hudební soubory

3) dotykový displej

4) Tlukot srdce pro Arduino (který spravuje Wdt (časovač hlídacího psa))

Začal jsem z distribuce Raspbian strech na 16 G SD kartě (Jelikož budeme číst pouze soubory z SD karty, není použití HDD nutné). Nebudu trávit čas touto částí, protože web je plný této informace o tom..

Podívejme se na různé části v dalších krocích….

Krok 2: IR dálkové kódy

Protože jsem nemohl najít obvodový plán domácího kina, rozhodl jsem se jej řídit dálkovými povely

Prvním krokem, který jsem musel dokončit, bylo naučit se Raspi kódy příkazu pro dálkové ovládání domácího kina. K tomu jsem použil velmi dobrou tuto informaci v Instructables od Austin Stanton IR kódy

Měl jsem určité rozdíly, pravděpodobně kvůli nové verzi, protože instructables je poměrně starý, soubor hardware.conf již neexistuje (alespoň jsem jej nenašel)

Zdá se také, že tranzistor použitý v této je PNP tranzistor, z mé strany jsem použil 2N2222, což je NPN, ale výsledek je stejný. (Kromě kabeláže !!!!!!!!)

Přiřazení pinů je uvedeno v souboru /boot/config.txt:

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

IR LED bude tak připojena na pin22 Raspi.

Jedna důležitá poznámka: při učení kódů pro Raspi je povinné používat klíčová slova uvedená v příkazu

ircord-seznam jmenných prostorů

Zde je soubor, který jsem vytvořil pro svůj jukebox:

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

# Udělejte si čas na dokončení tohoto souboru, jak je popsáno v # https://sourceforge.net/p/lirc-remotes/wiki/Check… # a zpřístupněte jej ostatním odesláním na # #

# Tento konfigurační soubor byl automaticky generován

# using lirc -0.9.4c (výchozí) Thu May 9 17:33:37 2019 # Použitý příkazový řádek: -d /dev /lirc0 /root/lircd.conf

# Verze jádra (uname -r): 4.14.98 -v7+ # # Vzdálené jméno (jako v konfiguračním souboru): jukebox

# Značka vzdáleného zařízení, věc, kterou držíte v ruce: # Model vzdáleného zařízení č.:

# Adresa URL vzdáleného zařízení:

# Má vzdálené zařízení přibalené zařízení pro zachycení e. g., a

# USB klíč?:

# Pro dodávaná zařízení USB: ID dodavatele USB, ID produktu

# a řetězec zařízení (použijte dmesg nebo lsusb):

# Typ ovládaného zařízení

# (TV, VCR, Audio, DVD, Satelit, Kabel, HTPC, …):

# Zařízení ovládaná tímto dálkovým ovladačem:

začít dálkově

název jukebox

bity 16

příznaky SPACE_ENC | CONST_LENGTH

eps 30

ano 100

záhlaví 4470 4496

jeden 542 1693

nula 542 581

ptrail 553

pre_data_bits 16

pre_data 0xC2CA

mezera 107863

toggle_bit_mask 0x0

frekvence 38 000

začít kódy

KEY_POWER 0x807F

KEY_AUX 0x8877

KEY_VOLUMEUP 0xCC33

KEY_VOLUMEDOWN 0xDC23

koncové kódy

konec na dálku

Jak vidíte, k řízení domácího kina potřebuji pouze 4 příkazy

Napájení (ON/OFF)

AUX => pro přepnutí na optický vstupní kanál (protože HC vždy začíná na čtečce DVD)

A hlasitost +/-

Související příkazy se provádějí pomocí příkazů LIRC:

například: „irsend SEND_ONCE jukebox KEY_VOLUMEUP“

Krok 3: Hlavní program

Hlavní program je napsán v Pythonu:

Jelikož jsem v Pythonu nový, myslím, že je možné provést mnoho vylepšení, ale běží….

Specifikace:

1) spravujte grafickou obrazovku:

K tomu jsem použil APPJAR, který je TKINTER, ale pro studenty civilizovaný (můj případ), to znamená mnohem jednodušší použití, pravděpodobně s menšími možnostmi, ale pro můj účel to stačilo.

2) přehrajte soubory mp3:

Pro python jsem použil mplayer.

3) vygenerujte náhodná čísla pro přehrávání v náhodném režimu:

Protože jsem nechtěl slyšet stejnou skladbu každou čtvrtinu, vytvořil jsem malý program, abych zkontroloval, zda číslo není uvedeno v seznamu x předchozích čísel (x v závislosti na délce seznamu skladeb).

Funkce randint v pythonu není tak „náhodná“, jak jsem viděl.

4) odešlete „tlukot srdce“do Arduina

5) spravovat přehrávač souborů:

Jelikož je Mplayer asynchronní, při spuštění souboru neexistuje způsob, jak zjistit, kdy je Python hotový (alespoň jsem nenašel jednoduchý způsob)

Abych to vyřešil, použil jsem příkazy mplayer udávající délku souboru a postup v aktuálním souboru

Pro 4 i 5 jsem použil možnost danou Appjarem pro generování periodického úkolu (jelikož appjar je program událostí, toto je způsob, jak vytvořit periodickou událost). funkce je:

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

p.setPollTime (1000)

Taskman pro „správce úloh“, což je def v programu, který spravuje vše, co není na obrazovce (konec přehrávaného souboru, naplnění indikátoru průběhu, odeslání srdečního tepu do Nano,….)

Po spuštění vypadá obrazovka takto:

obraz
obraz

Zde je program: (lze otevřít pomocí programu Poznámkový blok ++ nebo Geany)

Krok 4: Část Raspberry: automatické spuštění a přidávání nových souborů

Když se podíváte na program, můžete vidět, že používám některé bash soubory:

1) Start_jukebox:

Ve skutečnosti je účelem zapnout domácí kino a přepnout na vstup D. IN (optický vstup v mém domácím kině)

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

irsend SEND_ONCE jukebox KEY_POWER

spát 7

irsend SEND_ONCE jukebox KEY_AUX

spát 2

2) stop_jukebox:

Vypnutí domácího kina

pi@raspitone:/bin $ cat stop_jukebox

#!/bin/bash

irsend SEND_ONCE jukebox KEY_POWER

Tyto dva soubory bash nazývá Python příkazem os.system

Ke spuštění skriptu Python jsem udělal malý bash

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

cd /home /pi

python jukebox_gui.py

Pro automatické spuštění v režimu GUI jsem upravil soubor automatického spuštění v/etc/xdg/lxsession/LXDE-pi

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

@pcmanfm --desktop --profil LXDE-pi

@xscreensaver -no -splash

@lxterminal --command = "dem_jukebox.bash"

bod-rpi

Přidávání nových souborů mp3:

Chcete -li přidat nové soubory, raději jsem vytvořil malý vyhrazený skript Pythonu:

new_song_file.py

Nejprve vysvětlím organizaci systémových souborů:

Všechny soubory jsou v /home /pi

Soubory mp3 jsou uloženy v adresáři/home/pi/Music

Každý umělec má svůj vlastní podadresář hostující související soubory mp3

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

-rwxr ----- 1 pi pi 2254923 30. července 2017 A_New_Beginning.mp3

-rwxr ----- 1 pi pi 2691736 30. července 2017 Příjezd.mp3

-rwxr ----- 1 pi pi 8383244 červen 30 2017 Ascension.mp3

-rwxr ----- 1 pi pi 5410816 30. července 2017 Blue_Night.mp3

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

-rwxr ----- 1 pi pi 12903583 30. července 2017 Castaway.mp3

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

-rwxr ----- 1 pi pi 9047745 30. července 2017 Chariots_ (instrumentální).mp3

-rwxr ----- 1 pi pi 9403263 30. července 2017 Chariots.mp3

V adresáři Dokumenty najdeme sestavený seznam souborů k přehrávání.

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

Můžeme také najít data seznamů skladeb (ale toto je vytvořeno skriptem Pythonu)

Malý skript Pythonu přidá nové skladby uložené v Music do list.txt po formátování titulků ve formátu UNIX

Zde je skript: (lze otevřít pomocí programu Poznámkový blok ++ nebo Geany)

Krok 5: Správa napájení přes Arduino Nano

Protože jsem chtěl začít něco snadného, rozhodl jsem se, že to udělám malým nano:

Princip:

Po stisknutí tlačítka Start jsou všechna zařízení napájena, nano se spustí (1 nebo 2 sekundy) a převezme řízení napájení spuštěním relé, které posune kontakty tlačítka.

Poté Nano čeká 35 sekund, aby obdržel tlukot srdce od Raspberry (to znamená, že proces spuštění je dokončen a program jukebox běží).

Dokud nano přijímá srdeční tep, udržuje relé zapnuté (časovač hlídacího psa)

Pokud již žádný srdeční tep (znamená to, že je program jukeboxu zastaven), Nano čeká 20 sekund (aby se ujistil, že se raspi zcela zastaví), aby uvolnil výkonové relé.

Jukebox je pak zcela vypnutý

Přidal jsem přepínač pro aktivaci vstupu nano pro indikaci režimu údržby (pomocí jukeboxu spravuji své další raspi servery pomocí ssh et vnc). Nano poté deaktivuje proces hlídacího psa

Poznámka:

vstup pro srdeční tep z Raspi je třeba stáhnout dolů (ale 3,3 V z Raspi je Nano považováno za vysokou úroveň)

Dalo by se to udělat s NE555, ale jsem líný a vždy mám v zásuvce nějaké nano !!!!

Zde je krátký program C (lze otevřít pomocí programu Poznámkový blok ++)

Krok 6: Kabeláž

Kabeláž
Kabeláž
Kabeláž
Kabeláž

Pro obrazovku:

K napájení a ovládání obrazovky je na Raspi použit kabel HDMI a kabel USB.

Pro přední panel:

K Raspi je také připojen kabel USB, aby bylo možné nahrávat nové soubory nebo zálohovat.

K Nano je připojen USB kabel, aby měl přístup k softu (v případě potřeby pro úpravy)

Na malinu připojuji také bezdrátový klíč pro klávesnici, abych mohl provádět údržbu bez použití externího konektoru USB

Protože se používají Raspberry a Arduino, je kabeláž poměrně jednoduchá.

Vše je umístěno na desce matrice pásu.

Z Raspberry 2 se používají GPIO:

Pin22 pro IR LED

Pin 27 pro tlukot srdce na Arduino

na Arduinu

Pin 2 se používá jako přerušovací pin pro srdeční tep od Raspi.

Piny 3 až 5 se používají pro napájení LED diod (Start, Wdt, Maintenance).

Kolík 6 je pro spínač údržby.

Pin 7 je vyveden na reléový štít.

Zde je fritzingový soubor:

Krok 7: Krabice

Krabice
Krabice

Nebudu moc popisovat, co jsem udělal, protože to závisí na koncovém zesilovači a použitých reproduktorech.

Pro informaci je domácí kino umístěno ve spodní části krabice.

Jen přes reproduktory:

1 basový reproduktor

2 střední reproduktory, které jsem upravil, abych je vložil do krabice.

Na vrcholu:

Přední panel s obrazovkou, kontrolkami LED, přepínači a konektory USB.

Dřevo:

U reproduktorů, bočních panelů nahoře a dole, jsem použil 18 mm dřevěné prkno.

Přední strana je překližka 10 mm se šrouby 40 mm.

Pro usnadnění kabeláže a údržby (v případě potřeby !!!) jsem obvody umístil na zásuvku za přední panel

Aby se předešlo přehřátí, ve spodní části zadního panelu je vytvořen velký otvor a na zadní panel těsně vedle obvodů jsem umístil 5V ventilátor (8 cm).

Výše uvedený obrázek je jen pro představu.

Tak a je to !!!!!!!!!

Děkuji, že jste mě četli

A uvidíme se příště při nových dobrodružstvích

Doporučuje: