Taula de continguts:

Mood Speaker: un altaveu potent per reproduir la música Mood en funció de la temperatura ambiental: 9 passos
Mood Speaker: un altaveu potent per reproduir la música Mood en funció de la temperatura ambiental: 9 passos

Vídeo: Mood Speaker: un altaveu potent per reproduir la música Mood en funció de la temperatura ambiental: 9 passos

Vídeo: Mood Speaker: un altaveu potent per reproduir la música Mood en funció de la temperatura ambiental: 9 passos
Vídeo: 3000+ Common English Words with British Pronunciation 2024, Juliol
Anonim
Mood Speaker: un altaveu potent per reproduir música d'ànim en funció de la temperatura ambiental
Mood Speaker: un altaveu potent per reproduir música d'ànim en funció de la temperatura ambiental

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

Esquema i cablejat
Esquema i cablejat
Esquema i cablejat
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

Disseny de bases de dades
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

Configuració de la base de dades al RPi!
Configuració de la base de dades al 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

Construint el meu cas i unint-ho tot
Construint el meu cas i unint-ho tot
Construint el meu cas i unint-ho tot
Construint el meu cas i unint-ho tot
Construint el meu cas i unint-ho tot
Construint el meu cas i unint-ho tot
Construint el meu cas i unint-ho tot
Construint el meu cas i unint-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: