Taula de continguts:

Raspitone: Jukebox fàcil d'utilitzar: 7 passos
Raspitone: Jukebox fàcil d'utilitzar: 7 passos

Vídeo: Raspitone: Jukebox fàcil d'utilitzar: 7 passos

Vídeo: Raspitone: Jukebox fàcil d'utilitzar: 7 passos
Vídeo: COMO FORMATAR UM HD EXTERNO OU QUALQUER OUTRO DISCO REMOVIVÉL USANDO O CMD (2018) a (2021) 2024, Desembre
Anonim
Raspitone: Jukebox fàcil d'utilitzar
Raspitone: Jukebox fàcil d'utilitzar

Hola, el meu proper projecte és, com solia fer, un projecte poc útil:

Es tracta d’un jukebox basat en un Raspberry 3 B +

Ho sé, una cosa així es pot fer fàcilment amb un telèfon intel·ligent i un altaveu Bluetooth.

Però per al meu projecte, tenia dos requisits previs:

Volia fer alguna cosa "vintage".

I, en general, tenint en compte que la meva senyora és definitivament desesperada per l'ordinador, el bluetooth o qualsevol altra cosa del segle XXI (i fins i tot del XX), vaig haver de fer alguna cosa molt senzilla d'utilitzar …

Per tant, les especificacions eren les següents:

Un sol polsador per engegar la màquina

Una pantalla tàctil (molt senzilla) per gestionar la música.

Un sol toc a la pantalla per aturar la màquina.

I per tenir un bon so …

Subministraments

Per a això he utilitzat:

1 gerd 3 B +

1 vell home cinema inútil a causa del lector de DVD OOS (un vell Samsung 2.1 amb woofer i 2 altaveus que vaig modificar perquè encaixessin a la caixa)

1 placa HIFIBERRY DIGI + (amb sortida òptica per a l'amplificador de potència)

1 pantalla tàctil capacitiva de 7 (la meva és Makeasy per a gerds amb entrada HDMI i alimentada per USB, però qualsevol pantalla tàctil HDMI hauria d'estar bé)

1 alimentació 5V 5A

1 escut de relé

1 Arduino nano per gestionar el procés d'encesa / apagat

1 led IR per conduir el cinema a casa (conduït per un transistor NPN 2N2222)

1 receptor IR (per a l'apartat d'aprenentatge dels codis IR del projecte, obtinc el meu d'un disc dur multimèdia antic amb comandament remot)

3 leds

1 commutador per al mode de manteniment

1 commutador per treballar a l'arduino (durant la càrrega es restableix l'arduino)

alguns connectors JST i Dupont

I per la caixa

Fusta i contraxapat (però no descriuré profundament la fabricació de la caixa). només per dir que, pel que fa al boomer dins de la caixa, la fusta contraxapada de 10 mm i la fusta de 18 mm són obligatoris si no voleu veure el Jukebox creuant la sala mentre jugueu !!!!

Pas 1: Descripció de la part del gerd:

El Raspi ha de gestionar diferents coses:

1) les ordres per al cinema a casa (mitjançant control remot IR)

2) els fitxers de música

3) la pantalla tàctil

4) El batec del cor a l'Arduino (que gestiona el Wdt (temporitzador de gossos de vigilància))

Vaig començar a partir d’una distribució Strech Raspbian en una targeta SD de 16 G (Com que només llegirem fitxers de la targeta SD, no és necessari l’ús d’un disc dur). No passaré temps en aquesta part, ja que la web està plena de tutors sobre això …

Vegem les diferents parts en els passos següents …

Pas 2: els codis remots IR

Com que no trobava el pla del circuit del cinema a casa, vaig decidir conduir-lo mitjançant comandes remotes

El primer pas que vaig haver de completar va ser aprendre a Raspi els codis de la comanda remota Home cinema. Per això vaig utilitzar el molt bon tuto a Instructables dels codis IR d'Austin Stanton.

Vaig tenir algunes diferències, probablement a causa de la nova versió, ja que els instructables són bastant antics, el fitxer hardware.conf ja no existeix (almenys no el vaig trobar)

Sembla també que el transistor utilitzat al tuto és un transistor PNP, per la meva banda he utilitzat un 2N2222 que és NPN però el resultat és el mateix (excepte el cablejat !!!!!!!!)

L'assignació de pins es dóna a /boot/config.txt:

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

El LED IR estarà tan connectat al pin22 del Raspi.

Una observació important: a l’hora d’aprendre els codis de Raspi, és obligatori utilitzar les paraules clau que apareixen a l’ordre

irrecord --list-namespace

Aquí teniu el fitxer que he construït per al meu jukebox:

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

# Preneu-vos el temps per acabar aquest fitxer tal com es descriu a # https://sourceforge.net/p/lirc-remotes/wiki/Check… # i feu-lo disponible per a altres persones enviant-lo a # #

# Aquest fitxer de configuració s'ha generat automàticament

# utilitzant lirc-0.9.4c (per defecte) el dijous 9 de maig 17:33:37 2019 # Línia d'ordres utilitzada: -d / dev / lirc0 /root/lircd.conf

# Versió del nucli (uname -r): 4.14.98-v7 + # # Nom remot (segons el fitxer de configuració): jukebox

# Marca de dispositiu remot, el que teniu a la mà: # Model de dispositiu remot:

# URL de la informació del dispositiu remot:

# El dispositiu remot té un dispositiu de captura inclòs e. g., a

# dongle usb?:

# Per a dispositius USB inclosos: identificador de proveïdor USB, identificador de producte

# i cadena de dispositiu (utilitzeu dmesg o lsusb):

# Tipus de dispositiu controlat

# (TV, VCR, àudio, DVD, satèl·lit, cable, HTPC, …):

# Dispositius controlats per aquest comandament a distància:

començar a distància

nom jukebox

bits 16

indicadors SPACE_ENC | CONST_LENGTH

eps 30

aeps 100

capçalera 4470 4496

un 542 1693

zero 542 581

ptrail 553

pre_data_bits 16

pre_dades 0xC2CA

107863

toggle_bit_mask 0x0

freqüència 38000

comença els codis

KEY_POWER 0x807F

KEY_AUX 0x8877

KEY_VOLUMEUP 0xCC33

KEY_VOLUMEDOWN 0xDC23

codis finals

final remot

Com podeu veure, només necessito 4 ordres per conduir el Home Cinema

Alimentació (ON / OFF)

AUX => per canviar al canal d'entrada òptic (ja que l'HC sempre s'inicia al lector de DVD)

I volum +/-

Les ordres relacionades s’executen mitjançant les ordres LIRC:

per exemple: "irsend SEND_ONCE jukebox KEY_VOLUMEUP"

Pas 3: programa principal

El programa principal està escrit en Python:

Com que sóc nou a Python, suposo que es poden fer moltes millores, però funciona …

Les especificacions:

1) gestioneu la pantalla gràfica:

Per a això, he utilitzat APPJAR que és TKINTER però civilitzat per a estudiants (el meu cas), això significa molt més fàcil d’utilitzar, probablement amb menys possibilitats, però va ser suficient per al meu propòsit.

2) reproduïu els fitxers mp3:

He utilitzat mplayer per a Python.

3) generar números aleatoris per reproduir-los en mode aleatori:

Com que no volia escoltar la mateixa cançó cada trimestre, vaig crear un petit programa per comprovar si el número no estava present a la llista de x números anteriors (x en funció de la longitud de la llista de reproducció).

La funció randint a Python no és tan "aleatòria" pel que he vist.

4) envieu el "batec del cor" a l'Arduino

5) gestiona el reproductor de fitxers:

Com que Mplayer és asíncron, quan s’inicia el fitxer no hi ha manera de saber per a Python quan s’acabi (almenys no he trobat una manera senzilla)

Per resoldre-ho, he utilitzat les ordres mplayer que indiquen la longitud del fitxer i el progrés del fitxer actual

Tant per a 4 com per a 5 he utilitzat la possibilitat donada per Appjar per generar una tasca periòdica (ja que appjar és un programa d'esdeveniments, és una manera de crear un esdeveniment periòdic). la funció és:

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

p.setPollTime (1000)

Taskman per al "gestor de tasques" que és una definició del programa que gestiona tot el que no són esdeveniments de pantalla (final del fitxer reproduït, omplir la barra de progrés, enviar batecs del cor a Nano, …)

Un cop iniciada, la pantalla té aquest aspecte:

Imatge
Imatge

Aquí teniu el programa: (es pot obrir mitjançant Notepad ++ o Geany)

Pas 4: Part del gerd: arrencada automàtica i addició de fitxers nous

Si mireu el programa, veureu que faig servir alguns fitxers bash:

1) Start_jukebox:

De fet, el propòsit és encendre el Home Cinema i canviar a l'entrada D. IN (entrada òptica al meu Home Cinema).

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

envieu SEND_ONCE jukebox KEY_POWER

dorm 7

envieu SEND_ONCE jukebox KEY_AUX

dorm 2

2) stop_jukebox:

Per apagar el cinema a casa

pi @ raspitone: / bin $ cat stop_jukebox

#! / bin / bash

envieu SEND_ONCE jukebox KEY_POWER

Aquests dos fitxers bash són anomenats per Python amb l'ordre os.system

Per iniciar l’escriptura Python he fet un petit bash

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

cd / home / pi

python jukebox_gui.py

Per a l’inici automàtic en mode GUI, acabo de modificar el fitxer d’inici automàtic a / etc / xdg / lxsession / LXDE-pi

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

@pcmanfm --desktop --profile LXDE-pi

@xscreensaver -no-splash

@lxterminal --command = "dem_jukebox.bash"

punt-rpi

Addició de fitxers mp3 nous:

Per afegir fitxers nous, he preferit fer un petit script Python dedicat:

new_song_file.py

Primer explicaré l’organització dels fitxers del sistema:

Tots els fitxers es troben a / home / pi

els fitxers mp3 s’estrenen al directori / home / pi / Music

Cada artista té el seu propi subdirectori allotjant els fitxers mp3 relacionats

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

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

-rwxr ----- 1 pi pi 2691736 juin 30 2017 Arribada.mp3

-rwxr ----- 1 pi pi 8383244 juin 30 2017 Ascension.mp3

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

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

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

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

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

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

Al directori Documents podem trobar la llista construïda de fitxers per reproduir.

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

També podem trobar les dades de les llistes de reproducció (però es basa en l’escriptura Python)

El petit script Python afegeix les cançons noves, desades a Music, al list.txt després d’haver formatat els títols en format UNIX

Aquí teniu l'script: (es pot obrir mitjançant Notepad ++ o Geany)

Pas 5: la gestió de l'energia mitjançant Arduino Nano

Com que volia tenir alguna cosa fàcil de començar, vaig decidir fer-ho amb un petit nano:

El principi:

En prémer el botó d'inici, tots els dispositius s'encenen, el nano s'inicia (1 o 2 segons) i pren la gestió de l'energia activant un relé que esquiva els contactes del polsador.

A continuació, Nano espera 35 segons per rebre el batec del cor de Raspberry (vol dir que el procés d’inici s’ha completat i que s’executa el programa de la jukebox).

Mentre nano rep els batecs del cor, manté el relé activat (temporitzador de gos de vigilància)

Si ja no es produeix cap batec del cor (significa que el programa de la caixa de discos està aturat), Nano espera 20 segons (per assegurar-se que el raspi està completament aturat) per alliberar el relé de potència.

Aleshores, la caixa de discos està totalment apagada

He afegit un commutador per activar una entrada del nano per indicar el mode de manteniment (faig servir el jukebox per gestionar els altres servidors raspi mitjançant ssh et vnc). Llavors, Nano desactiva el procés del gos guardià

Observació:

cal reduir l'entrada del batec del cor de Raspi (però Nano considera que el 3,3 V de Raspi és d'alt nivell)

Es podria fer amb NE555, però sóc mandrós i sempre tinc alguna nano al calaix !!!!

Aquí teniu el programa C curt (es pot obrir amb Notepad ++)

Pas 6: el cablejat

El cablejat
El cablejat
El cablejat
El cablejat

Per a la pantalla:

A Raspi s’utilitzen un cable HDMI i un cable USB per alimentar i conduir la pantalla.

Per al tauler frontal:

També es connecta un cable USB des del Raspi per poder carregar fitxers nous o fer còpies de seguretat.

Es connecta un cable USB des del Nano per poder accedir al soft (per modificacions si cal)

Connecto també un dongle de teclat sense fils al gerd per poder fer manteniment sense utilitzar el connector USB extern

Com que s’utilitzen Raspberry i Arduino, el cablejat és bastant senzill.

Tot està situat en una placa de matriu de tires.

A partir de gerds 2 s’utilitzen GPIO:

Pin22 per LED IR

Pin 27 per al batec del cor a Arduino

a Arduino

El pin 2 s'utilitza com a pin d'interrupció del batec del cor de Raspi.

Els passadors 3 a 5 s’utilitzen per conduir els leds (Start, Wdt, Maintenance).

El pin 6 és per al commutador de manteniment.

El pin 7 surt al blindatge del relé.

Aquí teniu el fitxer fritzing:

Pas 7: la caixa

La Caixa
La Caixa

No descriuré molt el que vaig fer, ja que depèn de l'amplificador de potència i dels altaveus utilitzats.

Com a informació, el cinema a casa es troba a la part inferior del quadre.

Poc sobre els altaveus:

1 woofer

2 altaveus mitjans, que vaig modificar per inserir-los al quadre.

A la part superior:

El panell frontal amb la pantalla, els LED, els interruptors i els endolls USB.

La fusta:

Per als altaveus, els panells laterals superior i inferior he utilitzat taulons de fusta de 18 mm.

La cara frontal és de fusta contraxapada de 10 mm amb cargols de 40 mm.

Per facilitar el cablejat i el manteniment (si cal !!!) vaig posar els circuits en un calaix darrere del panell frontal

Per evitar el sobreescalfament, es fa un gran forat a la part inferior del panell posterior i he posat un ventilador de 5V (8 cm) al panell posterior just al costat del circuit.

La imatge superior és només per fer-ne una idea.

Llavors, ja està !!!!!!!!!

Gràcies per llegir-me

I ens veiem la propera vegada per a noves aventures

Recomanat: