Plafonnier de réveil (5 / 6 étapes)

Étape 5: Le logiciel

Si vous souhaitez utiliser le logiciel en tant que-est sans aucune modification et n’aime pas comment c’est fait, la procédure est simple : Télécharger et décompresser le joint « wakeuplight_esp01.zip », ouvert dans l’IDE Arduino. Modifiez les paramètres dans « configuration.h ». Il a besoin de votre Wifi SSID et mot de passe, informations d’adresse IP, le nom d’un serveur NTP (vous pouvez probablement pas laisser inchangé) et information de fuseau horaire - votre standard offset d’UTC en minutes ainsi que des règles d’heure d’été.

Après avoir apporté les modifications appropriées, il suffit de télécharger le croquis à l’ESP-01.

Si vous souhaitez apporter des modifications au logiciel, ou sont tout simplement intéressés par son fonctionnement, des informations plus détaillées sont incluses ci-dessous.

Architecture globale

Ma première version de ce logiciel était en plaine C et a grandi organiquement de l’expérimentation. À un certain moment, cela a fonctionné (un peu), mais c’était un désordre total. J’ai alors décidé de refactorisation, passer au C++, créez une classe unique pour chaque fonction séparée (consistant en un fichier .h, définition de la classe et le fichier .cpp contenant l’implémentation). Les classes s’instanciées dans le module principal. Bien sûr, la plupart des classes sont dépendantes d’autres personnes. Le module principal injecte ces dépendances via les constructeurs des classes selon.

Les classes suivantes sont présentes :

  • Configuration : fournit une interface pour toutes les données de configuration, tant en dur (mentionné ci-dessus) que les données stockées en EEPROM (comme les réglages de l’alarme). Tous les autres modules (sauf variateur) dépendent de la Configuration.
  • Dimmer : ajuste la luminosité à l’aide de PWM.
  • Wificlient : établit la connexion à un point d’accès Wifi.
  • NTPClient : obtient temps universel à partir d’un serveur de temps.
  • LocalClock : convertit temps universel, heure locale, en prenant en compte le cas échéant des règles de DST.
  • Alarme : utilise le variateur, LocalClock et Configuration pour exercer les fonctions de base d’allumer la lumière progressivement pendant une période de temps définie.
  • WebServer : propose une page de web mobile facile pour activer la configuration de l’alarme et de contrôle manuel.
  • Serialhost : permet la communication série à des fins de débogage.

Informations plus détaillées sont disponibles dans les fichiers source. Les modules Dimmer et serveur Web sont particuliers en ce sens qu’ils utilisent en partie code généré. Le fichier « wakeuplight_java_helpers.zip » contient un projet Eclipse Java qui fait de la génération. Nous allons zoomer sur ci dessous.

Gradateur

Le point de l’Éveil lumière est de laisser l’intensité lumineuse augmente graduellement telle que perçue par un être humain. Le mécanisme PWM nous donne contrôle linéaire sur l’intensité de la lumière, mais la perception humaine est plus ou moins logarithmique (la Loi de Weber-Fechner). Si nous ne serait pas compenser cela et de laisser le devoir PWM cycle augmentation de 0 à 100 % à dire 1000 marches, le résultat serait que dans la première partie du cycle de réveil, intensité lumineuse augmenterait trop vite avec des sauts notables, atteignant un niveau élevé au début et ensuite augmenter très lentement de haut en plein dans le reste du cycle. C’est évidemment pas ce que nous voulons. Il faut changer l’intensité lumineuse façon exponentielle et non linéaire dans le temps, de donner la perception d’une augmentation linéaire dans le temps.

En outre, le PWM ESP8266 n’est pas parfait. Il a une gigue qui est perceptible en heavy duty infime et provoque le scintillement perceptible dans la lampe. Si la lumière peut être entièrement éteint, ou à une valeur minimale de stable, mais nous devrions éviter d’être entre les deux. Ce problème devient moins sévère si la fréquence PWM est faible - qui est pourquoi j’ai choisi seulement 100Hz.

Le fichier « DutyCycle.java » calcule une fonction à partir d’une étape obligatoire dans l’intensité lumineuse perçue (sur une échelle de 0 à 1 800) et une valeur PWM (sur une échelle de 0 à 20000). Le programme « ConvertDutyCycleToEsp.java » calcule cette fonction et l’écrit dans un fichier .h à inclure dans le projet Arduino. Le code variateur dans l’Arduino fait simplement un coup d’oeil vers le haut sur cette table générée.

Serveur Web

J’ai voulu contrôler le projet avec mon smartphone. Comme je l’ai beaucoup plus d’expérience web-apps que des applications mobiles natives d’écriture, j’ai décidé d’adopter l’approche de l’environnement mobile web-app.

La web-app est une application HTML5/jQuery page simple qui envoie une demande POST Ajax lorsque l’utilisateur appuie sur un bouton (et récupère également les mises à jour périodiquement). La page indique au navigateur de jQuery en retire la jsDelivr ca, tout le code JavaScript et CSS est inclus dans le code HTML, ainsi que les images en utilisant Des URL de données. Ainsi, le chargement de la page comporte juste une seule requête GET à l’ESP-01, gardant tout simple et rapide.

En incluant les balises « mobile-web-app-compatible » et « apple-mobile-web-app-compatible » et un lien d’icône de raccourci, smartphones pouvez ajouter cette page Web à l’écran d’accueil. Après cela, il peut être démarré de la même manière comme une application (il sera lancé dans un navigateur plein écran), en grande partie cacher le fait qu’il n’est pas une application native.

Avoir à télécharger un croquis à l’ESP-01 chaque fois quelle test de petits changements à la page web n’est pas une belle évolution du cycle. Donc, j’ai cela développé dans un projet web Java, avec « LightServlet.java » simuler la réaction de l’ESP-01 pour les requêtes Ajax POST. Le « ConvertWebpageToEsp.java » convertit l’index.html de projets web à la « webserver_homepage.h » inclure de fichiers qui contient la page web comme une constante de chaîne.

Articles Liés

Plafonnier a déclenché l’éclairage LED collecteur pour un 2010 Honda Fit

Plafonnier a déclenché l’éclairage LED collecteur pour un 2010 Honda Fit

Cette instructable détaille l'installation de rouge-vert-bleu (RVB) LED collecteur d'éclairage dans un 2010 Honda Fit. Pour ce type d'application, contrôleurs et kits de RVB LED sont facilement disponibles à l'achat sur des sites comme amazon.com. J'
Plafonnier géant avec des fonctionnalités multiples alias l’UFO

Plafonnier géant avec des fonctionnalités multiples alias l’UFO

ce géant suspendu de lumière (diamètre extérieur 3,6 m ou 142 en) a trois fonctions :1. fournir un éclairage direct pour éclairer la pièce : la lumière « régulière » ;2. fournir l'éclairage indirect, éclairage au plafond en deux bandes circulaires :
Remplacement ampoule de plafonnier de LED

Remplacement ampoule de plafonnier de LED

ampoule de plafonnier de mon 2008 Hyundai Accent a été plus d'une suggestion de la lumière, plutôt que quelque chose d'utile dans la nuit. Parce que c'est un modèle de base, j'ai aucun liseuses de carte, pas de lumières dans la porte et se fonder uni
50W LED rond plafonnier

50W LED rond plafonnier

l'utilisation de lampes de plafond rond dans mon petit appartement a montré leur inconvénient majeur. Il est faible éclairement. Petite quantité d'espace intérieur et exigences thermiques limitent la puissance maximale d'utilisables sources lumineuse
Veille météorologique portable

Veille météorologique portable

C'est le premier portable que j'ai fait. C'est une station météorologique portable, qui pourrait être utile si vous êtes dans les festivals de plein air, camping ou juste aller pour de longues promenades. Les veille météorologique monitores air press
Radio-réveil avec des fils (ou Arduino)

Radio-réveil avec des fils (ou Arduino)

Il s'agit d'un réveil élaborée sur le microcontrôleur de câblage et personnalisée pour la Colombie (il prend en vacances compte et affiche tous les textes en espagnol). Le réveil affiche l'heure, date, phase de lune, des messages personnalisés par jo
Aveugler ouverture réveil

Aveugler ouverture réveil

Le réveil d'ouverture aveugle est un projet qui avait ses défis, mais entièrement valait la peine. Il est créé à l'aide d'un microcontrôleur Spark base, un circuit H-en voiture, et un très fort le motoréducteur. Son bon marché, simple à utiliser et a
Rey (Star Wars : la Force se réveille) Free Comic Book Day 2016

Rey (Star Wars : la Force se réveille) Free Comic Book Day 2016

Salutations Instructable-keteers une fois de plus !Comme d'habitude, je suis privés de sommeil ou plus contenant de la caféine à nouveau que je suis assis down type jusqu'à une autre aventure de costume.Au début, il y avait un magasin de bandes dessi
Son réveil lumière de détection

Son réveil lumière de détection

Tout d'abord, je tiens à dire qu'il s'agit d'un projet cool pour n'importe quelle plage de niveau de compétence. Si vous êtes un débutant avec Arduino et sont nerveux au sujet de complexité j'encourage vous d'essayer ce que je vais essayer à aussi se
La Machine de rêve, ou comment être plus éveillée pendant que vous dormez

La Machine de rêve, ou comment être plus éveillée pendant que vous dormez

Il s'agit d'un dispositif peu coûteux, bricolage, Arduino alimenté par oneironautics qui permet aux utilisateurs de signaler eux-mêmes quand ils sont dans un rêve profond, sans réveiller. En d'autres termes, cette machine vous dira quand vous rêvez,
La main réveil Cool

La main réveil Cool

Salut! Je suis Noboyu !J'ai fait le réveil.et j'ai fait qui à partir de zéro pour étudier.Puissance d'alimentation, Circuit d'horloge, châssis...J'ai beaucoup appris de cette Instructables !Étape 1: conceptionJ'ai essayé de châssis pour boîte en form
Smartphone-réveil

Smartphone-réveil

Salut!Dans ce Instructable je vais vous dire comment faire un beau réveil de smartphone. Le réveil affiche l'heure, permet de recharger le téléphone et abrite un mini amplificateur et haut-parleur. J'ai eu l'idée de construire ce réveil pendant une l
Réveil à l’aide de Atmega-328 et RTC

Réveil à l’aide de Atmega-328 et RTC

Salut tout le monde ! Il s'agit de mon premier instructable ! Après avoir lu des centaines d'instructables, j'ai décidé de faire moi-même.Horloge est une des choses plus essentielles maison de cale. Il existe différents types d'horloges comme bonnes
Chronobot : Un réveil intelligent

Chronobot : Un réveil intelligent

Chronobot est un réveil intelligent qui peut sentir sa propre orientation. C'est une horloge analogique avec une affaire de regard impressionnante. L'horloge est assez facile à construire et mettre en place. Il est effectué à l'aide d'un mini ardunio