Cuprins:

Ceas de antrenament pentru somn pentru copii: 6 pași (cu imagini)
Ceas de antrenament pentru somn pentru copii: 6 pași (cu imagini)

Video: Ceas de antrenament pentru somn pentru copii: 6 pași (cu imagini)

Video: Ceas de antrenament pentru somn pentru copii: 6 pași (cu imagini)
Video: TVneWs - O mama beata cade cu copilul în brate ! 2024, Iulie
Anonim
Ceas de antrenament pentru somn pentru copii
Ceas de antrenament pentru somn pentru copii
Ceas de antrenament pentru somn pentru copii
Ceas de antrenament pentru somn pentru copii
Ceas de antrenament pentru somn pentru copii
Ceas de antrenament pentru somn pentru copii
Ceas de antrenament pentru somn pentru copii
Ceas de antrenament pentru somn pentru copii

Am avut nevoie de un ceas pentru a-mi ajuta gemenii de 4 ani să învețe să doarmă puțin mai mult (am ajuns să mă trezesc sâmbăta la 5:30 dimineața), dar încă nu pot citi ora. După ce am parcurs câteva articole de pe un site de cumpărături foarte popular, m-am gândit: „Cât de greu ar fi să faci unul ?!”

Deci, iată ce am crezut că vreau în acest proiect. Ar folosi unele LED-uri RGB (mai ales pentru că am aproximativ cincizeci dintre ele dintr-un alt proiect) pentru a afișa trei culori diferite. Roșu ar însemna să te întorci la somn, e prea devreme să te trezești. Galbenul ar însemna că se pot ridica și se pot juca liniștiți în camera lor. Verde, desigur, înseamnă că te poți ridica. De asemenea, am vrut să pot regla timpul, pentru că aș vrea să dorm mai mult în câteva zile (weekend-uri / sărbători vs săptămâni și altele).

Provizii

Raspberry Pi Zero W

Două LED-uri RGB

Șase rezistențe de 220 Ohm

Fișiere (.stl, python, html) găsite aici

Diverse șuruburi mici, fire și piese mici, după cum este necesar.

Pasul 1: Imprimare 3D

printare 3d
printare 3d
printare 3d
printare 3d
printare 3d
printare 3d

Fiicei mele le plac foarte mult unicornii, așa că pentru acest proiect am remixat Unicorn Nightlight de la Riven02, care este un remix al Trofeului Unicorn al lui Apachcreation, care poate fi găsit pe Thingiverse.com și utilizat sub o licență non-comercială Creative Commons. Am modificat baza unicornului pentru a se potrivi cu un cablu de alimentare pentru zmeura pi zero. Întâmplător am avut câteva AMZ3D Red PLA așezate în jur, așa că baza și capul unicornului vor fi roșii. Am folosit PLA clar / translucid pentru corn. Fișierele și setările.stl pe care le-am folosit sunt:

Unicorn.stl

  • Înălțimea stratului: 0,02
  • Grosimea peretelui:.8
  • Număr de linii de perete: 2
  • Umplere: 15%
  • Model de umplere: grilă

UnicornBase.stl

  • Înălțimea stratului: 0,02
  • Grosimea peretelui:.8
  • Număr de linii de perete: 2
  • Umplere: 15%
  • Model de umplere: grilă

Horn.stl

  • Înălțimea stratului: 0,02
  • Grosimea peretelui: 0,8
  • Număr de linii de perete: 3
  • Completare: 0

Pasul 2: Circuitul

Circuitul
Circuitul
Circuitul
Circuitul
Circuitul
Circuitul

Circuitul este destul de ușor. Am ales șase pini GPIO diferiți pentru a controla pornirea / oprirea pentru diferitele culori ale RGB. Acei pini și culorile LED corespunzătoare sunt:

  • Pinul 11 la RGB 1 ROȘU
  • Pinul 13 la RGB 1 VERDE
  • Pin 15 la RGB 1 ALBASTRU
  • Pinul 16 la RGB 2 RED
  • Pinul 18 la RGB 2 VERDE
  • Pinul 36 la RGB 2 ALBASTRU
  • Pinul 39 la sol

Fiecare pin este conectat la rezistor printr-un rezistor de limitare a curentului de 220 ohmi (cu excepția terenului, desigur.) Am lipit rezistorul în linie și l-am acoperit cu tuburi termocontractabile.

Pasul 3: Pregătirea Raspberry Pi

Am vrut să pot seta orele pentru ceasul antrenorului de somn folosind o interfață web. Așa că a trebuit să configurez un server Apache și PHP pe Raspberry Pi. Primul lucru pe care trebuie să-l faceți întotdeauna atunci când instalați un nou software pe un Raspberry Pi este să vă asigurați că este actualizat, tastând:

sudo apt-get update

După aceea, putem trece cu adevărat la treabă. Vom face asta instalând Apache2:

sudo apt-get install apache2 -y

aceasta ar trebui să instaleze serverul web Apache. Puteți testa acest lucru utilizând un browser de pe Raspberry pi și navigând la:

localhost /

sau navigând de la browserul altui computer la adresa IP a Raspberry Pi. Pentru a găsi tipul de adresă IP:

numele gazdei -I

Acest lucru va duce la o pagină implicită a serverului web Apache. Acest lucru poate fi schimbat prin înlocuirea index.html aflat în directorul / var / www / html /. Poate fi înlocuit cu propriul meu fișier index.html.

Apoi vom configura serverul web Apache pentru a putea rula fișiere PHP. Începeți prin tastarea:

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

acum ar trebui să puteți plasa fișierul sleepset.php în / var / www / html cu fișierul index.html.

Pentru a naviga la această pagină în propria rețea, va trebui să configurați Raspberry Pi cu o adresă IP statică (sau puteți încerca să aflați noua adresă IP când rețeaua dvs. o reînnoiește din când în când). Va trebui să editați câteva fișiere pentru ca acest lucru să funcționeze. Va trebui să editați fișierul /etc/dhcpcd.conf cu următoarele:

interfață wlan0

static ip_address = 192.168.1. routere statice = 192.168.1.1 static domain_name_servers = 192.168.1.1

Înlocuiți cu informațiile de rețea. Singurul lucru pe care va trebui să-l faceți acum este repornirea.

sudo reboot

Plasarea fișierelor de pe link-ul Google Drive ar trebui să fie după cum urmează:

  • index.html și sleepset.php trebuie plasate în directorul / var / www / html
  • sleepset.txt și sleeptrainer1_1.py trebuie plasate în directorul / home / pi / pythoncode (indiciu: va trebui să creați acest director)

După plasarea acestor fișiere în directorul corect, fișierul rc.local trebuie modificat pentru a rula programul sleeptrainer1_1.py la pornire. Veți avea nevoie de acces la nivel de rădăcină pentru a modifica fișierul rc.local, deci tastați:

sudo nano /etc/rc.local

În editor, derulați în jos și chiar înainte de linia de ieșire 0, adăugați:

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

Există două lucruri de reținut aici:

  1. Utilizați calea fișierului absolut, astfel încât LINUX să nu creadă că fișierul sleeptraner1_1.py este situat în același director ca și rc.local.
  2. Nu uitați de ampersand (&) la sfârșit. acest lucru va permite LINUX să ruleze acest fișier în fundal și să continue bootarea.

Acum, salvați fișierul tastând ctrl-x și apoi y când vi se solicită să salvați, apoi ENTER.

Apoi tastați sudo reboot.

Ar trebui menționat undeva aici că (cel puțin) ar trebui să vă schimbați parola Raspberry Pi folosind comanda passwd. Dacă nu ați făcut încă acest lucru, acum ar fi un moment bun.

Pasul 4: Codul

Următorul este codul din fișierul sleeptrainer1_1.py. Am folosit un obiect datetime pentru a compara orele cu cele citite în fișierul sleepset.txt. Fișierul text este pur și simplu două rânduri, primul pentru oră, al doilea pentru minut. sleeptrainer1_1.py doarme un minut între iterații de buclă pentru a nu lega procesorul. Lumina verde ieșea inițial mult prea strălucitoare, așa că am folosit modulația lățimii pulsului pentru a o estompa când a fost folosită cu roșu pentru a face galben.

Cod Python:

importați RPi. GPIO ca GPIO

din datetime import datetime ca timp de import dt 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 (verde1, GPIO. OUT) GPIO.setup (verde2, GPIO. OUT) GPIO.setup (albastru1, GPIO. OUT) GPIO.setup (albastru2, GPIO. OUT) p1 = GPIO. PWM (verde1, 100) p2 = GPIO. PWM (verde2, 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 (color): if (color == "red"): GPIO.output (red1, GPIO. HIGH) GPIO.output (red2, GPIO. HIGH) p1.stop () p2.stop () GPIO.output (blue1, GPIO. LOW) GPIO.output (blue2, GPIO. LOW) elif (color == "blue"): GPIO.output (red1, GPIO. LOW) GPIO.output (red2, GPIO. LOW) p1.stop () p2.stop () GPIO.output (blue1, GPIO. HIGH) GPIO.output (blue2, GPIO. HIGH) elif (color == "verde"): GPIO.output (red1, GPIO. LOW) GPIO.output (red2, GPIO. LOW) p1.start (100) p2.start (100) GPIO.output (blue1, GPIO. LOW) GPIO.output (blue2, GPIO. LOW) elif (color == "galben"): p1.start (60) p2.start (60) GPIO.output (red1, GPIO. HIGH) GPIO.output (red2, GPIO. HIGH) GPIO.output (blue1, GPIO. LOW) GPIO.output (blue2, GPIO. LOW) elif (color == "off"): GPIO.output (red1, GPIO. LOW) GPIO.output (red2, GPIO. LOW) GPIO.output (blue1, GPIO. LOW) GPIO.output (blue2, GPIO. LOW) p1.stop () p2.stop () în timp ce True: setime = readset () oră, minut = setime if minute == 0: if dt (dt.now (). year, dt.now (). month, dt.now (). day, hour-2) <dt.now () <dt (dt.now ()).an, dt.now (). lună, dt.now (). zi, oră-1, minut + 30): ledlight („roșu”) elif dt (dt.now (). an, dt.now ().lună, dt.now (). zi, oră-1, minut + 30) <dt.now () <dt (dt.now (). an, dt.now (). lună, dt.now (). zi, oră, minut): ledlight („galben”) elif dt (dt.now (). an, dt.now (). lună, dt.now (). zi, oră, minut) <dt.now () <dt (dt.now (). an, dt.now (). lună, dt.now (). zi, oră + 1, minut): ledlight („verde”) altceva: ledlight („oprit”) elif dt (dt.now (). an, dt.now (). lună, dt.now (). zi, ho ur-2) <dt.now () <dt (dt.now (). an, dt.now (). lună, dt.now (). zi, oră, minut-30): ledlight („roșu”) elif dt (dt.now (). year, dt.now (). month, dt.now (). day, hour, minute-30) <dt.now () <dt (dt.now (). year, dt.now (). lună, dt.now (). zi, oră, minut): ledlight („galben”) elif dt (dt.now (). an, dt.now (). lună, dt.now (). zi, oră, minut) <dt.now () <dt (dt.now (). an, dt.now (). lună, dt.now (). zi, oră + 1, minut): ledlight ("verde") altfel: ledlight ("oprit") time.sleep (60)

Fișierul index.html este un formular de bază conceput în HTML. Prinde conținutul a două casete de text și le trece în fișierul sleepset.php pentru gestionarea formularelor. Fișierul PHP suprascrie pur și simplu fișierul sleepset.txt cu date actualizate.

Pasul 5: Puneți totul împreună

Punând totul împreună
Punând totul împreună
Punând totul împreună
Punând totul împreună
Punând totul împreună
Punând totul împreună

Cu codificarea terminată și toate piesele tipărite, este timpul pentru asamblare. Am urmat acești pași pentru a pune totul împreună:

  1. Găsește două găuri mici dimensionate la LED-urile RGB din partea inferioară a claxonului și plasează LED-urile în aceste găuri.
  2. Așezați cornul în gaura din capul unicornului și trageți-l până când este strâns. Folosiți lipici din interior pentru a fixa claxonul.
  3. Atașați Raspberry Pi Zero W la interiorul capului de unicorn. (Folosind pistolul cu adeziv cald poate)
  4. Atașați capul unicornului la baza unicornului.
  5. Atașați cablul de alimentare și atașați întregul ansamblu la perete.
  6. Conectați ceasul.

În acest moment, am un ceas de antrenament pentru somn pentru copii.

Pasul 6: Un an mai târziu …

Un an mai târziu …
Un an mai târziu …

Un an mai târziu:

Fetele mele dorm încă puțin. Ne-am obișnuit să ne trezim cu copiii mici din camera noastră spunând: „Tati, lumina este verde”. și asta este minunat. Pe scurt, ne trezim doar la 5:30 AM într-o sâmbătă, când o planificăm mai mult.

Lucruri pe care intenționez să le îmbunătățesc în viitor:

  • Poate adăugați niște senzori sau alte elemente, cum ar fi un microfon și difuzoare.
  • Poate editați codul pentru a lucra cu un difuzor pe care să îl folosiți ca ceas cu alarmă, deoarece copiii mei vor începe școala în curând.

Recomandat: