Innehållsförteckning:

Barns sömnträningsklocka: 6 steg (med bilder)
Barns sömnträningsklocka: 6 steg (med bilder)

Video: Barns sömnträningsklocka: 6 steg (med bilder)

Video: Barns sömnträningsklocka: 6 steg (med bilder)
Video: Barns Courtney - Fire 2024, Juli
Anonim
Barns sömnträningsklocka
Barns sömnträningsklocka
Barns sömnträningsklocka
Barns sömnträningsklocka
Barns sömnträningsklocka
Barns sömnträningsklocka
Barns sömnträningsklocka
Barns sömnträningsklocka

Jag behövde en klocka för att hjälpa mina 4 -åriga tvillingar att lära sig sova lite längre (jag har fått nog av att behöva vakna 5:30 på morgonen på lördagar), men de kan inte läsa tid än. Efter att ha bläddrat igenom några artiklar på en mycket populär shoppingsajt tänkte jag, "Hur svårt skulle det vara att bara göra en ?!"

Så här är vad jag tänkte att jag ville ha i det här projektet. Det skulle använda några RGB -lysdioder (mest för att jag har ungefär femtio av dem från ett annat projekt) för att visa tre olika färger. Rött skulle innebära att somna om, det är för tidigt att vakna. Gult skulle innebära att de kan gå upp och spela tyst i sitt rum. Grönt betyder naturligtvis att du kan gå upp. Jag ville också kunna justera tiden, eftersom jag skulle vilja sova längre några dagar (helger/helgdagar vs vardagar och så).

Tillbehör

Raspberry Pi Zero W

Två RGB -lysdioder

Sex 220 Ohm motstånd

Filer (.stl, python, html) finns här

Olika små skruvar, trådar och små delar efter behov.

Steg 1: 3D -utskrift

3d-utskrivning
3d-utskrivning
3d-utskrivning
3d-utskrivning
3d-utskrivning
3d-utskrivning

Min dotter gillar verkligen enhörningar, så för det här projektet remixade jag Riven02: s Unicorn Nightlight, som är en remix av Apachcreations Unicorn Trophy, som finns på Thingiverse.com och används under en Creative Commons Icke-kommersiell licens. Jag modifierade enhörningsbasen för att passa en nätsladd för hallon pi zero. Jag råkade ha lite AMZ3D Red PLA som låg runt, så enhörningens bas och huvud blir röda. Jag använde klar/genomskinlig PLA för hornet.. Stl -filer och inställningar jag använde är:

Unicorn.stl

  • Lagerhöjd: 0,02
  • Väggtjocklek:.8
  • Vägglinjeantal: 2
  • Påfyllning: 15%
  • Infillmönster: Rutnät

UnicornBase.stl

  • Lagerhöjd: 0,02
  • Väggtjocklek:.8
  • Vägglinjeantal: 2
  • Påfyllning: 15%
  • Infillmönster: Rutnät

Horn.stl

  • Lagerhöjd: 0,02
  • Väggtjocklek: 0,8
  • Vägglinjeantal: 3
  • Fyllning: 0

Steg 2: Kretsen

Kretsen
Kretsen
Kretsen
Kretsen
Kretsen
Kretsen

Kretsen är ganska lätt. Jag valde sex olika GPIO -stift för att styra på/av för RGB: s olika färger. Dessa stift och motsvarande LED -färger är:

  • Stift 11 till RGB 1 RÖD
  • Pin 13 till RGB 1 GRÖN
  • Stift 15 till RGB 1 BLÅ
  • Stift 16 till RGB 2 RÖD
  • Stift 18 till RGB 2 GRÖN
  • Stift 36 till RGB 2 BLÅ
  • Pin 39 till Ground

Varje stift är ansluten till motståndet genom ett 220 ohm strömbegränsande motstånd (med undantag för marken förstås.) Jag lödde motståndet i linje och täckte det med värmekrympslang.

Steg 3: Raspberry Pi -förberedelse

Jag ville kunna ställa in tider för sömntränarklockan med ett webbgränssnitt. Så jag behövde konfigurera en Apache- och PHP -server på Raspberry Pi. Det första du alltid bör göra när du installerar ny programvara på en Raspberry Pi är att se till att den är uppdaterad genom att skriva:

sudo apt-get uppdatering

Efter det kan vi verkligen komma igång. Vi gör det genom att installera Apache2:

sudo apt -get install apache2 -y

detta bör installera Apache -webbservern. Du kan testa detta genom att använda en webbläsare på Raspberry pi och navigera till:

localhost/

eller genom att navigera från en annan dators webbläsare till din Raspberry Pi: s IP -adress. Så här hittar du din ip -adress:

värdnamn -I

Om du gör dessa leder det till en standard Apache Web Server -sida. Detta kan ändras genom att ersätta index.html som finns i katalogen/var/www/html/. Den kan ersättas med min egen index.html -fil.

Därefter konfigurerar vi Apache -webbservern för att kunna köra PHP -filer. Börja med att skriva:

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

du ska nu kunna placera sleepset.php -filen i/var/www/html med index.html -filen.

För att navigera till den här sidan i ditt eget nätverk måste du konfigurera din Raspberry Pi med en statisk ip -adress (eller så kan du bara försöka ta reda på den nya ip -adressen när ditt nätverk förnyar den då och då). Du måste redigera ett par filer för att detta ska fungera. Du måste redigera filen /etc/dhcpcd.conf med följande:

gränssnitt wlan0

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

Ersätt med din nätverksinformation. Det enda du behöver göra nu är att starta om.

sudo starta om

Placeringen av filerna från länken till Google Drive ska vara följande:

  • index.html och sleepset.php bör placeras i katalogen/var/www/html
  • sleepset.txt och sleeptrainer1_1.py bör placeras i katalogen/home/pi/pythoncode (tips: du måste skapa den här katalogen)

Efter att ha placerat dessa filer i rätt katalog måste filen rc.local ändras för att programmet sleeptrainer1_1.py ska kunna köras vid start. Du behöver åtkomst på rotnivå för att ändra rc.local-filen, så skriv:

sudo nano /etc/rc.local

I redigeraren, rulla ner och strax före utgång 0 -raden lägger du till:

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

Det finns två saker att komma ihåg här:

  1. Använd den absoluta filvägen så att LINUX inte tror att filen sleeptraner1_1.py finns i samma katalog som rc.local.
  2. Glöm inte ampersand (&) i slutet. Detta gör att LINUX kan köra den här filen i bakgrunden och fortsätta starta.

Spara nu filen genom att skriva ctrl-x och sedan y när du uppmanas att spara och sedan ENTER.

Skriv sedan sudo reboot.

Det bör nämnas någonstans här att (åtminstone) du bör ändra ditt Raspberry Pi -lösenord med passwd -kommandot. Om du inte har gjort detta än, skulle det vara en bra tid nu.

Steg 4: Koden

Följande är koden från filen sleeptrainer1_1.py. Jag använde ett datetime -objekt för att jämföra tider med de som lästes i filen sleepset.txt. Textfilen är helt enkelt två rader, den första för timme, den andra för minuter. sleeptrainer1_1.py sover i en minut mellan loop -iterationer för att inte binda upp processorn. Det gröna ljuset kom ursprungligen ut för starkt, så jag använde pulsbreddsmodulering för att dämpa det när det användes med rött för att göra gult.

Python -kod:

importera RPi. GPIO som GPIO

från datetime import datetime som dt importtid 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 (red2, GPIO. OUT) GPIO.setup (green1, GPIO. OUT) GPIO.setup (green2, GPIO. OUT) GPIO.setup (blue1, GPIO. OUT) GPIO.setup (blue2, 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 (color == "green"): 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 == "gul"): 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 () medan True: settime = readset () time, minute = setime om minut == 0: om dt (dt.now (). år, dt.now (). månad, dt.now (). dag, timme-2) <dt.now () <dt (dt.now ().år, dt.now (). månad, dt.now (). dag, timme-1, minut+30): ledlight ("röd") elif dt (dt.now (). år, dt.now (). månad, dt.now (). dag, timme-1, minut+30) <dt.now () <dt (dt.now (). år, dt.now (). månad, dt.now ().dag, timme, minut): ledlight ("gul") elif dt (dt.now (). år, dt.now (). månad, dt.now (). dag, timme, minut) <dt.now () <dt (dt.now (). år, dt.now (). månad, dt.now (). dag, timme+1, minut): ledlight ("grön") else: ledlight ("off") elif dt (dt.now (). år, dt.now (). månad, dt.now (). dag, ho ur-2) <dt.now () <dt (dt.now (). år, dt.now (). månad, dt.now (). dag, timme, minut-30): ledlight ("röd") elif dt (dt.now (). år, dt.now (). månad, dt.now (). dag, timme, minut-30) <dt.now () <dt (dt.now (). år, dt.now (). månad, dt.now (). dag, timme, minut): ledlight ("gul") elif dt (dt.now (). år, dt.now (). månad, dt.now ().dag, timme, minut) <dt.now () <dt (dt.now (). år, dt.now (). månad, dt.now (). dag, timme+1, minut): ledlight ("grön") else: ledlight ("off") time.sleep (60)

Filen index.html är en grundläggande form utformad i HTML. Den tar innehållet i två textrutor och skickar dem till sleepset.php -filen för formulärhantering. PHP -filen skriver helt enkelt över sleepset.txt -filen med uppdaterad data.

Steg 5: Sätta ihop allt

Få alltid att falla på plats
Få alltid att falla på plats
Få alltid att falla på plats
Få alltid att falla på plats
Få alltid att falla på plats
Få alltid att falla på plats

Med kodningen klar och alla delar tryckta är det dags för montering. Jag följde dessa steg för att sätta ihop allt:

  1. Borra två små hål med RGB -lysdioder i botten av hornet och placera lysdioderna i dessa hål.
  2. Placera hornet i hålet i enhörningshuvudet och dra igenom det tills det är tätt. Använd lim från insidan för att säkra hornet.
  3. Fäst Raspberry Pi Zero W på insidan av enhörningshuvudet. (Med hjälp av hetlimpistol kanske)
  4. Fäst enhörningshuvudet till enhörningsbasen.
  5. Anslut nätsladden och fäst hela enheten på väggen.
  6. Anslut klockan.

Vid denna tidpunkt har jag en fungerande barns sömntränarklocka.

Steg 6: Ett år senare …

Ett år senare …
Ett år senare …

Ett år senare:

Mina tjejer sover lite längre. Vi har vant oss vid att vakna till små barn i vårt rum och säga "pappa, ljuset är grönt." och det är jättebra. Lång historia kort, vi vaknar bara 05:30 på en lördag när vi planerar det längre.

Saker jag planerar att förbättra i framtiden:

  • Kanske lägga till några sensorer eller andra objekt som en mikrofon och högtalare.
  • Kanske redigera koden för att arbeta med en högtalare som ska användas som väckarklocka eftersom mina barn snart börjar skolan.

Rekommenderad: