Inhoudsopgave:

Slaaptrainingsklok voor kinderen - Ajarnpa
Slaaptrainingsklok voor kinderen - Ajarnpa

Video: Slaaptrainingsklok voor kinderen - Ajarnpa

Video: Slaaptrainingsklok voor kinderen - Ajarnpa
Video: How To: Leuke Trucjes met Elastiek! 2024, Juli-
Anonim
Slaaptrainingsklok voor kinderen
Slaaptrainingsklok voor kinderen
Slaaptrainingsklok voor kinderen
Slaaptrainingsklok voor kinderen
Slaaptrainingsklok voor kinderen
Slaaptrainingsklok voor kinderen
Slaaptrainingsklok voor kinderen
Slaaptrainingsklok voor kinderen

Ik had een klok nodig om mijn 4-jarige tweeling te helpen wat langer te leren uitslapen (ik heb er genoeg van om op zaterdag om 5.30 uur wakker te moeten worden), maar ze kunnen nog geen tijd lezen. Nadat ik door een paar items op een zeer populaire winkelsite had gebladerd, dacht ik: "Hoe moeilijk zou het zijn om er gewoon een te maken?!"

Dus hier is wat ik dacht dat ik wilde in dit project. Het zou een paar RGB-LED's gebruiken (voornamelijk omdat ik er ongeveer vijftig van een ander project heb) om drie verschillende kleuren weer te geven. Rood zou betekenen: ga weer slapen, het is te vroeg om wakker te worden. Geel zou betekenen dat ze rustig kunnen opstaan en spelen in hun kamer. Groen betekent natuurlijk dat je kunt opstaan. Ik wilde ook de tijd kunnen aanpassen, omdat ik op sommige dagen (Weekends/Vakantie vs Weekdagen en dergelijke) langer zou willen uitslapen.

Benodigdheden

Raspberry Pi Zero W

Twee RGB LED's

Zes 220 Ohm weerstanden

Bestanden (.stl, python, html) hier gevonden

Diverse kleine schroeven, draden en kleine onderdelen indien nodig.

Stap 1: 3D printen

3d printen
3d printen
3d printen
3d printen
3d printen
3d printen

Mijn dochter houdt echt van eenhoorns, dus voor dit project heb ik Riven02's Unicorn Nightlight geremixt, een remix van Apachcreation's Unicorn Trophy, die te vinden is op Thingiverse.com en wordt gebruikt onder een Creative Commons Non-Commercial-licentie. Ik heb de eenhoornbasis aangepast om op een netsnoer voor de Raspberry Pi Zero te passen. Ik had toevallig wat AMZ3D Red PLA liggen, dus de basis en het hoofd van de eenhoorn zullen rood zijn. Ik gebruikte helder/doorschijnend PLA voor de hoorn. De.stl-bestanden en instellingen die ik heb gebruikt zijn:

Eenhoorn.stl

  • Laaghoogte: 0.02
  • Wanddikte:.8
  • Aantal muurlijnen: 2
  • Invulling: 15%
  • Invulpatroon: raster

UnicornBase.stl

  • Laaghoogte: 0.02
  • Wanddikte:.8
  • Aantal muurlijnen: 2
  • Invulling: 15%
  • Invulpatroon: raster

Hoorn.stl

  • Laaghoogte: 0.02
  • Wanddikte: 0.8
  • Muurlijntelling: 3
  • Invulling: 0

Stap 2: Het circuit

Het circuit
Het circuit
Het circuit
Het circuit
Het circuit
Het circuit

De schakeling is vrij eenvoudig. Ik koos zes verschillende GPIO-pinnen om de aan / uit voor de verschillende kleuren van de RGB te regelen. Die pinnen en de bijbehorende LED-kleuren zijn:

  • Pin 11 naar RGB 1 ROOD
  • Pin 13 naar RGB 1 GROEN
  • Pin 15 naar RGB 1 BLAUW
  • Pin 16 naar RGB 2 ROOD
  • Pin 18 naar RGB 2 GROEN
  • Pin 36 naar RGB 2 BLAUW
  • Pin 39 naar aarde

Elke pin is aangesloten op de weerstand via een stroombegrenzingsweerstand van 220 ohm (met uitzondering van aarde natuurlijk). Ik heb de weerstand in lijn gesoldeerd en afgedekt met krimpkous.

Stap 3: Raspberry Pi-voorbereiding

Ik wilde de tijden van de slaaptrainerklok kunnen instellen via een webinterface. Dus ik moest een Apache- en PHP-server opzetten op de Raspberry Pi. Het eerste dat u altijd moet doen bij het installeren van nieuwe software op een Raspberry Pi, is ervoor zorgen dat deze up-to-date is door te typen:

sudo apt-get update

Daarna kunnen we echt aan de slag. We doen dat door Apache2 te installeren:

sudo apt-get install apache2 -y

dit zou de Apache-webserver moeten installeren. Je kunt dit testen door een browser op de Raspberry pi te gebruiken en te navigeren naar:

localhost/

of door vanuit de browser van een andere computer naar het IP-adres van uw Raspberry Pi te navigeren. Om uw ip-adrestype te vinden:

hostnaam -I

Als u dit doet, leidt dit naar een standaard Apache Web Server-pagina. Dit kan worden gewijzigd door index.html in de /var/www/html/-directory te vervangen. Het kan worden vervangen door mijn eigen index.html-bestand.

Vervolgens zullen we de Apache-webserver instellen om PHP-bestanden te kunnen uitvoeren. Begin met typen:

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

je zou nu het bestand sleepset.php in de /var/www/html met het bestand index.html moeten kunnen plaatsen.

Om naar deze pagina in je eigen netwerk te navigeren, moet je je Raspberry Pi instellen met een statisch ip-adres (of je kunt gewoon proberen het nieuwe ip-adres te achterhalen wanneer je netwerk het zo nu en dan vernieuwt). U moet een aantal bestanden bewerken om dit te laten werken. U moet het bestand /etc/dhcpcd.conf als volgt bewerken:

interface wlan0

statisch ip_address=192.168.1.static routers=192.168.1.1 statisch domain_name_servers=192.168.1.1

Vervang door uw netwerkinformatie. Het enige dat u nu hoeft te doen, is opnieuw opstarten.

sudo reboot

De plaatsing van de bestanden van de Google Drive-link moet als volgt zijn:

  • index.html en sleepset.php moeten in de map /var/www/html worden geplaatst
  • sleepset.txt en sleeptrainer1_1.py moeten in de map /home/pi/pythoncode worden geplaatst (hint: je moet deze map maken)

Nadat deze bestanden in de juiste directory zijn geplaatst, moet het bestand rc.local worden gewijzigd om het programma sleeptrainer1_1.py bij het opstarten uit te voeren. U hebt toegang op rootniveau nodig om het rc.local-bestand te wijzigen, dus typ:

sudo nano /etc/rc.local

Scroll in de editor naar beneden en voeg net voor de exit 0-regel toe:

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

Er zijn hier twee dingen om te onthouden:

  1. Gebruik het absolute bestandspad zodat LINUX niet denkt dat het bestand sleeptraner1_1.py zich in dezelfde map bevindt als rc.local.
  2. Vergeet het ampersand (&) aan het einde niet. hierdoor kan LINUX dit bestand op de achtergrond uitvoeren en doorgaan met opstarten.

Sla het bestand nu op door ctrl-x en vervolgens y te typen wanneer u wordt gevraagd om op te slaan en vervolgens ENTER.

Typ vervolgens sudo reboot.

Er moet hier ergens worden vermeld dat je (minimaal) je Raspberry Pi-wachtwoord moet wijzigen met de opdracht passwd. Als je dit nog niet hebt gedaan, zou dit een goed moment zijn.

Stap 4: De code

Het volgende is de code uit het bestand sleeptrainer1_1.py. Ik heb een datetime-object gebruikt om tijden te vergelijken met die in het sleepset.txt-bestand. Het tekstbestand is gewoon twee regels, de eerste voor uur, de tweede voor minuut. sleeptrainer1_1.py slaapt één minuut tussen loop-iteraties om de processor niet vast te maken. Het groene licht kwam oorspronkelijk veel te fel uit, dus ik gebruikte pulsbreedtemodulatie om het te dimmen wanneer ik het gebruikte met rood om geel te maken.

Python-code:

importeer RPi. GPIO als GPIO

van 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(rood2, GPIO. OUT) GPIO.setup(groen1, GPIO. OUT) GPIO.setup(groen2, GPIO. OUT) GPIO.setup(blauw1, GPIO. OUT) GPIO.setup(blauw2, 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. HOOG) GPIO.output (rood2, GPIO. HIGH) p1.stop() p2.stop() GPIO.output (blauw1, GPIO. LOW) GPIO.output (blauw2, GPIO. LOW) elif (kleur == "blauw"): GPIO.output (rood1, GPIO. LOW) GPIO.output (rood2, GPIO. LOW) p1.stop() p2.stop() GPIO.output (blauw1, GPIO. HIGH) GPIO.output (blauw2, GPIO. HOOG) elif (kleur == "groen"): GPIO.output(red1, GPIO. LOW) GPIO.output(red2, GPIO. LOW) p1.start(100) p2.start(100) GPIO.output(blauw1, GPIO. LOW) GPIO.output(blue2, GPIO. LOW) elif (kleur == "geel"): 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 (kleur == "uit"): GPIO.output (rood1, GPIO. LOW) GPIO.output (red2, GPIO. LOW) GPIO.output(blue1, GPIO. LOW) GPIO.output(blue2, GPIO. LOW) p1.stop() p2.stop() while True: settime = readset() uur, minuut = settime if minuut == 0: if dt(dt.now().year, dt.now().maand, dt.now().dag, uur-2) < dt.now() < dt(dt.now().jaar, dt.nu().maand, dt.nu().dag, uur-1, minuut+30): ledlight("rood") elif dt(dt.nu().jaar, dt.nu().maand, dt.now().dag, uur-1, minuut+30) < dt.now() < dt(dt.now().jaar, dt.now().maand, dt.now().dag, uur, minuut): ledlight("geel") elif dt(dt.now().year, dt.now().maand, dt.now().dag, uur, minuut) < dt.now() < dt(dt.now().year, dt.now().maand, dt.now().day, hour+1, minute): ledlight("green") else: ledlight("off") elif dt(dt.nu().jaar, dt.nu().maand, dt.nu().dag, ho ur-2) < dt.now() < dt(dt.now().year, dt.now().maand, dt.now().dag, uur, minuut-30): ledlight("rood") elif dt(dt.now().year, dt.now().maand, dt.now().dag, uur, minuut-30) < dt.now() < dt(dt.now().jaar, dt.now().maand, dt.now().dag, uur, minuut): ledlight("geel") elif dt(dt.now().jaar, dt.now().maand, dt.now().dag, uur, minuut) < dt.now() < dt(dt.now().year, dt.now().maand, dt.now().dag, uur+1, minuut): ledlight("groen") anders: ledlight ("uit") time.sleep(60)

Het bestand index.html is een basisformulier ontworpen in HTML. Het neemt de inhoud van twee tekstvakken en geeft deze door aan het bestand sleepset.php voor formulierverwerking. Het PHP-bestand overschrijft eenvoudig het bestand sleepset.txt met bijgewerkte gegevens.

Stap 5: Alles samenbrengen

Alles bij elkaar zetten
Alles bij elkaar zetten
Alles bij elkaar zetten
Alles bij elkaar zetten
Alles bij elkaar zetten
Alles bij elkaar zetten

Nu de codering is voltooid en alle onderdelen zijn afgedrukt, is het tijd voor montage. Ik heb deze stappen gevolgd om alles in elkaar te zetten:

  1. Boor twee kleine gaatjes ter grootte van de RGB-LED's in de onderkant van de hoorn en plaats de LED's in deze gaten.
  2. Plaats de hoorn in het gat in de eenhoornkop en trek hem door totdat hij strak zit. Gebruik lijm van binnenuit om de hoorn vast te zetten.
  3. Bevestig de Raspberry Pi Zero W aan de binnenkant van de eenhoornkop. (Misschien met een heet lijmpistool)
  4. Bevestig de eenhoornkop aan de eenhoornbasis.
  5. Sluit het netsnoer aan en bevestig het geheel aan de muur.
  6. Sluit de klok aan.

Op dit punt heb ik een functionerende kinderslaaptrainerklok.

Stap 6: Een jaar later …

Een jaar later …
Een jaar later …

Een jaar later:

Mijn meisjes slapen nog wat langer uit. We zijn eraan gewend geraakt om wakker te worden met kleine kinderen in onze kamer die zeggen: "Papa, het licht is groen." en dat is geweldig. Om een lang verhaal kort te maken, we worden pas om 05.30 uur wakker op een zaterdag als we het niet meer plannen.

Dingen die ik in de toekomst wil verbeteren:

  • Misschien wat sensoren of andere items toevoegen, zoals een microfoon en luidsprekers.
  • Misschien de code bewerken zodat deze met een luidspreker werkt om als wekker te gebruiken, aangezien mijn kinderen binnenkort naar school gaan.

Aanbevolen: