L'idée est empruntée au projet. Affichage météo ESP8266.
J'ai décidé de m'en souvenir.
Les tâches suivantes ont été définies:
- Mettre à jour le code lié à l'utilisation nouvelle version bibliothèques ArduinoJson.h.
- Réécrivez le code à l'aide de la fonction millis () au lieu de la fonction delay (). Il est clair qu'en utilisant le délai pour définir une pause entre les changements d'informations sur l'affichage, il est impossible de mettre en œuvre des commandes de bouton;
- Faire télécharger des croquis via Wifi;
- Éloignez-vous de l'encombrant Wemos D1 R2 sur le Wemos D1 mini;
- Autant que possible Affichage Russify;
- Utilisez un boîtier prêt à l'emploi avec des trous de bouton pour les appareils basés sur LCD1602;
- Utilisez des boutons standard 6x6 soudés à la planche à pain. Ajoutez des boutons de contrôle du rétroéclairage, un bouton carrousel pour modifier les données affichées et un bouton pour forcer les mises à jour des données depuis le serveur.
Les composants suivants ont été utilisés:
- Le boîtier est en plastique ABS avec un ensemble de housses pour les boutons;
- Entretoises en nylon 6 + 5 mm mâle M3 noir, 4 pièces;
- Écrous en nylon M3 noirs, 4 pièces;
- Poteaux en nylon 6 + 5 mm mâle M2 blanc, 3 pièces;
- Support en nylon 6 mm blanc mère, 1 pc;
- Support en nylon 8 mm mère blanc, 1 pc;
- Supports en nylon 10 mm mère blanc, 2 pièces;
- LCD 1602 (I2C), jaune;
- Wemos d1 mini;
- Blindage Wemos d1 DC-Power;
- Planche à pain 3x7;
- Boutons 6x6, hauteur 7 mm, 3pcs;
- Fils Dupont 10cm mère-mère, 4 pièces;
- 24 fils AWG noirs et rouges;
- Fils de silicone 20 AWG bleu et blanc;
- Résistances 5 kOhm - 2 pièces, 10 kOhm - 1 pièce (livrées);
- Adaptateur secteur 9V 1A;
- Adhésif époxy à deux composants.
Le boîtier utilisé présente plusieurs avantages. Tout d'abord, en plus de l'écran, la carte de découplage standard 3x7, avec des composants installés sur les deux côtés, s'adapte parfaitement en hauteur. Deuxièmement, à ses deux extrémités, il présente des ouvertures rectangulaires pour le refroidissement. Il s'est avéré que les cavaliers entre ces trous sont parfaitement coupés par des mini-limes de 3 et 4 mm. Si vous coupez quelques cavaliers et percez un petit trou rectangulaire dans le boîtier, le connecteur d'alimentation DC-005 pénètre parfaitement dans le trou de géométrie complexe. De plus, l'arrière de ce boîtier a un grand trou carré, qui, apparemment, était censé installer des piles.Grâce à elle, il est pratique de connecter quelque chose à l'intérieur sans démonter le boîtier. Par la suite, il peut simplement être fermé avec du verre ou du plastique.
Progrès de la construction:
Tout d'abord, un prototype a été réalisé sur une maquette.
Ensuite, l'affaire est finalisée avec un dossier.
Après cela, les principaux composants sont soudés et le montage est effectué. Les jambes étaient spécialement pliées pour que les articulations amovibles tiennent en hauteur. Quelques racks en nylon ont dû être classés afin que tous les boutons soient à la même hauteur.
En conséquence, la face avant de la carte avec boutons, résistances et fils est la suivante:
Par conséquent, l'intérieur de l'appareil ressemble à ceci:
Une fois assemblé, l'appareil ressemble à ceci:
Surmonter les difficultés:
- Pendant longtemps, je n'ai pas pu comprendre pourquoi les boutons ne fonctionnaient pas, bien que le multimètre affiche clairement 0 lorsque les boutons étaient enfoncés et 4,6 - 5,0 V lorsqu'ils étaient enfoncés (en fonction de l'alimentation). Il s'est avéré que dans les appareils Wemos / Lolin, il est nécessaire d'indiquer les numéros GPIO sous forme de numéros de broches dans le croquis. Par exemple, D5 est GPIO14. Voici donc la 14e broche.
const int buttonPin = 14;
- Pour afficher la météo, la condition est nécessaire:
currentMillis - previousMillis == weatherTime
Correspondance stricte, car elle doit être effectuée une seule fois.
Pour faire une demande au serveur, la condition est nécessaire:currentMillis - previousMillis> = getDataTime
Conformité lâche, car elle est exécutée jusqu'à ce que l'indicateur «données reçues» soit défini.
En fait, ce n'est pas évident, et pour comprendre cela, cela a pris assez de temps. - J'ai également dû me tourmenter avec la réponse du serveur:
Chaîne weather = root ["weather"] [0] ["main"]; Description de la chaîne = racine ["météo"] [0] ["description"];
Zéro n'était absolument pas évident. Il s'avère qu'il y a deux stations météorologiques à Moscou, et la seconde d'entre elles ne fonctionne pas toujours (pour en recevoir des données, vous devez spécifier [1] si elle est active).
Le référentiel avec le code et les bibliothèques est situé ici.