Taula de continguts:
- Subministraments
- Pas 1: Descripció de la part del gerd:
- Pas 2: els codis remots IR
- Pas 3: programa principal
- Pas 4: Part del gerd: arrencada automàtica i addició de fitxers nous
- Pas 5: la gestió de l'energia mitjançant Arduino Nano
- Pas 6: el cablejat
- Pas 7: la caixa
Vídeo: Raspitone: Jukebox fàcil d'utilitzar: 7 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:12
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:
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
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
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:
Jukebox fàcil: 6 passos
Easy Jukebox: Materials 1 placa arduino 1 protoboard 1 potenciómetro 1 zumbador pasivo 2 botones puentes 1 pantalla LCD 16X21 plancha de MDF (for the box)
Manera fàcil d'utilitzar Makey Makey amb una coberta tècnica: 5 passos
Manera fàcil d'utilitzar Makey Makey amb una coberta tècnica: Hola. Fa poc vaig veure un programa de tecnologia de makey makey makey en aquest concurs, que era molt divertit, però semblava difícil, així que vaig fer una manera fàcil de jugar a jocs amb un deck de tecnologia. Si us agrada la meva instrucció, si us plau voteu-la al concurs de makey makey
Com connectar i utilitzar el sensor de llum GY-30 BH1750 (GY30 / GY302) - Fàcil - Projecte Arduino: 7 passos
Com connectar i utilitzar el sensor de llum GY-30 BH1750 (GY30 / GY302) - Fàcil - Projecte Arduino
PiTextReader: un lector de documents fàcil d'utilitzar per a visions amb discapacitat: 8 passos (amb imatges)
PiTextReader: un lector de documents fàcil d’utilitzar per a visions deteriorades: Visió general Actualització: demostració de vídeo breu: https://youtu.be/n8-qULZp0GoPiTextReader permet a una persona amb una visió deficient "llegir" text de sobres, cartes i altres elements. Captura una imatge de l’ítem, es converteix en text pla amb OCR (Optical Char
DIY MusiLED, LEDs sincronitzats de música amb aplicació Windows i Linux amb un clic (32 i 64 bits). Fàcil de recrear, fàcil d'utilitzar, fàcil de transportar: 3 passos
DIY MusiLED, LEDs sincronitzats de música amb aplicació Windows i Linux amb un clic (32 i 64 bits). Fàcil de recrear, fàcil d'utilitzar i fàcil de portar: aquest projecte us ajudarà a connectar 18 LED (6 vermells + 6 blaus + 6 grocs) a la vostra placa Arduino i analitzar els senyals en temps real de la targeta de so de l'ordinador i transmetre'ls a els LED per il·luminar-los segons els efectes del ritme (Snare, High Hat, Kick)