Thermomètre et hygromètre Arduino avec E-PAPER sur nRF52832 - ou ce que les fabricants ont oublié de publier

Salutations à tous les lecteurs Habr! Dans mon prochain article, je reviendrai sur ARDUINO. Je veux partager avec vous mon prochain projet, implémenté sur le microcontrôleur nRF52832. Il s'agit d'un capteur de température et d'humidité sur sht20 | ( fiche technique ) avec un affichage à encre électronique monochrome (E-INK | E-PAPER), qui fait partie de l'écosystème MySensors.


Sa fonctionnalité principale est la surveillance de la température et de l'humidité dans la pièce, l'envoi de données au contrôleur d'une maison intelligente ou directement à l'actionneur. Eh bien, une fonctionnalité supplémentaire n'est que la sortie des données du capteur sht20, des informations réseau et du niveau de la batterie vers le moniteur. Dans ma mise en œuvre, il s'agit simplement d'une interaction directe directement avec l'actionneur (contrôleur de système de chauffage). L'implémentation est non canonique du point de vue de MySensors, j'ai ajouté la fonctionnalité des modes maître-esclave, des types de capteurs et du snap aérien. De plus, dans ma mise en œuvre, la procédure d'initialisation de la couche de transport a été modifiée, car La logique MySensors n'est pas très bonne pour les appareils autonomes. Mais tout cela est une histoire légèrement différente, peut-être digne d'une publication séparée, mais pour l'instant un article sur l'appareil dans la tradition du protocole MySensors.

L'idée d'un appareil avec une telle fonctionnalité a mûri dans ma tête depuis longtemps, la première tentative de mise en œuvre de cette idée a été faite sur le microcontrôleur atmega328. Et en principe, cela a été fait, mais je voulais plus d'efficacité énergétique, un affichage plus coloré des informations sur l'écran.

version sur atmega 328



Lors de la présentation du capteur, la communauté a parfois fait référence à l'appareil de la société Xiaomi, ils disent qu'il l'est déjà. Mais il y a une légère différence, Xiaomi a un dispositif d'affichage, dans mon cas, c'est un capteur de système de maison intelligente avec une fonction d'affichage. Pourquoi afficher? Je veux juste parfois tourner la tête en direction du capteur et regarder la température dans la pièce :).



Le capteur a été implémenté sur deux cartes, la base du circuit d'affichage a été prise à partir des écrans Waveshare courants | Datashit . Certes, des modifications mineures ont été apportées plus tard. Le cerveau du capteur est la puce nRF52832 dans une implémentation modulaire de HOLYIOT. Les modules eux-mêmes méritent une attention particulière, c'est l'implémentation la plus sans problème en termes de travail dans l'IDE Arduino. L'appareil utilisait des modules - YJ-16048.



La base de la mise en œuvre logicielle du travail avec l'écran a été prise "instance" distribuée sur le site Waveshare Electronics. Certes, ce n'était pas sans raffinement.

Les mesures de la consommation d'affichage correspondent à celles indiquées dans la fiche technique, le plus important est que cet affichage puisse dormir et que les données restent à l'écran. Certes, transformer l'affichage en rêve n'a pas fonctionné tout de suite, la mise en œuvre de Waveshare ne l'a pas permis.

La puissance du capteur est implémentée sur deux batteries cr2450, abaisse la puce TPS62745DSSR1 avec de très bonnes caractéristiques à un 3,3 V fonctionnel | fiche technique . Pour le moment, nous pouvons affirmer avec confiance que cet appareil (la version décrite) est capable de fonctionner pendant 1 an.

Consommation en mode sommeil profond - ~ 25 μA (avec un programme de test). Consommation moyenne en mode de fonctionnement ~ 9mA.

Le projet est ouvert, les fichiers gerber sont disponibles sur le site OpenHardVar , le code du programme et la bibliothèque sont disponibles ici ( google drive ) Pourquoi pas GitHub? Il en est ainsi, dans la ré-finalisation (v2), il sera là aussi.

Une conversation séparée pour ceux qui ont décidé de répéter cet appareil mérite le sujet de la conversion des caractères des polices souhaitées en tableaux C. Mon expérience convertit en utilisant TheDotFactory.

Je vais essayer de décrire le processus avec des images :)


























Absolument n'importe quelle police, vous n'êtes limité que par les capacités de la mémoire nRf52 ... Et cela n'a aucun sens de stocker tous les caractères. Si vous n'avez besoin que de chiffres, cela économise très bien de l'espace.

Un autre problème rencontré a été la mise à jour des informations à l'écran. Sur ces écrans, une mise à jour partielle de la zone souhaitée à l'écran est disponible, ce qui est un plus absolu de la part de la consommation d'énergie, mais le moins est l'apparition d'artefacts dans la zone de mise à jour des données des caractères précédents.



Mais ce problème a été résolu (voir le code du programme). Cela a fini comme ceci:









La vidéo montre le fonctionnement de l'écran.


Cela démontre la mise à jour des données à l'écran, après raffinement:


Cette implémentation n'est pas définitive, ce projet est laissé à la répétition sous la forme d'un module Arduino. Un corps n'y est pas prévu. Maintenant, de ce projet, plusieurs sont nés à la fois comme une suite logique. Les principales différences du futur V2 sont alimentées par une seule batterie, un écran tricolore, la présence d'un boîtier.

Exemple de déclenchement d'un affichage tricolore:


Il est fortement recommandé (pour ceux qui souhaitent répéter) de lire mon sujet sur le forum .org sur ce projet (en anglais). Si la langue est un problème, je serai toujours ravi d'aider tout le monde dans le chat (installation de cartes, travail avec des microcontrôleurs nRF5 dans un environnement ide arduino, astuces pour travailler avec le protocole mysensors - @mysensors_rus

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


All Articles