Inhaltsverzeichnis:

Schlaftrainingsuhr für Kinder - Gunook
Schlaftrainingsuhr für Kinder - Gunook

Video: Schlaftrainingsuhr für Kinder - Gunook

Video: Schlaftrainingsuhr für Kinder - Gunook
Video: Einschlaftipps für dein Baby und Kleinkind | So kann dein Baby schlafen lernen und durchschlafen 2024, Juli
Anonim
Schlaftrainingsuhr für Kinder
Schlaftrainingsuhr für Kinder
Schlaftrainingsuhr für Kinder
Schlaftrainingsuhr für Kinder
Schlaftrainingsuhr für Kinder
Schlaftrainingsuhr für Kinder
Schlaftrainingsuhr für Kinder
Schlaftrainingsuhr für Kinder

Ich brauchte eine Uhr, um meinen 4-jährigen Zwillingen zu helfen, etwas länger einzuschlafen (ich habe es satt, samstags um 5:30 Uhr morgens aufstehen zu müssen), aber sie können noch keine Zeit ablesen. Nachdem ich einige Artikel auf einer sehr beliebten Shopping-Site durchstöbert hatte, dachte ich: "Wie schwer wäre es, nur einen zu machen?!"

Also hier ist, was ich dachte, ich wollte in diesem Projekt. Es würde einige RGB-LEDs verwenden (hauptsächlich, weil ich ungefähr fünfzig davon aus einem anderen Projekt habe), um drei verschiedene Farben anzuzeigen. Rot würde bedeuten, wieder einzuschlafen, zum Aufwachen ist es zu früh. Gelb würde bedeuten, dass sie aufstehen und ruhig in ihrem Zimmer spielen können. Grün bedeutet natürlich, dass Sie aufstehen können. Ich wollte auch die Zeit anpassen können, da ich an manchen Tagen länger ausschlafen möchte (Wochenende/Feiertage vs. Wochentage und so).

Lieferungen

Raspberry Pi Zero W

Zwei RGB-LEDs

Sechs 220 Ohm Widerstände

Dateien (.stl, python, html) finden Sie hier

Diverse kleine Schrauben, Drähte und Kleinteile nach Bedarf.

Schritt 1: 3D-Druck

3d Drucken
3d Drucken
3d Drucken
3d Drucken
3d Drucken
3d Drucken

Meine Tochter mag Einhörner sehr, also habe ich für dieses Projekt Riven02s Unicorn Nightlight remixt, ein Remix von Apachcreations Unicorn Trophy, das auf Thingiverse.com zu finden ist und unter einer Creative Commons Non-Commercial-Lizenz verwendet wird. Ich habe die Einhornbasis modifiziert, um ein Netzkabel für den Himbeer-Pi-Zero zu passen. Ich hatte zufällig etwas AMZ3D Red PLA herumliegen, so dass die Basis und der Kopf des Einhorns rot sind. Ich habe klares / durchscheinendes PLA für das Horn verwendet. Die.stl-Dateien und Einstellungen, die ich verwendet habe, sind:

Einhorn.stl

  • Schichthöhe: 0,02
  • Wandstärke:.8
  • Anzahl der Wandlinien: 2
  • Füllung: 15%
  • Füllmuster: Gitter

UnicornBase.stl

  • Schichthöhe: 0,02
  • Wandstärke:.8
  • Anzahl der Wandlinien: 2
  • Füllung: 15%
  • Füllmuster: Gitter

Horn.stl

  • Schichthöhe: 0,02
  • Wandstärke: 0.8
  • Anzahl der Wandlinien: 3
  • Füllung: 0

Schritt 2: Die Schaltung

Die Rennbahn
Die Rennbahn
Die Rennbahn
Die Rennbahn
Die Rennbahn
Die Rennbahn

Die Schaltung ist ziemlich einfach. Ich habe sechs verschiedene GPIO-Pins gewählt, um das Ein / Aus für die verschiedenen Farben des RGB zu steuern. Diese Pins und die entsprechenden LED-Farben sind:

  • Pin 11 auf RGB 1 ROT
  • Pin 13 auf RGB 1 GRÜN
  • Pin 15 auf RGB 1 BLAU
  • Pin 16 auf RGB 2 ROT
  • Pin 18 auf RGB 2 GRÜN
  • Pin 36 auf RGB 2 BLAU
  • Pin 39 an Masse

Jeder Pin ist über einen 220 Ohm Strombegrenzungswiderstand mit dem Widerstand verbunden (mit Ausnahme von Masse natürlich.) Ich habe den Widerstand in Reihe gelötet und mit Schrumpfschlauch bedeckt.

Schritt 3: Raspberry Pi Vorbereitung

Ich wollte die Zeiten für die Schlaftrainer-Uhr über ein Webinterface einstellen können. Also musste ich einen Apache- und PHP-Server auf dem Raspberry Pi einrichten. Wenn Sie neue Software auf einem Raspberry Pi installieren, sollten Sie als erstes immer sicherstellen, dass sie auf dem neuesten Stand ist, indem Sie Folgendes eingeben:

sudo apt-get update

Danach können wir richtig zur Sache gehen. Wir tun dies, indem wir Apache2 installieren:

sudo apt-get install apache2 -y

Dies sollte den Apache-Webserver installieren. Sie können dies testen, indem Sie einen Browser auf dem Raspberry Pi verwenden und zu:

localhost/

oder indem Sie vom Browser eines anderen Computers zur IP-Adresse Ihres Raspberry Pi navigieren. So finden Sie Ihren IP-Adresstyp:

Hostname -I

Dies führt zu einer Standardseite des Apache-Webservers. Dies kann durch Ersetzen von index.html im Verzeichnis /var/www/html/ geändert werden. Es kann durch meine eigene index.html-Datei ersetzt werden.

Als nächstes richten wir den Apache-Webserver ein, um PHP-Dateien ausführen zu können. Beginnen Sie mit der Eingabe:

sudo apt-get install php libapache2-mod-php -y

Sie sollten nun in der Lage sein, die Datei sleepset.php in /var/www/html mit der Datei index.html zu platzieren.

Um in Ihrem eigenen Netzwerk zu dieser Seite zu navigieren, müssen Sie Ihren Raspberry Pi mit einer statischen IP-Adresse einrichten (oder Sie können einfach versuchen, die neue IP-Adresse herauszufinden, wenn Ihr Netzwerk sie ab und zu erneuert). Damit dies funktioniert, müssen Sie einige Dateien bearbeiten. Sie müssen die Datei /etc/dhcpcd.conf wie folgt bearbeiten:

Schnittstelle wlan0

statische IP-Adresse=192.168.1.statische Router=192.168.1.1 statische Domänenname_Server=192.168.1.1

Ersetzen Sie durch Ihre Netzwerkinformationen. Das einzige, was Sie jetzt tun müssen, ist ein Neustart.

sudo neu starten

Die Platzierung der Dateien aus dem Google Drive-Link sollte wie folgt aussehen:

  • index.html und sleepset.php sollten im Verzeichnis /var/www/html abgelegt werden
  • sleepset.txt und sleeptrainer1_1.py sollten im Verzeichnis /home/pi/pythoncode abgelegt werden (Hinweis: Sie müssen dieses Verzeichnis erstellen)

Nachdem diese Dateien im richtigen Verzeichnis abgelegt wurden, muss die Datei rc.local geändert werden, um das Programm sleeptrainer1_1.py beim Start auszuführen. Sie benötigen Zugriff auf Root-Ebene, um die Datei rc.local zu ändern. Geben Sie also Folgendes ein:

sudo nano /etc/rc.local

Scrollen Sie im Editor nach unten und fügen Sie kurz vor der Zeile Exit 0 hinzu:

python /home/pi/pythoncode/sleeptrainer1_1.py &

Hier sind zwei Dinge zu beachten:

  1. Verwenden Sie den absoluten Dateipfad, damit LINUX nicht denkt, dass sich die Datei sleeptraner1_1.py im selben Verzeichnis wie rc.local befindet.
  2. Vergessen Sie nicht das kaufmännische Und (&) am Ende. Dadurch kann LINUX diese Datei im Hintergrund ausführen und mit dem Booten fortfahren.

Speichern Sie nun die Datei, indem Sie Strg-x und dann y eingeben, wenn Sie zum Speichern aufgefordert werden, und dann die EINGABETASTE.

Geben Sie dann sudo reboot ein.

Es sollte hier irgendwo erwähnt werden, dass Sie (mindestens) Ihr Raspberry Pi-Passwort mit dem Befehl passwd ändern sollten. Wenn Sie dies noch nicht getan haben, wäre jetzt ein guter Zeitpunkt.

Schritt 4: Der Code

Das Folgende ist der Code aus der Datei sleeptrainer1_1.py. Ich habe ein Datetime-Objekt verwendet, um die Zeiten mit denen in der Datei sleepset.txt zu vergleichen. Die Textdatei besteht einfach aus zwei Zeilen, die erste für die Stunde, die zweite für die Minute. sleeptrainer1_1.py schläft eine Minute zwischen den Schleifeniterationen, um den Prozessor nicht zu binden. Das grüne Licht kam ursprünglich viel zu hell heraus, daher habe ich Pulsweitenmodulation verwendet, um es zu dimmen, wenn es mit Rot verwendet wurde, um Gelb zu erzeugen.

Python-Code:

RPi. GPIO als GPIO importieren

from datetime import datetime as dt import time GPIO.setmode(GPIO. BOARD) GPIO.setwarnings(False) red1 = 11 red2 = 16 green1 = 13 green2 = 18 blue1 = 15 blue2 = 36 GPIO.setup(red1, GPIO. OUT) GPIO.setup(rot2, GPIO. OUT) GPIO.setup(grün1, GPIO. OUT) GPIO.setup(grün2, GPIO. OUT) GPIO.setup(blau1, GPIO. OUT) GPIO.setup(blau2, GPIO. OUT) p1 = GPIO. PWM(green1, 100) p2 = GPIO. PWM(green2, 100) def readset(): setfile = open("/home/pi/pythoncode/sleepset.txt", 'r') a = setfile. readline() b = setfile.readline() a = int(a) b = int(b) return a, b def ledlight(color): if (color == "red"): GPIO.output(red1, GPIO. HIGH) GPIO.output(red2, GPIO. HIGH) p1.stop() p2.stop() GPIO.output(blue1, GPIO. LOW) GPIO.output(blue2, GPIO. LOW) elif (color == "blue"): GPIO.output(red1, GPIO. LOW) GPIO.output(red2, GPIO. LOW) p1.stop() p2.stop() GPIO.output(blue1, GPIO. HIGH) GPIO.output(blue2, GPIO. HIGH) elif (Farbe == "grün"): GPIO.output(red1, GPIO. LOW) GPIO.output(red2, GPIO. LOW) p1.start(100) p2.start(100) GPIO.output(blue1, GPIO. LOW) GPIO.output(blue2, GPIO. LOW) elif (color == "yellow"): p1.start(60) p2.start(60) GPIO.output(red1, GPIO. HIGH) GPIO.output (red2, GPIO. HIGH) GPIO.output(blue1, GPIO. LOW) GPIO.output(blue2, GPIO. LOW) elif (color == "off"): GPIO.output(red1, GPIO. LOW) GPIO.output (red2, GPIO. LOW) GPIO.output(blue1, GPIO. LOW) GPIO.output(blue2, GPIO. LOW) p1.stop() p2.stop() während True: settime = readset() Stunde, Minute = settime if Minute == 0: if dt(dt.now().year, dt.now().month, dt.now().day, hour-2) < dt.now() < dt(dt.now().year, dt.now().month, dt.now().day, hour-1, minute+30): ledlight("red") elif dt(dt.now().year, dt.now(). Monat, dt.now(). Tag, Stunde-1, Minute+30) < dt.now() < dt(dt.now(). Jahr, dt.now(). Monat, dt.now().day, hour, minute): ledlight("gelb") elif dt(dt.now().year, dt.now().month, dt.now().day, hour, minute) < dt.now() < dt(dt.now().year, dt.now().month, dt.now().day, hour+1, minute): ledlight("green") else: ledlight("off") elif dt(dt.now().year, dt.now().month, dt.now().day, ho ur-2) < dt.now() < dt(dt.now().year, dt.now().month, dt.now().day, hour, minute-30): ledlight("rot") elif dt(dt.now().year, dt.now().month, dt.now().day, hour, minute-30) < dt.now() < dt(dt.now().year, dt.now().month, dt.now().day, hour, minute): ledlight("yellow") elif dt(dt.now().year, dt.now().month, dt.now().day, hour, minute) < dt.now() < dt(dt.now().year, dt.now().month, dt.now().day, hour+1, minute): ledlight("grün") sonst: ledlight ("aus") time.sleep(60)

Die Datei index.html ist ein in HTML gestaltetes Grundformular. Es nimmt den Inhalt von zwei Textfeldern und übergibt sie zur Formularbehandlung an die Datei sleepset.php. Die PHP-Datei überschreibt einfach die Datei sleepset.txt mit aktualisierten Daten.

Schritt 5: Alles zusammenfügen

Alles zusammenfügen
Alles zusammenfügen
Alles zusammenfügen
Alles zusammenfügen
Alles zusammenfügen
Alles zusammenfügen

Wenn die Codierung fertig ist und alle Teile gedruckt sind, ist es Zeit für den Zusammenbau. Ich habe diese Schritte befolgt, um alles zusammenzustellen:

  1. Bohren Sie zwei kleine Löcher in der Größe der RGB-LEDs in die Unterseite des Horns und platzieren Sie die LEDs in diesen Löchern.
  2. Legen Sie das Horn in das Loch im Einhornkopf und ziehen Sie es durch, bis es fest sitzt. Verwenden Sie Kleber von innen, um das Horn zu befestigen.
  3. Befestigen Sie den Raspberry Pi Zero W an der Innenseite des Einhornkopfes. (Vielleicht mit Heißklebepistole)
  4. Befestigen Sie den Einhornkopf an der Einhornbasis.
  5. Bringen Sie das Netzkabel an und befestigen Sie die gesamte Baugruppe an der Wand.
  6. Schließen Sie die Uhr an.

An dieser Stelle habe ich eine funktionierende Kinderschlaftraineruhr.

Schritt 6: Ein Jahr später …

Ein Jahr später …
Ein Jahr später …

Ein Jahr später:

Meine Mädels schlafen etwas länger. Wir haben uns daran gewöhnt, in unserem Zimmer mit kleinen Kindern aufzuwachen, die sagen: "Papa, das Licht ist grün." und das ist großartig. Lange Rede kurzer Sinn, wir wachen erst um 5:30 Uhr an einem Samstag auf, wenn wir es nicht mehr planen.

Dinge, die ich in Zukunft verbessern möchte:

  • Vielleicht fügen Sie einige Sensoren oder andere Gegenstände wie ein Mikrofon und Lautsprecher hinzu.
  • Vielleicht bearbeiten Sie den Code, um mit einem Lautsprecher zu arbeiten, der als Wecker verwendet wird, da meine Kinder bald in die Schule kommen.

Empfohlen: