Inhaltsverzeichnis:

Wake Me Up - ein intelligenter Wecker - Gunook
Wake Me Up - ein intelligenter Wecker - Gunook

Video: Wake Me Up - ein intelligenter Wecker - Gunook

Video: Wake Me Up - ein intelligenter Wecker - Gunook
Video: Smart Sound Machine Wake Up Light Alarm Wireless Charger REVIEW 2024, November
Anonim
Wake Me Up - ein intelligenter Wecker
Wake Me Up - ein intelligenter Wecker

Wake me up ist ein intelligenter Wecker, der auch als intelligentes Licht verwendet werden kann.

Der eingebaute LED-Streifen simuliert natürliches Licht, das in Ihren Raum fällt. Dies ermöglicht einen ruhigen, natürlichen Start in den Tag.

Der Wecker ist außerdem mit einer 4*7-Segment-Anzeige zum Ablesen der Uhrzeit, Lautsprechern zum Aufwachen mit Ihrer Lieblingsmusik, einem Touchbutton, einem LDR zum Anpassen der Helligkeit des LED-Streifens und einem Temperatursensor ausgestattet, mit dem Sie die Temperatur Ihres Zimmers.

Lieferungen

Eine Liste der genauen Preise, die ich bezahlt habe, finden Sie hier:

Mikrocontroller und Computer:

Raspberry Pi 4I verwendet den Raspberry Pi 4 4GB, jedoch sollte jedes Raspberry Pi Modell 3+ in Ordnung sein

Arduino Uno

Das Arduino wird verwendet, um die 4 * 7-Segment-Uhranzeige zu steuern.

Sensoren:

  • TMP36: Temperatursensor
  • LDR: Lichtabhängiger Widerstand

Aktoren:

  • WS2801: Individuell adressierbarer LED-Streifen
  • LCD-Display: Ein 16 * 2 LCD-Display.
  • 4 * 7-Segment-Uhranzeige

IC´s:

  • 74HC595: Schieberegister für das LCD-Display
  • MCP3008: 8-Bit-Analog-Digital-Wandler
  • Logikpegelkonverter: Wird verwendet, um zwischen Raspi und Arduino zu kommunizieren

Andere Sachen:

  • Ein Adafruit MAX9744 Verstärker zur Stromversorgung der Lautsprecher
  • Jeder Lautsprecher, ich habe einen Visaton 4Ohm 8Watt Breitbandlautsprecher verwendet (Art. Nr. 2240)
  • Ein 9-Volt-Netzteil zur Stromversorgung des Verstärkers
  • Ein 5-Volt-Netzteil zur Versorgung des LED-Streifens und anderer Komponenten. Denken Sie daran, dass jede LED im LED-Streifen 60 mA verbrauchen kann, also stellen Sie sicher, dass Ihre Stromversorgung ausreichend ist.
  • Ein paar 220Ohm Widerstände
  • Ein kleines Steckbrett, das Sie in Ihr Gehäuse stecken können.

Werkzeuge:

  • Ein Lötkolben.
  • Etwas, um den Fall zu machen (ich habe einen 3D-Drucker mit PLA und PETG und einige Vinylaufkleber verwendet, um den Holzeffekt zu erzielen.)

Schritt 1: Einrichten des Raspberry Pi

Der Himbeer-Pi ist unser Hauptmikrocontroller.

Der Himbeer-Pi betreibt unseren lokalen Webserver, die Datenbank, steuert den LED-Strip, die Lautsprecher, …

Teil 1: Raspbian installieren

Verwenden Sie dieses Tutorial, um Raspbian zu installieren:

Stellen Sie sicher, dass SSH aktiviert ist

Teil 2: Verbindung herstellen

Um eine Verbindung zum Internet herzustellen, müssen Sie auf das Terminal Ihres Raspberry Pi zugreifen. Ich empfehle die Verwendung von Spachtelmasse. Im Terminaltyp:

wpa_passphrase "IhrNetzwerk" "IhreSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

"YourNetwork" ist der Name Ihres WLAN-Netzwerks und "YourSSID" ist das Passwort des Netzwerks.

Nachdem Sie das Netzwerk hinzugefügt haben, versuchen Sie, den Raspberry Pi neu zu starten.

Geben Sie den Befehl 'ping 8.8.8.8' ein, um ein Paket an die Google-Server zu senden, wenn Sie eine Antwort erhalten, dass Ihr Netzwerk eingerichtet ist und funktioniert!

Teil 3: Installieren Sie die benötigten Programme

Wir werden einige zusätzliche Programme installieren müssen, um dieses Projekt zum Laufen zu bringen.

Bevor wir beginnen, führen Sie diese 2 Befehle aus, um sicherzustellen, dass alles aktualisiert ist.

sudo apt-Update

sudo apt upgrade

Dies kann eine Weile dauern.

Apache

sudo apt install apache2 -y

sudo apt install php libapache2-mod-php -y

MariaDB

sudo apt install mariadb-server mariadb-client -y

sudo apt install php-mysql -y

PHPMyAdmin

sudo apt install phpmyadmin -y

Python-Pip

Wir müssen pip installieren, um einige Python-Bibliotheken zu aktivieren

pip3 installiere mysql-connector-python

pip3 installflakon-socketio

pip3 install Flask-Cors

pip3 install gevent

pip3 install gevent-websocket

Schritt 2: Anschließen der Elektronik

Anschließen der Elektronik
Anschließen der Elektronik
Anschließen der Elektronik
Anschließen der Elektronik

Ich habe 2 Schemata hinzugefügt, 1 ist ein Steckbrettschema zu Testzwecken. Ich empfehle, das erste Schema zu erstellen und zu versuchen, den Code zum Laufen zu bringen.

Ich habe die Fritzing-Dateien unten hinzugefügt.

Schritt 3: Datenbankdesign

Datenbank Design
Datenbank Design

Dies ist das Datenbankschema, das ich erstellt habe. Die Wörter sind auf Niederländisch, aber ich werde jede Tabelle im Detail erklären.

Tabelle 1: tblMuziek

Dies ist eine ziemlich einfache Tabelle. Es speichert den Künstlernamen, den Songnamen und den Dateinamen eines Songs.

Tabelle 2: tblLedstrip

Diese Tabelle verfolgt den aktuellen Status des LED-Streifens und speichert den Status des LED-Streifens. Diese benötigen wir für die Smartlight-Funktion.

Tabelle 3: tblSensoren

Diese Tabelle verfolgt die Sensoren in unserem Alarm. Wir speichern den Namen des Sensors und den Kanal des MCP3008

Tabelle 4: tblMeting

Diese Tabelle speichert die Werte unserer Sensoren zusammen mit ihrer Zeit.

Tabelle 5: tblWekker

Diese Tabelle speichert das Passwort und den Namen Ihres Weckers (z. B. Schlafzimmer) Diese Tabelle ist nicht obligatorisch, aber ich habe sie hinzugefügt, weil ich davon ausgehen werde, dass Sie mehr als 1 Wecker in Ihrem Haus haben.

Tabelle 6: tblAlarm

Dies ist wahrscheinlich die wichtigste Tabelle. Es verfolgt die von Ihnen eingestellten Wecker und was die Uhr zu tun hat (welches Lied soll abgespielt werden, welche LED-Sequenz, an welchen Tagen soll sie läuten, …). Es ist sehr wichtig, 2 Termine zu verfolgen. 1 Datum wird verwendet, um zu speichern, zu welcher Stunde der Alarm ausgelöst werden soll. Der andere merkt sich, wann der Wecker das letzte Mal geklingelt hat. Um zu wissen, an welchem Wochentag es losgehen soll, habe ich ein Varchar verwendet, das eine Zahl von 7 Ziffern enthält. Die erste Ziffer ist Montag, die zweite Dienstag, … Wenn es eine 1 ist, sollte es erlöschen, wenn es eine 0 ist, sollte es nicht. Beispiel: 1111100 Dies bedeutet, dass dieser Alarm am Montag, Dienstag, Mittwoch, Donnerstag und Freitag ausgelöst werden soll.

Schritt 4: Arduino-Setup

Dieser Schritt ist sehr einfach. Im nächsten Schritt wird ein Link zu meinem Github angezeigt, wo Sie die Arduino-Datei herunterladen können.

Was macht das Programm?

Das Programm wartet darauf, dass serielle Daten vom pi eingehen.

Sobald die Daten empfangen werden, analysiert es den String und sendet eine Bestätigung an den pi zurück.

Die Zeichenfolge sieht ungefähr so aus: '1201' das bedeutet, dass es 12:01 ist. Ich habe eine 7-Segment-Anzeige mit gemeinsamer Anode verwendet. Dies bedeutet, dass die Ziffern hoch und A, B, C, D, E, F, G und DP niedrig sein sollten, um sie einzuschalten. Wenn Sie eine gemeinsame Kathode verwenden, sollten Sie einfach HIGH auf LOW und LOW auf HIGH ändern.

Hier ist ein Link mit weiteren Informationen zur Funktionsweise von 7-Segment-Anzeigen. (mit Benutzung der Bibliothek):

www.instructables.com/id/Using-a-4-digit-7…

Hier ist ein Link zu 7-Segment-Anzeigen ohne die Verwendung einer Bibliothek:

create.arduino.cc/projecthub/SAnwandter1/p…

Schritt 5: Raspberry Pi-Backend

Raspberry Pi-Backend
Raspberry Pi-Backend

Sie können meinen Code mit Github herunterladen. (https://github.com/VanHevelNico/WakeMeUp)

So installieren Sie das Programm:

Das Backend ist in Python mit Flask geschrieben. Sie können einen Dienst erstellen, der dieses Programm (app.py) automatisch startet.

Sie sollten den Frontend-Code in die HTML-Datei des Apache-Servers einfügen, den wir zuvor heruntergeladen haben. (/var/html)

Wie funktioniert das Programm?

Wenn der Wecker eingeschaltet ist, gehen Sie zur IP-Adresse Ihrer Uhr (sie wird auf dem LCD angezeigt)

Sobald Sie diese IP-Adresse in Ihrem Browser aufrufen, sendet Ihr Computer eine socket.io-Anfrage an das Backend, die besagt, dass sich ein Client verbunden hat. Wenn das Backend dies empfängt, werden einige Threads gestartet, die ich unten erklären werde.

Aufstellen

Dadurch werden alle benötigten Objekte initialisiert.

GetTemp

Dieser liest den mcp3008 Kanal 0 und wandelt die Binärdaten in die aktuelle Temperatur um und stellt sie mit dem aktuellen Datum und der Uhrzeit in die Datenbank.

GetTempGrafiek

Dieser holt sich die letzten 20 Werte des Temperatursensors und gibt diese an das Frontend aus.

tijd_sture

Diese Methode ruft die aktuelle Uhrzeit ab und prüft, ob sich die Minute geändert hat. Wenn es sich geändert hat, sendet das Programm die neue Zeit über die serielle Kommunikation an das Arduino

checkAlarmen

Dies ist die wichtigste Methode. Es ruft alle eingeschalteten Alarme ab und prüft, ob einer dieser Alarme zwischen jetzt und vor 5 Minuten gelöscht werden muss (dies ist ein Puffer, um sicherzustellen, dass jeder Alarm ausgelöst wird, wenn er erforderlich ist). Wenn der Alarm ausgelöst werden muss, starten wir die Musik, den LED-Streifen, … Wir lesen den kraftempfindlichen Widerstand kontinuierlich und wenn der Wert unter 1000 fällt (lesen Sie die fsr wird gedrückt) schalten wir den Alarm aus und aktualisieren den Alarm im Datenbank. Wir setzen das Datum, an dem der Wecker das letzte Mal geklingelt hat, auf das aktuelle Datum.

StatusLicht

Diese Methode gibt den Wert des LED-Streifens aus und schaltet den LED-Streifen bei Bedarf ein.

lichtAanpassen

Dies ist eine zusätzliche Methode, um sicherzustellen, dass der LED-Streifen und das Alarmlicht nicht in Konflikt geraten.

Schritt 6: Fall

Fall
Fall
Fall
Fall
Fall
Fall

Den Link zu meinen Dateien findet ihr hier:

Ich habe einen 3D-Drucker verwendet, um das Gehäuse zu drucken. Es ist in 4 verschiedenen Teilen gedruckt:

  1. Die Frontplatte mit Löchern für den Lautsprecher und einige Wände für die 7-Segment-Anzeige
  2. Der äußere Ring für den LED-Streifen aus transparentem PETG.
  3. Der Mittelteil
  4. Die Backplate mit einem Loch für das LCD und einem Loch für die Kabel.

Im Originalmodell war kein Loch für die 7-Segment-Anzeige vorhanden, dies wird jedoch benötigt, da sonst das Licht der 7-Segment-Anzeige nicht durchscheint.

Wie Sie nach dem Einsetzen aller Komponenten sehen können, habe ich Vinylaufkleber in Holzoptik verwendet, um das Endergebnis besser aussehen zu lassen. Die Uhranzeige scheint durch den Aufkleber hindurch, was einen sehr schönen Effekt erzeugt.

Empfohlen: