Table des matières:

Lampe Sunrise contrôlable lumineuse : 6 étapes
Lampe Sunrise contrôlable lumineuse : 6 étapes

Vidéo: Lampe Sunrise contrôlable lumineuse : 6 étapes

Vidéo: Lampe Sunrise contrôlable lumineuse : 6 étapes
Vidéo: Lustre Zigbee économique avec lumière blanche et colorée, pour les petits espaces 2024, Juillet
Anonim
Lampe Sunrise contrôlable lumineuse
Lampe Sunrise contrôlable lumineuse
Lampe Sunrise contrôlable lumineuse
Lampe Sunrise contrôlable lumineuse

Vous êtes-vous déjà réveillé à 7 heures, l'heure habituelle dont vous avez besoin pour vous réveiller pour le travail, et vous êtes-vous retrouvé dans l'obscurité ? L'hiver est une période terrible, non? Vous devez vous réveiller au milieu de la nuit (sinon pourquoi fait-il si noir ?), vous arracher du lit et envoyer votre corps semi-conscient à la douche.

Ce projet vise à résoudre l'un des problèmes - l'obscurité du matin.

Il existe de nombreuses lampes de lever de soleil bon marché, mais elles sont toutes de faible puissance et pâles. Ils ressemblent plus à une lampe de nuit, censée vous faire mieux dormir. Pas du tout ce que je veux.

Dans le même temps, il suffit d'allumer la lumière vive pour vous réveiller immédiatement, mais pas assez doucement. Ce que je veux, c'est une combinaison des deux approches - allumer avec une faible luminosité, atteindre lentement la pleine vitesse, puis une véritable alarme se déclenche et vous n'avez plus sommeil. Ajoutons-y un peu de chant d'oiseau, et vous vous réveillez au paradis chaque matin !

Étape 1: Réseau de lampes

Réseau de lampes
Réseau de lampes
Réseau de lampes
Réseau de lampes

Tout d'abord, nous avons besoin de la lampe elle-même. J'ai une assez grande pièce avec des murs et un plafond blancs, alors j'ai opté pour 7 lampes LED GU10, environ 6W chacune, plus de 40W de puissance pure ! C'est assez pour vous donner l'impression qu'il fait déjà jour. Il peut également être utilisé comme éclairage de pièce habituel pendant la journée.

Peu importe comment vous l'assemblez, quelles lampes vous utilisez avec quelles douilles. Tout ce qui compte - ce doivent être des lampes à intensité variable !

Dans mon cas, j'ai une planche de bois avec 7 douilles GU10 attachées, toutes connectées ensemble. Je le mettrai dans une boîte en plastique plus tard.

Étape 2: Théorie de la gradation

Théorie de la gradation
Théorie de la gradation

En théorie, il n'y a pas de différence entre la théorie et la pratique. En pratique, il y a.

Contrôler un gradateur depuis ESP32/Arduino ne semblait pas aussi simple que je l'imaginais. J'ai l'un des modules RobotDyn AC Light Dimmer. Le fabricant propose une bibliothèque pour cela. Cela ne fonctionne pas sur ESP32 (et c'est vraiment difficile à adapter, car il utilise beaucoup d'accès au registre spécifique à ATMega de bas niveau), fonctionne en quelque sorte sur Arduino Nano, donnant un terrible scintillement sur une luminosité faible-moyenne. C'est pourquoi j'ai passé du temps à étudier comment tout cela fonctionne et à faire mon propre chemin.

Un peu de théorie

Le module variateur choisi utilise un TRIAC très répandu: le BTA16. Il y a plein d'articles à ce sujet. Je vais essayer de le résumer ici.

TRIAC est un module qui peut transmettre une tension d'entrée positive ou négative à la sortie, ou peut la bloquer. Par défaut, il bloque tout. Pour l'ouvrir, nous devons lui donner un signal haut sur l'entrée du gate pendant 100 us. Ensuite, il restera ouvert jusqu'à ce que le courant tombe à zéro, ce qui se produit lorsqu'une tension d'entrée change de signe, croisant une tension nulle. Ensuite, au cycle suivant, nous devrions faire une autre impulsion de 100 us et ainsi de suite. En choisissant quand donner une impulsion, nous contrôlons la luminosité: faites-le au tout début, et elle sera proche de 100% de transmission de puissance. Faites-le plus tard, et il sera estompé. Consultez le schéma ci-dessus, l'expliquant.

Afin de générer des impulsions au même point du cycle, nous devons savoir exactement quand il commence. C'est pourquoi le module de gradation a un détecteur Zero-Cross intégré. Il élève simplement un signal (que nous capterons comme une interruption matérielle dans Arduino) chaque fois que la tension passe à zéro.

Étape 3: Pratique de la gradation

Pratique de la gradation
Pratique de la gradation

Oui, c'est comme ça que vous vous réveilleriez si votre lampe n'avait pas de gradation et mettait les 40 W de puissance dans vos yeux endormis.

Problèmes communs

Il y a plusieurs problèmes que nous devons résoudre.

Vacillant.

La synchronisation du microcontrôleur doit être très précise pour activer et désactiver la sortie de la porte. La bibliothèque suggérée par RobotDyn, a une interruption de minuterie tous les 100us et modifie le niveau de porte uniquement sur la minuterie. Cela signifie qu'il peut être à +/- 50 microsecondes de la valeur optimale. Il donne un bon résultat sur une luminosité élevée, mais scintille beaucoup sur une luminosité faible. De plus, si le microcontrôleur fait beaucoup de choses, cela diminue la précision du temps, donc idéalement, un microcontrôleur dédié devrait être utilisé pour le gradateur.

Luminosité minimale. Les LED ont un convertisseur de puissance intégré, qui refusera simplement de fonctionner sans assez de puissance. Mes lampes semblaient bien fonctionner à partir de 10-11%.

Même avec cette valeur, certaines de mes lampes refusaient de s'allumer au démarrage. Même en augmentant la luminosité plus tard, ils restent sombres. C'est pourquoi, lorsque nous passons de l'état OFF à une luminosité positive, nous commençons par une période de préchauffage de 5 cycles, lorsque nous donnons la pleine puissance aux lampes. Ensuite, nous continuons avec la luminosité souhaitée. C'est presque imperceptible, mais ça aide vraiment.

Fréquence secteur 50/60 Hz. Vous devez savoir combien d'attente avant le prochain zéro. C'est assez simple - nous regardons juste la différence de temps entre les deux dernières interruptions.

Changement progressif de luminosité. ESP32 est assez lent, il faut 0,5 seconde pour traiter une requête HTTP ou même WebSocket triviale, alors ne vous attendez pas à une transition de luminosité en douceur, elle doit être implémentée d'une manière ou d'une autre au niveau du gradateur. C'est pourquoi, lorsqu'il reçoit une nouvelle luminosité d'un port série, il définit simplement la cible, puis s'en approche lentement au fil du temps.

La solution

Voici mon code Arduino simple pour le gradateur. Il attend une commande (un octet avec la nouvelle luminosité) de l'entrée série, gère les interruptions Zero-Cross, contrôle le TRIAC, gère tous les problèmes ci-dessus.

Étape 4: Contrôleur de lampe (ESP32)

Contrôleur de lampe (ESP32)
Contrôleur de lampe (ESP32)
Contrôleur de lampe (ESP32)
Contrôleur de lampe (ESP32)

Voici le schéma de connexion de tous les composants que j'ai. La carte ESP32 est très différente de ce que j'utilise (Heltec), donc les broches choisies ont l'air un peu bizarres, mais ça devrait quand même bien fonctionner. N'hésitez pas à utiliser différentes broches dans votre projet.

Voici le code qui contrôle tout. C'est assez simple.

Les principales caractéristiques

Contrôlable. La lampe se connecte au WiFi, démarre un serveur WebSocket sur le port 81, attend les commandes. Le format de la commande est

Seules deux commandes sont prises en charge pour le moment: "set_brightness" et "update_settings", qui sont… assez autodescriptifs.

Obtenir du temps de NTP. Je ne veux pas trop compliquer les choses et ajouter une horloge en temps réel au schéma. Nous avons accès à Internet, ce qui signifie que nous pouvons obtenir l'heure réelle à partir d'un serveur NTP, puis suivre l'heure actuelle à l'aide des minuteries du système.

Sunrise Alarm. Vous pouvez définir une alarme. Ce qu'il fait réellement: commence par la luminosité minimale et passe progressivement à la pleine luminosité en 10 minutes. Ensuite, il reste allumé pendant quelques heures. Puis il s'éteint progressivement en 60 secondes.

Tous les paramètres ci-dessus sont configurables.

Oiseaux chantant. DFPlayer mini est utilisé pour jouer de la musique. Il existe de nombreux guides pour cela, mais il vous suffit essentiellement de brancher une carte MicroSD, formatée en FAT32, avec un fichier appelé 0001.mp3. Ce fichier peut avoir tout ce que vous voulez, dans mon cas c'est 15 minutes de chant d'oiseaux (il sera bouclé), et ça rend ma matinée incroyable. Notez qu'il y a un énorme condensateur sur l'alimentation, et des résistances de 1 kOhm sur la ligne série entre ESP32 et DFplayer - ils sont facultatifs, mais aident à réduire le bruit.

Stockage des paramètres dans l'EEPROM. Tous les paramètres sont écrits dans l'EEPROM et chargés au démarrage. Il permet d'utiliser la lampe avec au moins une fonction d'alarme sans contrôleur connecté.

Rendu de certaines informations sur l'écran OLED. Mon Heltec ESP32 a un écran SSD1306 128X64 I2C intégré. Toutes les informations essentielles y sont rendues. Je sais, la boîte a l'air moche, je viens d'imprimer des trucs en 3D et de découper les trous et les fenêtres avec une perceuse. Rapide, sale, mais ça marche !

Étape 5: Panneau de configuration

Panneau de commande
Panneau de commande
Panneau de commande
Panneau de commande

C'est le coeur du projet. Un Raspberry Pi avec un écran 7 original, exécutant un front-end Kivy.

Voici le code source complet.

Les caractéristiques

Écrit en Python. J'adore Kivy, c'est un framework Python pour les interfaces utilisateur. Très simple, mais flexible et efficace (utilise beaucoup de code C à l'intérieur pour des performances élevées et une accélération matérielle).

Météo. Affiche la température et la pression extérieures actuelles. Si vous connectez un capteur à distance - la température intérieure également. Il demande et analyse également les prévisions météorologiques pour les 12 heures suivantes et donne un avis sur une probabilité de pluie.

Contrôleur SunriseLamp. Un autre panneau affiche des informations de base sur l'alarme et vous permet de régler la luminosité. Si vous allez dans les paramètres, vous pouvez configurer n'importe quel paramètre de la lampe, y compris le programme d'alarme, le volume audio maximal, etc.

Screensaver. Renders Game of Life sur l'écran après une certaine période d'inactivité.

Il y en avait plus que ça, mais d'autres choses semblaient inutiles.

Installation

J'ai tout installé manuellement sur Raspbian, et maintenant je peux dire: ne répétez pas mes erreurs. Utilisez le KivyPie, il a tout pré-installé.

En dehors de cela, suivez simplement le guide d'installation dans le référentiel de code.

Étape 6: Profitez

Personnellement, je suis satisfait de l'appareil. Je l'utilise comme éclairage principal à la maison pendant une journée, et il me permet de me réveiller le matin, c'est incroyable.

Je sais que les instructions ne sont pas très granulaires et descriptives. Si quelqu'un fait la même chose et a des problèmes, je serai ravi de vous aider !

Conseillé: