Sommario:

PAB: un Audio Box personale: 5 passaggi
PAB: un Audio Box personale: 5 passaggi

Video: PAB: un Audio Box personale: 5 passaggi

Video: PAB: un Audio Box personale: 5 passaggi
Video: Daft Punk - Instant Crush (Video) ft. Julian Casablancas 2024, Dicembre
Anonim
PAB: una scatola audio personale
PAB: una scatola audio personale

L'idea di questo progetto nasce dall'esigenza di raschiare i tre grandi componenti dell'impianto HiFi, ormai giunti a fine vita. Inoltre, avevo bisogno di più spazio nello scaffale per altri oggetti, quindi ho colto l'occasione per iniziare a studiare presso un Personal Audio Box per sostituire tutte le funzioni dei tre "giganti" vintage.

Un Raspberry Pi3B+ sembrava essere la scelta migliore per questi motivi:

  • Fattore di forma ridotto e basso consumo energetico;
  • Un'uscita audio PCM di qualità accettabile;
  • Disponibilità di mopidy, un server musicale estensibile che implementa il protocollo mpd;
  • Elevata integrazione di fonti: musica locale, CDROM, flussi radio, Spotify, Tunein, ecc.

Integrandolo con pochi altri componenti, sono riuscito a creare un sistema completo e headless, in grado di riprodurre musica da CD, file locali, radio online, playlist Spotify, podcast. E tramite l'utilizzo di un frontend, ora posso gestire tutto il suo funzionamento da qualsiasi dispositivo connesso alla LAN (smartphone, computer, tablet).

Forniture

  • Lampone PI3B+
  • Una vecchia custodia per DVD
  • Lettore CDROM
  • Alimentazione 5v-5A
  • Supercondensatori
  • Componenti vari (transistor, LED, relè, Op-Amp): vedere i dettagli del progetto

Passaggio 1: caso e layout dei componenti

Caso e disposizione dei componenti
Caso e disposizione dei componenti
Caso e disposizione dei componenti
Caso e disposizione dei componenti
Caso e disposizione dei componenti
Caso e disposizione dei componenti
Caso e disposizione dei componenti
Caso e disposizione dei componenti

Il primo problema che ho dovuto affrontare è stato selezionare e trovare un caso adatto. Non trovando nulla a casa, ho trovato questo lettore DVD economico su Amazon per pochi dollari, ma qualcosa di simile sarà abbastanza buono. La custodia ha queste dimensioni: 27 cm x 20 cm x 3,5 cm.

Ho rimosso completamente tutto il contenuto, mantenendo solo la piccola scheda per gestire il LED frontale, il pulsante di accensione e l'ingresso USB. Poi ho progettato il layout interno per i nuovi componenti (vedi foto).

Passaggio 2: l'interruttore di rilevamento audio stereo

L'interruttore di rilevamento dell'audio stereo
L'interruttore di rilevamento dell'audio stereo
L'interruttore di rilevamento dell'audio stereo
L'interruttore di rilevamento dell'audio stereo
L'interruttore di rilevamento dell'audio stereo
L'interruttore di rilevamento dell'audio stereo

Perché un interruttore audio automatico? L'esigenza nasce dal fatto che ascolto spesso la TV attraverso l'amplificatore HiFi, ma non ho voluto selezionare ogni volta l'interruttore della sorgente sull'amplificatore. Con questo circuito, l'ingresso dell'amplificatore è sempre lo stesso e la sorgente viene selezionata automaticamente dall'interruttore di rilevamento audio stereo.

Lo schema è immediato. Quando il PAB non è in riproduzione, la sorgente audio dell'HiFi proviene dal televisore. Se il PAB viene riprodotto, il relè seleziona l'audio da Raspberry.

Passaggio 3: la scatola dei supercondensatori

La scatola dei supercondensatori
La scatola dei supercondensatori
La scatola dei supercondensatori
La scatola dei supercondensatori

Come noto, un'improvvisa interruzione dell'alimentazione al Raspberry provoca l'immediato spegnimento senza l'esecuzione della procedura di spegnimento, rischiando di compromettere il sistema operativo e quindi la sua totale funzionalità. Un supercondensatore differisce da un condensatore tradizionale per due caratteristiche essenziali: le sue armature hanno infatti un'area maggiore e la distanza tra loro è molto minore, in quanto l'isolante interposto funziona in modo diverso da un dielettrico convenzionale. Con queste tecniche si possono realizzare condensatori di capacità molto elevata (dell'ordine di diverse decine di Farad) pur mantenendo dimensioni contenute. L'idea è quindi quella di creare un "buffer" 5v tramite supercondensatori e di attivare lo spegnimento quando viene rilevata l'assenza della tensione di alimentazione. In questo modo non sarà più necessario intervenire manualmente per avviare lo spegnimento, ma sarà sufficiente rimuovere la spina (o attivare un interruttore) per garantire uno spegnimento sicuro.

Facendo riferimento allo schema, l'alimentazione è applicata al terminale sinistro e il diodo Schottky impedisce qualsiasi ritorno di corrente all'alimentatore. Le due resistenze di potenza da 1.2Ω 5W in parallelo limitano la corrente di carica dei supercondensatori, per proteggere l'alimentazione. Senza questi resistori, la corrente di picco richiesta dai due supercondensatori scarichi sarebbe quasi certamente in grado di danneggiare l'alimentatore. Il diodo di potenza deve essere necessariamente del tipo Schottky per poter inserire una caduta di tensione minima in serie alla barra da 5V.

I due supercondensatori sono collegati in serie per garantire una tensione massima di 5,4 Volt ai loro capi (ogni supercondensatore è 10F, 2,7V) e le due resistenze in parallelo alle capacità bilanciano le correnti di carica e garantiscono una scarica lenta quando si accende il Raspberry spento. I due resistori da 1KΩ paralleli all'ingresso dividono a metà i 5V dell'alimentatore per ricevere il segnale necessario a rilevare la mancanza di alimentazione (collegato al Raspberry GPIO 7). A differenza delle moderne celle al litio, i supercondensatori garantiscono un numero pressoché infinito di cicli di carica e scarica, senza perdere alcuna caratteristica.

Il circuito sarà quindi in grado di mantenere il Raspberry alimentato e funzionante per il tempo necessario ad eseguire un regolare spegnimento. L'inizio del processo di spegnimento verrà rilevato da un programma in esecuzione sul Raspberry che monitorerà lo stato del GPIO 7, a cui è collegato il livello di potenza. Quando l'alimentazione viene scollegata, il pin 7 GPIO passa a un livello basso e attiva l'arresto. Questo è il codice:

#!/usr/bin/env python

import RPi. GPIO as GPIO import subprocess GPIO.setmode(GPIO. BCM) # usa la numerazione GPIO GPIO.setwarnings(False) INT = 7 # pin 26 monitor Alimentazione # usa un pull_up debole per creare un GPIO.setup(INT, GPIO. IN, pull_up_down=GPIO. PUD_UP) def main(): while True: # imposta un interrupt su un fronte di discesa e aspetta che si verifichi GPIO.wait_for_edge(INT, GPIO. FALLING) # controlla nuovamente il livello del pin se GPIO.input(INT) == 0: # ancora basso, spegnimento Pi subprocess.call(['poweroff'], shell=True, / stdout=subprocess. PIPE, stderr=subprocess. PIPE) if _name_ == '_main_': principale()

Il programma deve essere salvato in /usr/local/bin/.py e configurato per essere eseguito all'avvio di Raspberry. Dai test effettuati, le capacità dei due supercondensatori si sono rivelate sufficienti a garantire il tempo di spegnimento del Raspberry. Se occorre più tempo, sarà sufficiente introdurre altri due supercondensatori in parallelo a quelli esistenti, oppure sostituirli con due di maggiore capacità.

Passaggio 4: assemblaggio e utilizzo delle porte USB

Assemblaggio e utilizzo delle porte USB
Assemblaggio e utilizzo delle porte USB

Lo Schema a blocchi mostra come collegare i vari dispositivi per PAB sul bus principale 3 (+5v, USB e audio stereo).

Si noti che l'alimentatore del lettore CD è stato collegato direttamente all'alimentatore principale tramite un cavo a "Y", mentre l'ingresso audio va al Raspberry. Le quattro porte USB Raspberry sono state utilizzate per:

  • lettore di CD;
  • una pendrive da 250GB per archiviare file musicali locali (mp3, m4a, wma, flac, ecc.);
  • una scheda micro SD da 16 GB (con adattatore USB) per archiviare il backup completo della SD Raspi principale (vedi sotto);
  • una connessione alla porta USB esterna sulla custodia.

La porta USB esterna può essere utilizzata per riprodurre musica esterna o per alimentare dispositivi esterni. Nel mio caso, sto alimentando un trasmettitore Bluetooth esterno poiché ho scartato quello interno del Raspi a causa della bassa portata e dell'instabilità. Con il bluetooth esterno sto guidando 2 diversi altoparlanti stereo a casa.

La scheda micro SD da 16 GB (con adattatore USB) contiene un backup completo di Raspberry. Sto usando rpi-clone, che si è rivelato un ottimo progetto che permette di avere un backup completo e funzionante del Raspberry senza la necessità di rimuovere la SD interna. Ho scambiato molte volte questa SD con quella interna, senza alcun problema. Quindi ho impostato un cronjob per l'utente root:

#Backup su sda - ogni mercoledì sera

15 2 * * 3 /usr/sbin/rpi-clone sda -u | mail -s "Backup PAB su SD - fatto"

Ho quindi riutilizzato il pulsante di accensione originale sul case per spegnere e riavviare il Raspberry, seguendo questa guida:

Passaggio 5: software e sistema operativo

Software e sistema operativo
Software e sistema operativo
Software e sistema operativo
Software e sistema operativo
Software e sistema operativo
Software e sistema operativo

Il sistema operativo principale di PAB è un semplice Raspbian minimal (Debian Buster) con diverse aggiunte specifiche:

  • rpi-clone per il backup principale;
  • ssmtp, un semplice MTA per scaricare la posta dal sistema;
  • udevil, per consentire il montaggio automatico delle unità USB;
  • abcde, per prendere la mia collezione di CD e comprimerla in qualsiasi formato audio;
  • mopidy, un demone completo di lettore musicale con un sacco di plugin.

Ho quindi scritto un'applicazione server PAB Scheduler completa utilizzando python3 e tornado, il cui codice non rientra nell'ambito di questo articolo, ma posso fornire istruzioni su richiesta. Con lo Scheduler puoi impostare playlist per ogni momento della tua giornata, differenziando i giorni feriali dai fine settimana.

Il software principale che esegue PAB è mopidy. Per l'installazione e la configurazione di mopidy (abbastanza ampia) fare riferimento alla sua documentazione qui:

Questi sono i plugin installati:

  • Mopidy-Alsamixer
  • Mopidy-Archivio Internet
  • Mopidy-Local-Sqlite
  • Mopidy-Podcast
  • Mopidy-Scrobbler
  • Mopidy-Soundcloud
  • Mopidy-Spotify
  • Mopidy-Spotify-Tunigo
  • Mopidy-Cd
  • Mopidy-Iris
  • Mopidy-Immagini-locali
  • Mopidy-TuneIn

Per avere il pieno controllo di PAB, ho scelto l'estensione frontend Iris (vedi foto). Questa è un'applicazione web molto potente con le seguenti caratteristiche:

  • Controlli completi dell'interfaccia basata sul web per Mopidy
  • Supporto migliorato per le biblioteche locali (con tecnologia Mopidy-Local-Sqlite)
  • Sfoglia e gestisci playlist e tracce
  • Scopri musica nuova, popolare e correlata (con tecnologia Spotify)
  • Ospitato liberamente
  • Integrazione con:

    • Spotify
    • UltimoFM
    • Genio
    • Snapcast
    • Icecast

In questo modo, sono libero di controllare la mia musica praticamente da qualsiasi luogo (computer, tablet, smartphone).

Consigliato: