Sisällysluettelo:

Lasten unikoulutuskello: 6 vaihetta (kuvilla)
Lasten unikoulutuskello: 6 vaihetta (kuvilla)

Video: Lasten unikoulutuskello: 6 vaihetta (kuvilla)

Video: Lasten unikoulutuskello: 6 vaihetta (kuvilla)
Video: Lastenlauluja suomeksi | Pikkuiset kultakalat ja monta muuta lastenlaulua 2024, Heinäkuu
Anonim
Lasten nukahtamiskello
Lasten nukahtamiskello
Lasten nukahtamiskello
Lasten nukahtamiskello
Lasten unen harjoituskello
Lasten unen harjoituskello
Lasten nukahtamiskello
Lasten nukahtamiskello

Tarvitsin kellon, joka auttaisi 4 -vuotiaita kaksosiani oppimaan nukkumaan hieman pidempään (olen saanut tarpeekseni herätä kello 5.30 aamulla lauantaisin), mutta he eivät voi vielä lukea aikaa. Selaillessani muutamia kohteita erittäin suositulla ostosivustolla ajattelin: "Kuinka vaikeaa olisi vain tehdä sellainen ?!"

Joten tässä ajattelin haluavani tässä projektissa. Se käyttäisi joitain RGB -LED -valoja (lähinnä siksi, että minulla on noin viisikymmentä niistä toisesta projektista) kolmen eri värin näyttämiseen. Punainen merkitsisi takaisin nukkumista, on liian aikaista herätä. Keltainen tarkoittaisi, että he voivat nousta ylös ja leikkiä hiljaa huoneessaan. Vihreä tietysti tarkoittaa, että voit nousta ylös. Halusin myös säätää aikaa, koska haluaisin nukkua pidempään joinain päivinä (viikonloppuisin/juhlapäivinä vs. arkipäivinä).

Tarvikkeet

Raspberry Pi Zero W

Kaksi RGB -LEDiä

Kuusi 220 ohmin vastusta

Tiedostot (.stl, python, html) löytyvät täältä

Erilaisia pieniä ruuveja, johtoja ja pieniä osia tarpeen mukaan.

Vaihe 1: 3D -tulostus

3D -tulostus
3D -tulostus
3D -tulostus
3D -tulostus
3D -tulostus
3D -tulostus

Tyttäreni on todella kuin yksisarvisia, joten tässä projektissa remixasin Riven02: n Unicorn Nightlightin, joka on remix Apachcreationin Unicorn Trophystä, joka löytyy Thingiverse.com-sivustolta ja jota käytetään Creative Commons Non-Commercial -lisenssillä. Muokkasin yksisarvisen pohjaa niin, että se sopii vadelmaan pi nolla. Minulla sattui olemaan jonkin verran AMZ3D Red PLA: ta, joten yksisarvisen pohja ja pää ovat punaisia. Käytin kirkasta/läpikuultavaa PLA: ta sarveen. Käyttämäni.stl -tiedostot ja asetukset ovat:

Unicorn.stl

  • Kerroksen korkeus: 0,02
  • Seinämän paksuus:.8
  • Seinäviivojen määrä: 2
  • Täyte: 15%
  • Täyttökuvio: Ruudukko

UnicornBase.stl

  • Kerroksen korkeus: 0,02
  • Seinämän paksuus:.8
  • Seinäviivojen määrä: 2
  • Täyte: 15%
  • Täyttökuvio: Ruudukko

Horn.stl

  • Kerroksen korkeus: 0,02
  • Seinän paksuus: 0,8
  • Seinäviivojen määrä: 3
  • Täyte: 0

Vaihe 2: Piiri

Piiri
Piiri
Piiri
Piiri
Piiri
Piiri

Piiri on aika helppo. Valitsin kuusi erilaista GPIO -nastaa ohjaamaan RGB: n eri värien päälle/pois. Nämä nastat ja vastaavat LED -värit ovat:

  • Nasta 11 - RGB 1 PUNAINEN
  • Nasta 13 kohtaan RGB 1 GREEN
  • Nasta 15 kohtaan RGB 1 SININEN
  • Nasta 16 - RGB 2 PUNAINEN
  • Nasta 18 kohtaan RGB 2 VIHREÄ
  • Nasta 36 kohtaan RGB 2 SININEN
  • Nasta 39 maahan

Jokainen nasta on kytketty vastukseen 220 ohmin virranrajoitusvastuksen läpi (paitsi tietysti maadoitus.) Juotin vastuksen linjaan ja peitin sen kutisteletkulla.

Vaihe 3: Raspberry Pi -valmistelut

Halusin pystyä asettamaan unen kouluttajan kellon ajan web -käyttöliittymän avulla. Joten minun piti perustaa Apache ja PHP -palvelin Raspberry Pi: hen. Ensimmäinen asia, joka sinun pitäisi aina tehdä, kun asennat uutta ohjelmistoa Raspberry Pi -laitteeseen, on varmistaa, että se on ajan tasalla kirjoittamalla:

sudo apt-get päivitys

Sen jälkeen voimme todella ryhtyä hommiin. Teemme sen asentamalla Apache2:

sudo apt -get install apache2 -y

tämän pitäisi asentaa Apache -verkkopalvelin. Voit testata tämän käyttämällä Raspberry pi -selainta ja siirtymällä osoitteeseen:

localhost/

tai siirtymällä toisen tietokoneen selaimesta Raspberry Pi: n IP -osoitteeseen. Löydä ip -osoitteesi tyyppi:

isäntänimi -I

Näiden tekeminen johtaa oletusarvoiseen Apache -verkkopalvelinsivulle. Tätä voidaan muuttaa korvaamalla hakemistoon/var/www/html/sijoitettu index.html. Se voidaan korvata omalla index.html -tiedostolla.

Seuraavaksi asetamme Apache -verkkopalvelimen PHP -tiedostojen suorittamiseen. Aloita kirjoittamalla:

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

sinun pitäisi nyt pystyä sijoittamaan sleepset.php -tiedosto hakemistoon/var/www/html ja index.html -tiedosto.

Jotta voit siirtyä tälle sivulle omassa verkossa, sinun on määritettävä Raspberry Pi -laitteellesi staattinen IP -osoite (tai voit vain yrittää selvittää uuden ip -osoitteen, kun verkko uusitaan silloin tällöin). Sinun on muokattava pari tiedostoa, jotta tämä toimisi. Sinun on muokattava /etc/dhcpcd.conf -tiedostoa seuraavasti:

käyttöliittymä wlan0

staattinen ip_address = 192.168.1.static reitittimet = 192.168.1.1 staattinen domain_name_servers = 192.168.1.1

Korvaa verkkotiedoillasi. Ainoa asia, joka sinun on nyt tehtävä, on käynnistää uudelleen.

sudo uudelleenkäynnistys

Tiedostojen sijoittelun Google Drive -linkistä pitäisi olla seuraava:

  • index.html ja sleepset.php on sijoitettava hakemistoon/var/www/html
  • sleepset.txt ja sleeptrainer1_1.py tulee sijoittaa hakemistoon/home/pi/pythoncode (vihje: sinun on luotava tämä hakemisto)

Kun olet sijoittanut nämä tiedostot oikeaan hakemistoon, rc.local -tiedostoa on muutettava, jotta sleeptrainer1_1.py -ohjelma voidaan suorittaa käynnistyksen yhteydessä. Tarvitset juuritason käyttöoikeuden rc.local-tiedoston muokkaamiseen, joten kirjoita:

sudo nano /etc/rc.local

Vieritä editorissa alaspäin ja lisää juuri ennen poistumisriviä 0:

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

Tässä on muistettava kaksi asiaa:

  1. Käytä absoluuttista tiedostopolkua, jotta LINUX ei usko, että sleeptraner1_1.py -tiedosto sijaitsee samassa hakemistossa kuin rc.local.
  2. Älä unohda merkkiä (&) lopussa. tämä sallii LINUXin suorittaa tämän tiedoston taustalla ja jatkaa käynnistystä.

Tallenna tiedosto kirjoittamalla ctrl-x ja sitten y, kun sinua pyydetään tallentamaan ja sitten ENTER.

Kirjoita sitten sudo reboot.

On mainittava jossain täällä, että (vähintään) sinun pitäisi vaihtaa Raspberry Pi -salasanasi passwd -komennolla. Jos et ole vielä tehnyt tätä, nyt olisi hyvä aika.

Vaihe 4: Koodi

Seuraava on koodi sleeptrainer1_1.py -tiedostosta. Käytin datetime -objektia vertaillakseni aikoja SleepSet.txt -tiedostossa luettuihin. Tekstitiedosto on yksinkertaisesti kaksi riviä, ensimmäinen tunti, toinen minuutti. sleeptrainer1_1.py nukkuu minuutin ajan silmukoiden toistojen välillä, jotta prosessori ei sido. Vihreä valo syttyi alun perin liian kirkkaasti, joten himmentin pulssin leveysmodulaatiota, kun sitä käytettiin punaisena keltaiseksi.

Python -koodi:

Tuo RPi. GPIO GPIO: ksi

datetime tuonnista datetime koska dt tuonti aika 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 (punainen2, GPIO. OUT) GPIO.setup (vihreä1, GPIO. OUT) GPIO.setup (vihreä2, GPIO. OUT) GPIO.setup (sininen1, GPIO. OUT) GPIO.setup (sininen2, GPIO. OUT) p1 = GPIO. PWM (vihreä1, 100) p2 = GPIO. PWM (vihreä2, 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 (väri): if (color == "red"): GPIO.output (red1, GPIO). HIGH) GPIO.output (punainen2, GPIO. HIGH) p1.stop () p2.stop () GPIO.output (sininen1, GPIO. LOW) GPIO.output (sininen2, GPIO. LOW) elif (väri == "sininen"): GPIO.lähtö (punainen1, GPIO. LOW) GPIO.lähtö (punainen2, GPIO. LOW) p1.stop () p2.stop () GPIO.lähtö (sininen1, GPIO. KORKEA) GPIO.lähtö (sininen2, GPIO. HIGH) elif (väri == "vihreä"): GPIO.output (punainen1, GPIO. LOW) GPIO.output (punainen2, GPIO. LOW) p1.start (100) p2.start (100) GPIO.output (sininen1, GPIO. LOW) GPIO.output (sininen2, GPIO. LOW) elif (väri == "keltainen"): p1.start (60) p2.start (60) GPIO.output (punainen1, GPIO. HIGH) GPIO.output (punainen2, GPIO. KORKEA) GPIO.lähtö (sininen1, GPIO. LOW) GPIO.lähtö (sininen2, GPIO. LOW) elif (väri == "pois"): GPIO.lähtö (punainen1, GPIO. LOW) GPIO.lähtö (punainen2, GPIO. LOW) GPIO.lähtö (sininen1, GPIO. LOW) GPIO.lähtö (sininen1, GPIO. LOW) p1.stop () p2.stop () kun taas True: settime = readset () tunti, minuutti = asetusaika jos minuutti == 0: jos dt (dt.now (). vuosi, dt.now (). kuukausi, dt.now (). päivä, tunti-2) <dt.now () <dt (dt.now (), vuosi, dt.now (). month, dt.now (). day, hour-1, minute+30): ledlight ("red") elif dt (dt.now (). year, dt.now ().kuukausi, dt.now (). päivä, tunti-1, minuutti+30) <dt.now () <dt (dt.now (). vuosi, dt.now (). kuukausi, dt.now ().päivä, tunti, minuutti): ledlight ("keltainen") elif dt (dt.now (). vuosi, dt.now (). month, dt.now (). day, hour, minute) <dt.now () <dt (dt.now (). vuosi, dt.now (). month, dt.now (). day, hour+1, minute): ledlight ("green") else: ledlight ("off") elif dt (dt.now (). vuosi, dt.now (). kuukausi, dt.now (). päivä, ho ur-2) <dt.now () <dt (dt.now (). vuosi, dt.now (). kuukausi, dt.now (). päivä, tunti, minuutti-30): led-valo ("punainen") elif dt (dt.now (). vuosi, dt.now (). month, dt.now (). day, hour, minute-30) <dt.now () <dt (dt.now (). year, dt.now (). month, dt.now (). day, hour, minute): ledlight ("yellow") elif dt (dt.now (). year, dt.now (). month, dt.now (), päivä, tunti, minuutti) <dt.now () <dt (dt.now (). vuosi, dt.now (). kuukausi, dt.now (). päivä, tunti+1, minuutti): ledlight ("vihreä") muu: led -valo ("pois") aika. nukkuminen (60)

Tiedosto index.html on HTML -muotoinen perusmuoto. Se vie kahden tekstiruudun sisällön ja välittää ne sleepset.php -tiedostoon lomakkeen käsittelyä varten. PHP -tiedosto korvaa yksinkertaisesti sleepset.txt -tiedoston päivitetyillä tiedoilla.

Vaihe 5: Yhdistä kaikki

Kokonaisuuden yhdistäminen
Kokonaisuuden yhdistäminen
Kokonaisuuden yhdistäminen
Kokonaisuuden yhdistäminen
Kokonaisuuden yhdistäminen
Kokonaisuuden yhdistäminen

Kun koodaus on valmis ja kaikki osat tulostettu, on aika koota. Tein kaiken yhdistämällä nämä vaiheet:

  1. Poraa kaksi pientä reikää RGB -LEDien mukaan sarven alaosaan ja aseta LEDit näihin reikiin.
  2. Aseta sarvi yksisarvisen pään reikään ja vedä se läpi, kunnes se on tiukka. Käytä liimaa sisäpuolelta sarven kiinnittämiseen.
  3. Kiinnitä Raspberry Pi Zero W yksisarvisen pään sisäpuolelle. (Ehkä kuumaliimapistoolin käyttö)
  4. Kiinnitä yksisarvisen pää yksisarvisen pohjaan.
  5. Kiinnitä virtajohto ja koko kokoonpano seinään.
  6. Kytke kello.

Tässä vaiheessa minulla on toimiva lasten unikouluttajan kello.

Vaihe 6: Vuotta myöhemmin…

Vuotta myöhemmin …
Vuotta myöhemmin …

Vuotta myöhemmin:

Tytöt nukkuvat vähän kauemmin. Olemme tottuneet heräämään huoneessamme oleviin pieniin lapsiin sanomalla: "Isä, valo on vihreä." ja se on hienoa. Lyhyesti sanottuna, heräämme vasta klo 5.30 lauantaina, kun suunnittelemme sitä enää.

Asioita, joita aion parantaa tulevaisuudessa:

  • Ehkä lisätään antureita tai muita kohteita, kuten mikrofoni ja kaiuttimet.
  • Ehkä muokata koodia toimimaan kaiuttimen kanssa ja käyttää sitä herätyskellona, koska lapseni alkavat pian koulua.

Suositeltava: