Table des matières:

NeoClock : 7 étapes (avec photos)
NeoClock : 7 étapes (avec photos)

Vidéo: NeoClock : 7 étapes (avec photos)

Vidéo: NeoClock : 7 étapes (avec photos)
Vidéo: New Products 4/9/2014 2024, Novembre
Anonim
Image
Image

Il s'agit de construire une horloge en utilisant les fantastiques anneaux néopixels d'Adafruit. La chose amusante à propos de cette horloge est qu'elle a en fait deux anneaux de néopixels, un pour indiquer les heures et un pour les minutes, les secondes et les millisecondes. L'horloge garde l'heure parfaite grâce à la puce DS3234 DeadOn Real Time Clock de Sparkfun. Facile à construire et amusant à modifier. J'espère que cela inspirera d'autres à construire des horloges ou d'autres objets d'art en utilisant les anneaux néopixels.

Pour ceux d'entre vous qui souhaitent obtenir tous mes fichiers dans un format simple à gérer, n'hésitez pas à les télécharger depuis mon référentiel github pour ce projet à l'adresse

Étape 1: Conception de l'horloge

Concevoir l'horloge
Concevoir l'horloge
Concevoir l'horloge
Concevoir l'horloge
Concevoir l'horloge
Concevoir l'horloge
Concevoir l'horloge
Concevoir l'horloge

Je savais depuis le début que je voulais utiliser au moins deux anneaux de néopixels. Après quelques travaux, j'ai décidé que le meilleur design serait d'avoir un anneau dans l'autre, qui conserve la forme originale d'une horloge. Le plus petit anneau serait les heures et le temps restant serait conservé sur le plus grand anneau. Certaines considérations de conception comprenaient le coût des néopixels, la puissance requise, la taille des pièces découpées au laser et le type d'art que je voulais y mettre.

Une fois cette étape terminée, j'ai décidé que je devais comprendre l'électronique avant de créer les plans de découpe au laser du corps de l'horloge.

Étape 2: Conception de l'électronique

Conception de l'électronique
Conception de l'électronique
Conception de l'électronique
Conception de l'électronique
Conception de l'électronique
Conception de l'électronique
Conception de l'électronique
Conception de l'électronique

Concevoir l'électronique revenait à connaître à l'avance les éléments que je voulais dans l'horloge:

  • Anneaux néopixels (60 et 24)
  • Arduino (le cerveau)
  • Règlement de l'horloge (les arduinos ne tiennent pas l'heure)
  • Gestion de l'alimentation

La taille et les exigences de puissance des néopixels sont bien documentées. Comme ils fonctionnent sur 5V DC, j'ai décidé d'utiliser un Arduino 5V et de me simplifier les choses. L'espace étant une considération, j'ai décidé de prototyper sur un Arduino Uno ordinaire, mais pour l'électronique finale, j'ai choisi un Arduino Mini.

La première itération de ce projet est venue directement de la page NeoPixel Basic Connections d'Adafruit. J'ai inclus le diagramme du site Web pour rendre les choses plus faciles. Deux choses sont importantes à partir de ceci:

  1. Un condensateur de 1000uF est nécessaire pour empêcher la secousse de courant initiale d'endommager les pixels.
  2. Une résistance de 470 ohms est nécessaire sur le premier pixel de l'anneau de 60 comptes (cette résistance est intégrée dans l'anneau de 24 comptes)

Adafruit propose également un ensemble de bonnes pratiques NeoPixel que vous devriez lire avant de poursuivre la conception.

Garder l'heure sur l'horloge est un autre problème. L'horloge intégrée sur l'arduino n'est pas suffisante pour garder l'heure sur de longues périodes de temps. Un problème plus grave est que l'heure sur l'arduino peut devoir être réinitialisée à chaque fois. Les ordinateurs résolvent ce problème en utilisant une petite batterie sur la puce d'horloge pour garder le temps entre les coupures de courant. Dans le passé, j'utilisais quelque chose comme le ChronoDot d'Adafruit. Mais dans ce cas, je voulais une excuse pour utiliser le DS3234 (DeadOn RTC) de SparkFun. Vous pouvez également conserver des informations de date sur le DeadOn RTC si vous souhaitez les intégrer dans l'horloge.

Enfin, la gestion de l'alimentation nécessitait une certaine considération. Je savais déjà que tout devait être en 5V, mais la quantité de courant nécessaire semblait être un mystère. Un régulateur de tension commun dans la plupart des projets est le L7805. Cela prendra des tensions jusqu'à 24V et un courant maximum jusqu'à 1,5A. Je savais que j'avais un moût mural 12V 1.5A qui traînait, alors j'ai décidé que ce serait le régulateur de tension parfait (et pas cher !) pour le projet.

Les pièces restantes allaient provenir de ma boîte de pièces ou de Radio Shack. Ils comprenaient les fils, les commutateurs et la prise d'alimentation CC.

Étape 3: Construire l'électronique

Construire l'électronique
Construire l'électronique
Construire l'électronique
Construire l'électronique
Construire l'électronique
Construire l'électronique

Une liste complète de l'électronique que j'ai achetée pour construire ce projet peut être trouvée dans mon référentiel github ici: Liste des pièces électroniques. Il contient des liens vers la page du produit pour chaque pièce et comprend des informations supplémentaires, notamment le SKU du produit. J'ai prototypé cela rapidement sur une planche à pain et je suis passé à la découpe et à la construction au laser avant de prendre des photos. Cependant, je l'ai construit pour qu'il soit facile à démonter, j'ai donc décomposé les pièces sur les photos ci-dessus pour vous.

Regardez attentivement les images car les fils ont été intentionnellement pliés de manière à être faciles à suivre et à garder tout le profil de l'électronique mince. Faire ce prototypage initial avant la conception découpée au laser m'a permis de vérifier l'épaisseur des pièces afin de pouvoir déterminer les dimensions finales du corps de l'horloge.

Vous remarquerez que j'ai fait quelques planches à pain personnalisées. J'ai essayé de prendre des photos du dos de ces planches afin que vous puissiez les répéter. Vous pouvez acheter un assortiment de planches à pain comme celles-ci pour quelques dollars et les adapter à votre projet.

Le câblage est simple, mais les éléments importants à retenir des images sont les suivants:

  • Les commutateurs Mode et Set auront besoin de résistances d'abaissement. J'ai utilisé des résistances de 2.21Ohm que j'avais qui traînaient mais n'importe quelle petite résistance fonctionnera (de préférence pas moins de 1kOhm). Cela stabilise les broches d'entrée Arduino connectées de sorte que lorsqu'elles deviennent hautes, elles se distinguent du bruit.
  • L'onde carrée (SQW) sur le DS3234 a été mise à la terre car elle n'est pas utilisée.
  • L'alimentation du L7805 est mise dans l'Arduino Mini en broche RAW. Mettez toujours la puissance qui entre dans l'Arduino en RAW.
  • Le premier pixel de l'anneau de 60 néopixels est doté d'une résistance de 470 ohms pour réduire les dommages causés au premier pixel par les pics de données. Cela ne devrait pas être un problème puisque le néopixel 24 points a déjà une résistance intégrée pour cela, mais mieux vaut prévenir que guérir.
  • Les interrupteurs Mode et Set sont des interrupteurs à bouton-poussoir momentanés SPST

Les couleurs des fils sont:

  • Rouge: +5VDC
  • Noir: Terre
  • Vert: Données
  • Jaune, Bleu, Blanc: Fils spéciaux pour DS3234

Si c'est la première fois que vous utilisez des néopixels, vous devez vous rappeler qu'ils peuvent être considérés comme une longue chaîne. Il peut donc sembler étrange de parler d'un "premier pixel" dans un anneau, mais en fait il y a un début et une fin à chaque chaîne dans les anneaux. Dans ce projet, les 24 pixels du petit anneau viennent en premier et les 60 pixels du plus grand anneau viennent après. Cela signifie vraiment que j'ai une chaîne de 84 néopixels.

Pour le câblage sur l'Arduino Mini:

  • DS3234 se connecte sur les broches 10 - 13
  • Les commutateurs Mode et Set sont sur les broches 2 et 3
  • Les données néopixel proviennent de la broche 6.

Je recommande également de mettre les 6 en-têtes au bas de l'Arduino Mini afin que vous puissiez le programmer via un câble FTDI.

Une note importante sur le courant: Cette horloge nécessite beaucoup. Je suis sûr que je pourrais le résoudre, mais mon expérience pratique est que tout ce qui est égal ou inférieur à 500 mA finira par provoquer des baisses de tension. Cela se manifeste par le fait que l'horloge clignote dans des couleurs folles et ne garde pas l'heure. Mon moût mural final est de 12 V et 1,5 A et je n'ai jamais eu de problème avec. Cependant, 1,5 A est la limite que le régulateur de tension (et d'autres pièces) prendra. Ne dépassez donc pas ce montant.

Étape 4: coder l'horloge

Codage de l'horloge
Codage de l'horloge

Le code complet de l'horloge se trouve dans le code NeoClock sur GitHub. J'ai inclus le fichier ici, mais tout changement se produira dans le référentiel.

Je trouve qu'écrire du code peut être intimidant si vous essayez de tout faire en même temps. Au lieu d'y aller, j'essaie de partir d'un exemple de travail et de créer des fonctionnalités au fur et à mesure que j'en ai besoin. Avant d'entrer dans le vif du sujet, je tiens à souligner que mon code provient de la combinaison de nombreux exemples des référentiels suivants et du forum Arduino CC. Donnez toujours le crédit là où il est dû !

  • https://github.com/adafruit/Adafruit_NeoPixel
  • https://github.com/zeroeth/time_loop
  • https://github.com/sparkfun/DeadOn_RTC

Quelques exemples de code de ces référentiels peuvent être trouvés dans mon répertoire d'exemples de code

L'ordre des opérations que j'ai utilisé pour créer le code ressemblait à ceci:

  • Confirmez que les néopixels fonctionnent avec l'exemple de test de brin
  • Essayez d'exécuter une horloge avec le code de boucle temporelle
  • Modifier l'horloge pour qu'elle fonctionne sur deux sonneries au lieu d'une seule
  • Ajoutez le DS3234 pour garder l'heure via l'exemple DeadOn RTC
  • Ajouter le mode et régler les commutateurs
  • Ajouter du code Debounce avec l'aide du didacticiel Arduion Debounce
  • Ajoutez des thèmes de couleurs pour les LED de l'horloge
  • Ajoutez des animations pour les marques de 0, 15, 30 et 45 minutes
  • Ajoutez des points cardinaux à l'horloge pour orienter les marques de 0, 15, 30 et 45 minutes

Si vous voulez voir comment j'ai construit ce code, vous pouvez réellement utiliser GitHub pour examiner chaque validation de code. L'historique de l'horloge se trouve dans l'historique de validation.

Les schémas de couleurs étaient amusants à ajouter, mais au final, je n'en ai inclus que quatre dans le menu. Chaque thème définit une couleur spécifique sur les "aiguilles" des heures, des minutes, des secondes et des millisecondes. Vraiment, les options sont infinies ici, mais j'ai inclus les thèmes (noms de méthode répertoriés):

  • setCouleurBleu
  • setCouleurRouge
  • setCouleurCyan
  • setCouleurOrange

Cependant, vous pouvez trouver ces méthodes supplémentaires dans le code:

  • setColorPrimary
  • setCouleurRoyal
  • setColorTequila

Des animations ont été ajoutées parce que j'aimais l'idée des vieilles horloges sonnant aux quatre quarts d'heure de l'horloge. Pour cette horloge j'ai réalisé les animations suivantes:

  • 15 minutes: colorier les anneaux en rouge
  • 30 minutes: coloriez les anneaux en vert
  • 45 minutes: colorier les anneaux en bleu
  • Top of the Hour: faire un arc-en-ciel sur les deux anneaux

La facilité d'utilisation s'est avérée être un problème avec l'horloge car personne ne pouvait orienter l'horloge. Ce ne sont que deux anneaux de LED après tout. Donc, pour résoudre le problème, j'ai ajouté les points cardinaux à l'horloge. Cela a beaucoup amélioré la capacité de lire l'heure. Si j'avais su cela avant d'envoyer les pièces découpées au laser, j'aurais peut-être ajouté quelque chose à l'art à la place. Mais il s'avère que vous ne pouvez pas voir l'art aussi bien dans l'obscurité, donc avoir les points cardinaux aide vraiment. Une considération avec ceci est que lorsque vous décidez de colorer un pixel, vous devez d'abord capturer la couleur actuelle et créer une nouvelle couleur mélangée. Cela lui donne un aspect plus naturel.

Un dernier détail concerne les millisecondes. Les millisecondes sur l'Arduino proviennent du cristal Arduino interne et non du DS3234. C'est à vous de décider si vous voulez afficher les millisecondes ou non, mais je l'ai fait, l'horloge semblait toujours faire quelque chose. Cela peut vous déranger que les millisecondes et les secondes ne s'alignent pas toujours, mais dans la pratique, personne ne m'en a jamais parlé en regardant l'horloge et je pense que ça a l'air bien.

Étape 5: Conception des fichiers découpés au laser

Conception des fichiers découpés au laser
Conception des fichiers découpés au laser
Conception des fichiers découpés au laser
Conception des fichiers découpés au laser
Conception des fichiers découpés au laser
Conception des fichiers découpés au laser
Conception des fichiers découpés au laser
Conception des fichiers découpés au laser

Il y a deux considérations que j'ai dû prendre en compte lors de la conception des fichiers découpés au laser. Le premier était le matériau à partir duquel je voulais le construire et le second était la façon dont il serait construit. Je savais que je voulais une finition bois avec de l'acrylique pour diffuser les néopixels. Pour comprendre le matériel, j'ai d'abord commandé des échantillons à Ponoko:

  • 1x Placage MDF - Noyer
  • 1x Placage MDF - Cerisier
  • 1x Acrylique - Gris Clair
  • 1x Acrylique - Opale

Les sélections de bois m'ont permis de voir à quoi ressemblerait la rastérisation et à quoi ressemblerait la brûlure sur le côté de l'horloge. L'acrylique me permettrait de tester la diffusion des néopixels et de comparer son apparence avec le bois. Finalement, j'ai opté pour du bois de cerisier avec de l'acrylique opale.

Les dimensions de l'horloge étaient principalement déterminées par la taille des anneaux néopixels. Ce que je ne savais pas, c'est à quel point il devait être épais pour s'adapter à l'électronique. Après avoir construit l'électronique et sachant que le bois avait une épaisseur d'environ 5,5 mm, j'ai déterminé que j'avais besoin d'environ 15 mm d'espace à l'intérieur de l'horloge. Cela signifiait trois couches de bois. Mais avec l'avant et l'arrière occupant déjà la majorité de l'espace dans ma conception, j'avais besoin de diviser ces anneaux en « nervures » que je pourrais coller ensemble plus tard.

J'ai utilisé InkScape pour dessiner sur le modèle fourni par Ponoko. Après avoir dessiné le corps de l'horloge, je me suis mis à dessiner l'arbre à la main. Je ne pouvais pas importer l'image originale qui m'a inspiré, mais ce n'était pas terrible de trouver moi-même comment faire quelque chose de similaire.

Le coût des matériaux n'était que d'environ 20 $, mais le coût de la coupe s'est avéré être d'environ 100 $ de plus. Deux choses y ont contribué:

  • Les courbes et les cercles coûtent plus cher car la machine se déplace sur deux axes et cette conception a beaucoup de courbes
  • La rastérisation nécessite de nombreux allers-retours à travers la pièce. L'abandonner aurait permis d'économiser le plus d'argent, mais j'ai bien aimé.

Après avoir finalisé le design, j'ai envoyé les fichiers EPS à Ponoko et mes pièces ont été réalisées environ une semaine plus tard.

Notez que je n'ai pas inclus les commutateurs Mode et Set ou la prise d'alimentation CC dans la conception. Quand j'ai envoyé ça, je n'avais toujours pas décidé de ces pièces. Pour me donner plus de flexibilité, je les ai laissés de côté et j'ai décidé de les percer plus tard à la main.

Étape 6: Construire l'horloge

Construire l'horloge
Construire l'horloge
Construire l'horloge
Construire l'horloge
Construire l'horloge
Construire l'horloge
Construire l'horloge
Construire l'horloge

Quand toutes les pièces sont arrivées, j'ai construit l'horloge. La première étape était le corps de l'horloge qui m'a demandé de percer les côtes et de les coller à l'arrière et à l'avant. J'ai mis deux couches de nervures à l'arrière et une couche à l'avant et les ai fixées avec de la colle à bois. Pour le devant, j'ai utilisé de la colle à bois pour assembler les anneaux acryliques et les cercles de bois. J'avais une pièce centrale de rechange que j'avais découpée comme un blanc qui m'a été utile pendant la construction. Je l'ai collé à l'arrière du morceau d'arbre et cela m'a donné un endroit où je pourrais coller les néopixels plus tard.

Avec le corps construit, j'ai décidé de percer des trous pour les commutateurs et la prise d'alimentation. Un peu de géométrie (comme on le voit sur la photo) m'a aidé à tout aligner. En utilisant un morceau de bois séparé à l'extérieur pendant que je percais (très soigneusement!), J'ai fait les trous et collé les commutateurs et la prise.

L'électronique est passée ensuite. J'ai d'abord collé les néopixels, puis le condensateur. Ceux-ci que j'ai câblés dans la carte de dérivation de puissance néopixel. Ensuite pour le dos j'ai mis les fils sur les interrupteurs et la prise d'alimentation. J'ai également inclus le régulateur de tension L7805.

Une note rapide sur l'orientation des anneaux. Pour le grand anneau de 60 pixels il faut orienter l'horloge de manière à ce que l'un des pixels soit exactement en haut pour marquer le zéro minute. Quel pixel n'a pas d'importance et j'y reviendrai dans une minute. Pour le petit anneau de 24 pixels, vous devez orienter l'horloge de manière à ce que le haut soit en fait entre deux pixels. La raison en est que si vous voulez marquer 12 heures, vous finissez par éclairer deux pixels au lieu d'un. En ayant le décalage, et avec la diffusion du plastique, on aura l'impression d'avoir vraiment 12 pixels de large.

En ce qui concerne le pixel désigné par le code comme "haut" pour chaque anneau, vous devez modifier un peu le code. J'ai deux valeurs dans mon code nommées "inner_top_led" et "outer_top_led". Dans mes horloges, le "inner_top_led" était à 11 pixels du début du petit anneau et le "outer_top_led" était à 36 pixels du début du grand anneau. S'il vous arrivait d'orienter les anneaux différemment, vous modifieriez ces valeurs pour qu'elles soient celles de votre orientation. Un peu d'expérimentation et vous trouverez assez rapidement la bonne valeur.

À ce stade, j'ai testé que tout fonctionnait comme prévu.

Mais comme pour tout projet, j'ai rencontré un problème lorsque j'ai réalisé que je n'avais pas compris comment cela tiendrait. J'ai remarqué que j'avais environ 3/8 de pouce d'espace entre les néopixels et les nervures, alors je me suis dirigé vers Home Depot et j'ai obtenu un goujon de 3/8 de pouce et un certain nombre d'aimants en néodyme. J'ai construit de petits supports en bois à trois endroits et les ai poncés pour pouvoir mettre deux aimants sur chaque support (en utilisant de la super colle). Je me suis retrouvé avec 3 paires de 2 supports chacune. Ensuite, je les ai collés dans le cadre et j'ai tout maintenu en place avec une pince. J'ai fait cela pendant que la colle sur les supports était humide pour que tout s'aligne et sèche au bon endroit. Cela a parfaitement fonctionné et j'aime que la version soit entièrement cachée.

Enfin, j'ai compris que je devais l'accrocher au mur, alors j'ai percé un petit hangar à l'arrière pour pouvoir l'accrocher au mur.

Étape 7: Réflexions finales

Ce projet a été très amusant à construire et j'ai aimé découvrir les néopixels et le DS3234. J'ai particulièrement aimé enfin construire un projet qui avait l'air sympa du début à la fin. Il y a quelques choses que je mettrais à jour si je le faisais à nouveau, mais elles sont mineures:

  • J'ai choisi deux boutons au lieu de trois pour plus de simplicité. Mais avoir un bouton qui me permettrait de descendre comme de monter aurait été sympa pour régler l'horloge
  • Le bouton de mode et le bouton de réglage sont indiscernables. Je les mélange souvent. Peut-être que je les mettrais sur des côtés opposés à l'avenir.
  • Je n'ai jamais fini la façade en bois. J'aimais le look brut au début et plus tard, je me suis inquiété du fait que si je gâchais la finition, cela coûterait cher à réparer.
  • La rastérisation de l'arbre était une apparence correcte, mais j'aurais peut-être dessiné plus de détails pour l'arbre à l'avenir.
  • La gradation de l'horloge serait également une fonctionnalité intéressante car elle est assez lumineuse dans l'obscurité. Cependant, la gradation est liée à la couleur et comprendre que ce bit prenait trop de temps, je l'ai donc laissé tomber. Je réinvestirais probablement dans cette fonctionnalité à l'avenir.

Merci d'avoir lu cette instructable. J'espère que vous ferez votre propre projet d'horloge ou de néopixel et que vous le partagerez avec moi. Bonne construction !

Conseillé: