Indholdsfortegnelse:

Børns søvnuddannelsesur: 6 trin (med billeder)
Børns søvnuddannelsesur: 6 trin (med billeder)

Video: Børns søvnuddannelsesur: 6 trin (med billeder)

Video: Børns søvnuddannelsesur: 6 trin (med billeder)
Video: Helt Rundtosset 2024, November
Anonim
Børns søvn træning ur
Børns søvn træning ur
Børns søvn træning ur
Børns søvn træning ur
Børns søvn træning ur
Børns søvn træning ur
Børns søvn træning ur
Børns søvn træning ur

Jeg havde brug for et ur til at hjælpe mine 4 -årige tvillinger med at lære at sove lidt længere (jeg har fået nok af at skulle vågne kl. 5:30 om morgenen om lørdagen), men de kan ikke læse tid endnu. Efter at have gennemgået et par varer på et meget populært shoppingsted, tænkte jeg: "Hvor svært ville det være at bare lave en ?!"

Så her er hvad jeg regnede med, at jeg ville have i dette projekt. Det ville bruge nogle RGB LED'er (mest fordi jeg har omkring halvtreds af dem fra et andet projekt) til at vise tre forskellige farver. Rødt vil betyde, at du skal sove igen, det er for tidligt at vågne. Gul ville betyde, at de kan rejse sig og lege stille i deres værelse. Grøn betyder naturligvis, at du kan rejse dig. Jeg ville også være i stand til at justere tiden, fordi jeg gerne vil sove længere på nogle dage (weekender/helligdage vs hverdage og sådan).

Forbrugsvarer

Raspberry Pi Zero W

To RGB LED'er

Seks 220 Ohm modstande

Filer (.stl, python, html) findes her

Forskellige små skruer, ledninger og små dele efter behov.

Trin 1: 3D -udskrivning

3D -udskrivning
3D -udskrivning
3D -udskrivning
3D -udskrivning
3D -udskrivning
3D -udskrivning

Min datter kan virkelig godt lide enhjørninger, så til dette projekt remixede jeg Riven02's Unicorn Nightlight, som er et remix af Apachcreations Unicorn Trophy, som kan findes på Thingiverse.com og bruges under en Creative Commons Non-Commercial-licens. Jeg ændrede enhjørningsbasen til at passe til en netledning til hindbær pi zero. Jeg havde tilfældigvis nogle AMZ3D Red PLA liggende, så enhjørningens bund og hoved vil være røde. Jeg brugte klar/gennemskinnelig PLA til hornet.. Stl -filer og indstillinger, jeg brugte, er:

Unicorn.stl

  • Laghøjde: 0,02
  • Vægtykkelse:.8
  • Væglinjeantal: 2
  • Udfyldning: 15%
  • Udfyldningsmønster: Gitter

UnicornBase.stl

  • Laghøjde: 0,02
  • Vægtykkelse:.8
  • Væglinjeantal: 2
  • Udfyldning: 15%
  • Udfyldningsmønster: Gitter

Horn.stl

  • Laghøjde: 0,02
  • Vægtykkelse: 0,8
  • Væglinjeantal: 3
  • Udfyldning: 0

Trin 2: Kredsløbet

Kredsløbet
Kredsløbet
Kredsløbet
Kredsløbet
Kredsløbet
Kredsløbet

Kredsløbet er ret let. Jeg valgte seks forskellige GPIO -ben til at styre tænd/sluk for de forskellige farver på RGB. Disse ben og de tilhørende LED -farver er:

  • Pin 11 til RGB 1 RØD
  • Pin 13 til RGB 1 GRØN
  • Pin 15 til RGB 1 BLÅ
  • Pin 16 til RGB 2 RØD
  • Pin 18 til RGB 2 GRØN
  • Pin 36 til RGB 2 BLÅ
  • Pin 39 til jorden

Hver pin er tilsluttet modstanden gennem en 220 ohm strømbegrænsende modstand (med undtagelse af jord selvfølgelig.) Jeg lodde modstanden i linje og dækkede den til med varmekrympeslange.

Trin 3: Forberedelse af hindbær Pi

Jeg ville være i stand til at indstille tider for søvntrænerens ur ved hjælp af en webgrænseflade. Så jeg havde brug for at oprette en Apache og PHP Server på Raspberry Pi. Den første ting, du altid skal gøre, når du installerer ny software på en Raspberry Pi, er at sikre, at den er opdateret ved at skrive:

sudo apt-get opdatering

Herefter kan vi virkelig komme i gang. Vi gør det ved at installere Apache2:

sudo apt -get install apache2 -y

dette skulle installere Apache -webserveren. Du kan teste dette ved at bruge en browser på Raspberry pi og navigere til:

localhost/

eller ved at navigere fra en anden computers browser til din Raspberry Pi's ip -adresse. Sådan finder du din ip -adressetype:

værtsnavn -I

Hvis du gør disse, vil det føre til en standard Apache Web Server -side. Dette kan ændres ved at erstatte index.html i mappen/var/www/html/. Det kan erstattes med min egen index.html -fil.

Dernæst konfigurerer vi Apache -webserveren til at kunne køre PHP -filer. Start med at skrive:

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

du skulle nu kunne placere sleepset.php -filen i/var/www/html med index.html -filen.

For at navigere til denne side i dit eget netværk skal du konfigurere din Raspberry Pi med en statisk ip -adresse (eller du kan bare prøve at finde ud af den nye ip -adresse, når dit netværk fornyer det nu og da). Du skal redigere et par filer for at dette kan fungere. Du skal redigere filen /etc/dhcpcd.conf med følgende:

grænseflade wlan0

statisk ip_address = 192.168.1.statiske routere = 192.168.1.1 statisk domænenavn_servere = 192.168.1.1

Erstat med dine netværksoplysninger. Det eneste, du skal gøre nu, er genstart.

sudo genstart

Placeringen af filerne fra linket til Google Drive skal være som følger:

  • index.html og sleepset.php skal placeres i mappen/var/www/html
  • sleepset.txt og sleeptrainer1_1.py skal placeres i mappen/home/pi/pythoncode (tip: du skal oprette dette bibliotek)

Efter at disse filer er placeret i det korrekte bibliotek, skal filen rc.local ændres for at køre programmet sleeptrainer1_1.py ved opstart. Du skal bruge adgang på rodniveau for at ændre rc.local-filen, så skriv:

sudo nano /etc/rc.local

I editoren skal du rulle ned, og lige før exit 0 -linjen tilføjer du:

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

Der er to ting at huske her:

  1. Brug den absolutte filepath, så LINUX ikke tror, at filen sleeptraner1_1.py er placeret i det samme bibliotek som rc.local.
  2. Glem ikke ampersand (&) til sidst. dette vil tillade LINUX at køre denne fil i baggrunden og fortsætte med at starte op.

Gem nu filen ved at skrive ctrl-x og derefter y, når du bliver bedt om at gemme og derefter ENTER.

Skriv derefter sudo reboot.

Det skal nævnes et eller andet sted her, at du (som minimum) skal ændre din Raspberry Pi -adgangskode ved hjælp af kommandoen passwd. Hvis du ikke har gjort dette endnu, ville det være et godt tidspunkt nu.

Trin 4: Koden

Følgende er koden fra sleeptrainer1_1.py -filen. Jeg brugte et datetime -objekt til at sammenligne tider med dem, der blev læst i sleepset.txt -filen. Tekstfilen er simpelthen to linjer, den første i time, den anden i minutter. sleeptrainer1_1.py sover i et minut mellem loop -iterationer for ikke at binde processoren. Det grønne lys kom oprindeligt alt for lyst, så jeg brugte pulsbreddemodulation til at dæmpe det, når det blev brugt med rødt til at gøre gult.

Python -kode:

importer RPi. GPIO som GPIO

fra datetime import datetime som dt import tid 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 (farve): if (color == "rød"): 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 () mens True: settime = readset () time, minute = setime hvis minut == 0: hvis dt (dt.now (). år, dt.now (). måned, dt.now (). dag, time-2) <dt.now () <dt (dt.now ().år, dt.now (). måned, dt.now (). dag, time-1, minut+30): ledlight ("rød") elif dt (dt.now (). år, dt.now ().måned, dt.nu (). dag, time-1, minut+30) <dt.now () <dt (dt.now (). år, dt.now (). måned, dt.now ().dag, time, minut): ledlight ("gul") elif dt (dt.now (). år, dt.now (). måned, dt.now (). dag, time, minut) <dt.now () <dt (dt.now (). år, dt.now (). måned, dt.now (). dag, time+1, minut): ledlight ("grøn") ellers: ledlight ("off") elif dt (dt.now (). år, dt.now (). måned, dt.now (). dag, ho ur-2) <dt.now () <dt (dt.now (). år, dt.now (). måned, dt.now (). dag, time, minut-30): ledlight ("rød") elif dt (dt.now (). år, dt.now (). måned, dt.now (). dag, time, minut-30) <dt.now () <dt (dt.now (). år, dt.now (). måned, dt.now (). dag, time, minut): ledlight ("gul") elif dt (dt.now (). år, dt.now (). måned, dt.now ().dag, time, minut) <dt.now () <dt (dt.now (). år, dt.now (). måned, dt.now (). dag, time+1, minut): ledlight ("grøn") ellers: ledlight ("slukket") time.sleep (60)

Filen index.html er en grundlæggende form, der er designet i HTML. Det tager indholdet af to tekstbokse og sender dem til sleepset.php -filen til formularhåndtering. PHP -filen overskriver simpelthen sleepset.txt -filen med opdaterede data.

Trin 5: Sæt det hele sammen

Samler det hele
Samler det hele
Samler det hele
Samler det hele
Samler det hele
Samler det hele

Med kodningen færdig og alle delene udskrevet, er det tid til samling. Jeg fulgte disse trin for at sammensætte det hele:

  1. Bor to små huller, der er dimensioneret til RGB -lysdioderne i bunden af hornet, og placer lysdioderne i disse huller.
  2. Placer horn i hullet i enhjørningshovedet og træk det igennem, indtil det er stramt. Brug lim indefra for at sikre hornet.
  3. Fastgør Raspberry Pi Zero W til indersiden af enhjørningshovedet. (Måske ved hjælp af varmlimpistol)
  4. Fastgør enhjørningshovedet til enhjørningsbasen.
  5. Sæt netledningen i, og fastgør hele samlingen til væggen.
  6. Sæt uret i.

På dette tidspunkt har jeg et fungerende børns søvn træner ur.

Trin 6: Et år senere …

Et år senere …
Et år senere …

Et år senere:

Mine piger sover lidt længere. Vi har vænnet os til at vågne op til små børn i vores værelse og sige: "Far, lyset er grønt." og det er fantastisk. Lang historie kort, vi vågner først kl. 5:30 på en lørdag, når vi planlægger det længere.

Ting, jeg planlægger at forbedre i fremtiden:

  • Måske tilføjer nogle sensorer eller andre ting som en mikrofon og højttalere.
  • Måske redigere koden for at arbejde med en højttaler, der skal bruges som vækkeur, da mine børn snart starter i skole.

Anbefalede: