Taula de continguts:

Rellotge d'entrenament del son infantil: 6 passos (amb imatges)
Rellotge d'entrenament del son infantil: 6 passos (amb imatges)

Vídeo: Rellotge d'entrenament del son infantil: 6 passos (amb imatges)

Vídeo: Rellotge d'entrenament del son infantil: 6 passos (amb imatges)
Vídeo: 3 РЕЦЕПТА из КУРИНОЙ ПЕЧЕНИ/ ПАШТЕТ!! ГОСТИ БУДУТ В ШОКЕ!! 2024, Juliol
Anonim
Rellotge d’entrenament del son infantil
Rellotge d’entrenament del son infantil
Rellotge d’entrenament del son infantil
Rellotge d’entrenament del son infantil
Rellotge d’entrenament del son infantil
Rellotge d’entrenament del son infantil
Rellotge d’entrenament del son infantil
Rellotge d’entrenament del son infantil

Necessitava un rellotge per ajudar els meus bessons de 4 anys a aprendre a dormir una mica més (ja en tinc prou amb haver de despertar-me a les 5:30 del matí dels dissabtes), però encara no saben llegir l'hora. Després de navegar per uns quants articles en un lloc de compres molt popular, vaig pensar: "Què tan difícil seria fer-ne un ?!"

Així que això és el que em pensava que volia en aquest projecte. Faria servir alguns LED RGB (sobretot perquè en tinc una cinquantena d’un altre projecte) per mostrar tres colors diferents. El vermell significaria tornar a dormir, és massa aviat per despertar-se. El groc significaria que es poden aixecar i jugar tranquil·lament a la seva habitació. Verd, per descomptat, vol dir que us podeu aixecar. També volia poder ajustar l'hora, perquè m'agradaria dormir més temps alguns dies (caps de setmana / festius vs dies feiners, etc.).

Subministraments

Raspberry Pi Zero W

Dos LED RGB

Sis resistències de 220 Ohm

Aquí es troben fitxers (.stl, python, html)

Diversos petits cargols, cables i petites peces segons sigui necessari.

Pas 1: impressió 3D

Impressió 3D
Impressió 3D
Impressió 3D
Impressió 3D
Impressió 3D
Impressió 3D

A la meva filla li agraden molt els unicorns, així que per aquest projecte he remesclat Unicorn Nightlight de Riven02, que és un remescla del Trofeu Unicorn d’Apachcreation, que es pot trobar a Thingiverse.com i que s’utilitza sota una llicència no comercial de Creative Commons. Vaig modificar la base de l’unicorn perquè s’adaptés a un cable d’alimentació per al raspberry pi zero. Em va passar una mica de PLA vermell AMZ3D, de manera que la base i el cap de l’unicorn seran vermells. Vaig utilitzar PLA transparent / translúcid per a la banya. Els fitxers i la configuració.stl que he utilitzat són:

Unicorn.stl

  • Alçada de la capa: 0,02
  • Gruix de la paret:.8
  • Recompte de línies de paret: 2
  • Emplenament: 15%
  • Patró de farciment: quadrícula

UnicornBase.stl

  • Alçada de la capa: 0,02
  • Gruix de la paret:.8
  • Recompte de línies de paret: 2
  • Emplenament: 15%
  • Patró de farciment: quadrícula

Horn.stl

  • Alçada de la capa: 0,02
  • Gruix de la paret: 0,8
  • Recompte de línies de paret: 3
  • Omplir: 0

Pas 2: el circuit

El Circuit
El Circuit
El Circuit
El Circuit
El Circuit
El Circuit

El circuit és bastant fàcil. Vaig triar sis pins GPIO diferents per controlar l’encesa / apagada dels diferents colors del RGB. Aquests pins i els colors LED corresponents són:

  • Pin 11 a RGB 1 VERMELL
  • Pin 13 a RGB 1 VERD
  • Pin 15 a RGB 1 BLAU
  • Pin 16 a RGB 2 VERMELL
  • Pin 18 a RGB 2 VERD
  • Pin 36 a RGB 2 BLAU
  • Pin 39 a terra

Cada passador està connectat a la resistència mitjançant una resistència de limitació de corrent de 220 ohms (amb l'excepció del sòl, per descomptat).

Pas 3: Preparació de Raspberry Pi

Volia poder establir els horaris del rellotge de l’entrenador del son mitjançant una interfície web. Per tant, necessitava configurar un servidor Apache i PHP al Raspberry Pi. El primer que heu de fer sempre quan instal·leu programari nou en un Raspberry Pi és assegurar-vos que estigui actualitzat escrivint:

sudo apt-get update

Després d’això, ens podem posar en pràctica. Ho farem instal·lant Apache2:

sudo apt-get install apache2 -y

això hauria d'instal·lar el servidor web Apache. Podeu provar-ho mitjançant un navegador a Raspberry pi i aneu a:

localhost /

o navegant des del navegador d'un altre ordinador fins a l'adreça IP del vostre Raspberry Pi. Per trobar la vostra adreça IP, feu el següent:

nom d'amfitrió -I

Si feu això, es portarà a una pàgina predeterminada del servidor web Apache. Això es pot canviar substituint index.html situat al directori / var / www / html /. Es pot substituir pel meu propi fitxer index.html.

A continuació, configurarem el servidor web Apache per poder executar fitxers PHP. Comenceu escrivint:

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

ara hauríeu de poder col·locar el fitxer sleepset.php al fitxer / var / www / html amb el fitxer index.html.

Per anar a aquesta pàgina a la vostra pròpia xarxa, haureu de configurar el vostre Raspberry Pi amb una adreça IP estàtica (o simplement podeu intentar esbrinar la nova adreça IP quan la vostra xarxa la renovi de tant en tant). Haureu d’editar un parell de fitxers perquè això funcioni. Haureu d’editar el fitxer /etc/dhcpcd.conf amb el següent:

interfície wlan0

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

Substituïu la informació de la vostra xarxa. L’únic que haureu de fer ara és reiniciar.

sudo reiniciar

La ubicació dels fitxers de l'enllaç de la unitat de Google ha de ser la següent:

  • index.html i sleepset.php s’han de col·locar al directori / var / www / html
  • sleepset.txt i sleeptrainer1_1.py s’han de col·locar al directori / home / pi / pythoncode (suggeriment: haureu de crear aquest directori)

Després de col·locar aquests fitxers al directori correcte, cal modificar el fitxer rc.local per executar el programa sleeptrainer1_1.py a l'inici. Necessitareu accés a l’arrel per modificar el fitxer rc.local, així que escriviu:

sudo nano /etc/rc.local

A l'editor, desplaceu-vos cap avall i, just abans de la línia de sortida 0, afegiu:

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

Aquí hi ha dues coses que cal recordar:

  1. Utilitzeu la ruta de fitxers absoluta perquè LINUX no pensi que el fitxer sleeptraner1_1.py es troba al mateix directori que rc.local.
  2. No us oblideu del signe i (&) al final. això permetrà a LINUX executar aquest fitxer en segon pla i continuar arrencant.

Ara, deseu el fitxer escrivint ctrl-x i, a continuació, y quan se us demani que deseu i després ENTRAR.

A continuació, escriviu sudo reboot.

Cal esmentar en algun lloc d’aquí que (com a mínim) us heu de canviar la contrasenya de Raspberry Pi mitjançant l’ordre passwd. Si encara no ho heu fet, ara seria un bon moment.

Pas 4: el codi

A continuació es mostra el codi del fitxer sleeptrainer1_1.py. He utilitzat un objecte datetime per comparar les hores amb les llegides al fitxer sleepset.txt. El fitxer de text és simplement dues línies, la primera per hora, la segona per minut. sleeptrainer1_1.py dorm durant un minut entre les iteracions de bucle per no lligar el processador. La llum verda originalment sortia massa brillant, de manera que vaig utilitzar la modulació de l'amplada de pols per disminuir-la quan es feia servir amb vermell per fer groc.

Codi Python:

importar RPi. GPIO com a GPIO

a partir de la data i hora d'importació de la data com a hora d'importació dt GPIO.setmode (GPIO. BOARD) GPIO.setwarnings (fals) red1 = 11 red2 = 16 green1 = 13 green2 = 18 blue1 = 15 blue2 = 36 GPIO.setup (red1, GPIO. OUT) GPIO.setup (vermell2, GPIO. OUT) GPIO.setup (verd1, GPIO. OUT) GPIO.setup (verd2, GPIO. OUT) GPIO.setup (blau1, GPIO. OUT) GPIO.setup (blau2, 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) return a, b def ledlight (color): if (color == "vermell"): GPIO.output (red1, GPIO. ALT) GPIO.output (vermell2, GPIO. HIGH) p1.stop () p2.stop () GPIO.output (blau1, GPIO. LOW) GPIO.output (blau2, GPIO. LOW) elif (color == "blau")): GPIO.output (red1, GPIO. LOW) GPIO.output (red2, GPIO. LOW) p1.stop () p2.stop () GPIO.output (blue1, GPIO. HIGH) GPIO.output (blue2, GPIO. ALT) elif (color == "verd"): 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 == "groc"): 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 () mentre True: settime = readset () hora, minut = setime si minut == 0: si dt (dt.now (). any, dt.now (). mes, dt.now (). dia, hora-2) <dt.now () <dt (dt.now ()).any, dt.now (). mes, dt.now (). dia, hora-1, minut + 30): ledlight ("vermell") elif dt (dt.now (). any, dt.now ().month, dt.now (). dia, hora-1, minut + 30) <dt.now () <dt (dt.now (). any, dt.now (). mes, dt.now ().dia, hora, minut): ledlight ("groc") elif dt (dt.now (). any, dt.now (). mes, dt.now (). dia, hora, minut) <dt.now () <dt (dt.now (). any, dt.now (). mes, dt.now (). dia, hora + 1, minut): ledlight ("verd") més: ledlight ("apagat") elif dt (dt.now (). any, dt.now (). mes, dt.now (). dia, ho ur-2) <dt.now () <dt (dt.now (). any, dt.now (). mes, dt.now (). dia, hora, minut-30): ledlight ("vermell") elif dt (dt.now (). any, dt.now (). mes, dt.now (). dia, hora, minut-30) <dt.now () <dt (dt.now (). any, dt.now (). mes, dt.now (). dia, hora, minut): ledlight ("groc") elif dt (dt.now (). any, dt.now (). mes, dt.now (). dia, hora, minut) <dt.now () <dt (dt.now (). any, dt.now (). mes, dt.now (). dia, hora + 1, minut): ledlight ("verd") else: ledlight ("apagat") time.sleep (60)

El fitxer index.html és un formulari bàsic dissenyat en HTML. Agafa el contingut de dos quadres de text i els passa al fitxer sleepset.php per a la gestió del formulari. El fitxer PHP simplement sobreescriu el fitxer sleepset.txt amb dades actualitzades.

Pas 5: ajuntar-ho tot

Posant-ho tot junt
Posant-ho tot junt
Posant-ho tot junt
Posant-ho tot junt
Posant-ho tot junt
Posant-ho tot junt

Amb la codificació acabada i totes les parts impreses, és el moment del muntatge. Vaig seguir aquests passos per reunir-ho tot:

  1. Practicar dos petits forats de mida RGB LED a la part inferior de la banya i col·locar els LEDs en aquests forats.
  2. Col·loqueu la banya al forat del cap de l’unicorn i estireu-la fins que quedi ben ajustada. Feu servir cola per dins per assegurar la banya.
  3. Connecteu el Raspberry Pi Zero W a l'interior del cap d'unicorn. (Potser usant pistola de cola calenta)
  4. Connecteu el cap de l’unicorn a la base de l’unicorn.
  5. Connecteu el cable d'alimentació i fixeu el conjunt sencer a la paret.
  6. Connecteu el rellotge.

En aquest punt tinc un rellotge d’ensinistrador del son per a nens en funcionament.

Pas 6: un any després …

Un any després …
Un any després …

Un any després:

Les meves noies dormen una mica més. Ens hem acostumat a despertar amb nens petits a la nostra habitació dient: "Papà, el llum és verd". i això és fantàstic. En resum, només ens despertem a les 5:30 del matí un dissabte quan ja ho planifiquem.

Coses que penso millorar en el futur:

  • Potser afegiu alguns sensors o altres elements com un micròfon i uns altaveus.
  • Potser editeu el codi per treballar amb un altaveu per utilitzar-lo com a despertador, ja que els meus fills començaran l'escola aviat.

Recomanat: