Taula de continguts:
- Pas 1: subministraments
- Pas 2: Esquema i cablejat
- Pas 3: disseny de bases de dades
- Pas 4: configureu Raspberry Pi
- Step 5: Setting Up the Database to the RPi
- Pas 6: Configuració del Bluetooth al nostre RPi
- Pas 7: escriure el backend complet
- Pas 8: escriure el Frontend (HTML, CSS i JavaScript)
- Pas 9: Construir el meu cas i unir-ho tot
Vídeo: Mood Speaker: un altaveu potent per reproduir la música Mood en funció de la temperatura ambiental: 9 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:11
Hola!
Per al meu projecte escolar a MCT Howest Kortrijk, vaig fabricar un Mood Speaker, un altaveu Bluetooth intel·ligent amb diferents sensors, una pantalla LCD i una tira LED WS2812b inclosa. L’altaveu reprodueix música de fons segons la temperatura, però també es pot utilitzar com a bluetooth normal altaveu. Tot funciona al Raspberry Pi (base de dades, servidor web, backend).
Per tant, aquest instructiu és un procés pas a pas de com vaig realitzar aquest projecte en 3 setmanes. Per tant, si voleu recrear el meu projecte, podeu seguir la guia
Aquest instructiu és el meu primer que vaig escriure, de manera que, si hi ha preguntes, intentaré respondre-les el més ràpidament possible.
El meu GitHub:
Pas 1: subministraments
Targeta SD Raspberry Pi 3B i 16 GB
Tot el meu projecte funciona al meu Raspberry Pi 3B amb una imatge configurada, que explicaré en un pas posterior (Pas 4: Configuració de Raspberry Pi)
Pantalla LCD 16x2
He utilitzat una pantalla LCD bàsica per imprimir la meva temperatura, brillantor i adreça IP.
Full de dades:
Sensor de temperatura DS18B20
El DS18B20 és un sensor d’un fil que mesura la temperatura, fabricat per Maxim Integrated. Hi ha 2 tipus de sensors DS18B20, només el component (que he utilitzat) i la versió impermeable, que és molt més gran, però això no és el que necessitava per al meu projecte, de manera que només he utilitzat el component. El sensor pot mesurar la temperatura en un rang de -55 ° C a + 125 ° C (-67 ° F a + 257 ° F) i té una precisió de 0,5 ° C des de -10 ° C fins a + 85 ° C. També té una resolució programable de 9 bits a 12 bits.
Full de dades:
MCP3008
Per llegir les dades del meu sensor LDR i PIR he utilitzat un MCP3008, que és un convertidor analògic a digital de 8 canals de 10 bits amb interfície SPI i que és bastant fàcil de programar.
Full de dades:
Sensor de moviment PIR
Per detectar quan hi ha algú que entra i surt de la meva habitació, he utilitzat un sensor d'infrarojos passiu perquè és fàcil d'utilitzar i és petit.
Full de dades:
LDR
He utilitzat un fotoresistor o LDR (resistència a la disminució de la llum o resistència que depèn de la llum) per detectar el nivell de brillantor de l'habitació que hi ha. I també per encendre el meu Ledstrip quan sigui fosc.
Altaveu - Diàmetre de 3”- 4 Ohm de 3 watts
Aquest és el con de l’altaveu que vaig triar després de calcular el voltatge i els amperes que necessitaria i aquest va ser un ajust perfecte per al meu projecte Raspberry Pi, fabricat per Adafruit.
Visió general:
MAX98357 Amplificador mono classe I2S I2S
Aquest és l’amplificador que ve amb l’altaveu, no només és un amplificador, sinó que també és un convertidor digital a analògic I2S, de manera que també s’adapta perfectament al meu sistema d’àudio i altaveus.
Visió general:
Full de dades:
Arduino Uno
L'Arduino Uno és una placa de microcontrolador de codi obert basada en el microcontrolador Microchip ATmega328P, fabricat per Arduino.cc. La placa Uno té 14 pins digitals, 6 pins analògics i és totalment programable amb el programari Arduino IDE
Visió general:
Levelshifter
Es tracta d’una petita placa que s’encarrega de la comunicació entre l’Arduino Uno i el Raspberry Pi i les diferents tensions, Arduino: 5V i Raspberry Pi: 3,3V. Això és necessari perquè el ledstrip està connectat a l'Arduino i funciona allà, mentre que la resta de coses s'executen al Raspberry Pi.
WS2812B - Ledstrip
Es tracta d’un ledstrip amb 60 leds RGB (podeu comprar tires més llargues amb més leds RGB, si voleu). Que està connectat al meu cas a l’Arduino Uno, però també es pot connectar a molts altres dispositius i és molt senzill d’utilitzar.
Full de dades:
GPIO T-Part, 1 tauler de pa i molts cables
Per connectar tot el que necessitava taulers de suport i cables de connexió, no he utilitzat la peça GPIO T, però podeu utilitzar-la per saber clarament a quin contenidor va on.
Pas 2: Esquema i cablejat
Per fer el meu esquema he utilitzat Fritzing, és un programa que podeu instal·lar que us permet crear un esquema molt fàcil en diferents tipus de vistes. He utilitzat la taula de visualització i la vista esquemàtica.
Descarregueu Fritzing:
Assegureu-vos que tot estigui connectat correctament. He utilitzat colors per fer una mica més clar saber on connectar els cables. En el meu cas he utilitzat diferents colors per als cables
Pas 3: disseny de bases de dades
Estem recopilant moltes dades dels 3 sensors (temperatura de DS18B20, brillantor de LDR i estat del sensor PIR). Per tant, és millor que guardeu totes aquestes dades en una base de dades. En un pas posterior explicaré com configurar la base de dades (Pas 5: reenvia la nostra base de dades al RPi!) Però primer cal fer el disseny o ERD (Entity Relationship Diagram). La meva es va normalitzar amb 3NF, per això vam dividir els components i la història dels components en una altra taula. Utilitzem la base de dades Music per fer un seguiment de les cançons que s’han escoltat.
En general, es tracta d’un disseny de base de dades realment bàsic i senzill per poder continuar treballant.
Pas 4: configureu Raspberry Pi
Ara, doncs, ja tenim fets alguns aspectes bàsics del projecte. Comencem a configurar el Raspberry Pi.
Part 1: Configuració de la targeta SD
1) Descarregueu el programari i els fitxers necessaris
Per a aquest procés complet, heu de descarregar 2 programari i 1 sistema operatiu, és a dir, Raspbian. Primer programari: el primer programari és Win32 Disk Imager.
sourceforge.net/projects/win32diskimager/
2n programari: el segon programari és SD Card Formatter.
www.sdcard.org/downloads/formatter_4/
Raspbian OS: Aquest és el sistema operatiu principal del Pi.
www.raspberrypi.org/downloads/raspberry-pi-os/
Extraieu tots els fitxers a l'escriptori.
2) Obteniu la targeta SD i el lector de targetes
Obteniu una targeta SD de classe 10 de 8 GB com a mínim amb un lector de targetes. Inseriu aquesta targeta al lector de targetes i connecteu-la al port USB.
3) Formateu la targeta SD
Obriu Formatador de targeta SD i seleccioneu la unitat.
Feu clic a Format i no modifiqueu cap altra opció.
Quan s'hagi formatat, feu clic a D'acord.
4) Escriviu el sistema operatiu a la targeta SD
Obriu win32diskimager.
Cerqueu el fitxer.img del sistema operatiu Raspbian que s’ha extret del fitxer descarregat.
Feu clic a obre i després a Escriu.
Si apareix algun advertiment, feu-ne clic en D'acord per ignorar-los. Espereu que es completi l'escriptura i pot trigar uns minuts. Així que tingueu paciència.
n
5) Un cop fet això, estem preparats per fer alguns ajustos finals abans de posar la imatge al nostre RPi.
Aneu al directori de la vostra targeta SD, cerqueu el fitxer anomenat "cmdline.txt" i obriu-lo.
Ara afegiu 'ip = 169.254.10.1' a la mateixa línia.
Deseu el fitxer.
Creeu un fitxer anomenat 'ssh' sense extensió ni contingut (la manera més senzilla és crear un fitxer txt i eliminar el fitxer.txt després)
Ara que tot està instal·lat a la targeta SD, podeu expulsar-lo de manera segura de l'ordinador i posar-lo al Raspberry Pi SENSE connectar l'alimentació. Un cop la targeta SD estigui al RPI, connecteu un cable LAN des de l'ordinador al port LAN RPi; un cop connectat, podreu connectar l'alimentació al RPi.
Part 2: Configuració de l'RPi
Massilla
Ara volem configurar el nostre Raspberry Pi, això es fa mitjançant Putty.
Programari de massilla:
Un cop descarregat, obriu Putty i inseriu la IP '169.254.10.1' i el port '22' i el tipus de connexió: SSH.
Ara, finalment, podem obrir la nostra interfície de línia d’ordres i iniciar la sessió amb la informació d’inici de sessió d’inici -> Usuari: pi i contrasenya: raspberry. (Es recomana canviar-lo el més aviat possible. Aquí teniu una guia de com:
Raspi-config
Haurem d’habilitar diferents interfícies i, per fer-ho, primer haurem d’escriure el següent codi:
sudo raspi-config
Les coses que hem d’habilitar es troben a la secció d’interfície. Hem d’habilitar les següents interfícies:
- Un fil
- En sèrie
- I2C
- SPI
Això era tot el que necessitàvem fer amb raspi-config
Afegir el vostre WIFI
En primer lloc, heu de ser root perquè l'ordre següent es converteixi en root
sudo -i
Un cop hàgiu estat root, utilitzeu l'ordre següent: (Substituïu SSID pel vostre nom i contrasenya de xarxa per la vostra contrasenya de xarxa)
wpa_passphrase "ssid" "contrasenya" >> /etc/wpa_supplicant/wpa_supplicant.conf
En cas que hagueu fet alguna cosa malament, podeu comprovar, actualitzar o eliminar aquesta xarxa només introduint l'ordre següent:
nano /etc/wpa_supplicant/wpa_supplicant.conf
Per tant, després d’entrar a la nostra xarxa, entrem a la interfície del client WPA
wpa_cli
Seleccioneu la vostra interfície
interfície wlan0
Torneu a carregar el fitxer
reconfigurar
I, finalment, podeu veure si esteu ben connectat:
ip a
Part 3: Actualització del programari d'instal·lació de RPi +
Ara que estem connectats a Internet, actualitzar els paquets ja instal·lats seria un moviment intel·ligent, així que fem-ho primer abans d’instal·lar altres paquets.
sudo apt-get update
sudo apt-get upgrade
Després d'actualitzar el RPi haurem d'instal·lar el següent programari:
Base de dades MariaDB
sudo apt-get install mariadb-server
Servidor web Apache2
sudo apt install apache2
Python
update-alternatives --install / usr / bin / python python /usr/bin/python3.7 1 update-alternatives --install / usr / bin / python python / usr / bin / python3 2
Paquet Python
Haureu d’instal·lar tots aquests paquets perquè el dorsal funcioni perfectament:
- Flascó
- Flask-Cors
- Flask-MySql
- Flask-SocketIO
- Sol·licituds PyMySQL
- Python-socketio
- RPi. GPIO
- Gevent
- Gevent-websocket
Biblioteca de ponents
Per utilitzar l’altaveu amb l’amplificador haurem d’instal·lar-hi una biblioteca
rínxol -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
Ara que hem instal·lat tot el que necessitàvem, posem la nostra base de dades que vam dissenyar al nostre Raspberry Pi.
Per configurar la base de dades haurem de connectar MySql i RPi. Per a això obrirem MySQLWorkbench i farem una nova connexió. Quan mireu la imatge, haureu de canviar per canviar la informació a la vostra.
Si encara no heu canviat res, podeu utilitzar-lo per SSH pi i raspberry, per MySQL mysql i mysql.
Quan alguna cosa no està clara, també podeu seguir aquest tutorial:
Per exportar la vostra base de dades hauria de ser més fàcil mitjançant PHPmyAdmin perquè podeu obtenir molts errors en fer-ho amb MySql
Pas 6: Configuració del Bluetooth al nostre RPi
Estem creant un altaveu Mood, que també podem utilitzar amb la nostra pròpia música, de manera que això sigui més fàcil quan el RPi ho sigui
connectat al bluetooth, he seguit un tutorial que podeu trobar aquí:
scribles.net/streaming-bluetooth-audio-fr…
També ho vaig escriure aquí per a tothom que vulgui recrear-lo
S'està suprimint el bluealsa que ja s'està executant
sudo rm / var / run / bluealsa / *
Afegeix un perfil de dissipador A2DP
sudo bluealsa -p a2dp-sink &
Obriu la interfície bluetooth i engegueu el bluetooth
bluetoothctl encès
Configureu un agent de sincronització
agent a l'agent per defecte
Feu que el vostre RPi sigui descoberta
descoberta el
- Ara, des del dispositiu bluetooth, cerqueu el RPi i connecteu-vos-hi.
- Confirmeu l’aparellament en ambdós dispositius i escriviu “sí” a la massilla.
- Autoritzeu el servei A2DP, torneu a escriure "sí".
- Un cop fet això, podem confiar en el nostre dispositiu, de manera que no hem de passar per això cada vegada que ens vulguem connectar
confiar en XX: XX: XX: XX: XX: XX (la vostra adreça de Bluetooth del nostre dispositiu d'origen)
Si voleu que el vostre RPi pugui continuar sent descobert, aquesta és la vostra pròpia elecció, però prefereixo tornar-lo a apagar, de manera que la gent no pugui intentar connectar-se amb la vostra caixa
es pot descobrir
Després podem sortir de la nostra interfície bluetooth
sortir
I, finalment, el nostre encaminament d’àudio: el reenviament del nostre dispositiu font al nostre RPi
bluealsa-aplay 00: 00: 00: 00: 00: 00
Ara el nostre dispositiu està connectat al nostre gerd amb bluetooth i hauríeu de poder provar-lo reproduint qualsevol contingut multimèdia, com ara Spotify, etc.
Pas 7: escriure el backend complet
Ara, doncs, la configuració està acabada, per fi podem començar a escriure el nostre programa de backend.
He utilitzat Visual Studio Code per a tot el meu backend, només heu d’assegurar-vos que el vostre projecte de Visual Studio estigui connectat al vostre Raspberry Pi, això vol dir que el vostre cable LAN ha d’estar connectat al vostre RPi i establir una connexió SSH. (Podeu trobar informació sobre com crear una connexió remota aquí:
He utilitzat les meves pròpies classes i aquestes també estan incloses al meu GitHub.
Al meu fitxer de fons he utilitzat classes diferents, de manera que tot es pot utilitzar per separat i perquè el meu codi principal no sigui un embolic amb tots els fils diferents. Vaig utilitzar threading per executar totes les classes alhora. I a la part inferior teniu totes les rutes perquè puguem obtenir dades fàcilment a la nostra interfície.
Pas 8: escriure el Frontend (HTML, CSS i JavaScript)
Ara que el backend està acabat, podem començar a escriure el frontal complet.
HTML i CSS van ser bastant difícils per a mi. Vaig fer tot el possible per fer-lo mòbil primer perquè puc connectar-m’hi amb bluetooth per canviar les cançons amb Spotify. Per tant, seria més fàcil controlar des d’un tauler de control mòbil
Podeu dissenyar el tauler de la manera que vulgueu, només deixaré el meu codi i dissenyaré aquí, podreu fer el que vulgueu.
I Javascript no va ser més fàcil per a mi, va treballar amb uns quants GET de les meves rutes de backend, un munt d’oients d’esdeveniments i algunes estructures de socketio per obtenir les dades dels meus sensors.
Pas 9: Construir el meu cas i unir-ho tot
Primer vaig començar a esbossar com volia que quedés el cas, una cosa important era que havia de ser prou gran perquè hi cabés tot, ja que teníem un gran circuit per col·locar a la caixa, però havíem de mantenir-nos compactes perquè no fos així. No ocupeu molt d’espai
Vaig fer el cas amb fusta, crec que és el més fàcil de treballar quan no es té tanta experiència amb la construcció de caixes i també s’hi poden fer moltes coses.
Vaig començar per un tauló antic que tenia al voltant i vaig començar a serrar la fusta. Un cop tenia el meu cas bàsic, només havia de fer-hi forats (molt a la part frontal de la caixa, com podeu veure a les imatges i posar-hi uns claus, és un cas molt bàsic, però sembla bastant genial i encaixa perfectament. També vaig decidir pintar-lo de blanc perquè quedés bé.
I un cop acabat el cas, era el moment de reunir-ho tot, com podeu veure a la darrera imatge. És una mica un embolic dins de la caixa, però tot funciona i no tenia molt més espai, així que us aconsello que creeu un cas més gran si esteu recreant el meu projecte.
Recomanat:
Utilitzar un equip estèreo automotriu per reproduir MP3 en equips estèreo antics: 7 passos
Utilitzar un equip estèreo automotriu per reproduir MP3 en equips estèreo antics: reproduir fitxers mp3 en equips estèreo domèstics He descarregat o arrancat aproximadament 5.000 cançons de rock clàssic durant les dues darreres dècades i necessitava una manera senzilla de reproduir fitxers de música digital en un equip estèreo domèstic més antic. Tinc un ordinador de cinema a casa (HTC) connectat
Àlbums amb etiquetes NFC per reproduir automàticament música Spotify a Chromecast: 5 passos
Àlbums amb etiquetes NFC per reproduir automàticament música Spotify a Chromecast: aquest projecte va començar amb la idea de fer un collage d’àlbums dels meus artistes més jugats a Spotify. Després d’haver jugat amb l’API de Spotify a Python, vaig pensar que seria bo enllaçar aquestes portades d’àlbums amb els seus URI de Spotify i començar a reproduir el
Com instal·lar Java per reproduir Minecraft 1.12.2: 4 passos
Com instal·lar Java per jugar a Minecraft 1.12.2: Tots sabem que Minecraft és un joc desenvolupat a partir de Java, ja que està escrit al seu logotip des de la versió 1.12.2, Minecraft Java Edition. D’aquesta manera, cal tenir Java instal·lat i actualitzat per jugar, si teniu problemes amb Java
Reproduir cançons (MP3) amb Arduino mitjançant PWM a l'altaveu o al transformador Flyback: 6 passos (amb imatges)
Reproduir cançons (MP3) amb Arduino mitjançant PWM a l’altaveu o al transformador Flyback: Hola nois, aquest és el meu primer instructable, espero que us agradi !! Bàsicament, en aquest projecte he utilitzat la comunicació en sèrie entre el meu Arduino i el meu portàtil, per transmetre dades musicals del meu ordinador portàtil a l'Arduino. I utilitzant els temporitzadors Arduino t
Altaveu Bluetooth amb matriu LED reactiva per a la música: 12 passos (amb imatges)
Altaveu Bluetooth W / Music-Reactive LED Matrix: aquest projecte s’inscriu al Concurs de connexions sense fils i al Concurs de LED; si us agrada, agrairia molt el vostre vot. Gràcies! He dissenyat i construït un altaveu Bluetooth DIY amb una matriu LED integrada. La matriu de LED inclou diversos