Innholdsfortegnelse:

Barnas søvnopplæringsklokke: 6 trinn (med bilder)
Barnas søvnopplæringsklokke: 6 trinn (med bilder)

Video: Barnas søvnopplæringsklokke: 6 trinn (med bilder)

Video: Barnas søvnopplæringsklokke: 6 trinn (med bilder)
Video: Barni Barnas - Çöpyüzü (Official Video) 2024, Juli
Anonim
Barnas søvnopplæringsklokke
Barnas søvnopplæringsklokke
Barnas søvnopplæringsklokke
Barnas søvnopplæringsklokke
Barnas søvnopplæringsklokke
Barnas søvnopplæringsklokke
Barnas søvnopplæringsklokke
Barnas søvnopplæringsklokke

Jeg trengte en klokke for å hjelpe tvillingene mine på 4 år med å lære å sove litt lenger (jeg har fått nok av å måtte våkne klokken 5:30 om morgenen på lørdager), men de kan ikke lese tid ennå. Etter å ha bla gjennom noen få varer på et veldig populært shoppingsted, tenkte jeg: "Hvor vanskelig ville det være å bare lage en ?!"

Så her var det jeg tenkte jeg ville ha i dette prosjektet. Det ville bruke noen RGB -lysdioder (hovedsakelig fordi jeg har omtrent femti av dem fra et annet prosjekt) for å vise tre forskjellige farger. Rødt vil bety å sovne igjen, det er for tidlig å våkne. Gult ville bety at de kan reise seg og leke stille på rommet sitt. Grønt betyr selvfølgelig at du kan stå opp. Jeg ønsket også å kunne justere tiden, fordi jeg gjerne vil sove lenger på noen dager (helger/helligdager vs ukedager og slikt).

Rekvisita

Raspberry Pi Zero W

To RGB lysdioder

Seks 220 Ohm motstander

Filer (.stl, python, html) finnes her

Ulike små skruer, ledninger og små deler etter behov.

Trinn 1: 3D -utskrift

3D -utskrift
3D -utskrift
3D -utskrift
3D -utskrift
3D -utskrift
3D -utskrift

Datteren min liker virkelig enhjørninger, så for dette prosjektet remikset jeg Riven02's Unicorn Nightlight, som er en remiks av Apachcreations Unicorn Trophy, som du finner på Thingiverse.com og brukes under en Creative Commons Non-Commercial lisens. Jeg modifiserte enhjørningsbasen for å passe til en strømledning til bringebær pi zero. Jeg hadde tilfeldigvis noen AMZ3D Red PLA liggende, så enhjørningens base og hode blir røde. Jeg brukte klar/gjennomskinnelig PLA for hornet.. Stl -filene og -innstillingene jeg brukte er:

Unicorn.stl

  • Laghøyde: 0,02
  • Veggtykkelse:.8
  • Antall veggliner: 2
  • Fyll: 15%
  • Utfyllingsmønster: Rutenett

UnicornBase.stl

  • Laghøyde: 0,02
  • Veggtykkelse:.8
  • Antall veggliner: 2
  • Fyll: 15%
  • Utfyllingsmønster: Rutenett

Horn.stl

  • Laghøyde: 0,02
  • Veggtykkelse: 0,8
  • Antall veggliner: 3
  • Utfylling: 0

Trinn 2: Kretsen

Kretsen
Kretsen
Kretsen
Kretsen
Kretsen
Kretsen

Kretsen er ganske enkel. Jeg valgte seks forskjellige GPIO -pinner for å kontrollere av/på for de forskjellige fargene på RGB. Disse pinnene og de tilhørende LED -fargene er:

  • Fest 11 til RGB 1 RØD
  • Fest 13 til RGB 1 GRØNN
  • Pin 15 til RGB 1 BLÅ
  • Fest 16 til RGB 2 RØD
  • Fest 18 til RGB 2 GRØNN
  • Fest 36 til RGB 2 BLÅ
  • Pin 39 til Ground

Hver pinne er koblet til motstanden gjennom en 220 ohm strømbegrensende motstand (med unntak av bakken selvfølgelig.) Jeg loddet motstanden på linje og dekket den med varmekrympeslange.

Trinn 3: Forberedelse av bringebær Pi

Jeg ønsket å kunne angi tider for søvntrenerens klokke ved hjelp av et webgrensesnitt. Så jeg trengte å sette opp en Apache og PHP -server på Raspberry Pi. Det første du alltid bør gjøre når du installerer ny programvare på en Raspberry Pi, er å sørge for at den er oppdatert ved å skrive:

sudo apt-get oppdatering

Etter det kan vi virkelig komme i gang. Vi gjør det ved å installere Apache2:

sudo apt -get install apache2 -y

dette bør installere Apache -webserveren. Du kan teste dette ved å bruke en nettleser på Raspberry pi og navigere til:

localhost/

eller ved å navigere fra en annen datamaskins nettleser til din Raspberry Pi's ip -adresse. For å finne din ip -adressetype:

vertsnavn -I

Hvis du gjør dette, vil det føre til en standard Apache Web Server -side. Dette kan endres ved å erstatte index.html som ligger i/var/www/html/katalogen. Den kan byttes ut med min egen index.html -fil.

Deretter setter vi opp Apache -webserveren for å kunne kjøre PHP -filer. Start med å skrive:

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

du skal nå kunne plassere sleepset.php -filen i/var/www/html med index.html -filen.

For å navigere til denne siden i ditt eget nettverk, må du konfigurere Raspberry Pi med en statisk ip -adresse (eller du kan bare prøve å finne ut den nye ip -adressen når nettverket ditt fornyer den nå og da). Du må redigere et par filer for at dette skal fungere. Du må redigere filen /etc/dhcpcd.conf med følgende:

grensesnitt wlan0

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

Erstatt med nettverksinformasjonen din. Det eneste du trenger å gjøre nå er å starte på nytt.

sudo omstart

Plasseringen av filene fra Google Drive -koblingen bør være som følger:

  • index.html og sleepset.php bør plasseres i katalogen/var/www/html
  • sleepset.txt og sleeptrainer1_1.py bør plasseres i katalogen/home/pi/pythoncode (hint: du må opprette denne katalogen)

Etter å ha plassert disse filene i riktig katalog, må rc.local -filen endres for å kjøre programmet sleeptrainer1_1.py ved oppstart. Du trenger tilgang på rotnivå for å endre rc.local-filen, så skriv:

sudo nano /etc/rc.local

Rull ned i redaktøren, og like før exit 0 -linjen legger du til:

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

Det er to ting å huske her:

  1. Bruk den absolutte filbanen slik at LINUX ikke tror at sleeptraner1_1.py -filen ligger i samme katalog som rc.local.
  2. Ikke glem ampersand (&) på slutten. Dette vil tillate LINUX å kjøre denne filen i bakgrunnen og fortsette oppstarten.

Lagre filen ved å skrive ctrl-x og deretter y når du blir bedt om å lagre og deretter ENTER.

Skriv deretter sudo reboot.

Det bør nevnes et eller annet sted her at (i det minste) du bør endre passordet ditt for Raspberry Pi -passordet. Hvis du ikke har gjort dette ennå, ville det være et godt tidspunkt nå.

Trinn 4: Koden

Følgende er koden fra sleeptrainer1_1.py -filen. Jeg brukte et datetime -objekt til å sammenligne tider med de som ble lest i sleepset.txt -filen. Tekstfilen er ganske enkelt to linjer, den første i time, den andre i minutt. sleeptrainer1_1.py sover i ett minutt mellom loop -iterasjoner for ikke å binde prosessoren. Det grønne lyset kom opprinnelig ut for sterkt, så jeg brukte pulsbreddemodulasjon for å dempe det når det ble brukt med rødt for å lage gult.

Python -kode:

importer RPi. GPIO som GPIO

fra 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 == "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 () mens True: settime = readset () time, minute = settime hvis minutt == 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, minutt+30): ledlight ("rød") elif dt (dt.now (). år, dt.now ().måned, dt.no (). dag, time-1, minutt+30) <dt.now () <dt (dt.now (). år, dt.now (). måned, dt.now ().dag, time, minutt): ledlight ("gul") elif dt (dt.now (). år, dt.now (). måned, dt.now (). dag, time, minutt) <dt.now () <dt (dt.now (). år, dt.now (). måned, dt.now (). dag, time+1, minutt): ledlight ("grønn") annet: 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, minutt-30): ledlight ("rød") elif dt (dt.now (). år, dt.now (). måned, dt.now (). dag, time, minutt-30) <dt.now () <dt (dt.now (). år, dt.now (). måned, dt.now (). dag, time, minutt): ledlight ("gul") elif dt (dt.now (). år, dt.now (). måned, dt.now ().dag, time, minutt) <dt.now () <dt (dt.now (). år, dt.now (). måned, dt.now (). dag, time+1, minutt): ledlight ("grønn") annet: ledlight ("av") time.sleep (60)

Filen index.html er et grunnleggende skjema designet i HTML. Den tar innholdet i to tekstbokser og sender dem til sleepset.php -filen for håndtering av skjemaer. PHP -filen overskriver ganske enkelt sleepset.txt -filen med oppdaterte data.

Trinn 5: Sett alt sammen

Sette alt sammen
Sette alt sammen
Sette alt sammen
Sette alt sammen
Sette alt sammen
Sette alt sammen

Med kodingen ferdig og alle delene skrevet ut, er det på tide å montere. Jeg fulgte disse trinnene for å sette alt sammen:

  1. Bor to små hull som er RGB -lysdioder i bunnen av hornet, og plasser lysdiodene i disse hullene.
  2. Plasser hornet i hullet i enhjørningshodet og trekk det gjennom til det er tett. Bruk lim fra innsiden for å feste hornet.
  3. Fest Raspberry Pi Zero W på innsiden av enhjørningshodet. (Kanskje du bruker varm limpistol)
  4. Fest enhjørningshodet til enhjørningsbasen.
  5. Fest strømledningen, og fest hele enheten til veggen.
  6. Sett inn klokken.

På dette tidspunktet har jeg en fungerende Barnesøvn -trener -klokke.

Trinn 6: Ett år senere …

Ett år senere …
Ett år senere …

Ett år senere:

Jentene mine sover litt lenger. Vi har blitt vant til å våkne opp til små barn på rommet vårt og si: "Pappa, lyset er grønt." og det er flott. Lang historie kort, vi våkner bare klokken 05:30 på en lørdag når vi planlegger det lenger.

Ting jeg planlegger å forbedre i fremtiden:

  • Kanskje legge til noen sensorer eller andre ting som en mikrofon og høyttalere.
  • Kanskje du kan redigere koden for å jobbe med en høyttaler som skal brukes som vekkerklokke, ettersom barna mine snart begynner på skolen.

Anbefalt: