Obsah:

Raspitone: Jukebox s jednoduchým používaním: 7 krokov
Raspitone: Jukebox s jednoduchým používaním: 7 krokov

Video: Raspitone: Jukebox s jednoduchým používaním: 7 krokov

Video: Raspitone: Jukebox s jednoduchým používaním: 7 krokov
Video: Steven Greer: Film SIRIUS (české titulky celý film) 2024, Júl
Anonim
Raspitone: ľahko použiteľný Jukebox
Raspitone: ľahko použiteľný Jukebox

Dobrý deň, môj ďalší projekt je, ako to zvyknem robiť, nie príliš užitočný projekt:

Toto je jukebox založený na Raspberry 3 B+

Viem, niečo také sa dá ľahko vykonať pomocou smartfónu a reproduktora Bluetooth.

Ale pre môj projekt som mal dva tvrdé predpoklady:

Chcel som urobiť niečo „vintage“.

A celkovo vzhľadom na skutočnosť, že moja dáma je definitívne beznádejná pre počítač alebo bluetooth alebo čokoľvek iné z 21. storočia (a dokonca aj 20.), musel som urobiť niečo veľmi jednoduché na použitie …

Špecifikácia teda bola nasledovná:

Jediné tlačidlo na spustenie stroja

Dotykový displej (veľmi jednoduchý) na správu hudby.

Stroj zastavíte jediným dotykom na obrazovke.

A aby ste mali dobrý zvuk ………..

Zásoby

Na to som použil:

1 malina 3 B+

1 staré domáce kino, ktoré bolo zbytočné kvôli čítačke DVD OOS (starý Samsung 2.1 s basovým reproduktorom a 2 reproduktormi, ktorý som upravil tak, aby sa zmestil do škatule)

1 doska HIFIBERRY DIGI+ (s optickým výstupom pre zosilňovač)

1 kapacitná dotyková obrazovka 7 (moja je Makeasy pre malinu so vstupom HDMI a napájaná cez USB, ale každá dotyková obrazovka HDMI by mala byť v poriadku)

1 napájací zdroj 5V 5A

1 štít relé

1 Arduino nano na riadenie procesu zapnutia/vypnutia

1 IR LED na ovládanie domáceho kina (LED poháňané tranzistorom 2N2222 NPN)

1 IR prijímač (pre časť projektu, ktorá sa učí IR kódom, získam ten svoj zo starého multimediálneho pevného disku so vzdialeným príkazom)

3 LED diódy

1 prepínač pre režim údržby

1 prepínač na prácu na arduino (počas nahrávania sa arduino resetuje)

niektoré konektory JST a Dupont

A pre krabicu

Drevo a preglejka (výrobu škatule však nebudem podrobne popisovať). stačí povedať, že pokiaľ ide o boomer vo vnútri škatule, 10 mm preglejka a 18 mm drevo sú povinné, ak nechcete pri hre vidieť, ako Jukebox prechádza cez obývaciu izbu !!!!

Krok 1: Popis časti maliny:

Raspi musí ovládať rôzne veci:

1) príkazy do domáceho kina (cez IR diaľkové ovládanie)

2) hudobné súbory

3) dotykový displej

4) Tep srdca Arduinu (ktorý spravuje Wdt (časovač strážneho psa))

Začal som z distribúcie Raspbian strech na 16 G SD karte (Keďže budeme čítať iba súbory z SD karty, použitie pevného disku nie je potrebné). V tejto časti nebudem tráviť čas, pretože web je o tejto stránke plný..

Pozrime sa na rôzne časti v ďalších krokoch….

Krok 2: Kódy diaľkového ovládača IR

Keďže som nemohol nájsť obvodový plán domáceho kina, rozhodol som sa, že ho budem riadiť diaľkovými príkazmi

Prvým krokom, ktorý som musel dokončiť, bolo naučiť sa Raspiho kódy príkazu diaľkového ovládania domáceho kina. Na to som použil veľmi dobrú túto informáciu v IR inštrukciách od Instruinables od Austina Stantona.

Mal som určité rozdiely, pravdepodobne kvôli novej verzii, pretože pokyny sú dosť staré, súbor hardware.conf už neexistuje (aspoň som ho nenašiel)

Zdá sa tiež, že tranzistor použitý v tejto je tranzistor PNP, z mojej strany som použil 2N2222, čo je NPN, ale výsledok je rovnaký. (Okrem kabeláže !!!!!!!!)

Priradenie pinov je uvedené v /boot/config.txt:

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

IR LED bude tak pripojená k pinu 22 Raspi.

Jedna dôležitá poznámka: pri učení kódov Raspi je povinné používať kľúčové slová uvedené v príkaze

nezrovnalosť --list-namespace

Tu je súbor, ktorý som postavil pre svoj jukebox:

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

# Nájdite si čas na dokončenie tohto súboru, ako je to popísané v # https://sourceforge.net/p/lirc-remotes/wiki/Check… # a sprístupnite ho iným odoslaním na # #

# Tento konfiguračný súbor bol automaticky vygenerovaný

# using lirc -0.9.4c (default) on Thu May 9 17:33:37 2019 # Použitý príkazový riadok: -d /dev /lirc0 /root/lircd.conf

# Verzia jadra (uname -r): 4.14.98 -v7+ # # Vzdialený názov (ako v konfiguračnom súbore): jukebox

# Značka vzdialeného zariadenia, vec, ktorú držíte v ruke: # Model diaľkového zariadenia č.:

# Adresa URL vzdialeného zariadenia:

# Má vzdialené zariadenie dodávané zariadenie na zachytávanie e. napr

# USB kľúč?:

# Pre dodávané zariadenia USB: ID dodávateľa USB, ID produktu

# a reťazec zariadenia (použite dmesg alebo lsusb):

# Typ ovládaného zariadenia

# (TV, VCR, Audio, DVD, Satelit, Kábel, HTPC, …):

# Zariadenia ovládané týmto diaľkovým ovládaním:

začať diaľkovo

názov jukebox

bity 16

vlajky SPACE_ENC | CONST_LENGTH

eps 30

aeps 100

záhlavie 4470 4496

jeden 542 1693

nula 542 581

ptrail 553

pre_data_bits 16

pre_data 0xC2CA

medzera 107863

toggle_bit_mask 0x0

frekvencia 38 000

začať kódy

KEY_POWER 0x807F

KEY_AUX 0x8877

KEY_VOLUMEUP 0xCC33

KEY_VOLUMEDOWN 0xDC23

koncové kódy

koniec diaľkového ovládača

Ako vidíte, na ovládanie domáceho kina potrebujem iba 4 príkazy

Napájanie (ZAP/VYP)

AUX => na prepnutie na optický vstupný kanál (pretože HC vždy začína na čítačke DVD)

A objem +/-

Súvisiace príkazy sa vykonávajú pomocou príkazov LIRC:

napríklad: „irsend SEND_ONCE jukebox KEY_VOLUMEUP“

Krok 3: Hlavný program

Hlavný program je napísaný v Pythone:

Keďže som v Pythone nový, myslím, že je možné vykonať veľa vylepšení, ale beží….

Špecifikácia:

1) spravujte grafickú obrazovku:

Na to som použil APPJAR, ktorý je TKINTER, ale pre študentov civilizovaný (môj prípad), to znamená, že sa používa oveľa jednoduchšie, pravdepodobne s menšími možnosťami, ale na môj účel to stačilo.

2) prehrajte súbory mp3:

Na python som použil mplayer.

3) generujte náhodné čísla na hranie v náhodnom režime:

Keďže som nechcel počuť rovnakú pieseň každý štvrťrok, postavil som malý program na kontrolu, či číslo nie je uvedené v zozname x predchádzajúcich čísel (x v závislosti od dĺžky zoznamu skladieb).

Funkcia randint v pythone nie je taká „náhodná“, ako som videl.

4) pošlite „tlkot srdca“do Arduina

5) spravovať prehrávač súborov:

Pretože je Mplayer asynchrónny, pri spustení súboru neexistuje spôsob, ako zistiť, kedy je Python hotový (aspoň som nenašiel jednoduchý spôsob)

Aby som to vyriešil, použil som príkazy mplayer udávajúce dĺžku súboru a priebeh v aktuálnom súbore

Ako pre 4, tak pre 5 som použil možnosť danú programom Appjar na generovanie periodickej úlohy (keďže appjar je program udalostí, toto je spôsob, ako vytvoriť periodickú udalosť). funkcia je:

#******************* spustiť taskman ************************************************************************************

p.setPollTime (1000)

Taskman pre „správcu úloh“, čo je definícia v programe, ktorá spravuje všetky udalosti, ktoré nie sú na obrazovke (koniec prehrávaného súboru, osadenie pruhu postupu, odosielanie srdcového tepu do Nano, ….)

Po spustení obrazovka vyzerá takto:

Obrázok
Obrázok

Tu je program: (je možné otvoriť pomocou programu Poznámkový blok ++ alebo Geany)

Krok 4: Malinová časť: automatické spustenie a pridávanie nových súborov

Ak sa pozriete na program, môžete vidieť, že používam niektoré súbory bash:

1) Start_jukebox:

V skutočnosti je účelom zapnutie domáceho kina a prepnutie na vstup D. IN (optický vstup v mojom domácom kine)

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

irsend SEND_ONCE jukebox KEY_POWER

spať 7

irsend SEND_ONCE jukebox KEY_AUX

spať 2

2) stop_jukebox:

Na vypnutie domáceho kina

pi@raspitone:/bin $ cat stop_jukebox

#!/bin/bash

irsend SEND_ONCE jukebox KEY_POWER

Tieto dva súbory bash nazýva Python príkazom os.system

Na spustenie skriptu Python som urobil malé bash

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

cd /domov /pi

python jukebox_gui.py

Na automatické spustenie v režime GUI som upravil súbor automatického spustenia 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

Pridávanie nových súborov mp3:

Na pridanie nových súborov som uprednostnil vytvorenie malého vyhradeného skriptu Python:

new_song_file.py

Najprv vysvetlím organizáciu systémových súborov:

Všetky súbory sú v /home /pi

Súbory mp3 sú uložené v adresári/home/pi/Music

Každý umelec má svoj vlastný podadresár, v ktorom sú uložené súvisiace súbory mp3

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

-rwxr ----- 1 pi pi 2254923, jún 30 2017 A_New_Beginning.mp3

-rwxr ----- 1 pi pi 2691736 jún 30 2017 Príchod.mp3

-rwxr ----- 1 pi pi 8383244 jún 30 2017 Vzostup.mp3

-rwxr ----- 1 pi pi 5410816 jún 30 2017 Blue_Night.mp3

-rwxr ----- 1 pi pi 13125199 jún 30 2017 Castaway_ (inštrumentálne).mp3

-rwxr ----- 1 pi pi 12903583 jún 30 2017 Castaway.mp3

-rwxr ----- 1 pi pi 2969869 30. júla 2017 Kelt.mp3

-rwxr ----- 1 pi pi 9047745 jún 30 2017 Chariots_ (inštrumentálne).mp3

-rwxr ----- 1 pi pi 9403263 jún 30 2017 Chariots.mp3

V adresári Dokumenty nájdeme zostavený zoznam súborov na prehrávanie.

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 tiež nájsť údaje o zoznamoch skladieb (ale to je založené na skripte Python)

Malý skript Pythonu pridá nové piesne uložené v Hudbe do súboru list.txt po formátovaní názvov vo formáte UNIX

Tu je skript: (je možné otvoriť pomocou programu Poznámkový blok ++ alebo Geany)

Krok 5: Správa napájania prostredníctvom Arduino Nano

Keďže som chcel mať niečo ľahké na začiatku, rozhodol som sa to urobiť malým nano:

Princíp:

Po stlačení tlačidla štart sú všetky zariadenia napájané, nano sa spustí (1 alebo 2 sekundy) a prevezme riadenie napájania spustením relé, ktoré zopne kontakty tlačidiel.

Potom Nano čaká 35 sekúnd na prijatie srdcového tepu od Raspberry (to znamená, že proces spustenia je dokončený a program jukebox beží).

Pokiaľ nano prijíma tlkot srdca, necháva relé zapnuté (časovač strážneho psa)

Ak už žiadny tlkot srdca (znamená to, že program jukeboxu je zastavený) Nano čaká 20 sekúnd (aby sa ubezpečil, že sa raspi úplne zastaví), aby uvoľnil výkonové relé.

Jukebox je potom úplne vypnutý

Pridal som prepínač na aktiváciu vstupu nano na indikáciu režimu údržby (pomocou jukeboxu spravujem svoje ostatné servery raspi prostredníctvom ssh et vnc). Nano potom deaktivuje proces strážneho psa

Poznámka:

vstup pre tlkot srdca od Raspi je potrebné stiahnuť (ale 3,3 V od Raspi považuje Nano za vysokú úroveň)

Dalo by sa to urobiť s NE555, ale som lenivý a vždy mám v zásuvke nejaké nano !!!!

Tu je krátky program C (dá sa otvoriť pomocou programu Poznámkový blok ++)

Krok 6: Kabeláž

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

Pre obrazovku:

Na napájanie a ovládanie obrazovky používa Raspi kábel HDMI a kábel USB.

Pre predný panel:

K Raspi je tiež pripojený kábel USB, aby bolo možné nahrávať nové súbory alebo zálohovať.

K zariadeniu Nano je pripojený kábel USB, aby mal prístup k softvéru (v prípade potreby je možné ho zmeniť)

Na malinu zapojím aj bezdrôtový klávesnicový kľúč, aby som mohol vykonávať údržbu bez použitia externého konektora USB

Pretože sa používajú Raspberry a Arduino, kabeláž je pomerne jednoduchá.

Všetko je umiestnené na páskovej maticovej doske.

Z maliny 2 sa používajú GPIO:

Pin22 pre IR LED

Pin 27 pre srdcový tep do Arduina

na Arduine

Kolík 2 sa používa ako kolík na prerušenie srdcového tepu od spoločnosti Raspi.

Piny 3 až 5 slúžia na napájanie LED diód (Štart, Wdt, Údržba).

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

Pin 7 je vyvedený na tienenie relé.

Tu je mrazivý súbor:

Krok 7: Krabica

Box
Box

Nebudem veľa opisovať, čo som urobil, pretože to závisí od výkonového zosilňovača a od použitých reproduktorov.

Ako informáciu je domáce kino umiestnené v spodnej časti škatule.

Tesne nad reproduktormi:

1 basový reproduktor

2 stredné reproduktory, ktoré som upravil, aby som ich vložil do škatule.

Na vrchole:

Predný panel s obrazovkou, diódami LED, vypínačmi a konektormi USB.

Drevo:

Na reproduktory, bočné panely v hornej a spodnej časti, som použil 18 mm drevenú dosku.

Predná strana je preglejka 10 mm so skrutkami 40 mm.

Na uľahčenie kabeláže a údržby (ak je to potrebné !!!) som obvody umiestnil na zásuvku za predným panelom

Aby sa zabránilo prehriatiu, v spodnej časti zadného panelu je urobený veľký otvor a na zadný panel hneď vedľa obvodov som vložil ventilátor 5 V (8 cm).

Vyššie uvedený obrázok slúži len na predstavu.

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

Ďakujem, že ma čítate

A vidíme sa nabudúce pri nových dobrodružstvách

Odporúča: