Horloge infinie contrôlée par smartphone : 5 étapes (avec photos)
Horloge infinie contrôlée par smartphone : 5 étapes (avec photos)
Anonim
Image
Image
Horloge infinie contrôlée par smartphone
Horloge infinie contrôlée par smartphone
Horloge infinie contrôlée par smartphone
Horloge infinie contrôlée par smartphone

J'ai vu de nombreux projets d'Infinity Mirrors et d'Infinity Clocks sur Instructables, j'ai donc décidé de faire le mien. Ce n'est peut-être pas très différent des autres… mais je l'ai fait moi-même, c'est ainsi !

Image
Image

Au cas où vous ne le sauriez pas déjà:

Qu'est-ce qu'une horloge à l'infini ?

Une horloge à l'infini utilise des reflets multiples entre un miroir et un miroir semi-réfléchissant pour donner l'illusion d'une grande profondeur alors qu'elle n'a qu'un centimètre de profondeur !

L'heure est indiquée par des LED qui réfléchissent plusieurs fois entre ces interfaces et donnent cette impression de profondeur.

Image
Image

De multiples reflets donnent une impression de profondeur

Les LED sont adressables et multicolores, il est donc facile de les utiliser pour faire des animations lumineuses.

Je voulais le rendre interactif et évolutif, j'ai donc ajouté une commande Smartphone utilisant la communication Bluetooth. Il existe une véritable communication bidirectionnelle entre l'horloge et le smartphone. L'utilisateur peut utiliser l'IHM (Interface Homme Machine) pour modifier les différents paramètres, tels que les animations, les couleurs. Mais elle peut aussi envoyer des commandes directes par exemple pour changer l'heure, et l'horloge répond pour dire que la commande est acceptée ou non.

L'IHM a été réalisée à l'aide d'une application Android programmable, il me suffisait donc de la concevoir et de coder la communication côté Arduino.

Image
Image

Commençons maintenant…

Étape 1: De quoi avez-vous besoin ?

De quoi avez-vous besoin?
De quoi avez-vous besoin?
De quoi avez-vous besoin?
De quoi avez-vous besoin?
De quoi avez-vous besoin?
De quoi avez-vous besoin?
De quoi avez-vous besoin?
De quoi avez-vous besoin?

Pour construire cette horloge à l'infini, voici ce dont vous avez besoin (les prix sont indicatifs):

  • Un Arduino nano (2 USD)
  • Une bande led adressable, telle que les leds WS2812, 60 leds par mètre (6 USD)
  • Un module bluetooth, comme le HC-05 (3 USD)
  • Une planche à pain (1,5 USD)
  • Une alimentation 5V, capable de délivrer 4A ou plus
  • Quelques fils électriques
  • Un smartphone sous Android et l'application Bluetooth Electronics de KeuwlSoft
  • Quelques morceaux de panneaux de fibres de moyenne densité (MDF, un de 3 mm d'épaisseur et un de 10 mm d'épaisseur)
  • Une plaque en plexiglas ou plexiglas transparent (environ 15 à 20 USD)
  • Films adhésifs miroir et un miroir semi-réfléchissant (de 4 à 15 USD)
  • Connecteurs, résistances et une capacité de 1000µF
  • De la colle et du ruban adhésif.
Image
Image

Schéma de principe de la géométrie de l'horloge

La plaque en plexi doit avoir une épaisseur de 2 à 3 mm afin qu'elle reste fermement en place lors de l'utilisation.

Le schéma ci-dessus explique la géométrie de l'horloge. La bande led est placée entre les deux miroirs. Bien sûr, vous avez besoin de 60 de ces leds sur la bande. Vous pouvez trouver des bandes led en ligne avec 60 leds par mètre, donc l'une d'entre elles est bonne. Alors le périmètre du cercle led étant de 1m, son diamètre est de 100/PI = 31,8 cm (environ 12,53 pouces).

Préparez vos composants

Découpez un cercle de ce diamètre dans le panneau MDF de 3 mm. Pour ce faire, je suis allé au fablab local et j'ai demandé à utiliser la découpeuse laser. Ils peuvent même le faire pour vous, si vous leur demandez gentiment et que vous venez avec la planche: cela ne prend que quelques secondes. Pendant que vous y êtes, découpez le même disque dans votre plaque de plexiglas.

De la plaque MDF, vous avez maintenant un disque et la plaque avec le trou circulaire. Gardez-les tous les deux pour plus tard.

Pour maintenir les LED en place, découpez également dans le MDF de 1cm d'épaisseur un fin cylindre de même diamètre. L'épaisseur n'a pas d'importance tant qu'elle n'est pas trop fragile. La bande LED sera placée à l'intérieur de ce cylindre, il est donc important que le périmètre intérieur soit le même que la longueur de la bande. Trop long ou trop court, et certaines leds peuvent être espacées de manière irrégulière, soyez donc très précis ici.

La découpe d'une plaque aussi épaisse peut prendre un peu plus de temps que la découpe d'une plaque mince. Demandez au propriétaire du fablab si son découpeur laser est assez puissant pour couper cette épaisseur. Pour moi, le laser a dû passer plus de dix fois pour cette partie, contre seulement deux pour l'autre plaque.

Vous pouvez également…

Il est également possible d'utiliser ici des panneaux de plexiglas transparents ou colorés à la place du MDF. Le plexiglas existe en plusieurs coloris, du noir au jaune en passant par le vert et le violet, alors n'hésitez pas à les essayer.

Image
Image

Le fablab sait les découper, et la découpe du plexiglas est très "propre" par rapport au bois qui peut "brûler" (je veux dire changer de couleur à cause de l'énergie laser) au niveau du trajet laser. Le plexiglas miroir existe également, ce qui peut vous éviter d'acheter le film miroir. N'oubliez pas en le coupant, d'envoyer le laser sur la face arrière du miroir…

Vous trouverez ci-dessous les fichiers de géométrie pour la découpe laser.

Étape 2: Assembler l'horloge

Assembler l'horloge
Assembler l'horloge
Assembler l'horloge
Assembler l'horloge
Assembler l'horloge
Assembler l'horloge
Assembler l'horloge
Assembler l'horloge

Pour réaliser l'horloge, il suffit d'assembler les pièces, selon le schéma.

Préparer le dossier

Tout d'abord, collez le film miroir sur le disque MDF. Ce sera le fond de l'horloge.

Deuxièmement, collez le film semi-transparent sur le disque de plexiglas. Cela forme le verre avant de l'horloge. Ce disque sera inséré dans la plaque MDF, dans le trou du cercle: collez-le à l'aide de colle à bois si nécessaire, ou utilisez du caoutchouc silicone.

Enfin, préparez les LED. Les LED WS2812 utilisent 3 plots de connexion: alimentation tension, masse et commande. S'il y a déjà 3 fils électriques connectés, il suffit de les utiliser. Sinon souder 3 fils aux plots de connexion. N'oubliez pas que les LED sont des dispositifs polarisés: cela signifie que le courant ne circule que dans un seul sens. Cette direction est indiquée sur la bande par une flèche. Ensuite, vous devez souder les fils à l'extrémité de la bande d'où viennent les flèches (pas l'extrémité vers laquelle pointent les flèches).

Collez les LED à l'intérieur du cylindre en MDF épais et assemblez les 3 parties, avec de la colle et/ou du ruban adhésif.

Image
Image

Ensuite la partie électronique

Mettez l'Arduino dans la maquette et créez le circuit comme indiqué ci-dessus. Assurez-vous que toutes les masses (GND) sont connectées (GND d'Arduino, module HC-05, bande LED et alimentation).

  • Les broches RX et TX du module Bluetooth HC-05 sont connectées aux broches D3 et D2 de l'Arduino
  • La ligne de données de la bande LED est connectée à la broche D12, vous pouvez insérer une résistance de 300 Ohms entre les deux si vous en avez une.

Si vous souhaitez modifier les broches, modifiez leurs définitions dans le code en conséquence (lignes 7 et 13 du fichier ino).

Notez que le module HC-05 nécessite un diviseur de tension pour sa broche RX, comme indiqué ci-dessous. Il vous faut donc une résistance 1000 Ohms et une résistance 2000 Ohms.

Image
Image

L'alimentation est utilisée à la fois pour l'Arduino et la bande LED. Connectez d'abord le condensateur 1000µF dans une borne à vis (domino). Vous pouvez utiliser un connecteur rapide si vous en avez. Voir ici pour plus de détails.

Image
Image

Ce condensateur peut aussi être polarisé: assurez-vous que les pattes + et - sont connectées aux + et - de l'alimentation. Comme on peut le voir sur l'image du condensateur, la jambe - est étiquetée avec un gros signe moins.

Image
Image

Ensuite, à partir du connecteur, branchez les fils électriques pour connecter la bande LED et la carte Arduino. Comme dit ci-dessus, tous les GND doivent être connectés ensemble. A partir du potentiel positif de l'alimentation, connectez le fil 5V de la réglette et tirez un fil sur la broche 5V de l'Arduino: laissez-le déconnecté pour le moment, vous le connecterez à la fin.

Vérifiez tout… deux fois

Vérifiez toutes les connexions deux fois… Utilisez un multimètre si vous en avez un pour vérifier la continuité électrique.

Si tout est correct, votre horloge est presque prête. Ne le fournissez pas pour l'instant.

Étape 3: Téléchargez le code

Télécharger le code
Télécharger le code
Télécharger le code
Télécharger le code
Télécharger le code
Télécharger le code

Programmons

Pour télécharger le code dans l'Arduino nano, utilisez l'IDE Arduino. Mettez tous les fichiers dans un dossier appelé "Horloge_LED3_nano_BTOK" dans votre dossier Arduino. Ouvrez l'IDE, sélectionnez les paramètres appropriés (type de carte, port COM, etc.) et cliquez sur le bouton de téléchargement.

Image
Image

Sur votre smartphone Android, installez l'application Bluetooth Electronics, vous pourrez la retrouver facilement sur Google Play. Téléchargez le fichier "BluetoothElectronicsCode.txt" à partir de ce Instructable et changez l'extension en zip: vous obtiendrez une archive zip avec le code pour que l'interface du smartphone fonctionne avec Bluetooth Electronics.

Lorsque vous êtes prêt, branchez l'alimentation. Les leds s'allumeront, le module HC-05 s'éteindra également pour rechercher la connexion. Lancez l'application Android et suivez les instructions pour coupler le module Bluetooth avec votre smartphone. Lorsque vous êtes prêt, lancez l'IHM: vous êtes prêt à jouer !

Noter que…

La première LED de la bande doit être placée au-dessus de l'horloge. Si vous ne l'avez pas placé là, vous pouvez modifier la valeur du paramètre offset dans le code (ligne 65 du fichier ino). Il s'occupe de ça.

Lorsque vous avez collé la bande LED à l'intérieur du cylindre peu profond, il y avait 2 options: soit la bande tourne dans le sens des aiguilles d'une montre, soit dans le sens inverse des aiguilles d'une montre. Si vous l'avez mal fait, les aiguilles de l'horloge tourneront dans le mauvais sens ! Pas de soucis. Il suffit de changer la valeur de la variable booléenne sens_horaire à true (ligne 77 du fichier ino)

Image
Image

Étape 4: Profitez

Prendre plaisir!
Prendre plaisir!
Prendre plaisir!
Prendre plaisir!
Prendre plaisir!
Prendre plaisir!

Un dernier réglage…

Maintenant, réglez l'heure. Cela peut être fait en utilisant des commandes simples que vous tapez dans la petite console dans la partie inférieure gauche de l'IHM.

  • Hxx: régler les heures sur xx (ex: H4)
  • Myy: régler les minutes (ex: M15)
  • Szz: régler les secondes (ex: S30)

Les commandes peuvent être enchaînées en insérant une étoile entre elles, par exemple: H4*M15*S35

Le réglage des heures et/ou des minutes remettra les secondes à zéro.

Vous verrez alors que l'heure est tracée par une LED ROUGE, les minutes par une LED VERTE:

Image
Image

Il est 9:52:00 !

La couleur des secondes peut être modifiée à l'aide du curseur sur l'IHM

Image
Image

Lorsque vous déplacez le curseur, le petit cercle sur le côté droit indique la couleur actuelle. Lorsque le curseur s'arrête, il envoie la couleur à l'horloge et la LED des secondes change en conséquence.

Les curseurs ANIMATION et PALETTE peuvent être utilisés pour sélectionner et personnaliser les animations lumineuses sur l'horloge. Testez-les et regardez la vidéo pour quelques exemples. Lorsque vous modifiez certains paramètres sur l'IHM, la petite console affiche la réponse de l'Arduino.

Animations…

  • 0: affiche simplement l'heure, vous pouvez changer la couleur des secondes à l'aide du curseur.
  • 1: Un fond coloré (vous pouvez changer la couleur) d'amplitude variable.
  • 2: Arc-en-ciel tournant
  • 3: Une bande colorée (qui peut être modifiée) qui fait un tour par seconde.
  • 4: Une bande colorée qui rebondit sur la trotteuse.
  • 5: Un fond coloré (vous pouvez changer de palette) d'amplitude aléatoire.
  • 6: Affiche juste l'heure, l'aiguille des secondes change son amplitude lumineuse.
  • 7: Drapeaux tournants (changer la palette pour changer le drapeau parmi 4 possibles)
Image
Image

Le drapeau français -- il est 7:11:51

Une autre animation a été récemment ajoutée, qui change toutes les 15 secondes pour une animation choisie au hasard.

Le bouton MINUTES allume et éteint les LED blanches toutes les 5 minutes sur l'horloge.

Image
Image

Il est 7:11:25

A noter que la vidéo et les photos ont été réalisées avec un smartphone et sont donc de mauvaise qualité. Les couleurs sont bien plus vives et précises au compteur que ce à quoi elles ressemblent sur la vidéo…

Quoi d'autre?

J'espère que vous aimerez faire cette horloge à l'infini. Il reste beaucoup à faire: vous pouvez peindre la plaque avant en MDF pour la rendre plus jolie, ajouter une autre bande led sur le côté extérieur du cylindre pour avoir un peu de lumière animée sur le mur aussi, etc.

Image
Image

Étape 5: Nouvelle version pour garder une heure précise

L'horloge de l'Arduino nano a tendance à dériver dans le temps, car elle n'a pas d'horloge précise. J'ai fait une autre version en utilisant une horloge temps réel (RTC) pour garder une heure précise.

Les RTC existent sous différents modèles, je recommande d'utiliser un module DS3231, qui est très précis (comparé au DS1307). Cette nouvelle version du programme utilise la bibliothèque MD-DS3231, disponible ici. Créez simplement un nouveau dossier appelé Horloge_LED3_nano_BT_RTC dans votre dossier Arduino et téléchargez tous les fichiers.

Connectez le DS3231 en tant que périphérique I2C, c'est-à-dire SDA à A4 et SCL (ou SCK) à A5

Tout d'abord, vous devez régler l'heure du RTC. Voir par exemple ce Instructables ou ce tutoriel.

Téléchargez le fichier Horloge_LED3_nano_BT_RTC.ino sur votre Arduino nano et exécutez-le. L'heure est actualisée toutes les 30 minutes, de sorte que l'horloge reste précise tout le temps.

Bien sûr, vous devez avoir la batterie sur le module RTC, car elle maintient le RTC en vie même s'il n'est pas alimenté par l'Arduino, et il peut garder l'heure exacte.

Conseillé: