Indholdsfortegnelse:
- Forbrugsvarer
- Trin 1: 3D -udskrivning
- Trin 2: Kredsløbet
- Trin 3: Forberedelse af hindbær Pi
- Trin 4: Koden
- Trin 5: Sæt det hele sammen
- Trin 6: Et år senere …
Video: Børns søvnuddannelsesur: 6 trin (med billeder)
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:27
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
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 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:
- Brug den absolutte filepath, så LINUX ikke tror, at filen sleeptraner1_1.py er placeret i det samme bibliotek som rc.local.
- 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
Med kodningen færdig og alle delene udskrevet, er det tid til samling. Jeg fulgte disse trin for at sammensætte det hele:
- Bor to små huller, der er dimensioneret til RGB -lysdioderne i bunden af hornet, og placer lysdioderne i disse huller.
- Placer horn i hullet i enhjørningshovedet og træk det igennem, indtil det er stramt. Brug lim indefra for at sikre hornet.
- Fastgør Raspberry Pi Zero W til indersiden af enhjørningshovedet. (Måske ved hjælp af varmlimpistol)
- Fastgør enhjørningshovedet til enhjørningsbasen.
- Sæt netledningen i, og fastgør hele samlingen til væggen.
- 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:
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:
Sådan gør du: Installation af Raspberry PI 4 Headless (VNC) med Rpi-imager og billeder: 7 trin (med billeder)
Sådan gør du: Installation af Raspberry PI 4 Headless (VNC) med Rpi-imager og billeder: Jeg planlægger at bruge denne Rapsberry PI i en masse sjove projekter tilbage i min blog. Tjek det gerne ud. Jeg ville tilbage til at bruge min Raspberry PI, men jeg havde ikke et tastatur eller en mus på min nye placering. Det var et stykke tid siden jeg konfigurerede en hindbær
Arduino Halloween Edition - Pop -out -skærm med zombier (trin med billeder): 6 trin
Arduino Halloween Edition - Zombies Pop -out -skærm (trin med billeder): Vil du skræmme dine venner og lave skrigende støj i Halloween? Eller vil du bare lave en god sjov? Denne pop-out-skærm fra Zombies kan gøre det! I denne Instructable vil jeg lære dig, hvordan du nemt laver jump-out zombier ved hjælp af Arduino. HC-SR0
Sådan adskilles en computer med nemme trin og billeder: 13 trin (med billeder)
Sådan adskilles en computer med nemme trin og billeder: Dette er en instruktion om, hvordan du adskiller en pc. De fleste af de grundlæggende komponenter er modulopbyggede og nemme at fjerne. Det er dog vigtigt, at du er organiseret omkring det. Dette hjælper med at forhindre dig i at miste dele og også ved at lave genmonteringen til
Ciclop 3d Scanner My Way Trin for trin: 16 trin (med billeder)
Ciclop 3d Scanner My Way Step by Step: Hej alle sammen, jeg kommer til at indse den berømte Ciclop 3D -scanner.Alle trin, der er godt forklaret på det originale projekt, er ikke til stede.Jeg lavede nogle rettelser for at forenkle processen, først Jeg udskriver basen, og end jeg genstarter printkortet, men fortsæt
Sådan styrer du husholdningsapparater med fjernsyn med fjernbetjening med timerfunktion: 7 trin (med billeder)
Sådan styrer du husholdningsapparater med fjernsyn med fjernbetjening med timerfunktion: Selv efter 25 års introduktion til forbrugermarkedet er infrarød kommunikation stadig meget relevant i de seneste dage. Uanset om det er dit 55 tommer 4K -fjernsyn eller dit billydsystem, har alt brug for en IR -fjernbetjening for at reagere på vores