1 points par GN⁺ 2 시간 전 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • Pour réduire au niveau 1 une veilleuse qui s’allume toujours au niveau de luminosité 3, l’auteur a fabriqué un PCB basé sur un ATtiny85 qui appuie trois fois sur le bouton à la mise sous tension
  • Comme l’alimentation par chute capacitive ne fournit que quelques mA, il a choisi l’ATtiny85, qui consomme moins de 1 mA à 1 MHz et descend à quelques μA en veille, plutôt qu’un ESP8266 ou un Raspberry Pi Zero
  • Le circuit est construit autour d’un HT7333 qui abaisse 8,3 V à 3,3 V et d’un 2N3904 qui met le bouton à la masse, puis conçu et fabriqué avec EasyEDA et JLCPCB
  • La puce a été programmée avec le GPIO d’un Raspberry Pi 3 et avrdude ; lorsque Home Assistant allume la veilleuse, le système attend brièvement puis appuie trois fois sur le bouton pour passer automatiquement à la luminosité minimale
  • Les fichiers de conception et le code C sont publiés sous licence MIT, mais ils ne s’appliquent qu’aux appareils dont la tension interne est de 4 à 12 V et dont l’entrée du bouton est mise à la masse ; les appareils secteur sans transformateur exigent une prudence particulière

Les trois pressions de bouton répétées chaque jour

  • Home Assistant est configuré pour allumer la veilleuse via une prise murale Zigbee lorsque le téléphone passe en mode Concentration Sommeil
  • Cette veilleuse bon marché dispose d’un interrupteur pour activer ou non l’allumage automatique et d’un bouton pour changer le niveau de luminosité, mais elle démarre à chaque mise sous tension au niveau de luminosité 3
    • Une pression sur le bouton passe au niveau 4, une autre au niveau 5, et la troisième au niveau 1
    • Pour obtenir la luminosité minimale souhaitée, il fallait appuyer trois fois sur le bouton chaque soir
  • Après ouverture, aucun nom de puce n’était visible à l’intérieur, et il n’y avait pas non plus de potentiomètre de réglage
  • Une méthode trouvée en ligne, consistant à maintenir le bouton enfoncé environ 10 secondes pour modifier la luminosité par défaut dans l’EEPROM, ne fonctionnait pas sur ce produit

Un microcontrôleur adapté à une puissance limitée

  • La solution la plus appropriée consistait à utiliser un microcontrôleur pour automatiser l’entrée du bouton
  • La veilleuse abaisse la tension secteur avec un condensateur plutôt qu’un transformateur, de sorte que son alimentation ne peut fournir que quelques mA
    • L’ESP8266 du Wemos D1 Mini nécessite plusieurs centaines de mA au démarrage et lors de l’activation du sans-fil
    • Le Raspberry Pi Zero est un véritable ordinateur Linux qui doit démarrer un système d’exploitation
    • Ces deux appareils auraient nécessité une alimentation séparée, ou un gros condensateur de stockage et un circuit supplémentaire pour encaisser le démarrage
  • Le choix final, l’ATtiny85, appartient à la famille AVR comme les Arduino classiques, et son code peut être écrit avec l’IDE Arduino
    • Sa consommation est inférieure à 1 mA à 1 MHz
    • En veille, elle descend à un niveau de quelques μA, comparable à celui d’une montre à quartz
    • Les LED de la veilleuse consomment des milliers de fois plus d’énergie que l’ATtiny85

Un circuit qui reproduit une vraie pression sur le bouton

  • Le rail d’alimentation interne de la veilleuse est à 8,3 V, tandis que l’ATtiny85 a besoin de 3,3 V ; un régulateur de tension HT7333 est donc utilisé
  • Un transistor 2N3904 met la ligne de signal du bouton à la masse afin de reproduire l’action réelle d’une pression sur le bouton
  • Les composants autour assurent la limitation du courant, la prévention des entrées parasites et la stabilisation de l’alimentation
    • La résistance de 1 kΩ entre l’ATtiny85 et le transistor limite le courant de commande traversant le transistor
    • La résistance de 10 kΩ maintient le transistor à l’état coupé pendant la mise sous tension, afin d’éviter toute entrée de bouton involontaire
    • Trois petits condensateurs lissent l’alimentation fournie au régulateur de tension et à la puce
    • Un connecteur à 3 broches se raccorde à l’alimentation, à la masse et à la ligne de signal du bouton
  • Le circuit a été conçu comme une carte séparée afin de pouvoir servir d’appareil générique appuyant sur un bouton un nombre défini de fois, et pour apprendre le processus de fabrication d’un PCB

Conception du circuit et de la carte dans EasyEDA

  • Dans EasyEDA, les composants et leurs connexions ont d’abord été décrits sous forme de schéma
    • Les points de connexion portant le même nom, comme GND et 3V3, sont reliés entre eux par le routeur
    • Le fait de préciser les composants réels à utiliser peut ensuite servir au placement sur le PCB et à la nomenclature
  • À l’étape d’édition du PCB, il est possible de définir directement l’emplacement des composants, les pistes, la forme de la carte et les éléments imprimés
    • Le logo open source hardware et le nom d’utilisateur ont été imprimés sur la carte
  • Le circuit étant simple, il a été réalisé sous forme de carte simple face, sans routage complexe ni correction de longueur ou de forme des pistes

Fabrication chez JLCPCB et assemblage des composants

  • La carte a été commandée chez JLCPCB en choisissant les composants réels et l’assemblage ou non
  • La quantité minimale de commande était de 5 cartes, mais une seule était nécessaire ; la plupart des composants ont donc été soudés à la main
    • Les très petites résistances et les condensateurs ont été assemblés par JLCPCB, car le surcoût était faible
  • La carte a été reçue 4 jours après la commande

Programmation de l’ATtiny85 et validation préalable

  • Un ATtiny85 vierge n’a pas de bootloader et ne peut donc pas être connecté directement en USB comme un Arduino ; il nécessite un programmateur séparé
  • La programmation a été réalisée avec le GPIO d’un Raspberry Pi 3 et avrdude
    • Après avoir relié le header du Pi à la puce avec six fils jumper, une seule commande a été exécutée
  • Avant de le connecter directement à la veilleuse, le fonctionnement a été vérifié en branchant une LED sur la broche de sortie
    • Le comportement final consiste à clignoter trois fois puis à rester arrêté
    • Dans la vidéo de test, le nombre requis a été corrigé tardivement, d’où quatre clignotements

Installation et sécurité vis-à-vis du secteur

  • La carte terminée a été soudée à l’intérieur de la veilleuse, une opération difficile en raison de la très petite taille des composants et de l’espace disponible
  • Le gros condensateur de la carte existante était installé avec la polarité inversée, ce qui a été confirmé par une vérification au multimètre
  • Comme la veilleuse n’a pas de transformateur, l’ajout du PCB relie l’ensemble du circuit au secteur
    • L’ATtiny85 doit être flashé avant d’être placé dans l’appareil
    • Après installation, il ne faut plus reconnecter de câble USB ni de Raspberry Pi

Automatisation du coucher et fonctionnement final

  • Lorsque la montre indique au téléphone l’état de coucher, le téléphone en informe Home Assistant, qui allume la veilleuse via la prise Zigbee
  • Une fois alimenté, le PCB attend brièvement pour éviter un dysfonctionnement de la veilleuse, puis appuie trois fois sur le bouton afin de passer au niveau de luminosité 1
  • L’ombre du câblage interne est visible derrière le diffuseur, mais elle n’apparaît pas sur le mur de la pièce et ne pose donc pas de problème à l’usage

Ressources open source et conditions d’application

  • Les éléments suivants sont publiés sous licence MIT sur tymscar/button-presser
    • Les fichiers Gerber permettant de fabriquer la même carte
    • La nomenclature et le schéma
    • Un court code C exécuté sur l’ATtiny85
  • Avant toute application, les deux vérifications au multimètre indiquées dans le README doivent être effectuées
  • Ce circuit ne fonctionne que dans les appareils disposant en interne d’un rail d’alimentation de 4 à 12 V, et dont le signal est mis à la masse lorsque le bouton est pressé
  • Plusieurs appareils bon marché remplissent ces conditions, mais ce n’est pas le cas de tous les produits ; pour les appareils fonctionnant sur secteur, il faut consulter les consignes de sécurité avant toute intervention

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.