Turinys:

Vaikų miego treniruočių laikrodis: 6 žingsniai (su nuotraukomis)
Vaikų miego treniruočių laikrodis: 6 žingsniai (su nuotraukomis)

Video: Vaikų miego treniruočių laikrodis: 6 žingsniai (su nuotraukomis)

Video: Vaikų miego treniruočių laikrodis: 6 žingsniai (su nuotraukomis)
Video: Дневник хранящий жуткие тайны. Переход. Джеральд Даррелл. Мистика. Ужасы 2024, Liepa
Anonim
Vaikų miego treniruočių laikrodis
Vaikų miego treniruočių laikrodis
Vaikų miego treniruočių laikrodis
Vaikų miego treniruočių laikrodis
Vaikų miego treniruočių laikrodis
Vaikų miego treniruočių laikrodis
Vaikų miego treniruočių laikrodis
Vaikų miego treniruočių laikrodis

Man reikėjo laikrodžio, kuris padėtų mano 4 metų dvyniams išmokti užmigti šiek tiek ilgiau (man jau gana, kad šeštadieniais reikia keltis 5:30 val.), Bet jie dar negali skaityti laiko. Peržiūrėjęs keletą elementų labai populiarioje apsipirkimo svetainėje pagalvojau: "Kaip sunku būtų tiesiog tokį padaryti ?!"

Taigi štai ko aš supratau, kad noriu šio projekto. Tam būtų naudojami kai kurie RGB šviesos diodai (daugiausia todėl, kad turiu apie penkiasdešimt jų iš kito projekto), kad būtų rodomos trys skirtingos spalvos. Raudona reikštų grįžti miegoti, dar anksti pabusti. Geltona reikštų, kad jie gali atsikelti ir ramiai žaisti savo kambaryje. Žalia, žinoma, reiškia, kad galite atsikelti. Aš taip pat norėjau, kad galėčiau koreguoti laiką, nes kai kuriomis dienomis (savaitgaliais/atostogomis prieš darbo dienas ir panašiai) norėčiau ilgiau pamiegoti.

Prekės

Raspberry Pi Zero W

Du RGB šviesos diodai

Šeši 220 omų rezistoriai

Failus (.stl, python, html) rasite čia

Įvairūs smulkūs varžtai, laidai ir mažos dalys, jei reikia.

1 žingsnis: 3D spausdinimas

3D spausdinimas
3D spausdinimas
3D spausdinimas
3D spausdinimas
3D spausdinimas
3D spausdinimas

Mano dukra labai patinka vienaragiai, todėl šiam projektui aš remiksavau „Riven02“„Unicorn Nightlight“, kuris yra „Apachcreation“„Unicorn Trophy“remiksas, kurį galima rasti „Thingiverse.com“ir naudoti pagal „Creative Commons“nekomercinės veiklos licenciją. Aš pakeičiau vienaragio pagrindą, kad jis atitiktų maitinimo laidą aviečių pi nuliui. Aš atsitiktinai turėjau AMZ3D Red PLA, todėl vienaragio pagrindas ir galva bus raudoni. Ragui naudojau skaidrią/permatomą PLA. Naudojami.stl failai ir nustatymai:

Vienaragis.stl

  • Sluoksnio aukštis: 0,02
  • Sienelės storis:.8
  • Sienų linijų skaičius: 2
  • Užpildas: 15%
  • Užpildymo modelis: tinklelis

UnicornBase.stl

  • Sluoksnio aukštis: 0,02
  • Sienelės storis:.8
  • Sienų linijų skaičius: 2
  • Užpildas: 15%
  • Užpildymo modelis: tinklelis

Ragas.stl

  • Sluoksnio aukštis: 0,02
  • Sienelės storis: 0,8
  • Sienų linijų skaičius: 3
  • Užpildas: 0

2 žingsnis: grandinė

Circuit
Circuit
Circuit
Circuit
Circuit
Circuit

Grandinė yra gana paprasta. Aš pasirinkau šešis skirtingus GPIO kaiščius, kad valdyčiau įvairių RGB spalvų įjungimą/išjungimą. Šie kaiščiai ir atitinkamos LED spalvos yra:

  • Smeigtukas 11 prie RGB 1 RED
  • 13 kaištis prie RGB 1 GREEN
  • Smeigtukas 15 prie RGB 1 BLUE
  • 16 kaištis prie RGB 2 RED
  • 18 kaištis prie RGB 2 GREEN
  • Smeigtukas 36 prie RGB 2 BLUE
  • 39 kaištis prie žemės

Kiekvienas kaištis yra prijungtas prie rezistoriaus per 220 omų srovę ribojantį rezistorių (žinoma, išskyrus žemę.) Lituodavau rezistorių linijoje ir uždengiau jį susitraukiančiu vamzdeliu.

3 žingsnis: „Raspberry Pi“paruošimas

Norėjau, kad būtų galima nustatyti miego trenerio laikrodžio laikus naudojant žiniatinklio sąsają. Taigi man reikėjo nustatyti „Apache“ir PHP serverį „Raspberry Pi“. Pirmas dalykas, kurį visada turėtumėte daryti diegdami naują programinę įrangą „Raspberry Pi“, įsitikinkite, kad ji atnaujinta, įvesdami:

sudo apt-get atnaujinimas

Po to tikrai galime pradėti verslą. Tai padarysime įdiegę „Apache2“:

sudo apt -get install apache2 -y

tai turėtų įdiegti „Apache“žiniatinklio serverį. Tai galite patikrinti naudodami Raspberry pi naršyklę ir eidami į:

localhost/

arba naršydami iš kito kompiuterio naršyklės į „Raspberry Pi“IP adresą. Norėdami rasti savo IP adresą:

pagrindinio kompiuterio vardas -aš

Tai atlikus bus rodomas numatytasis „Apache Web Server“puslapis. Tai galima pakeisti pakeičiant index.html, esantį kataloge/var/www/html/. Jį galima pakeisti mano paties index.html failu.

Toliau nustatysime „Apache“žiniatinklio serverį, kad būtų galima paleisti PHP failus. Pradėkite rašydami:

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

dabar turėtumėte turėti galimybę įdėti failą sleepset.php į/var/www/html su indeksu.html.

Norėdami patekti į šį puslapį savo tinkle, turėsite nustatyti „Raspberry Pi“su statiniu IP adresu (arba galite tiesiog pabandyti išsiaiškinti naują IP adresą, kai jūsų tinklas kartkartėmis jį atnaujina). Kad tai veiktų, turėsite redaguoti keletą failų. Turėsite redaguoti failą /etc/dhcpcd.conf taip:

sąsaja wlan0

static ip_address = 192.168.1. statiniai maršrutizatoriai = 192.168.1.1 statinis domeno_pavadinimas_serveriai = 192.168.1.1

Pakeiskite savo tinklo informacija. Vienintelis dalykas, kurį jums reikia padaryti dabar, yra iš naujo paleisti.

sudo perkraukite

Failų vieta iš „Google“disko nuorodos turėtų būti tokia:

  • „index.html“ir „sleepset.php“turėtų būti dedami į katalogą/var/www/html
  • „sleepset.txt“ir „sleeptrainer1_1.py“turėtų būti dedami į katalogą/home/pi/pythoncode (užuomina: turėsite sukurti šį katalogą)

Įdėjus šiuos failus į teisingą katalogą, failas „rc.local“turi būti pakeistas, kad paleisties metu būtų paleista „sleeptrainer1_1.py“programa. Jums reikės šakninio lygio prieigos, kad pakeistumėte rc.local failą, todėl įveskite:

sudo nano /etc/rc.local

Redaktoriuje slinkite žemyn ir prieš pat išėjimo 0 eilutę pridėkite:

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

Čia reikia prisiminti du dalykus:

  1. Naudokite absoliutų failo kelią, kad LINUX negalvotų, jog failas sleeptraner1_1.py yra tame pačiame kataloge kaip ir rc.local.
  2. Pabaigoje nepamirškite simbolio (&). tai leis LINUX paleisti šį failą fone ir toliau paleisti.

Dabar išsaugokite failą įvesdami ctrl-x, tada y, kai būsite paraginti išsaugoti, tada įveskite.

Tada įveskite sudo reboot.

Kažkur čia reikėtų paminėti, kad (bent jau) turėtumėte pakeisti savo Raspberry Pi slaptažodį naudodami komandą passwd. Jei to dar nepadarėte, dabar būtų geras laikas.

4 žingsnis: Kodas

Toliau pateikiamas kodas iš failo „sleeptrainer1_1.py“. Naudojau datos ir laiko objektą, kad palyginčiau laiką su perskaitytu failo sleepset.txt laiku. Teksto failas yra tiesiog dvi eilutės: pirmoji - valanda, antra - minutė. sleeptrainer1_1.py miega vieną minutę tarp kilpų kartojimų, kad nesusietų procesoriaus. Žalia šviesa iš pradžių sklido per ryškiai, todėl aš panaudojau impulsų pločio moduliaciją, kad ją pritemdyčiau, kai ji buvo naudojama su raudona spalva, kad būtų geltona.

„Python“kodas:

importuoti RPi. GPIO kaip GPIO

iš datos ir laiko importavimo datas kaip dt importo laikas 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 (žalia1, GPIO. OUT) GPIO.setup (žalia2, GPIO. OUT) GPIO.setup (mėlyna1, GPIO. OUT) GPIO.setup (mėlyna2, GPIO. OUT) p1 = GPIO. PWM (žalia1, 100) p2 = GPIO. PWM (žalia2, 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 (spalva): if (color == "red"): GPIO.output (red1, GPIO). HIGH) GPIO.output (raudona2, GPIO. HIGH) p1.stop () p2.stop () GPIO.output (mėlyna1, GPIO. LOW) GPIO.output (mėlyna2, GPIO. LOW) elif (spalva == "mėlyna")): GPIO.output (raudona1, GPIO. LOW) GPIO.output (raudona2, GPIO. LOW) p1.stop () p2.stop () GPIO. išvestis (mėlyna1, GPIO. HIGH) GPIO. išvestis (mėlyna2, GPIO. HIGH) elif (spalva == "žalia"): GPIO.output (raudona1, GPIO. LOW) GPIO.output (raudona2, GPIO. LOW) p1.start (100) p2.start (100) GPIO.output (mėlyna1, GPIO. LOW) GPIO.output (mėlyna2, GPIO. LOW) elif (spalva == "geltona"): p1.start (60) p2.start (60) GPIO.output (raudona1, GPIO. HIGH) GPIO.output (raudona2, GPIO. HIGH) GPIO. išvestis (mėlyna1, GPIO. LOW) GPIO išvestis (mėlyna2, GPIO. LOW) elif (spalva == "išjungta"): GPIO išvestis (raudona1, GPIO. LOW) GPIO išvestis (raudona2, GPIO. LOW) GPIO. išvestis (mėlyna1, GPIO. LOW) GPIO. išvestis (mėlyna2, GPIO. LOW) p1.stop () p2.stop (), o tiesa: settime = readset () valanda, minutė = nustatymo laikas jei minutė == 0: jei dt (dt.now (). metai, dt.now (). mėnuo, dt.now (). diena, valanda-2) <dt.now () <dt (dt.now ()).metai, dt.now (). mėnuo, dt.now (). diena, valanda-1, minutė+30): ledlight ("raudona") elif dt (dt.now (). metai, dt.now ().month, dt.now (). day, hour-1, minute+30) <dt.now () <dt (dt.now (). year, dt.now (). month, dt.now ().diena, valanda, minutė): ledlight ("geltona") elif dt (dt.now (). metai, dt.now (). mėn., dt.now (). diena, valanda, minutė) <dt.now () <dt (dt.now (). metai, dt.now (). mėnuo, dt.now (). diena, valanda+1, minutė): ledlight ("žalia") else: ledlight ("off") elif dt (dt.now (). metai, dt.now (). mėnuo, dt.now (). diena, ho ur-2) <dt.now () <dt (dt.now (). metai, dt.now (). mėnuo, dt.now (). diena, valanda, minutė-30): ledlight ("raudona") elif dt (dt.now (). metai, dt.now (). mėnuo, dt.now (). diena, valanda, minutė-30) <dt.now () <dt (dt.now (). metai, dt.now (). mėnuo, dt.now (). diena, valanda, minutė): ledlight ("geltona") elif dt (dt.now (). metai, dt.now (). mėnuo, dt.now (), diena, valanda, minutė) "žalia") dar: ledlight ("off") laikas. miegas (60)

Failas index.html yra pagrindinė HTML forma. Jis paima dviejų teksto laukelių turinį ir perduoda juos failui sleepset.php, kad būtų galima tvarkyti formas. PHP failas tiesiog perrašo failą sleepset.txt atnaujintais duomenimis.

5 žingsnis: sudėkite viską kartu

Viską sujungti
Viską sujungti
Viską sujungti
Viską sujungti
Viską sujungti
Viską sujungti

Kai kodavimas baigtas ir visos dalys atspausdintos, laikas surinkti. Aš viską padariau, kad atlikčiau šiuos veiksmus:

  1. Išgręžkite dvi mažas skylutes pagal RGB šviesos diodus rago apačioje ir įdėkite šviesos diodus į šias skyles.
  2. Įkiškite ragą į vienaragio galvos skylę ir traukite, kol jis bus tvirtas. Norėdami pritvirtinti ragą, naudokite klijus iš vidaus.
  3. Pritvirtinkite „Raspberry Pi Zero W“prie vienaragio galvos vidinės pusės. (Galbūt naudojant karšto klijų pistoletą)
  4. Pritvirtinkite vienaragio galvą prie vienaragio pagrindo.
  5. Prijunkite maitinimo laidą ir pritvirtinkite visą mazgą prie sienos.
  6. Prijunkite laikrodį.

Šiuo metu turiu veikiantį vaikų miego trenerio laikrodį.

6 žingsnis: po metų …

Po metų …
Po metų …

Po metų:

Mano mergaitės miega šiek tiek ilgiau. Mes įpratome pabusti, kai mūsų kambaryje maži vaikai sako: „Tėti, šviesa žalia“. ir tai puiku. Trumpai tariant, šeštadienį, kai planuojame, pabundame tik 5:30 val.

Ką planuoju tobulinti ateityje:

  • Galbūt pridėti kai kuriuos jutiklius ar kitus elementus, tokius kaip mikrofonas ir garsiakalbiai.
  • Galbūt redaguokite kodą, kad galėtumėte dirbti su garsiakalbiu ir naudoti kaip žadintuvą, nes mano vaikai netrukus pradės lankyti mokyklą.

Rekomenduojamas: