Sommario:

Mood Speaker: un potente altoparlante per riprodurre musica d'atmosfera in base alla temperatura ambiente: 9 passaggi
Mood Speaker: un potente altoparlante per riprodurre musica d'atmosfera in base alla temperatura ambiente: 9 passaggi

Video: Mood Speaker: un potente altoparlante per riprodurre musica d'atmosfera in base alla temperatura ambiente: 9 passaggi

Video: Mood Speaker: un potente altoparlante per riprodurre musica d'atmosfera in base alla temperatura ambiente: 9 passaggi
Video: Practice Italian Episode 150 | Italiano | Italiana | Improve Italian | Learn Italian | Conversation 2024, Dicembre
Anonim
Mood Speaker: un potente altoparlante per riprodurre musica d'atmosfera in base alla temperatura ambiente
Mood Speaker: un potente altoparlante per riprodurre musica d'atmosfera in base alla temperatura ambiente

Ehilà!

Per il mio progetto scolastico all'MCT Howest Kortrijk, ho realizzato un Mood Speaker, un dispositivo altoparlante Bluetooth intelligente con diversi sensori, un LCD e una striscia led WS2812b inclusi. L'altoparlante riproduce musica di sottofondo in base alla temperatura ma può anche essere utilizzato come un normale bluetooth altoparlante. Tutto gira sul Raspberry Pi (Database, Webserver, Backend).

Quindi questo tutorial è un processo passo passo di come ho realizzato questo progetto in 3 settimane. Quindi se volete ricreare il mio progetto potete seguire la guida

Questo istruibile è il primo che ho scritto, quindi se ci sono domande, proverò a rispondere il più velocemente possibile!

Il mio GitHub:

Passaggio 1: materiali di consumo

Scheda SD Raspberry Pi 3B e 16 GB

Il mio intero progetto viene eseguito sul mio Raspberry Pi 3B con un'immagine configurata, che spiegherò in un passaggio successivo (Passaggio 4: configurazione del Raspberry Pi)

Display LCD 16x2

Ho usato un display LCD di base per stampare la mia temperatura, luminosità e indirizzo IP.

Scheda tecnica:

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:

MCP3008

Per leggere i dati dal mio sensore LDR e PIR ho usato un MCP3008, che è un convertitore da analogico a digitale a 8 canali a 10 bit con interfaccia SPI ed è abbastanza facile da programmare.

Scheda tecnica:

Sensore di movimento PIR

Per rilevare quando c'è qualcuno che entra ed esce dalla mia stanza, ho usato un sensore a infrarossi passivo perché sono facili da usare e sono piccoli.

Scheda tecnica:

LDR

Ho usato una fotoresistenza o LDR (Light Decreasing Resistance, o resistore dipendente dalla luce) per rilevare il livello di luminosità della stanza in cui si trova. E anche per accendere il mio Ledstrip quando è buio.

Altoparlante – Diametro 3” – 4 Ohm 3 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é il ledstrip è collegato ad Arduino e gira lì, mentre tutte le altre cose girano sul Raspberry Pi.

WS2812B - Striscia led

Questa è una striscia led con 60 led RGB (puoi acquistare strisce più lunghe 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.

Scheda tecnica:

GPIO T-Part, 1 breadboard e molti jumperwires

Per collegare tutto ciò di cui avevo bisogno breadboard e jumperwire, non ho usato la parte T GPIO ma puoi usarla per sapere chiaramente quale contenitore va dove.

Passaggio 2: schema e cablaggio

Schema e cablaggio
Schema e cablaggio
Schema e cablaggio
Schema e cablaggio

Per realizzare il mio schema ho usato Fritzing, è un programma che puoi installare che ti permette di creare uno schema molto facilmente in diversi tipi di viste. Ho usato la breadboard e la vista schematica.

Scarica Fritzing:

Assicurati che tutto sia collegato correttamente. Ho usato i colori per rendere un po' più chiaro sapere dove collegare i fili. Nel mio caso ho usato colori diversi per i fili

Passaggio 3: progettazione del database

Progettazione database
Progettazione database

Stiamo raccogliendo molti dati dai 3 sensori (temperatura da DS18B20, luminosità da LDR e stato da sensore PIR). Quindi è meglio conservare tutti questi dati in un database. Spiegherò in un passaggio successivo come configurare il database (Fase 5: Forward Engineering Our Database to the RPi!) Ma prima deve essere realizzato il design o ERD (Entity Relationship Diagram). Il mio è stato normalizzato con 3NF, ecco perché abbiamo diviso i componenti e la cronologia dei componenti in un'altra tabella. Usiamo il database Musica per tenere traccia delle canzoni che sono state ascoltate.

Nel complesso, questo è un progetto di database davvero semplice e semplice con cui lavorare ulteriormente.

Passaggio 4: configurare Raspberry Pi

Quindi ora che abbiamo fatto alcune basi del progetto. Iniziamo con la configurazione del Raspberry Pi!

Parte 1: Configurazione della scheda SD

1) Scarica il software e i file richiesti

È necessario scaricare 2 software e 1 sistema operativo, ad esempio Raspbian per questo processo completo. Primo software: il primo software è Win32 Disk Imager.

sourceforge.net/projects/win32diskimager/

2° software: il secondo software è SD Card Formatter.

www.sdcard.org/downloads/formatter_4/

Sistema operativo Raspbian: questo è il sistema operativo principale del Pi.

www.raspberrypi.org/downloads/raspberry-pi-os/

Estrai tutti i file sul desktop.

2) Prendi la scheda SD e il lettore di schede

Ottieni una scheda SD di classe 10 da almeno 8 GB con un lettore di schede. Inserisci quella scheda nel lettore di schede e collegala alla porta USB.

3) Formattare la scheda SD

Apri SD Card Formatter e seleziona l'unità.

Fare clic su formato e non modificare altre opzioni.

Al termine della formattazione, fare clic su OK.

4) Scrivi il sistema operativo sulla scheda SD

Apri win32diskimager.

Sfoglia il file.img del sistema operativo Raspbian che è stato estratto dal file scaricato.

Fare clic su Apri e quindi su Scrivi.

Se vengono visualizzati avvisi, ignorali facendo clic su OK. Attendi il completamento della scrittura e potrebbero volerci alcuni minuti. Quindi sii paziente.

n

5) 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 (il modo più semplice è creare un file txt e rimuovere il.txt in seguito)

Ora che tutto è installato sulla scheda SD puoi espellerlo SICURAMENTE dal tuo computer e inserirlo nel Raspberry Pi SENZA collegare l'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.

Parte 2: Configurazione di RPi

mastice

Ora vogliamo configurare 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. (Si consiglia di cambiarlo il più rapidamente possibile. Ecco una guida come:

Raspi-config

Dovremo abilitare diverse interfacce e per farlo dobbiamo prima digitare il seguente codice:

sudo raspi-config

Le cose che dobbiamo abilitare sono nella sezione interfacciamento. Dobbiamo abilitare le seguenti interfacce:

  • Un filo
  • Seriale
  • I2C
  • SPI

Questo era tutto ciò che dovevamo fare con raspi-config

Aggiungere il tuo WIFI

Innanzitutto, devi essere root affinché il seguente comando diventi root

sudo -i

Una volta che sei root, usa il seguente comando: (Sostituisci SSID con il tuo nome di rete e password con la tua password di rete)

wpa_passphrase "ssid" "password" >> /etc/wpa_supplicant/wpa_supplicant.conf

Nel caso in cui tu abbia fatto qualcosa di sbagliato, puoi controllare, aggiornare o eliminare questa rete semplicemente inserendo il seguente comando:

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

Parte 3: Aggiornamento dell'RPi + installazione del software

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

Dopo aver aggiornato l'RPi dovremo installare il seguente software:

Database MariaDB

sudo apt-get install mariadb-server

Server Web Apache2

sudo apt install apache2

Pitone

update-alternatives --install /usr/bin/python python /usr/bin/python3.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
  • Richieste PyMySQL
  • Python-socketio
  • RPi. GPIO
  • Gevent
  • Gevent-websocket

Libreria dei relatori

Per utilizzare l'altoparlante con l'amplificatore dovremo installare una libreria per esso

curl -sS > | bash

Step 4: Reboot

After everything has been installed we will have to reboot the pi to make sure everything works correctly

sudo reboot

Step 5: Setting Up the Database to the RPi

Configurazione del database su RPi!
Configurazione del database su RPi!

Ora che abbiamo installato tutto ciò di cui avevamo bisogno, mettiamo il nostro database che abbiamo progettato sul nostro Raspberry Pi!

Per configurare il database dovremo connettere MySql e RPi. Per questo apriremo MySQLWorkbench e creeremo una nuova connessione. Quando guardi l'immagine dovrai cambiare per cambiare le informazioni con le tue.

Se non hai ancora cambiato nulla puoi usare per SSH pi e raspberry, per MySQL mysql e mysql.

Quando qualcosa non è chiaro puoi anche seguire questo tutorial:

Per esportare il tuo database dovrebbe essere più semplice usare PHPmyAdmin perché puoi ottenere molti errori facendolo con MySql

Passaggio 6: configurazione del Bluetooth sul nostro RPi

Stiamo creando un altoparlante Mood, che possiamo usare anche con la nostra musica, quindi è più facile quando l'RPi è

connesso al bluetooth ho seguito un tutorial per questo che puoi trovare qui:

scribles.net/streaming-bluetooth-audio-fr…

Ho scritto tutto anche qui per tutti coloro che vogliono ricrearlo

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 su default-agent

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 è connesso al nostro Raspberry con bluetooth e dovresti essere in grado di testarlo riproducendo qualsiasi media, ad esempio Spotify, ecc.

Passaggio 7: scrivere il backend completo

Quindi ora che l'installazione è terminata, possiamo finalmente iniziare a scrivere il nostro programma di backend!

Ho usato Visual Studio Code per tutto il mio backend, devi solo assicurarti che il tuo progetto Visual Studio sia connesso al tuo Raspberry Pi, questo significa che il tuo cavo LAN deve essere connesso al tuo RPi e per creare una connessione SSH. (le informazioni su come creare una connessione remota sono disponibili qui:

Ho usato le mie classi e anche queste sono tutte incluse nel mio GitHub.

Nel mio file di backend ho usato classi diverse, quindi tutto può essere usato separatamente e in modo che il mio codice principale non sia un pasticcio con tutti i diversi thread. Ho usato il threading per eseguire tutte le diverse classi contemporaneamente. 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 piuttosto difficili per me, ho fatto del mio meglio per renderlo mobile prima perché posso connettermi con il bluetooth per cambiare le canzoni con Spotify. Quindi sarebbe più facile controllare 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 più facile per me, ha funzionato con alcuni GET dai miei percorsi di backend, tonnellate di ascoltatori di eventi e alcune strutture socketio per ottenere i dati dai miei sensori.

Passaggio 9: costruire il mio caso e mettere tutto insieme

Costruire il mio caso e mettere tutto insieme
Costruire il mio caso e mettere tutto insieme
Costruire il mio caso e mettere tutto insieme
Costruire il mio caso e mettere tutto insieme
Costruire il mio caso e mettere tutto insieme
Costruire il mio caso e mettere tutto insieme
Costruire il mio caso e mettere tutto insieme
Costruire il mio caso e mettere tutto insieme

Per prima cosa ho iniziato a fare uno schizzo 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 ma dovevamo rimanere compatto in modo che non fosse non occupa molto spazio

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 vecchia tavola che avevo in giro 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 e mettere dei chiodi, è una custodia davvero semplice, ma sembra piuttosto bella e si adatta perfettamente Ho anche deciso di dipingerlo di bianco per farlo sembrare bello.

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.

Consigliato: