Table des matières:

Horloge d'entraînement au sommeil pour enfants : 6 étapes (avec photos)
Horloge d'entraînement au sommeil pour enfants : 6 étapes (avec photos)

Vidéo: Horloge d'entraînement au sommeil pour enfants : 6 étapes (avec photos)

Vidéo: Horloge d'entraînement au sommeil pour enfants : 6 étapes (avec photos)
Vidéo: Les rythmes du sommeil chez le nourrisson - La Maison des maternelles #LMDM 2024, Novembre
Anonim
Horloge d'entraînement au sommeil pour enfants
Horloge d'entraînement au sommeil pour enfants
Horloge d'entraînement au sommeil pour enfants
Horloge d'entraînement au sommeil pour enfants
Horloge d'entraînement au sommeil pour enfants
Horloge d'entraînement au sommeil pour enfants
Horloge d'entraînement au sommeil pour enfants
Horloge d'entraînement au sommeil pour enfants

J'avais besoin d'une horloge pour aider mes jumeaux de 4 ans à apprendre à dormir un peu plus longtemps (j'en ai assez de devoir me lever à 5h30 du matin le samedi), mais ils ne savent pas encore lire l'heure. Après avoir parcouru quelques articles sur un site d'achat très populaire, je me suis dit: « Est-ce difficile d'en faire un ? »

Voici donc ce que je pensais que je voulais dans ce projet. Il utiliserait des LED RVB (principalement parce que j'en ai une cinquantaine d'un autre projet) pour afficher trois couleurs différentes. Le rouge signifierait se rendormir, il est trop tôt pour se réveiller. Le jaune signifierait qu'ils peuvent se lever et jouer tranquillement dans leur chambre. Vert, bien sûr, signifie que vous pouvez vous lever. Je voulais aussi pouvoir ajuster l'heure, car j'aimerais dormir plus longtemps certains jours (week-ends/vacances vs jours de semaine et autres).

Fournitures

Raspberry Pi Zero W

Deux LED RVB

Six résistances de 220 Ohm

Fichiers (.stl, python, html) trouvés ici

Diverses petites vis, fils et petites pièces au besoin.

Étape 1: Impression 3D

impression en 3D
impression en 3D
impression en 3D
impression en 3D
impression en 3D
impression en 3D

Ma fille aime vraiment les licornes, donc pour ce projet j'ai remixé Unicorn Nightlight de Riven02, qui est un remix de Unicorn Trophy d'Apachcreation, qui peut être trouvé sur Thingiverse.com et utilisé sous une licence Creative Commons Non-Commercial. J'ai modifié la base de la licorne pour y installer un cordon d'alimentation pour le raspberry pi zero. Il m'est arrivé d'avoir du PLA rouge AMZ3D, donc la base et la tête de la licorne seront rouges. J'ai utilisé du PLA clair/translucide pour le klaxon. Les fichiers.stl et les paramètres que j'ai utilisés sont:

Licorne.stl

  • Hauteur de couche: 0,02
  • Épaisseur de paroi:.8
  • Nombre de lignes murales: 2
  • Remplissage: 15 %
  • Motif de remplissage: grille

LicorneBase.stl

  • Hauteur de couche: 0,02
  • Épaisseur de paroi:.8
  • Nombre de lignes murales: 2
  • Remplissage: 15 %
  • Motif de remplissage: grille

Horn.stl

  • Hauteur de couche: 0,02
  • Épaisseur de paroi: 0,8
  • Nombre de lignes murales: 3
  • Remplissage: 0

Étape 2: le circuit

Le circuit
Le circuit
Le circuit
Le circuit
Le circuit
Le circuit

Le circuit est assez facile. J'ai choisi six broches GPIO différentes pour contrôler l'activation/désactivation des différentes couleurs du RVB. Ces broches et les couleurs de LED correspondantes sont:

  • Broche 11 à RVB 1 ROUGE
  • Broche 13 à RVB 1 VERT
  • Broche 15 à RVB 1 BLEU
  • Broche 16 à RVB 2 ROUGE
  • Broche 18 à RGB 2 VERT
  • Broche 36 à RVB 2 BLEU
  • Broche 39 à la terre

Chaque broche est reliée à la résistance par une résistance de limitation de courant de 220 ohms (à l'exception de la terre bien sûr). J'ai soudé la résistance en ligne et l'ai recouverte d'un tube thermorétractable.

Étape 3: Préparation du Raspberry Pi

Je voulais pouvoir régler l'heure de l'horloge de l'entraîneur de sommeil à l'aide d'une interface Web. J'avais donc besoin de configurer un serveur Apache et PHP sur le Raspberry Pi. La première chose que vous devez toujours faire lors de l'installation d'un nouveau logiciel sur un Raspberry Pi est de vous assurer qu'il est à jour en tapant:

sudo apt-get mise à jour

Après cela, nous pouvons vraiment nous mettre au travail. Nous le ferons en installant Apache2:

sudo apt-get install apache2 -y

cela devrait installer le serveur Web Apache. Vous pouvez tester cela en utilisant un navigateur sur le Raspberry pi et en naviguant vers:

localhost/

ou en naviguant depuis le navigateur d'un autre ordinateur vers l'adresse IP de votre Raspberry Pi. Pour trouver votre type d'adresse IP:

nom d'hôte -I

Cela conduira à une page par défaut du serveur Web Apache. Cela peut être modifié en remplaçant index.html situé dans le répertoire /var/www/html/. Il peut être remplacé par mon propre fichier index.html.

Ensuite, nous allons configurer le serveur Web Apache pour pouvoir exécuter des fichiers PHP. Commencez par taper:

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

vous devriez maintenant pouvoir placer le fichier sleepset.php dans le /var/www/html avec le fichier index.html.

Pour accéder à cette page dans votre propre réseau, vous devrez configurer votre Raspberry Pi avec une adresse IP statique (ou vous pouvez simplement essayer de trouver la nouvelle adresse IP lorsque votre réseau le renouvelle de temps en temps). Vous devrez modifier quelques fichiers pour que cela fonctionne. Vous devrez modifier le fichier /etc/dhcpcd.conf avec les éléments suivants:

interface wlan0

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

Remplacez par les informations de votre réseau. La seule chose que vous aurez à faire maintenant est de redémarrer.

redémarrage sudo

L'emplacement des fichiers du lien Google Drive doit être le suivant:

  • index.html et sleepset.php doivent être placés dans le répertoire /var/www/html
  • sleepset.txt et sleeptrainer1_1.py doivent être placés dans le répertoire /home/pi/pythoncode (indice: vous devrez créer ce répertoire)

Après avoir placé ces fichiers dans le bon répertoire, le fichier rc.local doit être modifié pour exécuter le programme sleeptrainer1_1.py au démarrage. Vous aurez besoin d'un accès au niveau racine pour modifier le fichier rc.local, alors tapez:

sudo nano /etc/rc.local

Dans l'éditeur, faites défiler vers le bas, et juste avant la ligne exit 0, ajoutez:

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

Il y a deux choses à retenir ici:

  1. Utilisez le chemin de fichier absolu afin que LINUX ne pense pas que le fichier sleeptraner1_1.py se trouve dans le même répertoire que rc.local.
  2. N'oubliez pas l'esperluette (&) à la fin. cela permettra à LINUX d'exécuter ce fichier en arrière-plan et de continuer à démarrer.

Maintenant, enregistrez le fichier en tapant ctrl-x puis y lorsque vous êtes invité à enregistrer, puis ENTER.

Tapez ensuite sudo reboot.

Il convient de mentionner quelque part ici que (au minimum) vous devez modifier votre mot de passe Raspberry Pi à l'aide de la commande passwd. Si vous ne l'avez pas encore fait, ce serait le bon moment.

Étape 4: le code

Ce qui suit est le code du fichier sleeptrainer1_1.py. J'ai utilisé un objet datetime pour comparer les heures à celles lues dans le fichier sleepset.txt. Le fichier texte est simplement de deux lignes, la première pour l'heure, la seconde pour la minute. sleeptrainer1_1.py se met en veille pendant une minute entre les itérations de la boucle pour ne pas bloquer le processeur. La lumière verte sortait à l'origine beaucoup trop brillante, j'ai donc utilisé la modulation de largeur d'impulsion pour l'assombrir lorsqu'elle est utilisée avec du rouge pour faire du jaune.

Code Python:

importer RPi. GPIO en tant que GPIO

de datetime import datetime as dt import time 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(rouge2, GPIO. OUT) GPIO.setup(vert1, GPIO. OUT) GPIO.setup(vert2, GPIO. OUT) GPIO.setup(bleu1, GPIO. OUT) GPIO.setup(bleu2, 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 == "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 (couleur == "bleu"): 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 (couleur == "vert"): 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 == "jaune"): p1.start(60) p2.start(60) GPIO.output(red1, GPIO. HIGH) GPIO.output (rouge2, 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() while True: settime = readset() heure, minute = settime if minute == 0: if dt(dt.now().year, dt.now().month, dt.now().day, hour-2) < dt.now() < dt(dt.now().year, dt.now().month, dt.now().day, hour-1, minute+30): ledlight("red") elif dt(dt.now().year, dt.now().month, dt.now().day, hour-1, minute+30) < dt.now() < dt(dt.now().year, dt.now().month, dt.now().day, hour, minute): ledlight("jaune") elif dt(dt.now().year, dt.now().month, dt.now().day, hour, minute) < dt.now() < dt(dt.now().year, dt.now().month, dt.now().day, hour+1, minute): ledlight("vert") else: ledlight("off") elif dt(dt.now().year, dt.now().month, dt.now().day, ho ur-2) < dt.now() < dt(dt.now().year, dt.now().month, dt.now().day, hour, minute-30): ledlight("red") elif dt(dt.now().year, dt.now().month, dt.now().day, hour, minute-30) < dt.now() < dt(dt.now().year, dt.now().month, dt.now().day, hour, minute): ledlight("jaune") elif dt(dt.now().year, dt.now().month, dt.now().day, hour, minute) < dt.now() < dt(dt.now().year, dt.now().month, dt.now().day, hour+1, minute): ledlight("vert") else: ledlight("off") time.sleep(60)

Le fichier index.html est un formulaire de base conçu en HTML. Il prend le contenu de deux zones de texte et le transmet au fichier sleepset.php pour la gestion du formulaire. Le fichier PHP écrase simplement le fichier sleepset.txt avec les données mises à jour.

Étape 5: Tout assembler

Mettre tous ensemble
Mettre tous ensemble
Mettre tous ensemble
Mettre tous ensemble
Mettre tous ensemble
Mettre tous ensemble

Une fois le codage terminé et toutes les pièces imprimées, il est temps de procéder à l'assemblage. J'ai suivi ces étapes pour tout assembler:

  1. Percez deux petits trous de la taille des LED RVB dans le bas du klaxon et placez les LED dans ces trous.
  2. Placez la corne dans le trou de la tête de licorne et tirez-la jusqu'à ce qu'elle soit bien serrée. Utilisez de la colle de l'intérieur pour fixer la corne.
  3. Fixez le Raspberry Pi Zero W à l'intérieur de la tête de licorne. (En utilisant un pistolet à colle chaude peut-être)
  4. Attachez la tête de licorne à la base de licorne.
  5. Branchez le cordon d'alimentation et fixez l'ensemble au mur.
  6. Branchez l'horloge.

À ce stade, j'ai une horloge d'entraînement au sommeil pour enfants qui fonctionne.

Étape 6: Un an plus tard…

Un an plus tard …
Un an plus tard …

Un an plus tard:

Mes filles dorment un peu plus longtemps. Nous nous sommes habitués à nous réveiller avec des petits enfants dans notre chambre en disant: « Papa, le feu est vert ». et c'est super. Pour faire court, nous ne nous réveillons qu'à 5h30 du matin un samedi lorsque nous le planifions plus.

Ce que je prévois d'améliorer à l'avenir:

  • Peut-être en ajoutant des capteurs ou d'autres éléments comme un micro et des haut-parleurs.
  • Peut-être modifier le code pour travailler avec un haut-parleur à utiliser comme réveil car mes enfants vont bientôt commencer l'école.

Conseillé: