Kazalo:
- Zaloge
- Korak: 3D tiskanje
- 2. korak: vezje
- 3. korak: Priprava maline Pi
- 4. korak: Koda
- 5. korak: Združite vse skupaj
- Korak 6: Leto kasneje…
Video: Otroška ura za spanje za spanje: 6 korakov (s slikami)
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:04
Potreboval sem uro, ki je pomagala mojim 4 -letnim dvojčkom, da se malo dlje naučijo spati (dovolj mi je, da se moram ob sobotah zbuditi ob 5.30), vendar še ne znajo brati časa. Po brskanju po nekaj stvareh na zelo priljubljenem spletnem mestu za nakupovanje sem pomislil: "Kako težko bi bilo narediti samo enega ?!"
Tako sem mislil, da želim v tem projektu. Za prikaz treh različnih barv bi uporabil nekaj LED RGB (predvsem zato, ker jih imam približno petdeset iz drugega projekta). Rdeča bi pomenila, da zaspite, prezgodaj se je zbuditi. Rumena bi pomenila, da lahko vstanejo in se mirno igrajo v svoji sobi. Zelena, seveda pomeni, da lahko vstanete. Želela sem si tudi prilagoditi čas, ker bi želela nekaj dni dlje spati (vikendi/prazniki vs tedni in podobno).
Zaloge
Raspberry Pi Zero W
Dve LED diodi RGB
Šest uporov 220 Ohmov
Tu so najdene datoteke (.stl, python, html)
Različni vijaki, žice in majhni deli po potrebi.
Korak: 3D tiskanje
Moja hči je res kot samorogi, zato sem za ta projekt predelal Riven02's Unicorn Nightlight, ki je remix Apachcreation's Unicorn Trophy, ki ga lahko najdete na Thingiverse.com in se uporablja pod nekomercialno licenco Creative Commons. Podnožje samoroga sem spremenil tako, da je ustrezal napajalnemu kablu za malino pi zero. Naključno sem imel nekaj AMZ3D rdečega PLA naokoli, zato bosta enorogova osnova in glava rdeča. Za rog sem uporabil prozorno/prosojno PLA. Datoteke.stl in nastavitve, ki sem jih uporabil, so:
Unicorn.stl
- Višina plasti: 0,02
- Debelina stene: 0,8
- Število stenskih linij: 2
- Polnjenje: 15%
- Vzorec polnjenja: Mreža
UnicornBase.stl
- Višina plasti: 0,02
- Debelina stene: 0,8
- Število stenskih linij: 2
- Polnjenje: 15%
- Vzorec polnjenja: Mreža
Horn.stl
- Višina plasti: 0,02
- Debelina stene: 0,8
- Število stenskih linij: 3
- Polnjenje: 0
2. korak: vezje
Vezje je precej enostavno. Za nadzor vklopa/izklopa različnih barv RGB sem izbral šest različnih zatičev GPIO. Ti zatiči in ustrezne barve LED so:
- Pin 11 do RGB 1 RDEČA
- Pin 13 v RGB 1 ZELENO
- Pin 15 do RGB 1 MODRA
- Pin 16 do RGB 2 RDEČA
- Pin 18 v RGB 2 ZELENO
- Pin 36 do RGB 2 MODRA
- Pin 39 na maso
Vsak zatič je priključen na upor skozi 220 ohmski omejevalni upor (z izjemo seveda ozemljitve). Upor sem spajal v vrsto in ga pokril s toplotno skrčljivo cevjo.
3. korak: Priprava maline Pi
Želel sem, da bi lahko nastavil čas za uro treniranja spanja s spletnim vmesnikom. Zato sem moral na Raspberry Pi nastaviti strežnik Apache in PHP. Prva stvar, ki jo morate vedno narediti pri nameščanju nove programske opreme na Raspberry Pi, je, da se prepričate, da je posodobljena, tako da vnesete:
sudo apt-get posodobitev
Po tem se lahko res lotimo posla. To bomo storili z namestitvijo Apache2:
sudo apt -get namestite apache2 -y
to bi moralo namestiti spletni strežnik Apache. To lahko preizkusite z brskalnikom na Raspberry pi in se pomaknete do:
localhost/
ali s krmarjenjem iz brskalnika drugega računalnika na naslov ip vašega Raspberry Pi. Če želite poiskati vrsto naslova ip:
ime gostitelja -I
To bo pripeljalo do privzete strani spletnega strežnika Apache. To lahko spremenite tako, da zamenjate index.html v imeniku/var/www/html/. Lahko ga zamenjam z lastno datoteko index.html.
Nato bomo spletni strežnik Apache nastavili za izvajanje datotek PHP. Začnite z vnosom:
sudo apt-get install php libapache2-mod-php -y
zdaj bi morali imeti datoteko sleepset.php v datoteko/var/www/html z datoteko index.html.
Če se želite pomakniti na to stran v svojem omrežju, morate nastaviti svoj Raspberry Pi s statičnim naslovom ip (ali pa poskusite ugotoviti nov naslov ip, ko ga občasno obnovite). Če želite, da to deluje, morate urediti nekaj datotek. Datoteko /etc/dhcpcd.conf boste morali urediti z naslednjim:
vmesnik wlan0
static ip_address = 192.168.1.static routers = 192.168.1.1 static domain_name_servers = 192.168.1.1
Zamenjajte z omrežnimi podatki. Edino, kar morate zdaj storiti, je ponovni zagon.
sudo ponovni zagon
Razmestitev datotek s povezave do pogona Google mora biti naslednja:
- index.html in sleepset.php je treba postaviti v imenik/var/www/html
- sleepset.txt in sleeptrainer1_1.py bi morali postaviti v imenik/home/pi/pythoncode (namig: ta imenik boste morali ustvariti)
Ko ste te datoteke dali v pravi imenik, je treba datoteko rc.local spremeniti, da se ob zagonu zažene program sleeptrainer1_1.py. Za spremembo datoteke rc.local boste potrebovali dostop na korenski ravni, zato vnesite:
sudo nano /etc/rc.local
V urejevalniku se pomaknite navzdol in tik pred vrstico za izhod 0 dodajte:
python /home/pi/pythoncode/sleeptrainer1_1.py &
Tu si morate zapomniti dve stvari:
- Uporabite absolutno pot datoteke, tako da LINUX ne misli, da se datoteka sleeptraner1_1.py nahaja v istem imeniku kot rc.local.
- Ne pozabite na znak ampersand (&) na koncu. to bo LINUX -u omogočilo izvajanje te datoteke v ozadju in nadaljevanje zagona.
Zdaj shranite datoteko tako, da na poziv shranite vnesete ctrl-x in nato y, nato pa ENTER.
Nato vnesite sudo reboot.
Tu nekje je treba omeniti, da morate (vsaj) spremeniti geslo Raspberry Pi z ukazom passwd. Če tega še niste storili, bi bil pravi čas.
4. korak: Koda
Sledi koda iz datoteke sleeptrainer1_1.py. S predmetom datetime sem primerjal ure s tistimi, ki so bile prebrane v datoteki sleepset.txt. Besedilna datoteka je preprosto dve vrstici, prva za uro, druga za minuto. sleeptrainer1_1.py spi eno minuto med ponovitvami zanke, da procesor ne bi privezal. Zelena luč je bila sprva preveč svetla, zato sem uporabil modulacijo širine impulza, da sem jo zatemnil, če sem jo uporabil z rdečo za rumeno.
Koda Python:
uvozite RPi. GPIO kot GPIO
od datuma in datuma uvoza datum -čas kot dt čas uvoza 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 (rdeča2, GPIO. OUT) GPIO.setup (zelena1, GPIO. OUT) GPIO.setup (zelena2, GPIO. OUT) GPIO.setup (modra1, GPIO. OUT) GPIO.setup (modra2, 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) vrnitev a, b def ledlight (barva): if (barva == "rdeča"): GPIO.output (rdeča1, GPIO. HIGH) GPIO.output (rdeča2, GPIO. HIGH) p1.stop () p2.stop () GPIO.output (modra1, GPIO. LOW) GPIO.output (modra2, GPIO. LOW) elif (barva == "modra"): GPIO.output (rdeča1, GPIO. LOW) GPIO.output (rdeča2, GPIO. LOW) p1.stop () p2.stop () GPIO.output (modra1, GPIO. HIGH) GPIO.output (modra2, GPIO. HIGH) elif (barva == "zelena"): GPIO.output (rdeča1, GPIO. LOW) GPIO.output (rdeča2, GPIO. LOW) p1.start (100) p2.start (100) GPIO.output (modra1, GPIO. LOW) GPIO.output (modra2, GPIO. LOW) elif (barva == "rumena"): p1.start (60) p2.start (60) GPIO.output (rdeča1, GPIO. HIGH) GPIO.output (rdeča2, GPIO. HIGH) GPIO.izhod (modra1, GPIO. LOW) GPIO.izhod (modra2, GPIO. LOW) elif (barva == "izklopljena"): GPIO.izhod (rdeča1, GPIO. LOW) GPIO.izhod (rdeča2, GPIO. LOW) GPIO.izhod (modra1, GPIO. LOW) GPIO.izhod (modra2, GPIO. LOW) p1.stop () p2.stop () medtem ko je True: settime = readset () ura, minute = settime če je minuta == 0: če je dt (dt.now (). leto, dt.now (). mesec, dt.now (). dan, ura-2) <dt.now () <dt (dt.now ()). leto, dt.now (). mesec, dt.now (). dan, ura-1, minuta+30): ledlight ("rdeča") elif dt (dt.now (). leto, dt.now ()).mesec, dt.now (). dan, ura-1, minuta+30) <dt.now () <dt (dt.now (). leto, dt.now (). mesec, dt.now ().dan, ura, minuta): ledlight ("rumena") elif dt (dt.now (). leto, dt.now (). mesec, dt.now (). dan, ura, minuta) <dt.now () <dt (dt.now (). leto, dt.now (). mesec, dt.now (). dan, ura+1, minuta): ledlight ("zelena") else: ledlight ("off") elif dt (dt.now (). leto, dt.now (). mesec, dt.now (). dan, ho ur-2) <dt.now () <dt (dt.now (). leto, dt.now (). mesec, dt.now (). dan, ura, minuta-30): ledlight ("rdeča") elif dt (dt.now (). leto, dt.now (). mesec, dt.now (). dan, ura, minuta-30) <dt.now () <dt (dt.now (). leto, dt.now (). mesec, dt.now (). dan, ura, minuta): ledlight ("rumena") elif dt (dt.now (). leto, dt.now (). mesec, dt.now ()), dan, uro, minuto) <dt.now () <dt (dt.now (). leto, dt.now (). mesec, dt.now (). dan, ura+1, minuta): ledlight ("green") else: ledlight ("off") time.sleep (60)
Datoteka index.html je osnovni obrazec, oblikovan v HTML -ju. Vzame vsebino dveh besedilnih polj in jih posreduje datoteki sleepset.php za obdelavo obrazcev. Datoteka PHP preprosto prepiše datoteko sleepset.txt s posodobljenimi podatki.
5. korak: Združite vse skupaj
Ko je kodiranje končano in vsi deli natisnjeni, je čas za montažo. Sledil sem tem korakom, da sem vse sestavil:
- Izvrtajte dve majhni luknji velikosti RGB LED na dnu roga in vstavite LED v te luknje.
- Rog vstavite v luknjo v glavi samoroga in ga povlecite, dokler se ne zategne. Za pritrditev roga uporabite lepilo od znotraj.
- Raspberry Pi Zero W pritrdite na notranjo stran glave samoroga. (Mogoče z uporabo pištole za vroče lepilo)
- Glavo samoroga pritrdite na podlago samoroga.
- Priključite napajalni kabel in pritrdite celoten sklop na steno.
- Priključite uro.
Na tej točki imam delujočo otroško uro za spanje.
Korak 6: Leto kasneje…
Eno leto kasneje:
Moja dekleta spijo malo dlje. Navadili smo se, da se v svoji sobi zbujamo z majhnimi otroki in rečemo: "Očka, luč je zelena." in to je super. Skratka, v soboto se zbudimo šele ob 5.30, ko to še načrtujemo.
Stvari, ki jih nameravam izboljšati v prihodnosti:
- Morda dodate nekaj senzorjev ali drugih predmetov, kot so mikrofon in zvočniki.
- Morda uredite kodo, da bo z zvočnikom delovala kot budilka, saj bodo moji otroci kmalu začeli šolo.
Priporočena:
Enostavno spanje: 5 korakov (s slikami)
Spanje enostavno: Živijo, ime mi je Jakob. Alergična sem na pršice hišnega prahu in imam astmo. To je navdih za ta projekt. Za moje prvo leto MCT smo dobili nalogo, da z vsem znanjem, ki smo ga pridobili letos, naredimo projekt iz nič. Odločil sem se, da bom
Otroška glasbena skrinja MP3: 6 korakov (s slikami)
Otroška glasbena omarica MP3: Ko sem iskal nekaj novih DIY projektov okoli arduina, sem našel nekaj lepih idej o MP3 predvajalnikih za otroke na osnovi RFID. In na trgu obstaja ena odlična profesionalna škatla za igrače - ti fantje vladajo. S svojo pametno idejo so naredili odličen posel. Preverite
C51 4 -bitna elektronska ura - lesena ura: 15 korakov (s slikami)
C51 4 -bitna elektronska ura - lesena ura: ta vikend sem imel nekaj prostega časa, zato sem šel naprej in sestavil to 4 -bitno elektronsko digitalno uro za 2,40 USD, ki sem jo pred časom kupil pri AliExpressu
Otroška nočna lučka RGB LED Star: 9 korakov (s slikami)
Otroška nočna lučka RGB LED Star: Zelo rada delam projekte za svoje otroke in rada delam tudi projekte z uporabo RGB LED, zato sem prišla na idejo o nočni luči, ki zaznava svetlobo v obliki zvezde RGB, za moje otroške sobe. Nočna luč lahko zazna, ali je v temi, in vklopi LED RGB
Otroška kuhinja, ki pravi BEEP: 7 korakov (s slikami)
Otroška kuhinja, ki pravi BEEP: Moja dveletna hči je imela 'majhen' zahtevek za tretji rojstni dan. Želela je majhno kuhinjo z napisom Beep. 'Kaj hočeš?' je bil moj odgovor. "Kuhinja, ki pravi pisk, tako kot kuhinja mamic!" Je rekla … Torej, to je bil navdih (jaz