Inhaltsverzeichnis:

Stimmungslautsprecher – ein leistungsstarker Lautsprecher für die Wiedergabe von Stimmungsmusik basierend auf der Umgebungstemperatur - Gunook
Stimmungslautsprecher – ein leistungsstarker Lautsprecher für die Wiedergabe von Stimmungsmusik basierend auf der Umgebungstemperatur - Gunook

Video: Stimmungslautsprecher – ein leistungsstarker Lautsprecher für die Wiedergabe von Stimmungsmusik basierend auf der Umgebungstemperatur - Gunook

Video: Stimmungslautsprecher – ein leistungsstarker Lautsprecher für die Wiedergabe von Stimmungsmusik basierend auf der Umgebungstemperatur - Gunook
Video: Die Masche hinter billig: China Bluetooth Lautsprecher erklärt | W-King 2024, Juli
Anonim
Stimmungslautsprecher – ein leistungsstarker Lautsprecher für die Wiedergabe von Stimmungsmusik basierend auf der Umgebungstemperatur
Stimmungslautsprecher – ein leistungsstarker Lautsprecher für die Wiedergabe von Stimmungsmusik basierend auf der Umgebungstemperatur

Sie da!

Für mein Schulprojekt bei MCT Howest Kortrijk habe ich einen Mood Speaker hergestellt. Dies ist ein intelligenter Bluetooth-Lautsprecher mit verschiedenen Sensoren, einem LCD und einem WS2812b-LED-Streifen. Der Lautsprecher spielt Hintergrundmusik basierend auf der Temperatur, kann aber auch als normales Bluetooth verwendet werden Lautsprecher. Alles läuft auf dem Raspberry Pi (Datenbank, Webserver, Backend).

Dieses anweisbare ist also ein Schritt für Schritt, wie ich dieses Projekt in 3 Wochen realisiert habe. Wenn Sie also mein Projekt neu erstellen möchten, können Sie der Anleitung folgen

Dieses instructable ist mein erstes, das ich schrieb, also wenn es irgendwelche Fragen gibt, werde ich versuchen, sie so schnell zu beantworten, wie ich kann!

Mein GitHub:

Schritt 1: Zubehör

Raspberry Pi 3B & 16GB SD-Karte

Mein ganzes Projekt läuft auf meinem Raspberry Pi 3B mit einem konfigurierten Image, was ich in einem späteren Schritt erklären werde (Schritt 4: Raspberry Pi einrichten)

LCD-Anzeige 16x2

Ich habe ein einfaches LCD-Display verwendet, um meine Temperatur, Helligkeit und IP-Adresse zu drucken.

Datenblatt:

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:

MCP3008

Zum Auslesen der Daten von meinem LDR- und PIR-Sensor habe ich einen MCP3008 verwendet, der ein 8-Kanal-10-Bit-Analog-Digital-Wandler mit SPI-Schnittstelle ist und ziemlich einfach zu programmieren ist.

Datenblatt:

PIR-Bewegungssensor

Um zu erkennen, wann jemand mein Zimmer betritt und verlässt, habe ich einen Passiv-Infrarot-Sensor verwendet, da sie einfach zu bedienen und klein sind.

Datenblatt:

LDR

Ich habe einen Fotowiderstand oder LDR (Light Decreasing Resistance oder lichtabhängiger Widerstand) verwendet, um die Helligkeit des Raums zu erkennen, in dem er sich befindet. Und um auch meinen Ledstrip einzuschalten, wenn er zu dunkel ist.

Lautsprecher – 3” Durchmesser – 4 Ohm 3 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, da der LED-Strip mit dem Arduino verbunden ist und dort läuft, während alle anderen Dinge auf dem Raspberry Pi laufen.

WS2812B - LED-Streifen

Dies ist ein LED-Streifen mit 60 RGB-LEDs (Sie können längere Streifen 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.

Datenblatt:

GPIO T-Teil, 1 Steckbrett und viele Jumperwires

Um alles zu verbinden, was ich brauchte, Breadboards und Jumperwires, habe ich nicht das GPIO-T-Teil verwendet, aber Sie können es verwenden, um klar zu wissen, welcher Behälter wohin gehört.

Schritt 2: Schaltplan und Verdrahtung

Schaltplan und Verdrahtung
Schaltplan und Verdrahtung
Schaltplan und Verdrahtung
Schaltplan und Verdrahtung

Für die Erstellung meines Schaltplans habe ich Fritzing verwendet, ein Programm, das Sie installieren können, mit dem Sie ganz einfach einen Schaltplan in verschiedenen Ansichten erstellen können. Ich habe die Steckbrett- und Schaltplanansicht verwendet.

Fritzing herunterladen:

Stellen Sie sicher, dass alles richtig angeschlossen ist. Ich habe Farben verwendet, um es etwas klarer zu machen, wo die Drähte angeschlossen werden sollen. In meinem Fall habe ich verschiedene Farben für die Drähte verwendet

Schritt 3: Datenbankdesign

Datenbank Design
Datenbank Design

Wir sammeln viele Daten von den 3 Sensoren (Temperatur von DS18B20, Helligkeit von LDR und Status von PIR-Sensor). Daher ist es am besten, all diese Daten in einer Datenbank zu speichern. Ich erkläre in einem späteren Schritt, wie die Datenbank konfiguriert wird (Schritt 5: Forward Engineering Our Database to the RPi!) Aber zuerst muss das Design oder ERD (Entity Relationship Diagram) erstellt werden. Meine wurde mit 3NF normalisiert, deshalb haben wir die Komponenten und die Historie der Komponenten in eine andere Tabelle aufgeteilt. Wir verwenden die Musikdatenbank, um den Überblick über die gehörten Songs zu behalten.

Insgesamt ist dies ein wirklich einfaches und einfaches Datenbankdesign, mit dem Sie weiter arbeiten können.

Schritt 4: Raspberry Pi einrichten

So, jetzt haben wir einige Grundlagen des Projekts erledigt. Beginnen wir mit der Einrichtung des Raspberry Pi!

Teil 1: Konfigurieren der SD-Karte

1) Laden Sie die erforderliche Software und Dateien herunter

Für diesen vollständigen Vorgang müssen Sie 2 Software und 1 Betriebssystem herunterladen, z. B. Raspbian. 1. Software: Die erste Software ist Win32 Disk Imager.

sourceforge.net/projects/win32diskimager/

Zweite Software: Zweite Software ist SD Card Formatter.

www.sdcard.org/downloads/formatter_4/

Raspbian OS: Dies ist das Hauptbetriebssystem des Pi.

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

Extrahieren Sie alle Dateien auf den Desktop.

2) Holen Sie sich die SD-Karte und den Kartenleser

Holen Sie sich eine SD-Karte der Klasse 10 mit mindestens 8 GB und einem Kartenleser. Stecken Sie diese Karte in den Kartenleser und stecken Sie sie in den USB-Anschluss.

3) Formatieren Sie die SD-Karte

Öffnen Sie den SD-Kartenformatierer und wählen Sie das Laufwerk aus.

Klicken Sie auf Format und ändern Sie keine anderen Optionen.

Wenn die Formatierung abgeschlossen ist, klicken Sie auf OK.

4) Schreiben Sie das Betriebssystem auf die SD-Karte

Öffnen Sie win32diskimager.

Durchsuchen Sie die.img-Datei von Raspbian OS, die aus der heruntergeladenen Datei extrahiert wurde.

Klicken Sie auf Öffnen und dann auf Schreiben.

Wenn eine Warnung angezeigt wird, ignorieren Sie diese, indem Sie auf OK klicken. Warten Sie, bis der Schreibvorgang abgeschlossen ist. Dies kann einige Minuten dauern. Also sei geduldig.

n

5) 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 mit dem Namen 'ssh' ohne Erweiterung oder Inhalt. (Der einfachste Weg ist, eine txt-Datei zu erstellen und die.txt-Datei anschließend zu entfernen)

Nachdem alles auf der SD-Karte installiert ist, können Sie sie SICHER von Ihrem Computer auswerfen und in den Raspberry Pi stecken, OHNE die Stromversorgung anzuschließen. 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.

Teil 2: Konfigurieren des RPi

Kitt

Nun wollen wir unseren Raspberry Pi konfigurieren, 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. (Es wird empfohlen, es so schnell wie möglich zu ändern. Hier ist eine Anleitung:

Raspi-config

Wir müssen verschiedene Schnittstellen aktivieren und dazu müssen wir zuerst folgenden Code eingeben:

sudo raspi-config

Die Dinge, die wir aktivieren müssen, befinden sich im Abschnitt Schnittstellen. Wir müssen folgende Schnittstellen aktivieren:

  • Eindraht
  • Seriennummer
  • I2C
  • SPI

Das war alles was wir mit raspi-config machen mussten

WLAN hinzufügen

Zuerst müssen Sie root sein, damit der folgende Befehl root wird

sudo -i

Sobald Sie root sind, verwenden Sie den folgenden Befehl: (Ersetzen Sie die SSID durch Ihren Netzwerknamen und das Kennwort durch Ihr Netzwerkkennwort)

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

Falls Sie etwas falsch gemacht haben, können Sie dieses Netzwerk überprüfen, aktualisieren oder löschen, indem Sie einfach den folgenden Befehl 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

Teil 3: Aktualisieren des RPi + Installieren der Software

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

Nach dem Update des RPi müssen wir folgende Software installieren:

MariaDB-Datenbank

sudo apt-get install mariadb-server

Apache2-Webserver

sudo apt installiere 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

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

Sprecherbibliothek

Um den Lautsprecher mit dem Verstärker zu verwenden, müssen wir eine Bibliothek dafür installieren

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

Einrichten der Datenbank zum RPi!
Einrichten der Datenbank zum RPi!

Nachdem wir nun alles installiert haben, was wir brauchten, legen wir unsere Datenbank, die wir entworfen haben, auf unserem Raspberry Pi!

Zum Einrichten der Datenbank müssen wir MySql und RPi verbinden. Dazu öffnen wir MySQLWorkbench und stellen eine neue Verbindung her. Wenn Sie sich das Bild ansehen, müssen Sie es ändern, um die Informationen in Ihre zu ändern.

Wenn Sie noch nichts geändert haben, können Sie für SSH pi und raspberry, für MySQL mysql und mysql verwenden.

Wenn etwas nicht klar ist, können Sie auch diesem Tutorial folgen:

Um Ihre Datenbank zu exportieren, sollte es einfacher sein, PHPmyAdmin zu verwenden, da Sie mit MySql viele Fehler bekommen können

Schritt 6: Konfigurieren von Bluetooth auf unserem RPi

Wir erstellen einen Mood-Lautsprecher, den wir auch mit unserer eigenen Musik verwenden können, damit dies einfacher ist, wenn der RPi ist

Mit Bluetooth verbunden habe ich ein Tutorial dafür befolgt, das Sie hier finden können:

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

Ich habe auch hier alles aufgeschrieben für alle, die es nachbauen wollen

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 einschalten

Richten Sie einen Pairing-Agenten ein

Agent auf 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 über Bluetooth mit unserem Raspberry verbunden und Sie sollten es testen können, indem Sie beliebige Medien abspielen, z. B. Spotify usw.

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 Visual Studio Code für mein gesamtes Backend verwendet, Sie müssen nur sicherstellen, dass Ihr Visual Studio-Projekt mit Ihrem Raspberry Pi verbunden ist, dh Ihr LAN-Kabel muss mit Ihrem RPi verbunden sein und eine SSH-Verbindung herstellen. (Infos zum Erstellen einer Remote-Verbindung finden Sie hier:

Ich habe meine eigenen Klassen verwendet und diese sind auch alle in meinem GitHub enthalten.

In meiner Backend-Datei habe ich verschiedene Klassen verwendet, damit alles separat verwendet werden kann und mein Hauptcode nicht mit all den verschiedenen Threads durcheinander ist. Ich habe Threading verwendet, um alle verschiedenen Klassen gleichzeitig auszuführen. 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 und CSS waren ziemlich hart für mich. Ich habe mein Bestes getan, um es zuerst mobil zu machen, weil ich mich mit Bluetooth verbinden kann, um die Songs mit Spotify zu ändern. Es wäre also 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 einfacher für mich, arbeitete mit ein paar GETs aus meinen Backend-Routen, Tonnen von Event-Listenern und einigen Socketio-Strukturen, um die Daten von meinen Sensoren zu erhalten.

Schritt 9: Meinen Fall aufbauen und alles zusammenfügen

Meinen Fall aufbauen und alles zusammenfügen
Meinen Fall aufbauen und alles zusammenfügen
Meinen Fall aufbauen und alles zusammenfügen
Meinen Fall aufbauen und alles zusammenfügen
Meinen Fall aufbauen und alles zusammenfügen
Meinen Fall aufbauen und alles zusammenfügen
Meinen Fall aufbauen und alles zusammenfügen
Meinen Fall aufbauen und alles zusammenfügen

Ich begann zu skizzieren, 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, aber kompakt bleiben mussten, damit es nicht passte. nimmt nicht viel platz weg

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 alten Brett, das ich herumgelegt hatte, und fing einfach an, das Holz zu sägen. Als ich meinen Basic-Case hatte, musste ich nur noch Löcher hineinbohren (viele auf der Vorderseite des Cases, wie auf den Bildern zu sehen ist und ein paar Nägel hineinstecken, es ist ein wirklich Basic-Case, sieht aber ziemlich cool aus und passt perfekt. Ich habe mich auch entschieden, es weiß zu malen, damit es gut aussieht.

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.

Empfohlen: