Un fil pour une montre
A FILET POUR UNE VEILLE
Ici, je suis après une absence discrète, riproporvi encore une autre horloge numérique: mais maintenant tout le monde sait…le mien est un engouement… ou peut-être que je ne fais rien d'autre.
Viens il est né cette horloge ?… même en Mars girovando le web à la recherche d'un certain dispositif pour essayer d'expérimenter j'ai trouvé sur un site Web particulier Futura_Elettronica conduit: similaire à tous égards à une LED RGB (Quattro broche R,g,B,anode / cathode) mais il n'a pas été une LED RGB. tout en ayant 4 jambes canoniques est en fait une LED WS212. Il ressemble à ceci:

Les pieds sont toujours 4 mais avec des définitions différentes: ou DATA_IN, CCV,GND,DATA_OUT. Un taquet sur un côté de la DEL indique la broche DATA_OUT. puissance 5 V. le format LED: 5mm.
La curiosité a tué le chat (célèbre dicton….) et donc je fait une première commande 20 conduit à expérimenter et tester la. Je dis que je fus conduit WS2812: ou d'utiliser une série de protocole spécifique dirigée par des bibliothèques ADAFRUIT_NEOPIXEL. Il est difficile de décrire ce protocole: pratiquement une séquence de 24 bit (8 pour chaque couleur) envoyé lumières LED en série avec la couleur définie pour la LED R, pour le G et B pour la DEL selon ce (la source ws2812.pdf).

Bien sûr, il y a des délais à respecter, mais je ne vous inquiétez pas trop parce que tout le travail de gestion est confiée à la bibliothèque. La particularité de ces LED est donnée par le type de connexion: chaque diode est connectée en cascade avec la précédente, en formant ainsi une chaîne pratiquement pas de limite spécifique: en fait de faire cette montre je bien 112 LED.
Voici donc un aperçu du résultat final:

ayez pitié: Ils sont un véritable glissement de terrain dans le bricolage et cette fois j'ai aussi passé: Il n'a pas été facile, et que ces jours, je essentiellement à court de tests.
FINAL DE FABRICATION:
Avant de toucher le sol, je procéder à une étude de faisabilité (Aujourd'hui, il est à la mode) de décider comment connecter ces LED, dont l'utilisation RTC, comment mettre à jour les valeurs de temps, comment affecter les couleurs et la luminosité qui peut être acceptable pour la visibilité et surtout comme un aliment tout en considérant la présence de bien 112 LED. Ce problème de puissance et de l'absorption totale m'a coûté beaucoup de temps: Je ne voulais pas courir le risque d'être sans alimentation adéquate: à partir de sources Web chacune de ces LED devrait bien absorber 20mA pour chaque couleur. Donc, pour un conduit à la couleur blanche doit être allumé trois LED avec un total d'absorption 60. Mais il détecte alors un faux problème, car cette montre ne sera jamais tourné sur tous les 112 LED. Mais précisément pour éviter les inconvénients ont préparé des pcb avec une série de LED connectées en série avec.
Selon certains tests effectués avec un testeur normal flux 200mA est détectée sont les mesures suivantes: (La valeur de luminosité = 25 et seconde fonctions de la bibliothèque est une valeur faible).
Chaîne avec une LED: Led éteinte: 07,7mère; rouge Lit: 08,6mère; idem vert et bleu; bianco 10,3ma; violet: 09,4; jaune: 09,4.
chaîne avec 2 LED: éteint: 15,3; rouge Lit 1: 16,1mère; idem vert et bleu; 17,8ma blanc; 16,9ma violet / jaune; rouge Lit 1+2: 16,9mère: Même chose avec le vert et le bleu. Bianco 20,3ma; violet / jaune 18,6.
chaîne avec 3 LED: éteint: 15,7; rouge Lit 1: 16,6; verde, blu aller; rouge Lit 1+2: 17,4; verde, blu aller; blanc 20,8; 19,1ma.Acceso violet / jaune rouge 1+2+3: 18,4; idem vert et bleu; 23,6ma blanc; 21 violet / jaune.
chaîne avec 4 LED: éteint: 16,2 mère; rouge Lit 1: 17,1; idem vert et bleu; blanc 18,8; 18 violet / jaune; rouge Lit 1+2: 17,9 mère; vert et bleu 18,0 mère; blanc 21,4; violet / jaune 19,6; connexion rouge 1+2+3: 18,8mère; idem vert et bleu; blanc 24,2; 21,5ma violet / jaune; rouge Lit 1+2+3+4: 19,8 m; idem vert et bleu; blanc 26,7; violet / jaune 23,3.
Vous pouvez remarquer que les couleurs de base (rosso, verde, blu) ont toujours les mêmes valeurs ainsi que le jaune et le violet. L'exception est donnée par la couleur blanche. A partir de tests effectués avec un échantillon de 12 conduit et en profitant d'une alimentation séparée (un chargeur de batterie 1A avec une puissance et ensuite séparée du micro) vous pouvez rencontrer les valeurs suivantes: (valeurs mesurées avec un compteur commun avec la pleine échelle à 200mA).
Valeur luminosité (en tant que fonctions Neopixel) = 25
Tous les voyants sont éteints: ~ 34,3 / 35mA,
12 LED rouge allumée, verde, blu –> 41,9/42,0;
12 Led jaune vif / rose: –> 51/51,2;
12 couleur LED blanc brillant: –> 49,8/49,9
tests avec 16 LED: de 40. Rouge / Vert / Bleu 16 49 lit / 50mA;
Avec ces valeurs et risquer une hypothèse, l'absorption totale d'un cadran de 28 LED devraient être entre 100 e i 150mA. Et en théorie, l'ensemble de 4 quarts de cercle devrait être autour de 400/600 mA. Mais il reste un état de la théorie de l'art ayant effectué des tests avec seulement 16 LED.
Le résultat final après ces essais et après la réalisation complète est que l'horloge avec un chargeur de batterie pour les téléphones mobiles (5V,1UNE) tout fonctionne de façon constante: l'alimentation électrique après 24 heures de fonctionnement continu est resté “COLD“. Cependant, j'ai opté pour une alimentation spécifique de 5 V,2Afin d'avoir une tension stable à 5 V (les batteries du régime de charge ont une chute de tension de tension près de 0,5V) et aussi après 24 heures est resté “COLD“.
Une autre particularité de garder à l'esprit: lorsque le système d'alimentation (quel que soit le nombre de LED connectées) toutes les LED illuminent le maximum de leur luminosité et vous pouvez crare un pic d'absorption. Il faut donc prévoir pour l'arrêt total (via le logiciel) démarrage du système post immédiat.
Commençons par les spécifications de conception finale:
- affichage Quattro (Je vais appeler cadrans), pour afficher l'heure et la minute. Chaque quadrant est formé à l'image et à la ressemblance d'un affichage 7 segments: chaque segment est 4 LED. Le choix en raison d'un compromis entre le coût et grèvement.
- Deux leds avec clignotement alterné sur la base de la deuxième valeur
- RTC DS3231 considéré DS1307 plus stable et précis
- Un tondeuse Analogique pour gérer jusqu'à 8 niveaux de luminosité même modifiable à chaud
- Un commutateur DIP une 8 positions de choisir jusqu'à 4 couleurs pour chaque quadrant modifiable à chaud (deux commutateurs pour chaque quadrant).
- Boutons pour régler l'heure et les minutes, si nécessaire initialisation.
- Deux boutons pour le démarrage du système et la réinitialisation.
Compte tenu de ces caractéristiques, le matériel utilisé est la suivante:
- Micro Nano Arduinio choisie pour sa taille et déjà tout ce dont vous avez besoin: USB pour la connexion et le logiciel de chargement, Power over USB.
- RTC DS3231 en tant que dispositif de maintien des valeurs de date et l'heure
- PCF8574 8 bit exapander I2C. Cet appareil me permet d'épargner pour 8 broches Arduino. Il est utilisé pour lire les valeurs définies dans Dip_Swtich.
Maintenant, nous allons voir les schémas de circuit du projet:
Exemple de raccordement des diodes électroluminescentes:
Ce diagramme montre (en partie) comment ils sont reliés aux LED: chaque groupe de 4 forme un segment de la ligne: donc 7 les segments sont formés par 28 total piloté. Chacune de ces LED est connecté en série à l'autre. Il sera le logiciel sélectionner correctement quel groupe 4 LED (puis un segment) activer ou désactiver. A l'entrée de la première diode est reliée par une résistance 470 ohm. (comment réciter les textes sacrés). Chaque quadrant est le groupe dans son propre droit: la libération de LED NON Il est relié à l'entrée de la première diode de la prochaine quadrant: il y a une raison spécifique. Pendant les essais, j'ai remarqué que ces LED sont délicates et il est arrivé un “faux“. E’ clair que tous étant en série suffit que l'on a un problème que d'affecter l'ensemble de la chaîne suivante. Pour éviter ce genre de problèmes que je décidé de gérer individuellement (les permis de bibliothèque) je 4 quarts de cercle. Le résultat est seulement une complication programmatique dans le choix d'utiliser cadran.
dispositifs de connexion:
Dans ce schéma, il montre comment ils ont été associés à la fois la PCF8574 que’RTC Ds3231. En fait, ce système est un exemplaire que le CCF qui ont été utilisés pour les dispositifs PCF déjà préassemblés: les appareils sont faciles à installer et à utiliser le protocolo I2C. Dans le système, on a également fourni un autre PCF8574 pour afficher les secondes en mode binaire en utilisant 7 bit. Afin de ne pas compliquer davantage le système que je préférais utiliser ensuite 2 conduit avec clignotement alternatif. Dans le diagramme des connexions choix sont également visibles pour la broche Arduino qui relient les boutons et taille-bordures.
PCB de chaque quadrant:

Ceci est la dernière pcb valable pour chaque quadrant. Je l'avais fait une plus petite mais en pratique avec LED de 5 mm prouvé que la connexion problématique trop rapprochées. Malheureusement, comme vous pouvez le voir dans la première image complète du projet, la précision ne brille pas.
SCHÉMA DE CHAQUE QUADRANT:
A titre d'exemplification chaque quadrant a la numération de l'arrangement et la logique suivante de chaque LED qui compose. L'encoche de chaque LED identifie la broche DATA_OUT

le circuit imprimé du panneau de commande:

Ce immeubles d'appartements: le potentiomètre de réglage de la luminosité, je 2 boutons de mise à jour et maintenant des valeurs MINUTES, le système de bouton START, le bouton RESET, le pont qui, selon la façon dont il est mis en place permet de mettre à jour plus ou moins les valeurs de temps et les minutes, ils doivent être mis à jour, Enfin, le boîtier du dip_swtich pour le changement de couleurs quarts de cercle.
PCB MAIN:

Ceci est le pcb défini “PRINCIPALE” car il abrite les micro Arduino_Nano, les différents connecteurs pour périphériques I2C et le panneau de commande. E’ On a également prévu une entrée séparée pour alimenter les quadrants (prévu, mais non utilisé). Le micro USB alimente le reste du circuit.
PCB BUS_QUADRI et LED_SECONDS
Ces deux derniers sont le soutien pcb: BUS_QUADRI Il permet la connexion de 4 quadrants vers le pcb PRINCIPALE avec le signal d'entrée et alimentant chacun. LED_SECONDS abrite les deux LED doivent clignoter à raison d'une seconde. Ce PCB est situé à trois heures deux des cadrans et les deux minutes; l'alimentation et le signal sont connectés via le BUS_QUADRI.


HORLOGE CONSTRUCTION
Dans l'image ci-dessous vous pouvez voir comment le logement des quarts de cercle a été construit:

Avec un cadre de 28cm avec socle en bois et plexiglass latérales elles ont été collées à la 4 quarts de cercle comme les photos: les deux LED dans le centre pour les secondes et à droite le pcb BUS_QUADRI pour la connexion au principal. Étant donné que les LED aussi la luminosité minimale sont encore très lumineux, pour éviter que la luminosité des DEL individuelles peut couvrir le côté droit et gauche, chaque quadrant est “couvert” un masque noir (plastifiée) pour mettre en évidence les segments individuels. Chaque segment a été enveloppé d'une bande de carton noir. Voici comment Presena “nu”.:

Avec ce système, vous obtenez une bonne vue “séparé” l'horloge entière sans que la luminosité d'un cadran ne gêne pas le latéral. (Rappelez-vous que la couleur rouge,vert, Bleu cependant, ils ont une luminosité différente de l'autre).
AU CŒUR DU SYSTÈME:
Dans le tableau ci-dessous l'image du panneau de commande qui ferme une boîte en plexiglas où est logé le micro Arduino_Nano, Et RTC PCF8574 et les connecteurs vers les cadrans. Le panneau se compose de coupe (10K) pour le réglage de la luminosité, par des boutons pour la mise à jour HOUR du procès-verbal. le bouton START et RESET, enfin le pont pour mettre à jour une des valeurs positives ou négatives du temps. Sur le côté droit et commutateurs DIP du réseau de résistances pull_up.

L’ MISE EN ŒUVRE DU LOGICIEL
Si je ne compliquez pas vie ne sont pas satisfaits: gérer une montre est pas difficile si vous est vraiment pas un débutant. Je aurais pu faire un croquis très simple de me limiter à la lecture’ les valeurs de décodage RTC et l'exposition sur les cadrans.
Mais depuis “l'appétit vient en mangeant” Je mis en place un croquis impliquant:
- gestion 4 cadrans dans la bibliothèque ADAFRUIT_NEOPIXEL.
- gestion des’ RTC avec la mise à jour des valeurs en cas de besoin. (si par rapport à la DS1307 il est plus précis, de temps en temps être mis à jour si seulement pour l'été / heure d'hiver).
- La gestion de la luminosité varie sur une plage de 8 les valeurs d'un minimum à une limite maximale (même si ce n'est pas supportable au maximum) par une tondeuse à affichage analogique.
- La gestion des couleurs de cadrans individuels: chacun peut avoir une couleur différente de la précédente et la suivante: par un, vous pouvez sélectionner commutateurs présents l'un des 4 couleurs définies: ROSSO, VERDE, BLU, ROSA. J'ai choisi ces couleurs parce qu'ils sont ceux qui “consommer moins d'énergie”.
PHILOSOPHIE DE GESTION:
Comme je l'ai déjà indiqué pour éviter des problèmes de connexion ou de défaillances multiples, J'ai décidé de gérer 4 individuellement quarts de cercle (puis juste 28 conduit à composer). Je me suis alors défini 4 cas de la bibliothèque ADAFRUIT_NEOPIXEL pour obtenir la gestion séparée de chaque quadrant. Il en est résulté certainement une complication parce que l'esquisse doivent être prises pour gérer individuellement la mise sous tension et hors des cadrans individuels pour les heures et les minutes.
Tout’ placer le début de l'esquisse après l'initialisation de la bibliothèque doit être faite DE SUITE arrêt des quadrants individuels: ceux-ci allument avec des couleurs aléatoires et la luminosité maximale. Pour activer le besoin d'envoyer chaque couleur de la chaîne ZERO: essentiellement noir. Une autre solution pourrait consister à amener la luminosité à zéro =.
L'esquisse se poursuit avec le début du protocole CÂBLE pour la gestion des périphériques I2C, en lisant le COMMUTATEUR DIP pour déterminer les couleurs, avec le régleur pour la lecture de la luminosité, commence alors la lecture des valeurs horaires’ RTC et exécute un affichage subi des heures et minutes dans leurs pays respectifs 4 quarts de cercle. Il attend ensuite la lecture de l'un des boutons du panneau de commande. Si vous appuyez sur le bouton heure met à jour la valeur relative plus ou moins en fonction de la position du cavalier “+/-“. Il affiche maintenant la valeur modifiée. La même chose se produit pour les valeurs de minutes si le bouton correspondant est pressé. En appuyant sur le bouton “DÉBUT” déclenche le cycle final de l'esquisse: s'il y a eu réactualisés sont rechargés dans’ RTC. La boucle vivace lit la position du potentiomètre pour faire varier la luminosité et les couleurs Dip_Swtich pour effectuer des changements dans le cas. Ils sont lus alors les valeurs horaires’ RTC et seulement si elle exécute ils sont variés affichage.
CESSION PIN ARDUINO:
Le tableau ci-dessous deifinisce comme cela a été attribué la broche Arduino:
|
ÉPINGLE |
CESSION |
|
A0 |
Coupe-analogique d'entrée pour la luminosité |
|
ÉPINGLE 2 |
cadran DataIn 1 |
|
ÉPINGLE 3 |
cadran DataIn 2 |
|
ÉPINGLE 4 |
cadran DataIn 3 |
|
ÉPINGLE 5 |
cadran DataIn 4 |
|
ÉPINGLE 6 |
bouton HEURES (Remonter) |
|
ÉPINGLE 7 |
bouton MINUTES (Remonter) |
|
Épingle 8 |
DÉBUT (Remonter) |
|
Épingle 9 |
Commutateur +/- (Remonter) |
|
ÉPINGLE 10 |
Clignotant seconde LED |
|
A4 PIN |
SDA par RTC e DS3231 |
|
PIN A5 |
SCL par RTC e DS3231 |
LA BIBLIOTHÈQUE ADAFRUIT_NEOPIXEL:
Téléchargements site éponyme (Il existe deux versions d'une mise à jour et un autre qui gère NEO_PIXEL RING et matrices Neo_Pixel) cette bibliothèque avec quelques fonctions peut gérer un nombre presque illimité de LED WS2812. Les principales fonctions peuvent être résumées comme suit:
D'abord, vous devez instancier l'objet avec les paramètres suivants:
pixels Adafruit_NeoPixel = Adafruit_NeoPixel (numPixels, ÉPINGLE, NEO_RGB + NEO_KHZ800);
Colombe: pixels est le nom donné à l'instance, numPixels le nombre de LED connectées (le premier de la chaîne est identifié par le décalage “ZÉRO” et au total 28 par quadrant), ÉPINGLE identifie la broche numérique Arduino pour connecter la première DATA_IN la LED de chaque chaîne. (Voir le tableau precednte). NEO_RGB + NEO_KHZ800 Il indique que la séquence des couleurs des LED sont au format R-G-B et de la fréquence en 800Hkz. Pour quelques exemples téléchargés selon ce qui est presque la norme. E’ possible d'instancier plusieurs objets donnant chacun un nom différent (De toute évidence). Ces définitions doivent être insérées dans la section variable.
Dans la section INSTALLER pour chaque instance doit initialiser la bibliothèque: nome_istanza.begin(). Dans l'esquisse, il y a tellement 4 de ces phrases.
Les fonctions suivantes effectuent la gestion effective de chaque instance (et sa chaîne associée). La luminosité est contrôlée avec la fonction: nome_istanza.setBrightness(valeur) et il est appliqué à l'ensemble de la chaîne des diodes électroluminescentes.
La puissance de chaque chaîne LED (ricodiamoci sont 28 chaîne) Il se produit indiquant à la fois la position de la LED (son décalage à partir de zéro) que la couleur à attribuer. Il en résulte que pour chaque chaîne LED peut être attribué une couleur différente. La fonction a deux formats:
instance_name.setPixelColor(Led_Offset,nome_istanza.Color(r,g,b)); avec cette bibliothèque est dévolue à la couleur de codage en fonction des valeurs définies dans r1, g1, b1 (donner 255), alternativement le second format définit le code couleur direclty (32 bit non signé): nome_istanza.setPixelColor(Led_Offset,codice_colore).
Dans l'esquisse est effectué un cycle de 28 itérations pour assigner, puis tourner sur un segment de la chaîne des diodes électroluminescentes de chaque quadrant.
Tout cela ne conduirait à aucun résultat si elle n'effectue la fonction: nome_instanza.show(). Cette fonction doit toujours être réalisée si nous voulons voir les LED activer ou de désactiver ou de changer sa luminosité.
Il y a une réflexion à faire sur l'utilisation de cette dernière fonction: si elle vient à activer / désactiver une seule LED ou faire varier la luminosité après la fonction spécifique, il suffit d'exécuter la fonction spectacle() pour effectuer la programmation. mais sera (dans ce cas) les LED pour activer / off sont plus d'un peut être utilisé deux techniques: dans le cycle pour exécuter la fonction spécifique de mise en marche / arrêt et à la fin du cycle pour effectuer l'émission de fonction() ou pendant le même cycle courir ci-dessous montrent la fonction().
Voici un exemple (voies à l'esquisse). La routine qui désactive les voyants: NQ numéro de la chaîne à partir de 1 une 4 tout comme la routine comprend la mise hors tension à un quadrant ou tout (NQ = 0).
void shutdown(octet NQ)
{ int kl;
si (NQ == 0 || NQ == 1)
{ pour (kl = 0; à < numPixels; h ++) QDR_DEC_ORE.setPixelColor(à,0);
QDR_DEC_ORE.show(); }
Dans ce cas, le show de fonction() est effectuée à la fin de la boucle for.
Dans cet exemple, le lumimosità est seulement changé si après la fonction show est exécutée():
QDR_DEC_ORE.setBrightness(Lumen_Value);
QDR_DEC_ORE.show();
Une autre fonction de bibliothèque détecte la couleur affectée à LED: renvoie le code de couleur dans le format 32 bit non signé: nome_istanza.getPixelColor(Led_Offset).
CONCLUSION:
J'espère avoir suffisamment expliqué ce projet de Mars maintenant occupé peu de temps libre. en général je ne consacre pas plus de 2 heures par jour à ce passe-temps: J'ai une certaine expérience dans la programmation il est donc difficile d'avoir des problèmes de programmation. Je pense à un upgrandig de projet: entrer également l'affichage de la température voit que le DS3231 abrite également le capteur et la modification aléatoire des couleurs. Nous verrons….
Je remercie tous de toute façon ElettroAmici pour le temps qu'ils ont passé à lire cet article. Je sais que je me répète…..c'est la montre encore une autre. Dans tous les cas, ils sont disponibles pour ceux qui souhaitent la documentation ou autre sur ce projet.
Merci
Gvsoft Gugno 2019
gvsoft75@hotmail.com



Excellent comme maintenant vous avez pris l'habitude.
J'ai ajouté à votre article comme ils étendent un peu des schémas bien que vous ne pouvez pas voir la faible résolution des images elles-mêmes, mieux que rien ne va
Merci, Amilcare, mais avec un retard considérable, mais j'avais un problème de santé qui devrait être résolu lundi 15 cm.
Je voulais faire un commentaire, mais il est évident que je ne peux pas commenter mon article. Alors je profite de cette occasion dans cette réponse de fournir quelques suggestions pour ceux qui pourraient être intéressés à l'utilisation de ces LED. Prévoir une bonne alimentation de 5V ou 3V 2A de almento. Mettre un condensateur 1000 uf sortie de l'alimentation. Vérifier un par un tous les voyants à utiliser: J'avais une petite pcb pour essayer chaîne uina 8 conduit en découvrant que certains LED “faux” et ceux qui le suivent “fou”. Si vous ne disposez pas d'une chance de faire un bon test de PCB professionnel pistes en particulier celui qui se connecte à la norme DIN DOUT. A la fin de la chaîne (ou au début de) insérer une céramique consensatore (code 104). Gardez à l'esprit que, au moment de la mise sous tension du système, tous les voyants sont allumés à la luminosité maximale habituellement de couleur bleu et du blanc: ce qui implique un pic de consommation d'énergie. La première chose à faire après que la fonction commence() Il est hors de la chaîne avec la fonction show() ou avec une boucle qui envoie à chaque couleur noire LED (rgb: 0,0,0).
Il n'y a aucune limite au nombre de LED dans la chaîne, mère, comme vous pouvez être vu dans l'article, je 112 LED sont gérées par 4 différentes chaînes. Cela implique une complication dans la programmation, mais il peut simplifier et mieux résoudre certains dysfonctionnements: dans ce cas, le premier quadrant (des dizaines d'heures) après un certain temps a commencé à donner des problèmes et je devais faire une nouvelle: il y avait probablement un conduit “faux” Mais quand il a voulu !!!!.
Merci encore Amilcare