Table des matières:

Lumière de réveil : 7 étapes (avec photos)
Lumière de réveil : 7 étapes (avec photos)

Vidéo: Lumière de réveil : 7 étapes (avec photos)

Vidéo: Lumière de réveil : 7 étapes (avec photos)
Vidéo: Elle Était Coincée Donc Ce Policier L'aide 2024, Novembre
Anonim
Lumière de réveil
Lumière de réveil

Au moment où j'écris cette instructable, c'est le milieu de l'hiver dans l'hémisphère Nord et cela signifie des jours courts et des nuits longues. J'ai l'habitude de me lever à 06h00 et en été le soleil brillera d'ici là. En hiver cependant, il fait jour à 09h00 si nous avons la chance d'avoir un jour où il ne fait pas nuageux (ce qui n'est… pas souvent).

Il y a quelque temps, j'ai lu sur une « lumière de réveil » fabriquée par Philips et utilisée en Norvège pour simuler un matin ensoleillé. Je n'en ai jamais acheté, mais je n'arrêtais pas de penser à en faire un, car en fabriquer un soi-même est plus amusant que de simplement l'acheter.

Fournitures:

Cadre photo "Ribba" 50 x 40 cm de IKEA

panneau dur perforé de quincaillerie

Carte de développement STM8S103 via Ebay ou autres

DS1307 Horloge temps réel (Mouser, Farnell, Conrad, etc.)

Verre de montre 32768 Hz (Mouser, Farnell, Conrad, etc.)

Pile bouton lithium 3V + support de pile bouton

MOSFET canal N BUZ11 ou IRLZ34N (3x)

BC549 (ou tout autre transistor NPN)

autant de leds blanches, rouges, bleues, vertes, etc que vous le souhaitez

quelques résistances et condensateurs (voir schéma)

Powerbrick, 12V à 20V, 3A ou plus (par exemple, ancien bloc d'alimentation pour ordinateur portable)

Étape 1: Rendre (un peu) plus facile à se lever

Rendre (un peu) plus facile à se lever
Rendre (un peu) plus facile à se lever

L'idée est qu'il est difficile de sortir du lit le matin quand il fait encore noir. Et si vous habitez près ou même au-dessus du cercle arctique, il fera noir très longtemps. Dans des endroits comme Tromsö en Norvège, il n'y aura pas du tout de lumière car là-bas le soleil se couche à mi-novembre pour réapparaître à mi-janvier.

Philips a donc simulé le lever du soleil.

Philips augmente lentement la luminosité d'une lampe, qui est probablement composée de plusieurs leds mais cachée derrière un seul diffuseur. Leur temps d'extinction à pleine luminosité prend 30 minutes.

Les lumières de réveil Philips ne sont pas si chères, mais elles n'ont qu'une seule couleur et elles ont l'air un peu petites. Je pense que je peux faire mieux.

Étape 2: Plus de couleur

Plus de couleur
Plus de couleur

Ma lumière de réveil utilise quatre couleurs, blanc, rouge, bleu et vert. Viennent d'abord les leds blanches, puis les rouges, et enfin quelques leds bleues et vertes. Mon idée était que je pouvais simuler non seulement l'augmentation de la luminosité mais aussi le changement de couleur de la lumière du matin, en commençant par un peu de blanc, en ajoutant du rouge un peu plus tard et en mélangeant du bleu et du vert à la fin. Je ne suis pas sûr que cela ressemble réellement à la lumière du matin, mais j'aime l'affichage coloré tel qu'il est maintenant.

La mienne est également plus rapide que la lumière de réveil Philips, au lieu des 30 minutes de la lumière Philips, la mienne passe de 0% à 100% de luminosité en moins de 5 minutes. Donc mon soleil se lève beaucoup plus vite.

REMARQUE:

Il est TRÈS difficile de faire des photos de ma lumière de réveil, j'ai essayé avec plusieurs appareils photo et smartphones mais toutes les photos que j'ai faites ne rendent pas justice à la réalité.

Étape 3: Courbe sigmoïde, scintillement et "résolution"

Courbe sigmoïde, scintillement et
Courbe sigmoïde, scintillement et

Bien sûr, je voulais que l'éclaircissement soit le plus doux possible. Les yeux humains ont une sensibilité logarithmique, ce qui signifie que dans l'obscurité totale, ils sont plus sensibles qu'ils ne le sont en plein jour. Une très petite augmentation de la luminosité lorsque les niveaux sont bas "sent" la même chose qu'une étape beaucoup plus grande lorsque la lumière est d'environ 40% de luminosité. Pour y parvenir, j'ai utilisé une courbe spéciale appelée Sigmoïde (ou courbe en S), cette courbe commence comme une courbe exponentielle qui se stabilise à mi-chemin. J'ai trouvé que c'est une très belle façon d'augmenter (et de diminuer) l'intensité.

La fréquence d'horloge du microcontrôleur (et des minuteries) est de 16 MHz et j'utilise la résolution maximale de TIMER2 (65536) pour créer trois signaux de largeur d'impulsion (PWM). Par conséquent, les impulsions arrivent 16000000 / 65536 = 244 fois par seconde. C'est bien au-dessus de la limite des yeux pour voir tout scintillement.

Les leds sont donc alimentées par un signal PWM qui est réalisé avec ce 16 bittimer du microcontrôleur STM8S103. Au minimum, ce signal PWM peut être activé sur une longueur d'impulsion et les 65535 longueurs d'impulsion restantes sont désactivées.

Ainsi, les leds connectées à ce signal PM seront alors allumées 1/65536-ème du temps: 0,0015%

Au maximum ils sont ON 65536/65536-ème du temps: 100%.

Étape 4: Électronique

Électronique
Électronique
Électronique
Électronique
Électronique
Électronique
Électronique
Électronique

Microcontrôleur

Le cerveau de la lumière de réveil est un microcontrôleur STM8S103 de STMicroelectronics. J'aime utiliser des pièces qui ont juste assez de capacités pour un travail. Pour une tâche simple comme celle-ci, il n'est pas nécessaire d'utiliser des microcontrôleurs STM32 (mes autres favoris) mais un Arduino UNO n'était pas suffisant car je voulais trois signaux PWM avec une résolution de 16 bits et il n'y a pas de minuterie avec trois canaux de sortie sur un UNO.

Horloge en temps réel

L'heure est lue à partir d'une horloge temps réel DS1307 qui fonctionne avec un cristal 32768 Hz et dispose d'une batterie de secours 3V.

Le réglage de l'heure, du jour et de l'heure de réveil se fait à l'aide de deux boutons et s'affiche sur un écran LCD de 16 x 2 caractères. Pour que ma chambre reste très sombre la nuit, le rétroéclairage de l'écran LCD n'est activé que lorsque les LED sont plus lumineuses que le rétroéclairage et lorsque vous réglez l'heure, le jour et l'heure de réveil.

Puissance

L'alimentation provient d'une ancienne alimentation d'ordinateur portable, la mienne produit 12V et peut fournir 3A. Lorsque vous avez une autre alimentation, il peut être nécessaire d'ajuster les résistances en série avec les chaînes de led. (Voir ci-dessous)

Led

Les leds sont reliées à l'alimentation 12V, le reste de l'électronique fonctionne sur 5V réalisé avec un régulateur linéaire 7805. Dans le schéma, il est dit que j'utilise un régulateur TO220, ce qui n'est pas nécessaire car le microcontrôleur, l'affichage et l'horloge en temps réel n'utilisent que quelques milliampères. Mon horloge utilise une version plus petite TO92 du 7805 capable de fournir 150mA.

La commutation des chaînes de LED se fait avec des MOSFET à canal N. Encore une fois, dans le schéma, il montre d'autres appareils que ceux que j'ai utilisés. Il se trouve que j'avais exactement trois très vieux MOSFET BUZ11 au lieu des plus récents MOSFET IRLZ34N. Ils fonctionnent bien

Bien sûr, vous pouvez mettre autant de leds que vous le souhaitez, tant que les MOSFET et l'alimentation peuvent gérer le courant. Dans le schéma, j'ai dessiné une seule chaîne de n'importe quelle couleur, en réalité il y en a plusieurs de chaque couleur parallèlement aux autres chaînes de cette couleur.

Étape 5: Résistances (pour les Leds)

Résistances (pour les Leds)
Résistances (pour les Leds)

A propos des résistances dans les chaînes led. Les leds blanches et bleues ont généralement une tension de 2,8 V sur elles lorsqu'elles sont à pleine luminosité.

Les leds rouges n'ont que 1,8V, mes leds vertes ont 2V dessus à pleine luminosité.

Une autre chose est que leur luminosité totale n'est pas la même. Il a donc fallu quelques expérimentations pour les rendre tout aussi brillants (à mes yeux). En rendant les leds également lumineuses à pleine luminosité, elles seront également lumineuses à des niveaux inférieurs, le signal de largeur d'impulsion les allume toujours à pleine luminosité, mais pendant des périodes plus longues et plus courtes, vos yeux s'occupent de la moyenne.

Commencez par un calcul comme celui-ci. L'alimentation délivre (dans mon cas) 12V.

Quatre leds blanches en série nécessitent 4 x 2,8V = 11,2V, cela laisse 0,8V pour la résistance.

J'avais trouvé qu'ils étaient assez lumineux à 30mA donc la résistance doit être:

0,8 / 0,03 = 26,6 ohms. Dans le schéma, vous voyez que j'ai mis une résistance de 22 ohms, ce qui rend les LED un peu plus lumineuses.

Les leds bleues étaient trop lumineuses à 30mA, mais comparées aux leds blanches à 15 mA, elles avaient également environ 2,8V sur elles à 15mA, donc le calcul était de 4 x 2,8V = 11,2V laissant à nouveau 0,8V

0,8/0,015 = 53,3 ohm j'ai donc choisi une résistance de 47 ohms.

Mes leds rouges ont également besoin de 15 mA pour être aussi brillantes que les autres, mais elles n'ont que 1,8 V sur elles à ce courant. Je pourrais donc en mettre plus en série et avoir encore de la « place » pour la résistance.

Six leds rouges m'ont donné 6 x 1,8 = 10,8 V, donc sur la résistance était de 12 - 10,8 = 1,2 V

1,2 / 0,015 = 80 ohm, je l'ai fait en 68 ohm. Tout comme les autres, un tout petit peu plus lumineux.

Les leds vertes que j'ai utilisées sont aussi lumineuses que les autres à environ 20mA. Il ne m'en fallait que quelques-uns (comme les bleus) et j'ai choisi d'en mettre quatre en série. À 20 mA, ils ont 2, 1 V dessus, ce qui donne 3 x 2,1 = 8,4 V

12 – 8,4 = 3,6 V pour la résistance. Et 3,6 / 0,02 = 180 ohms.

Si vous construisez ce réveil lumineux il est peu probable que vous ayez la même alimentation, vous devrez ajuster le nombre de leds en série et les résistances nécessaires.

Un petit exemple. Disons que vous avez une alimentation qui donne 20V. J'aurais choisi de mettre 6 leds bleues (et blanches) en série, 6 x 3V = 18V donc 2V pour la résistance. Et disons que vous aimez la luminosité à 40mA. La résistance doit alors être de 2V/0,04 = 50 ohms, une résistance de 47 ohms fera l'affaire.

Je conseille de ne pas dépasser 50mA avec des leds ordinaires (5mm). Certains peuvent gérer plus, mais j'aime être du bon côté.

Étape 6: Logiciel

Tout le code est téléchargeable sur:

gitlab.com/WilkoL/wakeup_light_stm8s103

gardez le code source ouvert, à côté du reste de cette instructable si vous voulez suivre l'explication.

Principal c

Main.c configure d'abord l'horloge, les minuteries et les autres périphériques. La plupart des « pilotes » que j'ai écrits à l'aide de la bibliothèque standard de STMicroelectronics et si vous avez des questions à leur sujet, écrivez-les dans un commentaire sous l'instructable.

Eeprom

J'ai laissé le code « texte à afficher » que j'utilisais pour mettre des textes dans l'eeprom du STM8S103 en commentaire. Je n'étais pas sûr d'avoir assez de mémoire flash pour tout mon code alors j'ai essayé d'en mettre le plus possible dans l'eeprom pour avoir tout le flash pour le programme. En fin de compte, cela n'a pas été nécessaire et j'ai déplacé le texte en flash. Mais je l'ai laissé sous forme de texte commenté dans le fichier main.c. C'est bien de l'avoir, quand j'ai besoin de faire quelque chose de similaire plus tard (dans un autre projet)

L'eeprom est toujours utilisé, mais uniquement pour stocker l'heure de réveil.

Une fois par seconde

Après avoir configuré les périphériques le code vérifie si une seconde s'est écoulée (fait avec une minuterie).

Menu

Si tel est le cas, il vérifie si un bouton a été enfoncé, si tel est le cas, il entre dans le menu où vous pouvez régler l'heure actuelle, le jour de la semaine et l'heure de réveil. N'oubliez pas qu'il faut environ 5 minutes pour passer de l'extinction à la pleine luminosité, alors réglez l'heure de réveil un peu plus tôt.

L'heure de réveil est stockée dans l'eeprom de sorte que même après une panne de courant, il « sache » quand vous réveiller. L'heure actuelle est bien sûr stockée dans l'horloge en temps réel.

Comparaison du courant et de l'heure de réveil

Lorsqu'aucun bouton n'a été enfoncé, il vérifie l'heure actuelle et la compare à l'heure de réveil et au jour de la semaine. Je ne veux pas que ça me réveille le week-end:-)

La plupart du temps, rien n'a besoin d'être fait donc il met la variable « leds » sur OFF sinon sur ON. Cette variable est vérifiée avec le signal "change_intensity", qui provient également d'un timer et est actif 244 fois par seconde. Ainsi, lorsque la variable "leds" est activée, l'intensité est augmentée 244 fois par seconde et lorsqu'elle est désactivée, elle diminue 244 fois par seconde. Mais l'augmentation se fait par étapes simples où la diminution est par étapes de 16, ce qui signifie que lorsque la lumière de réveil a, espérons-le, fait son travail, elle s'éteint 16 fois plus rapidement mais toujours en douceur.

Douceur et HORS MÉMOIRE

Le lissage provient du calcul de la courbe sigmoïde. Le calcul est assez simple mais il faut le faire en variables flottantes (doubles) à cause de la fonction exp(), voir le fichier sigmoid.c.

Dans la situation standard, le compilateur/éditeur de liens Cosmic ne prend pas en charge les variables à virgule flottante. L'allumer est facile (une fois que vous l'avez trouvé) mais cela s'accompagne d'une augmentation de la taille du code. Cette augmentation était trop importante pour faire tenir le code dans la mémoire flash lorsqu'il était combiné avec la fonction sprintf(). Et cette fonction est nécessaire pour convertir les nombres en texte pour l'affichage.

Itoa()

Pour remédier à ce problème, j'ai créé la fonction itoa(). Il s'agit d'une fonction Integer To Ascii assez courante, mais non incluse dans la bibliothèque standard de STMicroelectronics, ni dans les bibliothèques Cosmic.

Étape 7: IKEA (que ferions-nous sans eux)

IKEA (que ferions-nous sans eux)
IKEA (que ferions-nous sans eux)
IKEA (que ferions-nous sans eux)
IKEA (que ferions-nous sans eux)
IKEA (que ferions-nous sans eux)
IKEA (que ferions-nous sans eux)

La photo a été achetée chez IKEA. C'est un cadre Ribba de 50 x 40cm. Ce cadre est assez épais et cela le rend idéal pour cacher l'électronique derrière lui. Au lieu d'une affiche ou d'une photo, j'ai mis un morceau de panneau dur perforé. Vous pouvez l'acheter à la quincaillerie où il est parfois appelé "planche de lit". Il a de petits trous qui le rendent idéal pour mettre des leds. Malheureusement, les trous dans ma planche étaient un peu plus grands que 5 mm, j'ai donc dû utiliser de la colle chaude pour "monter" les leds.

J'ai fait un trou rectangulaire au centre du panneau dur pour l'écran 16x2 et l'ai enfoncé. Le PCB avec toute l'électronique est suspendu à cet écran, il n'est monté sur rien d'autre.

Le panneau dur perforé était peint à la bombe en noir et derrière le tapis. J'ai percé deux trous dans le cadre pour les boutons afin de régler l'heure et la date, comme le cadre est assez épais, j'ai dû élargir les trous à l'intérieur du cadre pour que les boutons ressortent suffisamment.

Conseillé: