Lecture du compteur d'eau: ESP8266 + Android

Beaucoup ont maintenant des compteurs d'eau. Et la plupart sont confrontés au problème de prendre des mesures de ces compteurs et de leur livraison en temps opportun. Je n'ai pas fait exception. C'était pratique de prendre des témoignages de moi, mais ici, j'oubliais constamment de les prendre et je m'en souvenais au moment le plus inopportun. Il a été décidé d'automatiser le processus de prise de mesures afin de pouvoir les consulter à tout moment. Peu importe comment obtenir une photo à gauche sur mon téléphone, s'il vous plaît, sous chat.

Présentation


L'idée de mise en œuvre m'est venue après avoir lu cet article. Pendant la réparation, j'ai immédiatement réglé les compteurs d'impulsions. La première version de l'appareil basé sur l'ESP-03 a été réalisée. Le code est écrit en LUA. Des données ont également été transmises à thingspeak.com .

Première version


Après 2 mois d'utilisation, les inconvénients suivants ont été identifiés:

  1. Il n'y avait aucune indication lumineuse de fonctionnement, puisque le module était suspendu plusieurs fois, il était important
  2. La complexité des paramètres, car les paramètres étaient dans le code
  3. Pour l'alimentation, un fil avec un connecteur miniUSB était nécessaire. Je n'avais que ça de Sony Playstation
  4. Affichage des résultats pas confortable sur thingspeak.com
  5. La relative complexité de la mise en œuvre.

Par conséquent, il a été décidé de réaliser la deuxième version, qui répondra aux exigences suivantes:

  1. Connecteur d'alimentation MicroUSB
  2. Effectuer la configuration en se connectant à l'appareil via WiFi
  3. Indication de travail
  4. Commodité de visualisation des informations
  5. Facilité de répétition
  6. Aspect esthétique
  7. Faible coût

Frais


Le circuit imprimé est assez simple. Il est basé sur le même ESP-03. Le site esp8266.ru m'a aidé avec les principales fonctionnalités de la connexion .



FROID, CHAUD - Prises RJ9
LED1 - sert à indiquer le fonctionnement de la carte (mode de réglage - constamment allumé , erreur - clignotement fréquent, fonctionnement normal - clignote une fois par seconde)
LED2 - indique l'alimentation
R3, R4 - 330 Ohm
R1, R2, R5, R6 , R7 - 6.8kOhm
C1 - Condensateur au tantale 33mkF
C2 - Condensateur céramique
0.1mkF LM1117 - pour convertir 5V en 3.3V
J1 - Cavalier clignotant ESP-03
BTN - pour choisir le mode de fonctionnement de la carte

Un connecteur miniUSB a été ajouté pour flasher le module et enregistrer les scripts. Pour l'alimentation, un autre connecteur microUSB est ajouté séparément sans y connecter les broches RX et TX (il n'est pas affiché sur le schéma). Cela est dû au fait que si vous alimentez le module via le connecteur miniUSB, où RX et TX sont connectés, le module se bloque pour une raison quelconque. J'ai essayé de tirer le RX et le TX, mais rien n'y fait. Par conséquent, j'ai décidé de le laisser comme ça, en plus j'avais beaucoup de câbles avec microUSB.

Les dimensions des composants facilitent la création d'une carte à l'aide de la méthode LUT, qui a été effectuée pour le débogage des scripts. Plus tard, j'ai commandé la fabrication de la planche aux Chinois . La taille de la planche a été ajustée pour s'adapter au boîtier existant.

Photos avant l'installation:

image


Photo après:



Firmware


J'ai récupéré le firmware en utilisant le constructeur en ligne . Il permet de générer le firmware NodeMCU uniquement avec les modules nécessaires, ce qui vous permet d'augmenter la quantité de mémoire libre. Je n'ai pas rencontré de problème avec un manque de mémoire, et par conséquent, environ 30% de l'espace libre a été consacré aux scripts et aux fichiers auxiliaires. J'ai téléchargé le firmware en utilisant nodemcu-flasher . J'ai utilisé ESPlorer pour écrire et remplir des scripts .

Le fonctionnement du compteur d'impulsions est similaire à une pression sur un bouton. Lorsque certaines valeurs sont transmises, les contacts se ferment et s'ouvrent. Mon compteur a fermé les contacts au numéro 7, et ouvert au numéro 2. J'ai accroché les compteurs sur les ports GPIO12, GPIO13 et mis à la terre avec un pull-up sur l'alimentation (une résistance interne est utilisée). Ainsi, lorsque le port change sa valeur à 0, on peut alors supposer que 10 l d'eau ont été dépensés.

L'appareil peut fonctionner en 2 modes: mode configuration et mode lecture. Pour passer en mode de configuration lorsque l'alimentation est appliquée, maintenez enfoncé le bouton BTN. Cela prend 2 secondes. Dans ce mode, l'ESP commence à fonctionner comme un point d'accès et est un simple serveur Web. Un réseau ESP accessible apparaît - ???????, où au lieu de caractères? sera id esp. Pour configurer, vous devez vous connecter à ce réseau et dans le navigateur, allez à 1.1.1.1. La page suivante apparaît:



Si le bouton n'a pas été bloqué lors de la mise sous tension, le mode de lecture démarre. Dans ce mode, l'état des ports GPIO12 et GPIO13 est vérifié toutes les secondes. Si 0 apparaît quelque part, la valeur correspondante augmente. Initialement, j'ai fait une vérification basée sur les interruptions, mais cette méthode s'est avérée non fiable (ESP suspendu périodiquement). Chaque minute, il y a une tentative d'envoi de données au serveur (en cas de modifications). Pour chaque compteur, 2 valeurs sont transmises: la lecture actuelle du compteur et la quantité de changement depuis le dernier transfert de données.

Application Android


Comme je l'ai dit, sur thingspeak.com, je n'étais pas à l'aise de regarder les lectures. J'ai décidé d'écrire une application Android. Le résultat est une application qui vous permet de:

  • Construire des graphiques de consommation par heures, jours, mois
  • Accéder aux données hors ligne
  • Ajouter un widget de mesures

Thingspeak.com possède une API qui vous permet de collecter des données. À l'aide de cette API, l'application à chaque lancement ou avant la mise à jour du widget demande les dernières données et les enregistre dans une base de données locale. D'autres travaux sont déjà en cours avec elle. Ajout de 2 types de widgets à l'application: comme compteur et comme graphique de consommation. Cela s'est avéré assez pratique.

Captures d'écran d'application


J'ai pensé à implémenter la lecture automatique des compteurs, mais je n'ai pas trouvé d'API prête à l'emploi. Il a été possible d'analyser la demande officielle, mais elle n'est pas fiable. Pour Moscou, il y a un EMP . Je me suis inscrit là-bas et j'ai eu accès à leur API, mais cela vous permet seulement de voir quelles lectures ont été données, ce qui ne m'intéressait pas.

Conclusion


Le coût de l'appareil, à l'exception de l'étui, s'élevait à environ 450 roubles. Certains composants ont été achetés dans un magasin bien connu. Si vous prenez tout aux Chinois, le coût peut être réduit à environ 370 roubles. Cette version depuis 4 mois n'a jamais bloqué ou échoué. L'appareil résultant est facile à répéter et à modifier. Avec l'aide de lui, j'ai appris que la cuvette des toilettes passait lentement mais sûrement de l'eau.

Liens utiles:

Source: https://habr.com/ru/post/fr395459/


All Articles