Taula de continguts:
- Pas 1: subministraments
- Pas 2: Esquema i cablejat
- Pas 3: disseny de bases de dades
- Pas 4: Preparació del Raspberry Pi
- Pas 5: reenvieu la nostra base de dades al 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
- Pas 10: Alguns problemes que vaig tenir en el meu camí per crear l’altaveu Slimbox …
Vídeo: Slimbox: un altaveu intel·ligent Bluetooth: 10 passos (amb imatges)
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:14
Hola!
Per al meu projecte escolar a MCT Howest Kortrijk, vaig fabricar un dispositiu d'altaveus Bluetooth intel·ligent amb diferents sensors, un LCD i un anell NeoPixel RGB inclosos. Tot funciona al Raspberry Pi (base de dades, servidor web, backend).
Així que en aquest instructiu us mostraré com he creat aquest projecte en 3 setmanes, pas a pas, així que si algú de vosaltres vol recrear el meu projecte, ho podeu fer fàcilment.
Aquesta és també la meva primera instrucció, si teniu alguna pregunta, intentaré respondre-les el més aviat possible.
El meu GitHub:
Pas 1: subministraments
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:
Sensor de potenciòmetre
Un potenciòmetre és una resistència amb tres terminals que es pot ajustar manualment només girant la part superior del sensor. La posició de la part superior determina la tensió de sortida del potenciòmetre.
LSM303 Accelerometer + Brúixola Breakout
La placa de ruptura LSM303 és una combinació d’un acceleròmetre de triple eix i un magnetòmetre / brúixola, fabricat per Adafruit. S'utilitza amb la interfície I2C del Raspberry Pi.
Visió general:
Full de dades:
MCP3008
Per llegir les dades del meu potenciòmetre vaig fer servir 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:
Altaveu - Diàmetre de 3”- 8 Ohm 1 watt
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è l'anell NeoPixel està connectat a l'Arduino i funciona allà, mentre que la resta de coses s'executen al Raspberry Pi.
Anell NeoPixel RGB
Es tracta d’un petit anell ple de 12 leds RGB (si voleu, podeu comprar anells més grans amb més leds RGB). 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.
Visió general:
Pantalla LCD 16x2
Vaig utilitzar una pantalla LCD bàsica per imprimir la temperatura, el volum i l'adreça IP.
Full de dades:
Raspberry Pi 3B + i targeta SD de 16 GB
Tot el meu projecte s'executa al meu Raspberry Pi 3B + amb una imatge configurada, que us ajudaré a configurar més endavant en la meva instrucció.
GPIO T-Part, 2 taules de pa i molts cables
Per connectar tot el que necessitava taulers de connexió i cables de connexió, he utilitzat la peça GPIO T, de manera que tinc més espai i queda clar quin pin és quin.
Pas 2: Esquema i cablejat
Per al 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.
Descarregueu Fritzing:
Així que assegureu-vos de connectar-ho tot de la manera correcta. En el meu cas, els colors dels cables no són els mateixos que en l’esquema.
Pas 3: disseny de bases de dades
Estem recopilant moltes dades dels 3 sensors connectats, de manera que necessitem una base de dades per emmagatzemar-ne les dades i els sensors. Més endavant veurem com configurar la base de dades al Raspberry Pi i com afegir-hi dades. Però primer s’ha de fer el disseny de la base de dades o ERD (Entity Relationship Diagram) i el meu també es va normalitzar amb 3NF. Per això, dividim els sensors en una altra taula i treballem amb identificadors.
En general, es tracta d’un disseny de base de dades realment bàsic i senzill per poder continuar treballant.
Pas 4: Preparació del Raspberry Pi
Ara, doncs, ja tenim fets alguns aspectes bàsics del projecte. Comencem amb el Raspberry Pi.
Configuració de la targeta SD
Primer, necessiteu una targeta SD de 16 GB on pugueu posar la vostra imatge i un programa per penjar una imatge inicial a la targeta SD.
Programari:
Imatge d'inici:
Per tant, un cop descarregats:
- Introduïu la targeta SD a l'ordinador.
- Obriu Win32 que acabeu de descarregar.
- Seleccioneu el fitxer d'imatge Raspbian que també acabeu de descarregar.
- Feu clic a "escriu" a la ubicació de la vostra targeta SD.
Això pot trigar una mica, segons el vostre maquinari. 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.
Ara podeu expulsar de manera segura la targeta SD de l’ordinador i posar-la al Raspberry Pi SENSE 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.
Ara volem controlar 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.
Raspi-config
sudo raspi-config
El que és realment important per a aquest projecte és la secció d’interfície, hem d’habilitar moltes interfícies diferents, habilitar totes les interfícies següents:
- Un fil
- SPI
- I2C
- En sèrie
Ara que hem acabat amb raspi-config, intentem establir una connexió amb Internet.
Connexió Wi-Fi
Primer, heu de ser root per a les ordres següents
sudo -i
Un cop hàgiu estat root, utilitzeu l'ordre següent. SSID és el nom de la vostra xarxa i la contrasenya és evidentment la seva contrasenya.
wpa_passphrase "ssid" "contrasenya" >> /etc/wpa_supplicant/wpa_supplicant.conf
En cas que us cometeu un error, podeu comprovar, actualitzar o eliminar aquesta xarxa només introduint aquest fitxer:
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
Actualització i actualització
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
Base de dades MariaDB
Instal·leu el servidor de bases de dades MariaDB:
sudo apt-get install mariadb-server
Servidor web Apache2
Instal·leu el servidor web Apache2:
sudo apt install apache2
Python
Instal·leu Python:
update-alternatives --install / usr / bin / python python /usr/bin/python2.7 1
actualització-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
- PyMySQL
- Sol·licituds
- Python-socketio
- RPi. GPIO
- Gevent
- Gevent-websocket
- Ujson
- Wsaccel
Biblioteca de ponents
Instal·leu la biblioteca d’altaveus d’Adafruit:
curl -sS https://raw.githubusercontent.com/adafruit/Raspbe… | bash
És hora de reiniciar
sudo reiniciar
Pas 5: reenvieu la nostra 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 tant, primer hem de reenviar la nostra base de dades al banc de treball MySql, mentre ho fem, copieu el codi de la base de dades completa i suprimiu totes les paraules "visibles" que hi apareixen. Per tant, un cop copiat, deixeu de tornar a obrir massilla, inicieu la sessió i escriviu:
sudo mysql
i ara esteu a la interfície mysql, copieu-hi el codi de la base de dades i premeu Retorn.
Ara només hem de crear un usuari
CREA "usuari" d'USUARI IDENTIFICAT PER "usuari";
CONCEDIU TOTS ELS PRIVILEGIUS EN *. * A "usuari";
Ara reinicieu.
Per tant, tot s’hauria de configurar ara, també podeu establir una connexió amb el vostre Pi i MySql Workbench, de manera que és més fàcil comprovar totes les dades de les vostres taules.
Pas 6: Configuració del Bluetooth al nostre RPi
Estem creant un altaveu Bluetooth, de manera que això significa que s’envia el contingut multimèdia des de la nostra font al Raspberry Pi i això es pot fer molt fàcilment, anem-hi directament.
La meva font per a la connexió bluetooth:
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 activat
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à completament connectat al nostre gerd i hauríeu de poder reproduir contingut multimèdia des del dispositiu font a l’altaveu Pi.
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 PyCharm per a tot el meu backend, només heu d'assegurar-vos que el vostre projecte PyCharm estigui connectat al vostre Raspberry Pi, això vol dir que el vostre camí de desplegament està configurat a la vostra configuració i que heu instal·lat tots els paquets que necessitem, ja s'hauria de fer al pas 4.
He utilitzat les meves pròpies classes i aquestes també estan incloses al meu GitHub. L'enllaç apareix a la introducció per si l'heu perdut;)
Al meu fitxer de fons he utilitzat classes de threading, de manera que tot pot funcionar al mateix temps i no s’interromprà. 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 es van fer bastant fàcilment, es va intentar treballar el mòbil primer el màxim possible, ja que la majoria de les vegades ens connectem amb Bluetooth des d’un dispositiu mòbil, seria més fàcil controlar-ho 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 tan dur, va treballar amb alguns GET de les meves rutes de backend, un munt d’oients d’esdeveniments i algunes estructures de socketio.
Pas 9: Construir el meu cas i unir-ho tot
Primer vaig començar amb alguns esbossos de 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.
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 partir d’un estoig per a ampolles de vi 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: P) i posar-hi uns claus, és un cas molt bàsic, però es veu bastant genial i s’adapta perfectament.
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.
Pas 10: Alguns problemes que vaig tenir en el meu camí per crear l’altaveu Slimbox …
Errors de Bluetooth i bluealsa
Sempre que volia reproduir música o connectar-me amb bluetooth, rebia errors de bluetooth i bluealsa. Vaig investigar-hi i aquesta va ser la solució al meu problema. Per tant, per alguna raó, el meu bluetooth estava bloquejat de manera suau, no estic segur de si aquest està bloquejat de manera estàndard. Podeu veure si ho és escrivint l'ordre següent al vostre massís.
llista rfkill
Per tant, si està bloquejat sense problemes, només cal que utilitzeu això:
rfkill desbloqueja bluetooth
I és possible que vulgueu reiniciar després d'això, la meva font:
Problemes de connexió en sèrie
Així que un altre gran problema que vaig tenir era que no podia establir cap connexió amb el meu Arduino a través del levelhifter, després d’haver realitzat algunes cerques, vaig saber que el meu '/ dev / ttyS0' havia desaparegut i això podria ser degut a una actualització del vostre RPi. També he trobat una solució sobre això
Haureu de tornar a habilitar la consola sèrie amb raspi-config, reinicieu i després traieu manualment el bit "console = serial0, 115200" de '/boot/cmdline.txt'. Confirmeu que "enable_uart = 1" està a ' /boot/config.txt 'i reinicieu-lo de nou. Això hauria de recuperar el port ttyS0, així com l'enllaç suau' / dev / serial0 '.
Font:
Recomanat:
Llum LED d'escriptori intel·ligent - Il·luminació intel·ligent amb Arduino - Espai de treball Neopixels: 10 passos (amb imatges)
Llum LED d'escriptori intel·ligent | Il·luminació intel·ligent amb Arduino | Espai de treball de Neopixels: ara passem molt de temps a casa estudiant i treballant virtualment, per què no fer que el nostre espai de treball sigui més gran amb un sistema d’il·luminació personalitzat i intel·ligent basat en els LEDs Arduino i Ws2812b. Aquí us mostro com construir el vostre Smart Llum LED d'escriptori que
Converteix un telèfon intel·ligent no utilitzat en una pantalla intel·ligent: 6 passos (amb imatges)
Converteix un telèfon intel·ligent no utilitzat en una pantalla intel·ligent: el tutorial de Deze es troba a Engels, per a la versió del clàssic espanyol. Teniu un telèfon intel·ligent (antic) sense utilitzar? Convertiu-lo en una pantalla intel·ligent amb Fulls de càlcul de Google i paper i llapis seguint aquest senzill tutorial pas a pas. Quan hagis acabat
Làmpada LED intel·ligent controlada per telèfon intel·ligent Bluetooth: 7 passos
Làmpada LED intel·ligent controlada per telèfon intel·ligent Bluetooth: sempre somio amb controlar els meus aparells d’il·luminació. Aleshores algú va fabricar una increïble llum LED de colors. Fa poc em vaig trobar amb una làmpada LED de Joseph Casha a Youtube. Inspirant-me en ell, vaig decidir afegir diverses funcions mantenint la comoditat
Rellotge despertador intel·ligent: un despertador intel·ligent fabricat amb Raspberry Pi: 10 passos (amb imatges)
Rellotge despertador intel·ligent: un rellotge despertador intel·ligent fet amb Raspberry Pi: Heu volgut mai un rellotge intel·ligent? Si és així, aquesta és la solució per a vosaltres. He creat Smart Alarm Clock (Rellotge despertador intel·ligent), aquest és un rellotge que permet canviar l’hora de l’alarma segons el lloc web. Quan l’alarma s’activi, hi haurà un so (brunzidor) i 2 llums
Com controlar l'interruptor intel·ligent bàsic Sonoff basat en ESP8266 amb un telèfon intel·ligent: 4 passos (amb imatges)
Com controlar el commutador intel·ligent bàsic de Sonoff basat en ESP8266 amb un telèfon intel·ligent: Sonoff és una línia de dispositius per a Smart Home desenvolupada per ITEAD. Un dels dispositius més flexibles i econòmics d’aquesta línia és Sonoff Basic. És un commutador habilitat per Wi-Fi basat en un gran xip, ESP8266. En aquest article es descriu com configurar el Cl