Sadržaj:

Dječji sat za vježbanje spavanja: 6 koraka (sa slikama)
Dječji sat za vježbanje spavanja: 6 koraka (sa slikama)

Video: Dječji sat za vježbanje spavanja: 6 koraka (sa slikama)

Video: Dječji sat za vježbanje spavanja: 6 koraka (sa slikama)
Video: Uspavanka Moja mala sovica - Leonora Surian 2024, Juli
Anonim
Dječiji sat za vježbanje spavanja
Dječiji sat za vježbanje spavanja
Dječiji sat za vježbanje spavanja
Dječiji sat za vježbanje spavanja
Dječiji sat za vježbanje spavanja
Dječiji sat za vježbanje spavanja
Dječiji sat za vježbanje spavanja
Dječiji sat za vježbanje spavanja

Trebao mi je sat da pomognem svojim četverogodišnjim blizancima da nauče spavati još malo (dosta mi je što sam se morao buditi subotom u 5:30 ujutro), ali još ne mogu čitati vrijeme. Nakon što sam pregledao nekoliko stavki na vrlo popularnoj web lokaciji za kupovinu, pomislio sam: "Koliko bi bilo teško samo napraviti jednu ?!"

Evo šta sam zaključio da želim u ovom projektu. Koristio bi neke RGB LED diode (uglavnom zato što ih imam pedesetak iz drugog projekta) za prikaz tri različite boje. Crveno bi značilo da se vratite na spavanje, prerano je za buđenje. Žuta bi značila da mogu ustati i mirno se igrati u svojoj sobi. Zeleno, naravno znači da možete ustati. Takođe sam hteo da mogu da prilagodim vreme, jer bih voleo da spavam duže nekim danima (vikendom/praznicima vs radnim danima i slično).

Supplies

Raspberry Pi Zero W

Dva RGB LED -a

Šest otpornika od 220 ohma

Ovdje se nalaze datoteke (.stl, python, html)

Razni mali vijci, žice i sitni dijelovi po potrebi.

Korak 1: 3D štampanje

3D štampanje
3D štampanje
3D štampanje
3D štampanje
3D štampanje
3D štampanje

Moja kćerka zaista voli jednoroge, pa sam za ovaj projekt remiksirao Riven02 Unicorn Nightlight, koji je remiks Apachcreation Unicorn Trophy-a, koji se može pronaći na Thingiverse.com i koristiti pod Creative Commons nekomercijalnom licencom. Modificirao sam bazu jednoroga tako da stane kabel za napajanje za malinu pi zero. Slučajno mi je ležao AMZ3D Red PLA, pa će jednorog i glava biti crveni. Za trubu sam koristio prozirnu/prozirnu PLA.. Stl datoteke i postavke koje sam koristio su:

Unicorn.stl

  • Visina sloja: 0,02
  • Debljina zida:.8
  • Broj zidnih linija: 2
  • Ispuna: 15%
  • Uzorak ispune: Mreža

UnicornBase.stl

  • Visina sloja: 0,02
  • Debljina zida:.8
  • Broj zidnih linija: 2
  • Ispuna: 15%
  • Uzorak ispune: Mreža

Horn.stl

  • Visina sloja: 0,02
  • Debljina zida: 0,8
  • Broj zidnih linija: 3
  • Ispuna: 0

Korak 2: Krug

The Circuit
The Circuit
The Circuit
The Circuit
The Circuit
The Circuit

Krug je prilično jednostavan. Odabrao sam šest različitih GPIO pinova za kontrolu uključivanja/isključivanja za različite boje RGB -a. Ti pinovi i odgovarajuće LED boje su:

  • Pin 11 do RGB 1 CRVENO
  • Pin 13 na RGB 1 ZELENO
  • Pin 15 do RGB 1 PLAVI
  • Pin 16 do RGB 2 CRVENI
  • Pin 18 na RGB 2 ZELENO
  • Pin 36 za RGB 2 PLAVI
  • Pin 39 na masu

Svaki pin je spojen na otpornik kroz otpornik za ograničenje struje od 220 ohma (s izuzetkom naravno uzemljenja). Lemio sam otpornik u liniji i pokrio ga termoskupljajućom cijevi.

Korak 3: Priprema maline Pi

Htio sam moći postaviti vrijeme za sat trenera spavanja pomoću web sučelja. Pa sam morao postaviti Apache i PHP poslužitelj na Raspberry Pi. Prva stvar koju uvijek trebate učiniti pri instaliranju novog softvera na Raspberry Pi je da provjerite je li ažuriran upisivanjem:

sudo apt-get update

Nakon toga zaista možemo pristupiti poslu. To ćemo učiniti instaliranjem Apache2:

sudo apt -get install apache2 -y

ovo bi trebalo instalirati Apache web server. To možete testirati korištenjem preglednika na Raspberry pi -u i navigacijom do:

localhost/

ili prelaskom s preglednika drugog računara na IP adresu vaše Raspberry Pi. Da biste pronašli vrstu svoje IP adrese:

hostname -I

To će dovesti do zadane stranice Apache web servera. To se može promijeniti zamjenom index.html koji se nalazi u/var/www/html/direktoriju. Može se zamijeniti vlastitom datotekom index.html.

Zatim ćemo postaviti Apache web server da može pokretati PHP datoteke. Započnite upisivanjem:

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

sada biste trebali moći postaviti datoteku sleepset.php u/var/www/html s datotekom index.html.

Da biste otišli na ovu stranicu u vlastitoj mreži, morat ćete postaviti svoj Raspberry Pi sa statičkom IP adresom (ili možete samo pokušati otkriti novu IP adresu kad je vaša mreža povremeno obnavlja). Morat ćete urediti nekoliko datoteka da bi ovo funkcioniralo. Morat ćete urediti /etc/dhcpcd.conf datoteku sa sljedećim:

interfejs wlan0

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

Zamijenite mrežnim podacima. Jedino što sada trebate učiniti je ponovno pokretanje.

sudo reboot

Položaj datoteka sa veze Google diska trebao bi biti sljedeći:

  • index.html i sleepset.php trebaju biti smješteni u/var/www/html direktorij
  • sleepset.txt i sleeptrainer1_1.py trebaju biti smješteni u/home/pi/pythoncode direktorij (savjet: morat ćete stvoriti ovaj direktorij)

Nakon postavljanja ovih datoteka u ispravan direktorij, datoteku rc.local potrebno je izmijeniti za pokretanje programa sleeptrainer1_1.py pri pokretanju. Za izmjenu datoteke rc.local trebat će vam pristup na osnovnom nivou, pa upišite:

sudo nano /etc/rc.local

U uređivaču se pomaknite prema dolje i neposredno prije redaka za izlaz 0 dodajte:

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

Ovdje morate zapamtiti dvije stvari:

  1. Koristite apsolutni put datoteke tako da LINUX ne misli da se datoteka sleeptraner1_1.py nalazi u istom direktoriju kao i rc.local.
  2. Ne zaboravite ampersand (&) na kraju. ovo će omogućiti LINUX -u da pokrene ovu datoteku u pozadini i nastavi pokretanje.

Sada spremite datoteku upisivanjem ctrl-x, a zatim y kada se od vas zatraži da spremite, a zatim pritisnite ENTER.

Zatim upišite sudo reboot.

Ovdje negdje treba napomenuti da biste (barem) trebali promijeniti lozinku za Raspberry Pi pomoću naredbe passwd. Ako to još niste učinili, sada bi bilo dobro vrijeme.

Korak 4: Kôd

Slijedi kôd iz datoteke sleeptrainer1_1.py. Koristio sam objekat datetime za upoređivanje vremena sa onima pročitanim u datoteci sleepset.txt. Tekstualna datoteka je jednostavno dva reda, prvi za sat, drugi za minute. sleeptrainer1_1.py spava jednu minutu između iteracija petlje kako ne bi vezao procesor. Zeleno svjetlo je isprva ispalo previše svijetlo, pa sam upotrijebio modulaciju širine impulsa da ga prigušim kada se koristi s crvenom za žutu.

Python kod:

uvezite RPi. GPIO kao GPIO

od datetime import datetime kao dt vrijeme 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 (crvena2, GPIO. OUT) GPIO.setup (zelena1, GPIO. OUT) GPIO.setup (zelena2, GPIO. OUT) GPIO.setup (plava1, GPIO. OUT) GPIO.setup (plava2, GPIO. OUT) p1 = GPIO. PWM (zelena1, 100) p2 = GPIO. PWM (zelena2, 100) def readset (): setfile = open ("/home/pi/pythoncode/sleepset.txt", 'r') a = setfile. readline () b = setfile.readline () a = int (a) b = int (b) vrati a, b def ledlight (boja): if (boja == "crvena"): GPIO.izlaz (crveno1, GPIO. VISOKO) GPIO.izlaz (crveno2, GPIO. HIGH) p1.stop () p2.stop () GPIO.izlaz (plavo1, GPIO. LOW) GPIO.izlaz (plavo2, GPIO. LOW) elif (boja == "plava"): GPIO.izlaz (crvena1, GPIO. LOW) GPIO.izlaz (crvena2, GPIO. LOW) p1.stop () p2.stop () GPIO.izlaz (plava1, GPIO. HIGH) GPIO.izlaz (plava2, GPIO. HIGH) elif (boja == "zelena"): GPIO.izlaz (crvena1, GPIO. LOW) GPIO.izlaz (crvena2, GPIO. LOW) p1.start (100) p2.start (100) GPIO.izlaz (plava1, GPIO. LOW) GPIO.izlaz (plava2, GPIO. LOW) elif (boja == "žuta"): p1.start (60) p2.start (60) GPIO.izlaz (crvena1, GPIO. HIGH) GPIO.izlaz (crveno2, GPIO. HIGH) GPIO.izlaz (plavo1, GPIO. LOW) GPIO.izlaz (plavo2, GPIO. LOW) elif (boja == "isključeno"): GPIO.izlaz (crveno1, GPIO. LOW) GPIO.izlaz (crveno2, GPIO. LOW) GPIO.izlaz (plavo1, GPIO. LOW) GPIO.izlaz (plavo2, GPIO. LOW) p1.stop () p2.stop () dok je True: settime = readset () sat, minut = settime ako je minuta == 0: ako je dt (dt.now (). godina, dt.now (). mjesec, dt.now (). dan, sat-2) <dt.now () <dt (dt.now ().godina, dt.now (). mjesec, dt.now (). dan, sat-1, minuta+30): ledlight ("crveno") elif dt (dt.now (). year, dt.now ().mesec, dt.now (). dan, sat-1, minut+30) <dt.now () <dt (dt.now (). godina, dt.now (). mjesec, dt.now ().dan, sat, minut): LED svjetlo ("žuto") elif dt (dt.now (). godina, dt.now (). mjesec, dt.now (). dan, sat, minuta) <dt.now () <dt (dt.now (). godina, dt.now (). mjesec, dt.now (). dan, sat+1, minuta): ledlight ("zeleno") else: ledlight ("off") elif dt (dt.now (). godina, dt.now (). mjesec, dt.now (). dan, ho ur-2) <dt.now () <dt (dt.now (). godina, dt.now (). mjesec, dt.now (). dan, sat, minut-30): ledlight ("crveno") elif dt (dt.now (). godina, dt.now (). mjesec, dt.now (). dan, sat, minuta-30) <dt.now () <dt (dt.now (). godina, dt.now (). mjesec, dt.now (). dan, sat, minuta): ledlight ("žuto") elif dt (dt.now (). godina, dt.now (). mjesec, dt.now ().dan, sat, minut) <dt.now () <dt (dt.now (). godina, dt.now (). mjesec, dt.now (). dan, sat+1, minuta): LEDlight ("zeleno") else: ledlight ("off") time.sleep (60)

Datoteka index.html je osnovni oblik dizajniran u HTML -u. On uzima sadržaj dva tekstualna okvira i prosljeđuje ih u datoteku sleepset.php radi obrade obrasca. PHP datoteka jednostavno prepisuje datoteku sleepset.txt ažuriranim podacima.

Korak 5: Sastavite sve zajedno

Spajajući sve zajedno
Spajajući sve zajedno
Spajajući sve zajedno
Spajajući sve zajedno
Spajajući sve zajedno
Spajajući sve zajedno

Kada je kodiranje završeno i svi dijelovi odštampani, vrijeme je za montažu. Slijedio sam ove korake za sastavljanje svega:

  1. Izbušite dvije male rupe veličine do RGB LED -a na dnu trube i postavite LED -ove u ove rupe.
  2. Stavite rog u rupu u glavi jednoroga i provucite ga dok se ne stegne. Za pričvršćivanje roga upotrijebite ljepilo iznutra.
  3. Pričvrstite Raspberry Pi Zero W na unutrašnjost glave jednoroga. (Možda pomoću pištolja za vruće ljepilo)
  4. Pričvrstite glavu jednoroga na bazu jednoroga.
  5. Priključite kabel za napajanje i pričvrstite cijeli sklop na zid.
  6. Uključite sat.

U ovom trenutku imam funkcionalan dječji sat za treniranje sna.

Korak 6: Godinu dana kasnije…

Godinu dana kasnije…
Godinu dana kasnije…

Godinu dana kasnije:

Moje cure spavaju još malo. Navikli smo se buditi malu djecu u svojoj sobi govoreći: "Tata, svjetlo je zeleno." i to je odlično. Ukratko, budimo se samo u subotu u 5:30 ujutro kad to više planiramo.

Stvari koje planiram poboljšati u budućnosti:

  • Možda ćete dodati neke senzore ili druge stavke poput mikrofona i zvučnika.
  • Možda uredite kôd kako biste radili sa zvučnikom i koristili ga kao budilicu jer će mi djeca uskoro krenuti u školu.

Preporučuje se: