Innholdsfortegnelse:
- Rekvisita
- Trinn 1: 3D -utskrift
- Trinn 2: Kretsen
- Trinn 3: Forberedelse av bringebær Pi
- Trinn 4: Koden
- Trinn 5: Sett alt sammen
- Trinn 6: Ett år senere …
Video: Barnas søvnopplæringsklokke: 6 trinn (med bilder)
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:22
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
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 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:
- Bruk den absolutte filbanen slik at LINUX ikke tror at sleeptraner1_1.py -filen ligger i samme katalog som rc.local.
- 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
Med kodingen ferdig og alle delene skrevet ut, er det på tide å montere. Jeg fulgte disse trinnene for å sette alt sammen:
- Bor to små hull som er RGB -lysdioder i bunnen av hornet, og plasser lysdiodene i disse hullene.
- Plasser hornet i hullet i enhjørningshodet og trekk det gjennom til det er tett. Bruk lim fra innsiden for å feste hornet.
- Fest Raspberry Pi Zero W på innsiden av enhjørningshodet. (Kanskje du bruker varm limpistol)
- Fest enhjørningshodet til enhjørningsbasen.
- Fest strømledningen, og fest hele enheten til veggen.
- Sett inn klokken.
På dette tidspunktet har jeg en fungerende Barnesøvn -trener -klokke.
Trinn 6: 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:
Ta flotte bilder med en iPhone: 9 trinn (med bilder)
Ta flotte bilder med en iPhone: De fleste av oss har med oss en smarttelefon overalt i disse dager, så det er viktig å vite hvordan du bruker smarttelefonkameraet ditt til å ta flotte bilder! Jeg har bare hatt en smarttelefon i et par år, og jeg har elsket å ha et greit kamera for å dokumentere ting jeg
Slik gjør du det: Installere Raspberry PI 4 Headless (VNC) med Rpi-imager og bilder: 7 trinn (med bilder)
Howto: Installere Raspberry PI 4 Headless (VNC) Med Rpi-imager og bilder: Jeg planlegger å bruke denne Rapsberry PI i en haug med morsomme prosjekter tilbake i bloggen min. Sjekk det gjerne ut. Jeg ønsket å begynne å bruke Raspberry PI igjen, men jeg hadde ikke tastatur eller mus på min nye plassering. Det var en stund siden jeg konfigurerte en bringebær
Slik demonterer du en datamaskin med enkle trinn og bilder: 13 trinn (med bilder)
Slik demonterer du en datamaskin med enkle trinn og bilder: Dette er en instruksjon om hvordan du demonterer en PC. De fleste grunnkomponentene er modulære og fjernes lett. Det er imidlertid viktig at du er organisert om det. Dette vil bidra til å hindre deg i å miste deler, og også i å gjøre monteringen igjen
PCB -design med enkle og enkle trinn: 30 trinn (med bilder)
PCB -design med enkle og enkle trinn: HELLO VENNER Den veldig nyttige og enkle opplæringen for de som ønsker å lære PCB -design, kan komme i gang
Hvordan lage en delt skjermvideo med fire trinn: 4 trinn (med bilder)
Hvordan lage en delt skjermvideo med fire trinn: Vi ser ofte en samme person vise i en scene to ganger i et TV -spill. Og så vidt vi vet har ikke skuespilleren en tvillingbror. Vi har også sett at to sangvideoer blir satt på en skjerm for å sammenligne sangferdighetene sine. Dette er kraften til spl