Kazalo:

Otroška ura za spanje za spanje: 6 korakov (s slikami)
Otroška ura za spanje za spanje: 6 korakov (s slikami)

Video: Otroška ura za spanje za spanje: 6 korakov (s slikami)

Video: Otroška ura za spanje za spanje: 6 korakov (s slikami)
Video: Kanalizirana meditacija za globok spanec 2024, Julij
Anonim
Otroška ura za spanje za spanje
Otroška ura za spanje za spanje
Otroška ura za spanje za spanje
Otroška ura za spanje za spanje
Otroška ura za spanje za spanje
Otroška ura za spanje za spanje
Otroška ura za spanje za spanje
Otroška ura za spanje za spanje

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

3D tiskanje
3D tiskanje
3D tiskanje
3D tiskanje
3D tiskanje
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
Vezje
Vezje
Vezje
Vezje
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:

  1. Uporabite absolutno pot datoteke, tako da LINUX ne misli, da se datoteka sleeptraner1_1.py nahaja v istem imeniku kot rc.local.
  2. 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

Vse skupaj
Vse skupaj
Vse skupaj
Vse skupaj
Vse skupaj
Vse skupaj

Ko je kodiranje končano in vsi deli natisnjeni, je čas za montažo. Sledil sem tem korakom, da sem vse sestavil:

  1. Izvrtajte dve majhni luknji velikosti RGB LED na dnu roga in vstavite LED v te luknje.
  2. Rog vstavite v luknjo v glavi samoroga in ga povlecite, dokler se ne zategne. Za pritrditev roga uporabite lepilo od znotraj.
  3. Raspberry Pi Zero W pritrdite na notranjo stran glave samoroga. (Mogoče z uporabo pištole za vroče lepilo)
  4. Glavo samoroga pritrdite na podlago samoroga.
  5. Priključite napajalni kabel in pritrdite celoten sklop na steno.
  6. Priključite uro.

Na tej točki imam delujočo otroško uro za spanje.

Korak 6: Leto kasneje…

Eno leto kasneje …
Eno 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: