Obsah:
- Zásoby
- Krok 1: Popis součásti maliny:
- Krok 2: IR dálkové kódy
- Krok 3: Hlavní program
- Krok 4: Část Raspberry: automatické spuštění a přidávání nových souborů
- Krok 5: Správa napájení přes Arduino Nano
- Krok 6: Kabeláž
- Krok 7: Krabice
Video: Raspitone: Jukebox se snadno používá: 7 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:21
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:
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áž
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
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:
MutantC_v2 - snadno sestavitelný kapesní počítač Raspberry Pi/UMPC: 8 kroků (s obrázky)
MutantC_v2 - ruční ruční Raspberry Pi/UMPC: Ruční platforma Raspberry -pi s fyzickou klávesnicí, displejem a rozšiřujícím záhlavím pro vlastní desky (jako Arduino Shield). MutantC_V2 je nástupcem mutantC_V1. Podívejte se odtud na mutantC_V1. Https://mutantc.gitlab.io/https: //gitlab.com/mutant
JAK ODSTRANIT POZADÍ NA OBRÁZKU POUŽITÍM SLOVA SLOVO SNADNO: 12 kroků
JAK ODSTRANIT POZADÍ NA OBRÁZKU POUŽITÍM SLOVA SLOVO SNADNO: ahoj kluci !! jsem zpět!!!!! chybíte mi všichni :) mám nový instruktáž, který je velmi jednoduchý !!! věděli jste, že můžete upravovat obrázek v aplikaci Microsoft Word ?? ano, můžete odstranit pozadí nebo vylepšit obrázek, pokud jste nezkoušeli jiné aplikace, můžete použít
Vytvořte si vlastní osciloskop (Mini DSO) s STC MCU snadno: 9 kroků (s obrázky)
Vytvořte si vlastní osciloskop (Mini DSO) se STC MCU snadno: Jedná se o jednoduchý osciloskop vyrobený s MCU STC. Tento Mini DSO můžete použít k pozorování průběhu. Časový interval: 100us-500ms Rozsah napětí: 0-30V Režim kreslení: Vektor nebo tečky
Snadno nepřečtený e -mailový oznamovatel: 7 kroků
Snadný nepřečtený e -mailový oznamovatel: Ahoj všichni, vítejte u dalšího instruktovatelného. Se současnou situací práce z domova se potýkám s několika problémy, protože jsem čas od času dostával e -maily od své společnosti. Pak jsem přemýšlel o vytvoření stolního oznamovatele, který bude upozorněte mě na můj
Arduino: Indikátor Potentio používá Led Matrix MAX7219: 4 kroky
Arduino: Indikátor Potentio používá Led Matrix MAX7219: V předchozím tutoriálu jsem vytvořil indikaci potenciometru pomocí LED diody RGB ring neo Pixels. můžete to vidět v tomto článku „Indikátor potenciálu používá RGB Neopixel“A dnes ukážu indikátor potenciátoru pomocí LED diody MAX7219