Inhaltsverzeichnis:
- Schritt 1: Zubehör
- Schritt 2: Schaltplan und Verdrahtung
- Schritt 3: Datenbankdesign
- Schritt 4: Vorbereitung des Raspberry Pi
- Schritt 5: Weiterleiten unserer Datenbank an das RPi
- Schritt 6: Konfigurieren von Bluetooth auf unserem RPi
- Schritt 7: Schreiben des kompletten Backends
- Schritt 8: Frontend schreiben (HTML, CSS & JavaScript)
- Schritt 9: Meinen Fall aufbauen und alles zusammenfügen
- Schritt 10: Einige Probleme, die ich bei der Erstellung des Slimbox-Lautsprechers hatte…
Video: Slimbox - ein intelligenter Bluetooth-Lautsprecher! - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:18
Sie da!
Für mein Schulprojekt bei MCT Howest Kortrijk habe ich ein intelligentes Bluetooth-Lautsprechergerät mit verschiedenen Sensoren, einem LCD- und RGB-NeoPixel-Ring inklusive. Alles läuft auf dem Raspberry Pi (Datenbank, Webserver, Backend).
In diesem anweisbaren zeige ich Ihnen, wie ich dieses Projekt in 3 Wochen Schritt für Schritt gemacht habe. Wenn also einer von Ihnen mein Projekt neu erstellen möchte, können Sie dies leicht tun!
Dies ist auch mein erstes instructable, wenn Sie Fragen haben, werde ich versuchen, sie so schnell wie möglich zu beantworten!
Mein GitHub:
Schritt 1: Zubehör
DS18B20 Temperatursensor
Der DS18B20 ist ein Eindrahtsensor, der die Temperatur misst, hergestellt von Maxim Integrated. Es gibt 2 Arten von DS18B20-Sensoren, nur die Komponente (die ich verwendet habe) und die wasserdichte Version, die viel größer ist, aber das ist nicht das, was ich für mein Projekt benötigt habe, also habe ich nur die Komponente verwendet. Der Sensor kann die Temperatur in einem Bereich von -55 °C bis +125 °C (67 °F bis +257 °F) messen und hat eine Genauigkeit von 0,5 °C von -10 °C bis +85 °C. Es hat auch eine programmierbare Auflösung von 9 Bit bis 12 Bit.
Datenblatt:
Potentiometersensor
Ein Potentiometer ist ein Widerstand mit drei Anschlüssen, der manuell durch Drehen des oberen Teils des Sensors eingestellt werden kann. Die Position des Oberteils bestimmt die Ausgangsspannung des Potentiometers.
LSM303 Beschleunigungsmesser + Kompass Breakout
Das Breakout-Board LSM303 ist eine Kombination aus einem dreiachsigen Beschleunigungsmesser und einem Magnetometer / Kompass, hergestellt von Adafruit. Es wird mit der I2C-Schnittstelle des Raspberry Pi verwendet.
Übersicht:
Datenblatt:
MCP3008
Zum Auslesen der Daten von meinem Potentiometer habe ich einen MCP3008 verwendet, der ein 8-Kanal-10-Bit-Analog-Digital-Wandler mit der SPI-Schnittstelle ist und ziemlich einfach zu programmieren ist.
Datenblatt:
Lautsprecher – 3” Durchmesser – 8 Ohm 1 Watt
Dies ist der Lautsprecherkonus, den ich ausgewählt habe, nachdem ich die benötigte Spannung und Ampere berechnet hatte, und dies passte perfekt zu meinem Raspberry Pi-Projekt, das von Adafruit hergestellt wurde.
Übersicht:
MAX98357 I2S Class-D Mono-Verstärker
Dies ist der Verstärker, der mit dem Lautsprecher geliefert wird. Er ist nicht nur ein Verstärker, sondern auch ein I2S-Digital-Analog-Wandler, sodass er auch perfekt zu meinem Lautsprecher- und Audiosystem passt.
Übersicht:
Datenblatt:
Arduino Uno
Das Arduino Uno ist ein Open-Source-Mikrocontroller-Board, das auf dem Microchip ATmega328P-Mikrocontroller basiert, hergestellt von Arduino.cc. Das Uno-Board hat 14 digitale Pins, 6 analoge Pins und ist vollständig mit der Arduino IDE-Software programmierbar
Übersicht:
Levelshifter
Dies ist eine kleine Platine, die sich um die Kommunikation zwischen Arduino Uno und Raspberry Pi und die verschiedenen Spannungen kümmert, Arduino: 5V & Raspberry Pi: 3.3V. Dies wird benötigt, weil der NeoPixel-Ring mit dem Arduino verbunden ist und dort läuft, während alle anderen Dinge auf dem Raspberry Pi laufen.
RGB NeoPixel-Ring
Dies ist ein kleiner Ring, der mit 12 RGB-LEDs gefüllt ist (Sie können größere Ringe mit mehr RGB-LEDs kaufen, wenn Sie möchten). Die ist in meinem Fall mit dem Arduino Uno verbunden, kann aber auch mit vielen anderen Geräten verbunden werden und ist wirklich einfach zu bedienen.
Übersicht:
LCD-Anzeige 16x2
Ich habe ein einfaches LCD-Display verwendet, um meine Temperatur, Lautstärke und IP-Adresse zu drucken.
Datenblatt:
Raspberry Pi 3B+ & 16GB SD-Karte
Mein ganzes Projekt läuft auf meinem Raspberry Pi 3B + mit einem konfigurierten Bild, das ich Ihnen später in meiner Anleitung bei der Konfiguration helfe.
GPIO T-Teil, 2 Breadboards und viele Jumperwires
Um alles zu verbinden, was ich brauchte, Breadboards und Jumperwires, habe ich das GPIO-T-Teil verwendet, damit ich mehr Platz habe und klar ist, welcher Pin welcher ist.
Schritt 2: Schaltplan und Verdrahtung
Für meinen Schaltplan habe ich Fritzing verwendet, ein Programm, das Sie installieren können, mit dem Sie ganz einfach einen Schaltplan in verschiedenen Ansichten erstellen können.
Fritzing herunterladen:
Stellen Sie also sicher, dass Sie alles richtig anschließen! In meinem Fall sind die Farben der Drähte nicht die gleichen wie auf dem Schaltplan.
Schritt 3: Datenbankdesign
Wir sammeln viele Daten von den 3 angeschlossenen Sensoren, daher benötigen wir eine Datenbank, um die Daten und Sensoren zu speichern. Später werden wir sehen, wie man die Datenbank auf dem Raspberry Pi konfiguriert und Daten hinzufügt. Aber zuerst muss das Datenbankdesign oder ERD (Entity Relationship Diagram) erstellt werden und meins wurde auch mit 3NF normalisiert. Deshalb teilen wir die Sensoren in eine weitere Tabelle auf und arbeiten mit IDs.
Insgesamt ist dies ein wirklich einfaches und einfaches Datenbankdesign, mit dem Sie weiter arbeiten können.
Schritt 4: Vorbereitung des Raspberry Pi
So, jetzt haben wir einige Grundlagen des Projekts erledigt. Beginnen wir mit dem Raspberry Pi!
Konfiguration der SD-Karte
Zunächst benötigen Sie eine 16 GB SD-Karte, auf die Sie Ihr Bild legen können, und ein Programm, um ein Startbild auf die SD-Karte hochzuladen.
Software:
Startbild:
Sobald diese heruntergeladen sind:
- Legen Sie Ihre SD-Karte in Ihren Computer ein.
- Öffnen Sie Win32, das Sie gerade heruntergeladen haben.
- Wählen Sie die Raspbian-Image-Datei aus, die Sie ebenfalls gerade heruntergeladen haben.
- Klicken Sie auf "Schreiben" an den Speicherort Ihrer SD-Karte.
Dies kann je nach Hardware einige Zeit dauern. Sobald dies erledigt ist, sind wir bereit, einige letzte Anpassungen vorzunehmen, bevor wir das Bild in unser RPi einfügen.
- Gehen Sie in das Verzeichnis Ihrer SD-Karte, suchen Sie nach der Datei „cmdline.txt“und öffnen Sie sie.
- Fügen Sie nun 'ip=169.254.10.1' in derselben Zeile hinzu.
- Speicher die Datei.
- Erstellen Sie eine Datei namens 'ssh' ohne Erweiterung oder Inhalt.
Jetzt können Sie die SD-Karte SICHER aus Ihrem Computer auswerfen und OHNE Strom in den Raspberry Pi stecken. Sobald sich die SD-Karte im RPI befindet, verbinden Sie ein LAN-Kabel von Ihrem Computer mit dem RPi-LAN-Port. Sobald dieser verbunden ist, können Sie das RPi mit Strom versorgen.
Nun wollen wir unseren Raspberry Pi steuern, dies geschieht über Putty.
Putty-Software:
Öffnen Sie nach dem Herunterladen Putty und geben Sie die IP '169.254.10.1' und den Port '22' und den Verbindungstyp ein: SSH. Jetzt können wir endlich unsere Kommandozeilenschnittstelle öffnen und uns mit den Starter-Anmeldeinformationen anmelden -> Benutzer: pi & Passwort: raspberry.
Raspi-config
sudo raspi-config
Was für dieses Projekt wirklich wichtig ist, ist der Schnittstellenbereich, wir müssen viele verschiedene Schnittstellen aktivieren, alle folgenden Schnittstellen aktivieren:
- Eindraht
- SPI
- I2C
- Seriennummer
Nachdem wir mit raspi-config fertig sind, versuchen wir, eine Verbindung zum Internet herzustellen.
WiFi Verbindung
Zuerst müssen Sie für die folgenden Befehle root sein
sudo -i
Sobald Sie root sind, verwenden Sie den folgenden Befehl. SSID ist Ihr Netzwerkname und Passwort ist offensichtlich das Passwort.
wpa_passphrase "ssid" "Passwort" >> /etc/wpa_supplicant/wpa_supplicant.conf
Falls Sie einen Fehler gemacht haben, können Sie dieses Netzwerk überprüfen, aktualisieren oder löschen, indem Sie einfach diese Datei eingeben:
nano /etc/wpa_supplicant/wpa_supplicant.conf
Nachdem wir also unser Netzwerk betreten haben, betreten wir die WPA-Client-Schnittstelle
wpa_cli
Wählen Sie Ihre Schnittstelle
Schnittstelle wlan0
Datei neu laden
neu konfigurieren
Und schließlich können Sie sehen, ob Sie gut verbunden sind:
ip a
Aktualisieren und aktualisieren
Jetzt, da wir mit dem Internet verbunden sind, wäre es ein kluger Schachzug, die bereits installierten Pakete zu aktualisieren, also lass uns das zuerst tun, bevor wir andere Pakete installieren.
sudo apt-get update
sudo apt-get upgrade
MariaDB-Datenbank
Installieren Sie den MariaDB-Datenbankserver:
sudo apt-get install mariadb-server
Apache2-Webserver
Installieren Sie den Apache2-Webserver:
sudo apt installiere apache2
Python
Python installieren:
update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
update-alternatives --install /usr/bin/python python /usr/bin/python3 2
Python-Paket
Sie müssen alle diese Pakete installieren, damit das Backend perfekt funktioniert:
- Flasche
- Kolben-Cors
- Flask-MySql
- Kolben-SockelIO
- PyMySQL
- Anfragen
- Python-Socketio
- RPi. GPIO
- Gevent
- Gevent-Websocket
- Ujson
- Wsaccel
Sprecherbibliothek
Installieren Sie die Lautsprecherbibliothek von Adafruit:
curl -sS https://raw.githubusercontent.com/adafruit/Raspbe… | bash
Zeit für einen Neustart
sudo neu starten
Schritt 5: Weiterleiten unserer Datenbank an das RPi
Nachdem wir nun alles installiert haben, was wir brauchten, legen wir unsere Datenbank, die wir entworfen haben, auf unserem Raspberry Pi!
Zuerst müssen wir also unsere Datenbank in der MySql-Workbench vorwärts entwickeln, dabei Ihren vollständigen Datenbankcode kopieren und alle "sichtbaren" Wörter darin löschen. Sobald das kopiert ist, öffnen Sie Putty erneut, melden Sie sich an und geben Sie Folgendes ein:
sudo mysql
und jetzt befinden Sie sich in der MySQL-Schnittstelle, kopieren Sie Ihren Datenbankcode hinein und drücken Sie die Eingabetaste.
Jetzt müssen wir nur noch einen Benutzer erstellen
BENUTZER 'Benutzer' IDENTIFIZIERT DURCH 'Benutzer' ERSTELLEN;
GEWÄHRLEISTEN SIE ALLE PRIVILEGIEN AUF *.* TO 'user';
Jetzt neu starten.
Damit jetzt alles eingerichtet sein sollte, können Sie auch eine Verbindung mit Ihrem Pi und MySql Workbench herstellen, damit Sie alle Daten in Ihren Tabellen leichter überprüfen können.
Schritt 6: Konfigurieren von Bluetooth auf unserem RPi
Wir erstellen einen Bluetooth-Lautsprecher, das bedeutet, dass die Medien von unserer Quelle an den Raspberry Pi gesendet werden, und dies kann ziemlich einfach erfolgen, lass uns gleich loslegen!
Meine Quelle für die Bluetooth-Verbindung:
Entfernen des bereits laufenden bluealsa
sudo rm /var/run/bluealsa/*
Fügen Sie die Senkenrolle des A2DP-Profils hinzu
sudo bluealsa -p a2dp-sink &
Öffnen Sie die Bluetooth-Schnittstelle und schalten Sie Ihr Bluetooth ein
bluetoothctl
ein
Richten Sie einen Pairing-Agenten ein
Agent an
Standard-Agent
Machen Sie Ihr RPi auffindbar
auffindbar auf
- Suchen Sie nun von Ihrem Bluetooth-Gerät aus nach dem RPi und verbinden Sie sich damit.
- Bestätigen Sie die Kopplung auf beiden Geräten, geben Sie 'ja' in Ihren Kitt ein.
- Autorisieren Sie den A2DP-Dienst, geben Sie erneut "ja" ein.
- Sobald dies erledigt ist, können wir unserem Gerät vertrauen, sodass wir nicht jedes Mal, wenn wir eine Verbindung herstellen möchten, alles durchgehen müssen
Vertrauen Sie XX:XX:XX:XX:XX:XX (Ihre Bluetooth-Mac-Adresse von unserem Quellgerät)
Wenn Sie möchten, dass Ihr RPi weiterhin auffindbar ist, ist das Ihre eigene Entscheidung, aber ich ziehe es vor, es wieder auszuschalten, damit die Leute nicht versuchen können, sich mit Ihrer Box zu verbinden
auffindbar aus
Dann können wir unsere Bluetooth-Schnittstelle verlassen
Ausfahrt
Und schließlich unser Audio-Routing: unsere Quellgeräte-Weiterleitung an unser RPi
bluealsa-aplay 00:00:00:00:00:00
Jetzt ist unser Gerät vollständig mit unserem Raspberry verbunden und Sie sollten Medien von Ihrem Quellgerät auf dem Pi-Lautsprecher abspielen können.
Schritt 7: Schreiben des kompletten Backends
Jetzt ist das Setup abgeschlossen und wir können endlich damit beginnen, unser Backend-Programm zu schreiben!
Ich habe PyCharm für mein gesamtes Backend verwendet, Sie müssen nur sicherstellen, dass Ihr PyCharm-Projekt mit Ihrem Raspberry Pi verbunden ist. Dies bedeutet, dass Ihr Bereitstellungspfad in Ihren Einstellungen eingerichtet ist und Sie alle benötigten Pakete installiert haben, sollte bereits in Schritt erfolgen 4.
Ich habe meine eigenen Klassen verwendet und diese sind auch alle in meinem GitHub enthalten. Link ist im Intro, falls du es verpasst hast;)
In meiner Backend-Datei habe ich Threading-Klassen verwendet, damit alles gleichzeitig ausgeführt werden kann und sich nicht gegenseitig unterbricht. Und ganz unten haben Sie alle Routen, damit wir ganz einfach Daten in unserem Frontend abrufen können.
Schritt 8: Frontend schreiben (HTML, CSS & JavaScript)
Jetzt, da das Backend fertig ist, können wir mit dem Schreiben des vollständigen Frontends beginnen.
HTML & CSS war ziemlich einfach, ich habe versucht, so gut wie möglich zuerst mobil zu arbeiten, da wir uns meistens mit Bluetooth von einem mobilen Gerät aus verbinden, wäre es einfacher, über ein mobiles Dashboard zu steuern.
Sie können Ihr Dashboard so gestalten, wie Sie möchten, ich lasse einfach meinen Code und mein Design hier, Sie können tun, was Sie möchten!
Und Javascript war nicht so schwer, funktionierte mit ein paar GETs aus meinen Backend-Routen, Tonnen von Event-Listenern und einigen Socketio-Strukturen.
Schritt 9: Meinen Fall aufbauen und alles zusammenfügen
Ich begann mit einigen Skizzen, wie das Gehäuse aussehen sollte. Wichtig war, dass es groß genug sein musste, damit alles hineinpasste, da wir eine große Schaltung für das Gehäuse hatten.
Ich habe den Koffer aus Holz gemacht, ich denke, es ist am einfachsten, damit zu arbeiten, wenn Sie nicht so viel Erfahrung mit dem Bauen von Koffern haben und auch viele Dinge haben, die Sie damit machen können.
Ich begann mit einem Koffer für Weinflaschen und fing einfach an, das Holz zu sägen. Als ich meinen Basiskoffer hatte, musste ich nur noch Löcher hineinbohren (viele auf der Vorderseite des Koffers, wie auf den Bildern zu sehen:P) und ein paar Nägel hineinstecken, es ist ein wirklich einfacher Koffer, aber er sieht ziemlich cool aus und passt perfekt.
Und als der Koffer fertig war, war es an der Zeit, alles zusammenzubauen, wie Sie auf dem letzten Bild sehen können! Es ist ein bisschen durcheinander in der Box, aber alles funktioniert und ich hatte nicht viel mehr Platz, daher rate ich Ihnen, vielleicht einen größeren Fall zu erstellen, wenn Sie mein Projekt neu erstellen.
Schritt 10: Einige Probleme, die ich bei der Erstellung des Slimbox-Lautsprechers hatte…
Bluetooth- und Bluealsa-Fehler
Jedes Mal, wenn ich Musik abspielen oder mich mit Bluetooth verbinden wollte, erhielt ich Fehler von Bluetooth und bluealsa. Ich habe etwas recherchiert und das war die Lösung für mein Problem. Aus irgendeinem Grund war mein Bluetooth weich geblockt, ich bin mir nicht sicher, ob dies standardmäßig weich geblockt ist. Sie können sehen, ob dies der Fall ist, indem Sie den folgenden Befehl in Ihren Putty eingeben.
rfkill-Liste
Wenn es also weich blockiert ist, verwenden Sie einfach Folgendes:
rfkill Bluetooth entsperren
Und Sie möchten vielleicht danach neu starten, meine Quelle:
Probleme mit der seriellen Verbindung
Ein weiteres großes Problem war, dass ich über den Levelshifter keine Verbindung zu meinem Arduino herstellen konnte. Nach einigem Suchen fand ich heraus, dass mein '/dev/ttyS0' weg war und dies könnte an einem Update Ihres RPi liegen. Habe dazu auch eine Lösung gefunden
Sie müssen die serielle Konsole mit raspi-config erneut aktivieren, neu starten und dann das Bit "console=serial0, 115200" manuell aus '/boot/cmdline.txt' entfernen. Bestätigen Sie, dass "enable_uart=1" in ' ist. /boot/config.txt“und starten Sie erneut. Das sollte Ihren ttyS0-Port sowie den Softlink „/dev/serial0“zurückbekommen.
Quelle:
Empfohlen:
LED Demon Eye mit Smartphone Bluetooth App einrichten: 5 Schritte
So richten Sie LED Demon Eye mit Bluetooth-App für Smartphones ein: In dieser Installationsanleitung erfahren Sie, wie Sie die App einrichten, die über Bluetooth eine Verbindung herstellt. Diese App ist sowohl im Apple Store als auch bei Google Play erhältlich und heißt "Happy Lighting"
Intelligenter Rucksack: 8 Schritte
Smart Backpack: Wenn Sie ein Student wie ich sind, werden sich einige von Ihnen definitiv auf das Problem beziehen, das ich vergesse. Ich habe nicht viel Zeit, um meinen Rucksack zu machen, und bevor du dich versiehst, hast du etwas vergessen. Ich habe versucht, mir das Leben zu erleichtern, indem ich ein Raspberry-Pi-Projekt gemacht habe
Intelligenter Behälter: 5 Schritte
Smart Bin: Mit unserem Smart Bin können Benutzer mit einem speziellen Pass, der mit einem persönlichen Konto verknüpft ist, „einchecken“. Nach dem Einchecken erhält der Benutzer für jeden in den Mülleimer geworfenen Müll einen Punkt. Mit diesen Punkten können Sie dann verschiedene Geschenke in der Stadt t
Intelligenter Einkaufswagen: 4 Schritte
Smart Shopping Cart: Smart Shopping Cart (Trolley) Projekt wird durchgeführt, um die Automatisierung vorzuherrschen und das Leben der Menschen zu erleichtern. Dieser Trolley verfügt über verschiedene Fähigkeiten, einschließlich Personenverfolgung, Gestenerkennung, Aufnehmen und Platzieren von Objekten mit einem 3DOF-Roboterarm und
Intelligenter: 13 Schritte
Smarter: Hi @ll!Da es immer noch mit einigem Aufwand für Anfänger verbunden ist, einen ESP8266-01(s) zu flashen und ich persönlich eine IP unabhängige und "sichere" Lösung für mein Garagentor brauchte, habe ich mich en