Sommario:
- Passaggio 1: materiali di consumo
- Passaggio 2: schema e cablaggio
- Passaggio 3: progettazione del database
- Passaggio 4: preparare il Raspberry Pi
- Passaggio 5: progettare in avanti il nostro database per RPi
- Passaggio 6: configurazione del Bluetooth sul nostro RPi
- Passaggio 7: scrivere il backend completo
- Passaggio 8: scrittura del frontend (HTML, CSS e JavaScript)
- Passaggio 9: costruire il mio caso e mettere tutto insieme
- Passaggio 10: alcuni problemi che ho riscontrato durante la creazione dell'altoparlante Slimbox…
Video: Slimbox: un altoparlante Bluetooth intelligente!: 10 passaggi (con immagini)
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
Ehilà!
Per il mio progetto scolastico presso MCT Howest Kortrijk, ho realizzato un dispositivo altoparlante Bluetooth intelligente con diversi sensori, incluso un anello LCD e RGB NeoPixel. Tutto gira sul Raspberry Pi (Database, Webserver, Backend).
Quindi in questo tutorial ti mostrerò come ho realizzato questo progetto in 3 settimane, passo dopo passo, quindi se qualcuno di voi vuole ricreare il mio progetto, può farlo facilmente!
Questo è anche il mio primo istruibile, se hai domande, cercherò di rispondere il più rapidamente possibile!
Il mio GitHub:
Passaggio 1: materiali di consumo
Sensore di temperatura DS18B20
Il DS18B20 è un sensore a un filo che misura la temperatura, prodotto da Maxim Integrated. Ci sono 2 tipi di sensori DS18B20, il solo componente (che ho usato io) e la versione impermeabile, che è molto più grande, ma non è quello che mi serviva per il mio progetto, quindi ho usato solo il componente. Il sensore può misurare la temperatura in un intervallo da -55°C a +125°C (da -67°F a +257°F) e ha una precisione di 0,5°C da -10°C a +85°C. Ha anche una risoluzione programmabile da 9 bit a 12 bit.
Scheda tecnica:
Sensore potenziometro
Un potenziometro è un resistore a tre terminali che è regolabile manualmente ruotando semplicemente la parte superiore del sensore. La posizione della parte superiore determina la tensione di uscita del potenziometro.
LSM303 Accelerometro + Bussola Breakout
La breakout board LSM303 è una combinazione di un accelerometro a tre assi e un magnetometro/bussola, prodotto da Adafruit. Viene utilizzato con l'interfaccia I2C del Raspberry Pi.
Panoramica:
Scheda tecnica:
MCP3008
Per leggere i dati dal mio potenziometro ho usato un MCP3008, che è un convertitore analogico/digitale a 8 canali a 10 bit con interfaccia SPI ed è abbastanza facile da programmare.
Scheda tecnica:
Altoparlante – Diametro 3” – 8 Ohm 1 Watt
Questo è il cono dell'altoparlante che ho scelto dopo aver calcolato la tensione e gli ampere di cui avrebbe avuto bisogno e questo era perfetto per il mio progetto Raspberry Pi, prodotto da Adafruit.
Panoramica:
MAX98357 Amplificatore mono in classe D I2S
Questo è l'amplificatore che viene fornito con l'altoparlante, non solo è un amplificatore, è anche un convertitore da digitale ad analogico I2S, quindi è anche perfetto per il mio sistema di altoparlanti e audio.
Panoramica:
Scheda tecnica:
Arduino Uno
Arduino Uno è una scheda microcontrollore open source basata sul microcontrollore Microchip ATmega328P, prodotta da Arduino.cc. La scheda Uno ha 14 pin digitali, 6 pin analogici ed è completamente programmabile con il software Arduino IDE
Panoramica:
Traslatore di livello
Questa è una piccola scheda che si occupa della comunicazione tra Arduino Uno e Raspberry Pi e le diverse tensioni, Arduino: 5V e Raspberry Pi: 3.3V. Questo è necessario perché l'anello NeoPixel è collegato all'Arduino e gira lì, mentre tutte le altre cose girano sul Raspberry Pi.
Anello NeoPixel RGB
Questo è un piccolo anello riempito con 12 led RGB (puoi acquistare anelli più grandi con più led RGB, se lo desideri). Che nel mio caso è collegato all'Arduino Uno, ma può essere collegato anche a molti altri dispositivi ed è davvero semplice da usare.
Panoramica:
Display LCD 16x2
Ho usato un display LCD di base per stampare la mia temperatura, volume e indirizzo IP.
Scheda tecnica:
Scheda SD Raspberry Pi 3B+ e 16GB
Il mio intero progetto viene eseguito sul mio Raspberry Pi 3B+ con un'immagine configurata, che ti aiuterò a configurare in seguito nel mio istruibile.
GPIO T-Part, 2 breadboard e tanti ponticelli
Per collegare tutto ciò di cui avevo bisogno breadboard e jumperwire, ho usato la parte T GPIO in modo da avere più spazio ed è chiaro quale pin è quale.
Passaggio 2: schema e cablaggio
Per il mio schema ho usato Fritzing, è un programma che puoi installare che ti permette di creare uno schema davvero facile in diversi tipi di viste.
Scarica Fritzing:
Quindi assicurati di collegare tutto nel modo giusto! Nel mio caso i colori dei fili non sono gli stessi dello schema.
Passaggio 3: progettazione del database
Stiamo raccogliendo molti dati dai 3 sensori collegati, quindi abbiamo bisogno di un database in cui archiviare dati e sensori. Più avanti vedremo come configurare il database sul Raspberry Pi e come aggiungere dati ad esso. Ma prima deve essere realizzato il progetto del database o ERD (Entity Relationship Diagram) e anche il mio è stato normalizzato con 3NF. Ecco perché dividiamo i sensori in un'altra tabella e lavoriamo con gli ID.
Nel complesso, questo è un progetto di database davvero semplice e semplice con cui lavorare ulteriormente.
Passaggio 4: preparare il Raspberry Pi
Quindi ora che abbiamo fatto alcune basi del progetto. Iniziamo con il Raspberry Pi!
Configurazione della scheda SD
Innanzitutto, è necessaria una scheda SD da 16 GB su cui inserire l'immagine e un programma per caricare un'immagine iniziale sulla scheda SD.
Software:
Immagine iniziale:
Quindi una volta scaricati questi:
- Metti la tua scheda SD nel tuo computer.
- Apri Win32 che hai appena scaricato.
- Seleziona il file immagine Raspbian che hai appena scaricato.
- Fare clic su "scrivi" nella posizione della scheda SD.
Questa operazione potrebbe richiedere del tempo, a seconda dell'hardware. Fatto ciò, siamo pronti per apportare alcune modifiche finali prima di inserire l'immagine nel nostro RPi.
- Vai alla directory della tua scheda SD, cerca il file chiamato "cmdline.txt" e aprilo.
- Ora aggiungi 'ip=169.254.10.1' sulla stessa riga.
- Salva il file.
- Crea un file chiamato 'ssh' senza estensione o contenuto.
Ora puoi espellere SICURAMENTE la scheda SD dal tuo computer e inserirla nel Raspberry Pi SENZA alimentazione. Una volta che la scheda SD è nell'RPI, collegare un cavo LAN dal computer alla porta LAN dell'RPi, una volta collegata è possibile collegare l'alimentazione all'RPi.
Ora vogliamo controllare il nostro Raspberry Pi, questo viene fatto tramite Putty.
Software Putty:
Una volta scaricato, apri Putty e inserisci l'IP '169.254.10.1' e la porta '22' e il tipo di connessione: SSH. Ora possiamo finalmente aprire la nostra interfaccia a riga di comando e accedere con le informazioni di accesso di avvio -> Utente: pi e Password: raspberry.
Raspi-config
sudo raspi-config
Ciò che è veramente importante per questo progetto è la sezione interfacciamento, dobbiamo abilitare molte interfacce diverse, abilitare tutte le seguenti interfacce:
- Un filo
- SPI
- I2C
- Seriale
Ora che abbiamo finito con raspi-config, proviamo a stabilire una connessione con Internet.
Connessione wifi
Innanzitutto, devi essere root per i seguenti comandi
sudo -i
Una volta che sei root, usa il seguente comando. SSID è il nome della tua rete e la password è ovviamente la password.
wpa_passphrase "ssid" "password" >> /etc/wpa_supplicant/wpa_supplicant.conf
Nel caso in cui tu abbia commesso un errore, puoi controllare, aggiornare o eliminare questa rete semplicemente inserendo quel file:
nano /etc/wpa_supplicant/wpa_supplicant.conf
Quindi, dopo essere entrati nella nostra rete, entriamo nell'interfaccia client WPA
wpa_cli
Seleziona la tua interfaccia
interfaccia wlan0
Ricarica il file
riconfigurare
E finalmente puoi vedere se sei connesso bene:
ip a
Aggiorna e aggiorna
Ora che siamo connessi a Internet, aggiornare i pacchetti già installati sarebbe una mossa intelligente, quindi facciamolo prima di installare altri pacchetti.
sudo apt-get update
sudo apt-get upgrade
Database MariaDB
Installa il server del database MariaDB:
sudo apt-get install mariadb-server
Server Web Apache2
Installa il server web Apache2:
sudo apt install apache2
Pitone
Installa Python:
update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
update-alternatives --install /usr/bin/python python /usr/bin/python3 2
Pacchetto Python
Dovrai installare tutti questi pacchetti per far funzionare perfettamente il backend:
- Borraccia
- Flask-Cors
- Flask-MySql
- Flask-SocketIO
- PyMySQL
- Richieste
- Python-socketio
- RPi. GPIO
- Gevent
- Gevent-websocket
- Ujson
- Wsaccel
Libreria dei relatori
Installa la libreria di altoparlanti da Adafruit:
curl -sS https://raw.githubusercontent.com/adafruit/Raspbe… | bash
È ora di riavviare
sudo reboot
Passaggio 5: progettare in avanti il nostro database per RPi
Ora che abbiamo installato tutto ciò di cui avevamo bisogno, mettiamo il nostro database che abbiamo progettato sul nostro Raspberry Pi!
Quindi, prima dobbiamo inoltrare l'ingegnere al nostro database nel workbench MySql, mentre lo facciamo, copia il codice completo del database ed elimina tutte le parole "visibili" in esso. Quindi, una volta copiato, apriamo nuovamente stucco, accedi e digita:
sudo mysql
e ora sei nell'interfaccia mysql, copia il codice del database e premi invio.
Ora dobbiamo solo creare un utente
CREA UTENTE 'utente' IDENTIFICATO DA 'utente';
CONCEDERE TUTTI I PRIVILEGI SU *.* A 'utente';
Ora riavvia.
Quindi tutto dovrebbe essere configurato ora, puoi anche stabilire una connessione con il tuo Pi e MySql Workbench, quindi è più facile controllare tutti i dati nelle tue tabelle.
Passaggio 6: configurazione del Bluetooth sul nostro RPi
Stiamo creando un altoparlante Bluetooth, quindi questo significa che i media vengono inviati dalla nostra fonte al Raspberry Pi e questo può essere fatto abbastanza facilmente, entriamoci subito!
La mia fonte per la connessione bluetooth:
Rimozione del bluealsa già in esecuzione
sudo rm /var/run/bluealsa/*
Aggiungi profilo A2DP Ruolo sink
sudo bluealsa -p a2dp-sink &
Apri l'interfaccia bluetooth e accendi il bluetooth
bluetoothctl
accensione
Configura un agente di associazione
agente attivo
agente-predefinito
Rendi rilevabile il tuo RPi
rilevabile su
- Ora dal tuo dispositivo bluetooth, cerca l'RPi e connettiti con esso.
- Conferma l'associazione su entrambi i dispositivi, digita "sì" nel tuo mastice.
- Autorizza il servizio A2DP, digita di nuovo "sì".
- Una volta fatto questo, possiamo fidarci del nostro dispositivo, quindi non dobbiamo fare tutto questo ogni volta che vogliamo connetterci
fidati di XX:XX:XX:XX:XX:XX (il tuo indirizzo mac bluetooth dal nostro dispositivo di origine)
Se vuoi che il tuo RPi continui a essere rilevabile, è una tua scelta, ma preferisco disattivarlo di nuovo, in modo che le persone non possano provare a connettersi con la tua scatola
rilevabile spento
Quindi possiamo uscire dalla nostra interfaccia bluetooth
Uscita
E infine il nostro routing audio: il nostro dispositivo sorgente che inoltra al nostro RPi
bluealsa-aplay 00:00:00:00:00:00
Ora il nostro dispositivo è completamente connesso al nostro Raspberry e dovresti essere in grado di riprodurre contenuti multimediali dal tuo dispositivo sorgente sull'altoparlante Pi.
Passaggio 7: scrivere il backend completo
Quindi ora che l'installazione è terminata, possiamo finalmente iniziare a scrivere il nostro programma di backend!
Ho usato PyCharm per tutto il mio backend, devi solo assicurarti che il tuo progetto PyCharm sia connesso al tuo Raspberry Pi, questo significa che il tuo percorso di distribuzione è impostato nelle tue impostazioni e hai installato tutti i pacchetti di cui abbiamo bisogno, dovrebbe essere già fatto nel passaggio 4.
Ho usato le mie classi e anche queste sono tutte incluse nel mio GitHub. Il link è nell'introduzione nel caso ve lo foste perso;)
Nel mio file di backend ho usato le classi di threading, quindi tutto può essere eseguito contemporaneamente e non si interromperà a vicenda. E in fondo hai tutti i percorsi in modo che possiamo facilmente ottenere i dati nel nostro frontend.
Passaggio 8: scrittura del frontend (HTML, CSS e JavaScript)
Ora che il backend è terminato, possiamo iniziare a scrivere il front-end completo.
HTML e CSS sono stati fatti abbastanza facilmente, ho provato a lavorare il più possibile mobile prima, dal momento che la maggior parte delle volte ci connettiamo con Bluetooth da un dispositivo mobile, sarebbe più facile controllarlo da una dashboard mobile.
Puoi progettare la tua dashboard in qualsiasi modo tu voglia, lascerò solo il mio codice e il mio design qui, puoi fare quello che vuoi!
E Javascript non è stato così difficile, ha funzionato con alcuni GET dei miei percorsi di backend, tonnellate di ascoltatori di eventi e alcune strutture socketio.
Passaggio 9: costruire il mio caso e mettere tutto insieme
Per prima cosa ho iniziato con alcuni schizzi di come volevo che fosse il case, qualcosa di importante era che doveva essere abbastanza grande da contenere tutto, dato che avevamo un grande circuito da inserire nel case.
Ho realizzato la custodia in legno, penso che sia il modo più semplice con cui lavorare quando non hai molta esperienza con la costruzione di custodie e hai anche molte cose che puoi fare con essa.
Sono partito da una custodia per bottiglie di vino e ho appena iniziato a segare il legno. Una volta che ho avuto la mia custodia di base, ho dovuto solo praticare dei fori (molti sulla parte anteriore della custodia, come puoi vedere nelle foto:P) e metterci dei chiodi, è una custodia davvero semplice, ma sembra piuttosto bello e si adatta perfettamente.
E una volta che il caso è stato fatto, è arrivato il momento di mettere tutto insieme, come puoi vedere nell'ultima foto! È un po' un casino all'interno della scatola, ma funziona tutto e non avevo molto più spazio, quindi ti consiglio di creare una custodia più grande se stai ricreando il mio progetto.
Passaggio 10: alcuni problemi che ho riscontrato durante la creazione dell'altoparlante Slimbox…
Errori Bluetooth e bluealsa
Ogni volta che volevo riprodurre musica o connettermi con il bluetooth, ricevevo errori da bluetooth e bluealsa. Ho fatto qualche ricerca su di esso e questa è stata la soluzione al mio problema. Quindi, per qualche motivo, il mio bluetooth è stato bloccato, non sono sicuro che questo sia un blocco software standard. Puoi vedere se lo è digitando il seguente comando nel tuo Putty.
lista rfkill
Quindi, se è softblock, usa questo:
rfkill sblocca il bluetooth
E potresti voler riavviare dopo questo, la mia fonte:
Problemi di connessione seriale
Quindi un altro grosso problema che ho avuto è stato che non potevo stabilire alcuna connessione con il mio Arduino tramite il levelshifter, dopo alcune ricerche ho scoperto che il mio "/dev/ttyS0" era sparito e questo potrebbe essere dovuto a un aggiornamento del tuo RPi. Ho trovato una soluzione anche su questo
Dovrai riabilitare la console seriale con raspi-config, riavviare e quindi rimuovere manualmente il bit "console=serial0, 115200" da '/boot/cmdline.txt'. Conferma che "enable_uart=1" è in ' /boot/config.txt' e riavviare di nuovo. Ciò dovrebbe riavere la porta ttyS0, così come il collegamento software '/dev/serial0' ad essa.
Fonte:
Consigliato:
Luce LED da scrivania intelligente - Illuminazione intelligente con Arduino - Area di lavoro Neopixel: 10 passaggi (con immagini)
Luce LED da scrivania intelligente | Illuminazione intelligente con Arduino | Neopixels Workspace: Al giorno d'oggi trascorriamo molto tempo a casa, studiando e lavorando virtualmente, quindi perché non rendere il nostro spazio di lavoro più grande con un sistema di illuminazione personalizzato e intelligente basato su Arduino e LED Ws2812b. Qui ti mostro come costruire il tuo Smart Luce LED da scrivania che
Pozzo del fuoco con fiamma reattiva sonora, altoparlante Bluetooth e LED animati: 7 passaggi (con immagini)
Pozzo del fuoco con fiamma reattiva sonora, altoparlante Bluetooth e LED animati: niente dice l'ora legale come rilassarsi davanti al fuoco. Ma sai cosa c'è di meglio del fuoco? Fuoco E Musica! Ma possiamo fare un passo, no, due passi oltre… Fuoco, musica, luci a LED, fiamma reattiva del suono! Può sembrare ambizioso, ma questo Ins
Sveglia intelligente: una sveglia intelligente realizzata con Raspberry Pi: 10 passaggi (con immagini)
Sveglia intelligente: una sveglia intelligente realizzata con Raspberry Pi: hai mai desiderato un orologio intelligente? Se è così, questa è la soluzione per te! Ho realizzato Smart Alarm Clock, questo è un orologio con cui puoi modificare l'ora della sveglia in base al sito web. Quando la sveglia suona, ci sarà un suono (cicalino) e 2 luci si accenderanno
Come convertire qualsiasi ALTOPARLANTE in ALTOPARLANTE BLUETOOTH: 5 passaggi
Come convertire qualsiasi SPEAKER in BLUETOOTH SPEAKER: Se hai un vecchio sistema home theater come me, hai scoperto che sul tuo sistema manca un'opzione di connettività molto popolare, chiamata Bluetooth. Senza questa struttura, devi affrontare il pasticcio della normale connessione AUX e, naturalmente, se tu
Trasforma qualsiasi altoparlante in un altoparlante Bluetooth: 4 passaggi
Trasforma qualsiasi altoparlante in un altoparlante Bluetooth: diversi anni fa era comune per gli altoparlanti portatili avere un jack da 3,5 mm e essere alimentati da batterie AA. Per gli standard odierni, è un po' obsoleta, soprattutto la batteria, poiché ogni gadget al giorno d'oggi ha una batteria ricaricabile. Il jack audio è st