Heures sur les lampes à décharge (GRI), ce sont des horloges Nixie

Concept de projet


Le concept de ce produit est de répondre au besoin de regarder la vraie flamme. Une décharge luminescente dans un gaz n'est pas à proprement parler une flamme, bien qu'elle ressemble à une vraie flamme.
J'aime sa couleur et c'était le seul motif pour commencer à créer de telles montres pour moi en un seul exemplaire.

La tâche de créer un dispositif pour la production de masse n'a pas été posée.

Par conséquent, le budget du projet est beaucoup plus raisonnable. Les décisions ont été prises sur la base de nos propres idées sur la beauté, le coût des composants n'a pas été pris en compte. Bien sûr, il y a toujours des limites, par exemple, je n'ai pas acheté de gros GRI (indicateurs de décharge de gaz) tels que IN18 - leur prix est plus qu'une frontière définie intuitivement et ils ne correspondaient pas à mon concept d'apparence du produit. J'ai utilisé le GRI type IN-12.

IN12 est rempli d'un mélange de néon (ou d'un mélange de gaz inertes) et de vapeur de mercure. La vapeur de mercure augmente considérablement la durabilité de l'appareil et donne une teinte bleuâtre à la lueur du plasma. D'autres GRI peuvent être sans mercure et donner une lueur néon claire.

La fonction principale de la montre est d'afficher l'heure exacte (CEP, bonjour!). Il est très souhaitable que l'heure au démarrage soit réglée automatiquement et ne nécessite aucune manipulation de la part de l'utilisateur. De mon point de vue personnel, les boutons de ces appareils ne sont pas du tout nécessaires. Des appareils similaires avec une douzaine de boutons et des centaines de fonctions provoqués par diverses combinaisons de pressions et de temps de pression me provoquent une tristesse silencieuse. Premièrement, les GRI sont bien adaptés pour afficher uniquement les chiffres. Rien d'autre n'est envisagé et tente d'afficher les éléments de menu, etc. à mon avis - l'utilisation d'un outil inapproprié. Il en va de même pour des fonctions supplémentaires telles qu'un réveil, etc.

Deuxièmement, il est évident qu'il est irréaliste de se rappeler quelle combinaison de pressions de bouton active l'une ou l'autre des fonctions intégrées. Écrire des programmes pour de tels appareils est amusant et agréable, mais impossible à utiliser.

Cette question est parfaitement considérée dans le livre Donald A. Norman Design of familiar things. Je citerai un passage:

«Lors de mes voyages, j'ai utilisé plusieurs fois le projecteur de diapositives Leitz. La première fois a été le pire cauchemar. J'ai commencé à donner des conférences et j'ai montré la première diapositive. Quand il a fallu passer à la diapositive suivante, l'étudiant responsable du spectacle a doucement appuyé sur le bouton et a commencé à regarder avec horreur le support se diriger dans la direction opposée, sortir du projecteur de diapositives et tomber de la table au sol, mélangeant toutes les diapositives. Il a fallu 15 minutes pour organiser les diapositives dans l'ordre. Ce n'était pas l'étudiant qui était à blâmer pour cela, mais cet élégant projecteur de diapositives. Comment un bouton peut-il remplir deux fonctions opposées? Personne ne pouvait le faire correctement la première fois. »

Le problème était qu'un bouton remplissait deux fonctions opposées - une pression courte déplaçait la glissière vers l'avant, une longue - vers l'arrière. »

Nous continuons la discussion sur le réglage de l'horloge. Ces appareils sont configurés de manière optimale à partir de leur propre page Web à l'aide d'un ordinateur, d'une tablette ou d'un smartphone.

Je n'ai pas besoin d'un réveil pour les montres avec GRI - tout d'abord, il y a toujours des téléphones portables avec de telles fonctions et une interface beaucoup plus pratique. Deuxièmement, l'horloge du GRI ne peut pas utiliser une source d'alimentation autonome car la consommation électrique typique (200 Volt * 7 mA = 1400 mW ou 1,4 watts) est assez grande et dépasse les limites raisonnables pour les sources de courant chimique. Par conséquent, l'horloge avec le GRI sera alimentée par le réseau et la fonction d'alarme dépendra de la fiabilité du réseau.

Du raisonnement ci-dessus, le système suivant émerge:

Horloge GRI avec alimentation du réseau, avec la possibilité de prendre l'heure exacte sur Internet, avec le réglage de sa propre page Web. Aucune fonctionnalité supplémentaire n'est requise.

Néanmoins, j'ai violé la rigueur de cette règle en ajoutant les fonctionnalités suivantes:

Une montre peut afficher la température, l'humidité et la pression atmosphérique de la rue. Cette fonction répond à mon besoin personnel de connaître la température extérieure lorsque j'arrive au travail le matin. J'attache ma chemise tous les jours au même endroit et lorsque la montre me trouve là-bas, ils affichent constamment la température extérieure, l'humidité et la pression atmosphérique en millimètres de mercure. La fonction s'est avérée réussie et très demandée par moi et les membres de ma famille. Les données sur la température, la pression et l'humidité de la rue sont automatiquement prises et stockées pour le temps entre les colis provenant d'une source externe. Si le délai est dépassé (les données sont obsolètes), l'horloge affiche la date actuelle. Dans mon système domestique, les données sur les paramètres de l'environnement externe arrivent à des intervalles de 10 minutes, le délai d'attente "données obsolètes" est réglé sur 30 minutes. Lors de la conception de la montre, il a été supposé que l'équipe externe pourrait avoir une voix, par exemple, dire: "Horloge, météo!". Cependant, lors du prototypage, il s'est avéré que cette méthode n'est pas fiable et peu pratique. Par conséquent, à l'avenir, la commande vocale a été remplacée par une méthode pour déterminer la présence d'une personne devant la montre en fonction du localisateur laser de l'heure de vol. L'horloge doit afficher les données météorologiques si vous vous tenez devant elles pendant environ une seconde.

L'horloge par une commande externe via l'interface HTTP peut afficher les données reçues dans cette commande. L'équipe transfère à la fois les données elles-mêmes et l'heure à laquelle elles sont affichées à l'écran. Il a été conçu comme une opportunité pour afficher quelque chose de l'ordinateur par des événements, par exemple, une surchauffe du processeur du serveur domestique ou d'autres paramètres. L'interface intégrée vous permet d'afficher un code à sept chiffres de l'extérieur, y compris deux points. En pratique, il n'est pas appliqué du tout.

Les exigences obligatoires comprenaient également l'effet d'un changement en douceur des nombres. C'est cet effet, le seul de tous, j'aime beaucoup!

La luminosité des indicateurs doit être ajustée à la lumière ambiante, tout en maintenant le contraste de l'image inchangé.

L'horloge doit afficher six chiffres et une valeur auxiliaire devant les chiffres pour indiquer ce qui est actuellement affiché.

Mise en œuvre de la solution matérielle conçue


Sélection GRI


Pour afficher l'heure et d'autres données, quatre GRI IN-12A, deux IN-12B et un IN-15A ont été utilisés.

IN-12B contient les points que j'ai utilisés pour séparer les heures-minutes-secondes.

GRI IN-15A peut afficher un certain nombre de signes spéciaux «+», «-», «%», «P», etc., placés au début de la ligne.

La distance optimale entre les indicateurs.


Pour que la montre soit harmonieuse, une certaine distance entre les indicateurs doit être garantie, comme entre les lettres d'une ligne. L'étude de la question a donné les informations suivantes: la distance optimale entre les nombres est de 4 mm, entre les mots 8 mm. La distance optimale entre les chiffres est assurée avec un indicateur d'ajustement serré dans les panneaux. Je crois que ce n'est pas un hasard, ont pensé les ingénieurs soviétiques avec leur tête pendant le développement et ont fait la bonne distance.

Synchronisation avec les serveurs de temps


Examinez les moyens d'obtenir automatiquement l'heure exacte:

  1. Une demande sur Internet à un serveur de temps exact.
  2. Récepteur Glonass \ GPS. Malheureusement, dans certains cas, cela ne fonctionne pas: par exemple, dans mon appartement au bas de la pièce, le signal des satellites disparaît, la configuration infructueuse des bâtiments environnants m'affecte, dans laquelle le ciel clair n'est visible que directement à la fenêtre.
  3. Réseau cellulaire. En théorie, vous pouvez demander du temps à une station cellulaire sans vous inscrire (c'est-à-dire sans carte SIM). Je n'ai pas essayé. Théoriquement, le moyen le plus universel qui ne nécessite rien de l'utilisateur.
  4. Signaux temporels précis à grandes longueurs d'onde. Il est difficile à appliquer, il n'y a pas de solutions prêtes à l'emploi portables.

À mon avis, le meilleur moyen est de demander l'heure exacte via Internet. Il convient de noter que les fonctions intégrées pour stocker l'heure actuelle de l'ESP8266 se sont avérées assez précises: en un mois de déconnexion accidentelle du point d'accès au réseau par lequel les heures décrites étaient connectées à Internet, le départ était inférieur à une minute. J'ai déterminé cela par la coïncidence de l'horloge et de l'heure de l'ordinateur. Une fois l'alimentation rétablie, le point d'accès se synchronise automatiquement.

Le choix du processeur et des circuits de contrôle GRI


Pour contrôler l'horloge, il faut un processeur capable d'accéder à Internet. Parmi celles disponibles, ce sont des cartes basées sur l'ESP8266. L'étude du problème a montré que la carte est bon marché, répandue, possède de riches logiciels prêts à l'emploi créés par des passionnés, peut être programmée dans l'environnement Arduino.

Le choix du système (microcircuit) de la commande


Le GRI est alimenté par une tension assez élevée d'environ 200 volts. Selon le passeport (voir Fig. 1), IN12 nécessite au moins 170 volts pour l'occurrence normale d'une décharge luminescente à un courant allant jusqu'à 2 mA. Le système de commande doit pouvoir commuter des courants de plusieurs milliampères et résister à des tensions de l'ordre de 200 volts. En Union soviétique, des microcircuits K155ID1 (133ID1, etc.) ont été produits (décodeur décimal binaire haute tension). Ils fonctionnaient parfaitement en mode statique, un décodeur était nécessaire par lampe. Maintenant, ces microcircuits sont disponibles à partir d'anciens stocks et sont même produits en petits lots par l'usine de Minsk Integral. En principe, un bon choix pour les montres sur contre-microcircuits. Cependant, ils sont difficiles à utiliser dans un système à microprocesseur en raison du nombre limité de sorties sur les microprocesseurs. Ainsi, l'horloge ESP8266, prise comme base, n'a qu'une douzaine de conclusions, et certaines d'entre elles ont certaines limites. Pour 7 décodeurs, 28 broches sont nécessaires, ou un registre intermédiaire, dans lequel les données doivent être sorties séquentiellement puis sorties en parallèle sur K155ID1, ce qui complique grandement le circuit.


Fig 1. Passeport de l'indicateur de décharge luminescente IN-12


Fig 2. Passeport de l'indicateur de décharge luminescente IN-15

Lors de l'utilisation de 155ID1, l'effet d'un changement en douceur des nombres nécessite une indication dynamique. Le fait est que le GRI est un appareil fortement non linéaire et il est très difficile de contrôler sa luminosité de manière analogique en changeant la tension - il est très difficile en raison de la forte pente de la caractéristique de tension appliquée au courant. Dans la région de faible luminosité, la décharge de gaz devient instable. En outre, l'éclairage externe affecte l'allumage constant de la lampe - avec une diminution de l'éclairage externe, à la fois la tension de claquage et l'indicateur de temps d'activation augmentent. Les photons externes servent comme une sorte d'initiateurs plus légers de la décharge. Soit dit en passant, la forte pente de la dépendance du courant à travers le dispositif de décharge de gaz sur la tension appliquée est utilisée pour obtenir une tension stable, en fait, un tel dispositif de décharge de gaz est un stabilisateur de tension. Par conséquent, pour contrôler la luminosité du GDI, l'utilisation d'un mode de puissance pulsée est nécessaire, dans lequel la luminosité est proportionnelle au courant moyen traversant le GDI, qui à son tour est proportionnel à la largeur de l'impulsion.

L'indication dynamique lors de l'utilisation de 155ID1 + GRI est tout à fait possible, mais présente un certain nombre de limitations. Ainsi, en raison de la particularité des circuits 155ID1 (éléments clés relativement basse tension - seulement 60 volts), des éclairs de nombres voisins et d'autres effets indésirables sont possibles. Ces effets sont combattus avec une variété d'astuces - à la fois matérielles et logicielles. Il y a un énorme sujet sur le site Web de RADIOKOT.RU (https://radiokot.ru/forum/viewtopic.php?f=3&t=3210) dédié à NIXIE CLOCK, j'ai tout lu et tiré des conclusions pour moi-même - l'indication dynamique ne convient pas à mes fins .

Une recherche sur Internet a donné un excellent substitut au 155ID1 - il s'agit de la puce HV5622, qui représente un registre à décalage 32 bits avec des sorties haute tension. Le schéma de principe est illustré à la Fig.3.


Figure 3. Diagramme structurel du HV5622, Supertex inc. ©

Le HV5622 est capable de commuter des tensions jusqu'à 230 volts, recevant des données via une interface série avec une fréquence d'horloge jusqu'à 8 MHz. Les microcircuits peuvent être connectés en série dans une chaîne. Pour le contrôle, seules 4 sorties du MK sont nécessaires: données, un signal d'horloge, un signal d'écriture dans le registre de sortie et un signal d'activation. La seule chose qui a suscité des doutes a été de nourrir les tensions. Selon le manuel, il devrait être d'au moins 8 volts. Et je voudrais alimenter les puces à partir de 5 volts, et même les contrôler avec un signal logique avec un niveau de 3,3v. Sur Internet, j'ai trouvé quelques exemples d'utilisation de tels microcircuits et les alimenter à partir de 5 volts. Par conséquent, au cours du développement, juste au cas où, j'ai fourni la possibilité d'installer un convertisseur de niveau logique et une alimentation 5622 avec une tension plus élevée, mais je n'ai pas immédiatement installé ces nœuds. La pratique a montré que tout fonctionne bien à partir de 5 volts de toute façon.

Regarder la nutrition


Pour alimenter l'horloge du GRI, une alimentation à deux sorties est nécessaire: 5 volts avec un courant de l'ordre du demi-ampère et 180-200 volts avec un courant d'environ 10 mA. Par défaut, les auteurs de schémas pour de telles montres résolvent le problème d'alimentation comme suit: ils utilisent une alimentation à découpage externe 220 -> 12 volts, dont 5 volts sont fabriqués à l'intérieur de l'horloge, et 180 volts pour l'alimentation sont obtenus par le deuxième convertisseur d'impulsions à partir de l'entrée 12 volts. C'est-à-dire en fait, 2 convertisseurs d'impulsions sont utilisés dans le circuit de puissance général, dont le premier fait 220 - 12, et le second 12 - 180. À mon avis, il est inefficace. J'ai donc choisi une manière très traditionnelle d'utiliser le transformateur toroïdal prêt à l'emploi TorAN15. L'aspect de ce transformateur est illustré à la Fig.4.


Figure 4. Transformateur TorAN15

J'ai acheté ce transformateur sur le site Web ISTOK2.COM. Le transformateur a deux enroulements secondaires - un à 170 volts, le second à 6,3 volts. Cela a permis de se débrouiller avec le circuit d'alimentation le plus simple. La haute alimentation GRI est redressée par un pont de diodes et filtrée sur des condensateurs. Ces pièces sont utilisées à partir d'un économiseur de lampe fluorescent inutile. Le faible niveau d'alimentation des microcircuits est également rectifié par un pont de diodes, filtré sur un condensateur électrolytique et stabilisé sur un stabilisateur intégré 7805. L'efficacité d'un tel circuit est beaucoup plus élevée qu'un système à deux conversions, la fiabilité du système est beaucoup plus élevée. De plus, l'absence totale d'interférences haute fréquence. Le moins est démodé et le transformateur est lourd. Mais la gravité du transformateur dans ce cas est plutôt un avantage - je voulais que la montre soit brutalement massive.

Ainsi, le schéma d'horloge est défini: il s'agit d'un module prêt à l'emploi basé sur ESP12E, de trois microcircuits HV5622, d'un capteur de lumière basé sur MAX44009 et d'une alimentation traditionnelle (je dirais même conservatrice). Par la suite, un nœud pour déterminer une personne devant la montre a été ajouté sur la base du module laser à télémètre à temps de vol VL53L0X. Le schéma de l'horloge est illustré à la Fig.5.


Figure 5. Horloge Dronsky Nixie. Diagramme schématique

J'ai divisé la commutation des broches comme suit: les trois premières lampes - la première HV5622, les trois autres lampes - la deuxième HV5622, la HV5622 restante contrôle la lampe avec des caractères spéciaux et des points dans deux IN12B.

Au stade de la conception, il n'était pas clair si le canal SPI aurait suffisamment de vitesse pour produire des données pour un changement en douceur des chiffres. Le fait qu'une fois par seconde pour sortir 96 bits n'est pas difficile pour l'ESP12E était hors de doute. Mais y a-t-il suffisamment de vitesse pour produire des effets? Selon les calculs devrait suffire avec une marge. Mais comme vous le savez, c'était lisse sur le papier ...

Par conséquent, il était initialement prévu de produire des données en trois étapes, séparément pour chaque puce. Un test pratique a montré que le canal SPI a suffisamment de vitesse avec une énorme marge d'effets, même avec une fréquence d'horloge de 4 MHz. Même la possibilité de doubler la vitesse n'était pas réclamée. En conséquence, tous les microcircuits sont connectés en chaîne et la sortie de 96 bits est effectuée avec une seule commande. Selon les calculs, le temps de sortie de 96 bits devrait être de 24 μs. La figure 6 montre un enregistrement d'un analyseur logique produisant sept caractères sur le GRI. Le temps de sortie total, compte tenu de la génération du signal LE, est inférieur à 30 μS.


Figure 6. Sortie de l'analyseur logique canal de sortie HSPI 96 bits avec une fréquence d'horloge de 4 MHz

Les broches CLOCK de toutes les puces sont combinées. La borne DI (entrée de données) des deuxième et troisième microcircuits est connectée aux bornes DO (données sortantes) des premier et deuxième microcircuits, respectivement. Les broches LE (Latch enable) sont combinées, elles reçoivent une impulsion qui transfère les données du décalage vers le registre de sortie. Jusqu'à ce que la lampe soit transférée, ce qui est stocké dans le registre de sortie est émis. Les broches BLOCK sont combinées, connectées à la masse via une résistance 1k, pour maintenir les étages de sortie du HV5622 éteints jusqu'à ce que le programme démarre dans le MK. Le manuel recommande de mettre sous tension, d'effectuer la première sortie de données, puis d'activer les étages de sortie.

Contrôle de la luminosité


Pour contrôler la luminosité du GRI afin de maintenir un contraste optimal constant des indicateurs, la sortie BLOCK est utilisée, à laquelle un signal PWM avec une fréquence de 2500 Hz est fourni. Une fréquence suffisamment élevée du signal de commande PWM a été utilisée, ce qui garantit l'absence d'effets stroboscopiques, etc. Conformément aux normes (Normes et règlements de construction (Normes et règles de construction) 23-05-2010 (version mise à jour de SNiP 23-05-05-95) et aux règles et normes sanitaires de SNPiN 2.21 /2.1.1.1278-03) on pense qu'une personne ne perçoit pas la fréquence des pulsations d'éclairage au-dessus de 300 Hz. Dans ce cas, un excès de la fréquence PWM de presque un ordre fournit le bon niveau de confort visuel.

L'effet d'un changement en douceur des nombres


Afin d'obtenir l'effet visuel d'un changement en douceur des chiffres, il est nécessaire d'activer alternativement les anciens et les nouveaux chiffres pendant le temps de changement d'un chiffre à un autre (généralement 200-250 ms), et le temps de gravure de l'ancien chiffre devrait diminuer et le nouveau devrait augmenter. L'algorithme de changement de chiffres (changement de sous-programme ()) effectue 60 cycles.Lors du démarrage de l'algorithme de changement de chiffre, le premier chiffre est inclus à 100% du temps de cycle et le second à 0%. Au fur et à mesure que les cycles passent, le temps d'activation du premier chiffre diminue de 100% à 0% et le temps d'activation du deuxième chiffre augmente de 0% à 100%). Ainsi, l'algorithme de changement progressif des chiffres sur 200 ms et 60 cycles réduit la luminosité du premier chiffre à l'arrêt et du second à la pleine luminosité.

Le reste du temps du deuxième intervalle, les nombres sont allumés en continu et statiquement, leur luminosité globale est réduite en contrôlant l'indication générale marche / arrêt du signal PWM sur les terminaux BL.

La figure 7 montre les signaux enregistrés par l'analyseur logique lors du changement de nombres. On peut voir qu'au début du sous-programme de décalage, l'ancien numéro est activé pendant la durée maximale, et le nouveau est le minimum, et pendant le décalage (environ 250 ms), le temps de gravure de l'ancien nombre diminue à 0, et le nouveau augmente au maximum. Visuellement, cela se manifeste par une diminution régulière de la luminosité de l'ancienne figure avec la «décongélation» simultanée de la nouvelle.


Fig. 7. Enregistrement des signaux de commande lors d'un changement de chiffres en douceur

Un enregistrement vidéo de l'effet est donné ici.


et ici


et ici:


Synchronisation avec les serveurs de temps


Après avoir étudié la question sur Internet, j'ai conclu que les auteurs des programmes eux-mêmes écrivent (ou utilisent des routines tierces prêtes à l'emploi) pour le protocole NTP. Cela m'a quelque peu surpris, car le SDK Espressif mentionne des fonctions intégrées pour travailler en temps réel. La fonctionnalité intégrée fournit une demande de serveurs de temps (jusqu'à trois), une correction du temps (selon mes observations - une demande à un serveur de temps a lieu toutes les 4-6 heures), la conversion d'une valeur sous forme de temps Unix en une forme lisible par l'homme, une correction en fonction d'un temps donné - zone.

Parmi les caractéristiques de l'utilisation de la fonction en temps réel intégrée: pour la première et plusieurs demandes de temps suivantes, zéro est renvoyé et le diagnostic «exécuter rtc en premier» est émis.Comment faire - je ne l'ai pas trouvé et donc j'attends (quelques secondes) jusqu'à ce qu'une heure autre que zéro apparaisse.

Algorithme de lancement d'horloge


Lorsque l'horloge est allumée, le système s'allume en mode client et une tentative est effectuée pour se connecter au point d'accès avec les détails stockés.

ESP8266 se souvient de ces détails après une connexion précédente réussie par lui-même dans la mémoire de service. Il s'agit d'une fonctionnalité implémentée dans le SDK. Si cette connexion échoue, la tentative suivante est effectuée, mais le nom et le mot de passe du point d'accès sont lus à partir de l'EEPROM. L'EEPROM stocke également le fuseau horaire (un nombre compris entre -12 et +12), qui est ensuite utilisé pour convertir correctement l'heure au format local.

Si cette connexion échoue également, le mode de fonctionnement passe au «point d'accès» et la page Web de la montre devient disponible à l'adresse standard 192.168.4.1 pour tout appareil connecté à ce point d'accès. Dans mon cas, le nom du point d'accès est ESP_D. Depuis un smartphone, une tablette ou un ordinateur portable, accédez à la page de l'appareil, sélectionnez un point d'accès et entrez un mot de passe. Pendant que le mode point d'accès est activé, le mode client est désactivé. Cela est dû aux particularités du comportement du système dans une situation où la connexion au point d'accès a échoué. Le système répétera sans cesse les tentatives d'adhésion, il ne s'en occupera que et il ne restera pratiquement plus de ressources pour autre chose. Extérieurement, cela se manifestera comme une inhibition désagréable de l'interface. L'apparence de la page est illustrée à la Fig.8.


Fig. 8. Apparence de l'interface d'horloge WEB et de la ligne de commande, illustrant la réponse à la commande ping.

Sur cette page, tous les points d'accès trouvés sont affichés. Les points d'accès sont triés par force du signal, la ligne supérieure est le point d'accès avec le signal le plus fort et très probablement le plus proche (c'est-à-dire celui auquel vous devez vous joindre). Vous devez saisir un mot de passe, sélectionner un fuseau horaire et cliquer sur OK. Le système activera le mode «client» (simultanément avec le «point d'accès») et tentera de se joindre. Si la connexion réussit, les paramètres seront stockés dans l'EEPROM. Si la connexion a échoué, un message apparaît sur la page et vous pouvez réessayer d'entrer le mot de passe, etc.

Après une connexion réussie au réseau, le mode «point d'accès» sera désactivé et seul le mode «client» restera, c'est-à-dire La page de lecture n'est accessible que depuis le réseau interne.
Afin de pouvoir accéder à la montre par son nom (dans mon cas «esp»), la bibliothèque NBNS est lancée, qui fournit une réponse via le protocole NetBios. La bibliothèque permet à la montre de répondre à des commandes comme ping esp et d'y accéder simplement par le nom esp

Pour des raisons qui ne me paraissent pas claires, il s'agit d'une merveilleuse bibliothèque qui répond à une demande de diffusion telle que "à quelle adresse est le" nom "?" et vous permettant d'oublier la triste procédure de détermination de l'adresse IP de l'appareil en fonction des données internes du routeur (switch), elle est très rarement utilisée. Presque tous les appareils de l'ESP8266 décrits sur Internet n'utilisent pas ce mécanisme simple et pratique. La paresse devrait faire avancer le progrès - mais dans ce cas, elle ne bouge pas.

Ensuite, le cycle de programme principal démarre, dans lequel les événements suivants se produisent:

  • L'heure actuelle est interrogée et lorsque les secondes passent, un changement dans l'affichage de l'heure commence.
  • Le capteur de lumière est interrogé et le rapport cyclique du signal PWM est ajusté, ce qui contrôle la luminosité de l'horloge. Le but de l'ajustement est de maintenir le contraste constant des nombres lors du changement de l'éclairage dans la pièce.
  • VL53L0X. , 2 .

Des expériences ont montré que 2 mètres sont dans des conditions idéales lorsqu'une feuille de papier blanc ou une feuille d'aluminium avec un coefficient de réflexion proche de l'unité est utilisée comme réflecteur. Pour les objets ordinaires avec un coefficient de réflexion imparfait (tissu, peau humaine, etc.), la distance de détermination sûre est légèrement supérieure à 1 mètre. Si le capteur indique la présence d'un objet devant la montre, un sous-programme commence à afficher la température extérieure actuelle, l'humidité et la pression atmosphérique. Des mesures ont été prises pour une certaine augmentation de l'immunité au bruit - l'algorithme le plus simple «plus de 50% des opérations» est utilisé. Cela signifie que pour un intervalle de 800 ms, la cible doit être détectée à une distance inférieure à 1 mètre dans plus de la moitié des mesures de la plage. Lors du débogage, le système a montré que généralement 50 à 60 opérations sont obtenues lorsque la cible est dans le champ de vision du capteur.

Le système de détection humain ne fonctionne que lorsque la cible apparaît dans le champ de vision. Pour recommencer l'émission, vous devez prendre du recul et recommencer. Ceci est fait pour supprimer la situation qui, en se tenant devant l'horloge, affiche tous les paramètres externes de temps.

Le capteur laser VL53L0X utilise une diode laser IR émettant à une longueur d'onde de 940 nm, sans danger pour les yeux.

La vidéo montre la réaction du système à l'apparition d'un obstacle dans le champ de vision du localisateur laser:


Le plan initial pour déclencher l'affichage de données externes était d'utiliser une puce de reconnaissance vocale. Pour ce faire, j'ai utilisé la puce WTK6900B02 (reconnaissance de commande vocale), aimablement fournie par Sound Technologies. Selon la description, le microcircuit doit reconnaître une dizaine de commandes audio et émettre un code binaire correspondant à la commande reçue. Une impulsion du microcircuit a été connectée à l'une des sorties de l'ESP8266 et un gestionnaire d'interruption matérielle y a été connecté. Par interruption matérielle, le fait de la reconnaissance d'une commande vocale est enregistré. Un certain nombre de commandes en anglais ont été pré-enregistrées dans la puce que j'ai reçue. Je me suis entraîné dur dans la "prononciation correcte" des commandes, pour qu'elles soient reconnues. Il s'est avéré que l'on ne devait pas parler avec la prononciation d'Oxford, mais avec un accent chinois :)), assez fort.

Malgré le temps considérable passé, je n'ai pas pu obtenir une reconnaissance fiable des commandes vocales. Le meilleur que j'ai obtenu était une reconnaissance correcte d'environ 50%. Par conséquent, j'ai été obligé d'utiliser un autre mécanisme pour déclencher l'affichage de données externes - le télémètre laser VL53L0X.

Le programme principal de la montre a laissé des traces d'utilisation du système de commande vocale.
Le programme comprend également des parties pour lire les données de leur capteur ultraviolet VEML6070. Le fait est que j'ai débogué le programme d'horloge alternativement à la maison et au travail, et je n'avais qu'un seul capteur MAX44009. Par conséquent, au travail, le capteur ultraviolet VEML6070 a été connecté à l'ESP8266 et une partie du programme a été écrite pour déterminer lequel des capteurs est actuellement connecté. Pour travailler sur l'algorithme de réglage du contraste, cela s'est avéré être tout à fait suffisant, et je n'ai rien changé dans la version finale du programme.

Sortie de données vers les registres HV5622


Comme je l'ai mentionné ci-dessus, pour contrôler les lampes à décharge, des microcircuits capables de commuter une tension assez élevée sont nécessaires. J'ai choisi les puces HV5622, qui sont un registre 32 bits avec écriture séquentielle et lecture parallèle. Les cathodes des lampes sont chacune connectées à leur borne HV5622. Pour allumer un chiffre spécifique, il est nécessaire de sortir 0. Aux deux premiers HV5622 sont connectées les cathodes de six GRI, au troisième HV5622 sont les séparateurs de points d'heures-minutes et minutes-secondes et les cathodes de la septième lampe avec des caractères spéciaux. Pour inclure les chiffres nécessaires dans les lampes, un nombre de 32 bits doit être affiché dans le registre, dans lequel le journal 1 (les données à l'intérieur du HV5622 sont inversées) correspond aux cathodes nécessaires des lampes. Le programme a des tableaux de variables de dimension 10 32 bits.Chaque élément d'un tel tableau contient un nombre binaire avec log 1 à l'une des positions, dont la sortie dans le registre conduira à l'allumage du chiffre souhaité. Étant donné que chaque microcircuit contrôle plusieurs GDI, pour la sortie, il est nécessaire de former une variable 32 bits à partir de plusieurs éléments, consistant principalement en 0 logique, où log 1 correspond aux chiffres nécessaires dans chaque lampe.

Il convient de mentionner que la décision d'utiliser des matrices pour contrôler les cathodes GRI a un sérieux avantage: si une erreur a été commise et que les conclusions du GRI ont été mélangées lors du soudage des fils des prises GRI aux prises HV5622, puis pour le réparer, il suffit de changer la constante dans le programme sans rien souder. Le nombre important et la disposition serrée des fils HV5622 rendent difficile le soudage de deux fils adjacents.

Pour compléter les trois registres, il est nécessaire de sortir 3 variables 32 bits (96 bits au total). Il est déraisonnable de le faire avec un «effet de levier» - trop long et trop long.

Heureusement, l'ESP8266 intègre un mécanisme matériel (HSPI) pour la communication série, et le SDK a des fonctions d'accès à ce mécanisme. Avec le lancement de ce mécanisme, j'ai dû souffrir. La difficulté était qu'il n'était pas clair où placer les variables 32 bits pour la sortie en mode HSPI. Pour comprendre le mécanisme HSPI, j'ai utilisé un analyseur logique. Après une série d'expériences, j'ai réalisé que 96 bits sont sortis, cependant, c'est le nombre de 32 bits souhaité au début et deux nombres de 32 bits contenant des ordures arbitraires. La recherche sur Internet n'a rien donné, mais à quel moment j'ai réalisé que s'il y avait une instruction comme WRITE_PERI_REG (SPI_W0 (HSPI), d0); alors vous pouvez essayer d'écrire WRITE_PERI_REG (SPI_W1 (HSPI), d1); et en outre WRITE_PERI_REG (SPI_W2 (HSPI), d2); où d0, d1, d2 sont des variables de 32 bits. C'est-à-direvous devez d'abord décomposer les données dans les registres SPI_W0 - SPI_W2, puis émettre une commande pour démarrer l'échange. Je note également que le module HSPI peut produire jusqu'à 512 bits et qu'il n'y a que 16 registres de ce type: W0 - W15.

Le signal LE, par lequel les données sont transférées vers le registre de sortie HV5622, est généré par programme.

Débogage du système


Je n'ai pas osé déboguer le système immédiatement avec une pleine haute tension (230 volts) et j'ai fait une douzaine de LED avec un indicateur de débogage avec une tension de fonctionnement de 5 volts. Après le débogage, lorsque j'étais sûr que les bonnes LED étaient allumées correctement, le GRI était monté dans les panneaux et un haut était appliqué. À la suite d'une telle séquence de débogage, pas une seule puce ou un seul voyant n'a été endommagé :). Une photographie du nœud utilisé pour le débogage est illustrée à la figure 9.


Figure 9. Photo de l'assemblage de DEL de débogage.

Un court processus de débogage vidéo ici


Logement


L'idée originale était de fabriquer un boîtier brutal en métal épais comme le cuivre, le laiton ou le bronze. Cependant, comme la connexion Wi-Fi nécessite un boîtier diélectrique, dans la version finale, il ne reste que le panneau avant en métal épais. Une recherche rapide sur Internet de sociétés réalisant des boîtiers sur mesure a donné un chiffre d'environ 5000 r par boîtier. À mon avis, il s'agit d'un montant déraisonnable dans les circonstances actuelles. J'ai donc ramassé le bâtiment fini (Gainta G2119C), l'ai acheté sur le chemin du chalet dans la boutique Shcherbinsky Chip-i-Deep et je me suis installé là-dessus, laissant la question de la face avant et peut-être un autre bâtiment pour plus tard.

Malgré la faille dans la partie du boîtier de la montre, j'ai décidé d'indiquer les résultats obtenus dans l'article, estimant que les solutions de circuits et de logiciels développées et appliquées seraient d'intérêt pour le public.

L'aspect de l'affaire aujourd'hui est présenté sur la Fig.10.




Figure 10. Apparence du boîtier de la montre

Conclusion


La montre fonctionne depuis plus d'un an, il n'y a eu aucun échec, les tâches sont terminées. Je vais énumérer à nouveau les caractéristiques distinctives de ma variante de montre:

  • Mode d'affichage statique avec effet simultané d'un changement en douceur des nombres
  • Utilisation des puces HV5622 pour contrôler GRI
  • Les données HV5622 sont écrites à l'aide du moteur matériel HSPI
  • L'heure exacte est prise à partir des serveurs d'heure exacte d'Internet.
  • L'accès à l'horloge est possible par son nom depuis le réseau interne
  • La configuration est requise une fois au premier démarrage.
  • L'absence totale de boutons, d'alarmes, etc.
  • Ajustement continu de la luminosité de la lueur du GRI afin de maintenir un contraste d'image constant dans les limites données du changement de la lumière ambiante
  • La montre réagit à l'approche d'une personne et affiche la température de la rue, l'humidité, la pression atmosphérique.

Je suis satisfait :)

→ L'archive avec le programme se trouve ici

Source: https://habr.com/ru/post/fr431868/


All Articles