dimanche 10 novembre 2024

DOMOTICZ : quelques méthodes de dépannage



DOMOTICZ : quelques méthodes de dépannage

 

Cela fait maintenant plus de 6 ans que j'utilise un serveur domotique nommé DOMOTICZ, et j'en suis assez fan, mais il arrive que des ennuis surviennent. Je vais les décrire dans cet article.

Mon système domotique est constitué de différents composants :

  • serveur DOMOTICZ hébergé sur une RASPBERRY PI
  • passerelle série MYSENSORS
  • capteurs développés à l'aide de cartes ARDUINO NANO, PRO MINI
  • un écran TFT piloté par un ESP8266
  • un répéteur MYSENSORS pour les capteurs éloignés

1. Panne de passerelle série

La passerelle série (serial gateway) permet de communiquer avec mes objets connectés équipés de NRF24L01 (capteurs de température, prises, relais, etc.) développés à l'aide de la librairie MYSENSORS.

Récemment, sur la page d'accueil de mon serveur, certains capteurs sont affichés en rouge, et ils n'ont pas communiqué depuis plusieurs jours :

J'ai deux types de dispositifs :

  • dispositifs ARDUINO + NRF24L01
  • dispositifs ESP8266

Apparemment seuls les dispositifs ARDUINO sont concernés. Comme il serait tout à fait étonnant que plusieurs capteurs aient le même problème simultanément, je soupçonne donc un problème sur la gateway. Après avoir branché celle-ci sur un port USB de mon PC, je lance le Moniteur Série de l'IDE ARDUINO, et les informations de DEBUG sont affichées :

0;255;3;0;9;MCO:BGN:INIT GW,CP=RNNGA--,VER=2.1.1
0;255;3;0;9;TSM:INIT
0;255;3;0;9;TSF:WUR:MS=0
0;255;3;0;9;TSM:INIT:TSP OK
0;255;3;0;9;TSM:INIT:GW MODE
0;255;3;0;9;TSM:READY:ID=0,PAR=0,DIS=0
0;255;3;0;9;MCO:REG:NOT NEEDED
0;255;3;0;14;Gateway startup complete.
0;255;0;0;18;2.1.1
MYSENSORS Gateway Serial
0;255;3;0;9;MCO:BGN:STP
0;255;3;0;9;MCO:BGN:INIT OK,TSP=1

Cela me semble un peu court. Par précaution je recharge le code de l'application gateway :

0;255;3;0;9;0 MCO:BGN:INIT GW,CP=RNNGA---,FQ=16,REL=255,VER=2.3.2
0;255;3;0;9;5 TSM:INIT
0;255;3;0;9;7 TSF:WUR:MS=0
0;255;3;0;9;15 TSM:INIT:TSP OK
0;255;3;0;9;18 TSM:INIT:GW MODE
0;255;3;0;9;21 TSM:READY:ID=0,PAR=0,DIS=0
0;255;3;0;9;24 MCO:REG:NOT NEEDED
0;255;3;0;14;Gateway startup complete.
0;255;0;0;18;2.3.2
MYSENSORS Gateway Serial
0;255;3;0;9;30 MCO:BGN:STP
0;255;3;0;9;37 MCO:BGN:INIT OK,TSP=1
0;255;3;0;9;40 TSM:READY:NWD REQ
0;255;3;0;9;47 ?TSF:MSG:SEND,0-0-255-255,s=255,c=3,t=20,pt=0,l=0,sg=0,ft=0,st=OK:

On voit bien deux lignes supplémentaires.

Je rebranche la gateway sur la RASPBERRY PI et au bout de quelques minutes tout rentre dans l'ordre.

2. Panne de répéteur

Il arrive que certains capteurs soient affichés en rouge, mais seulement les capteurs éloignés sont concernés. La communication avec ceux-ci passe par un répéteur. Ce n'est pas la première fois que cela arrive, et ici également, en cas de problème je recharge le code de l'application répéteur et tout rentre dans l'ordre.

3. Qualité du réseau

Il peut arriver qu'un capteur ne parvienne pas à envoyer ou recevoir des informations, ou que la communication passe par intermittence.

Il est nécessaire de vérifier que le réseau 2.4GHz passe bien à l'endroit où est situé le capteur.

Pour ce faire j'utilise la carte de test MYSENSORS, alimentée par batterie, développée il y a quelques années :

J'équipe cette carte de deux LEDs, une rouge et une verte, câblées chacune avec une résistance de 1KΩ en série, entre les sorties 2 et 3 de la carte PRO MINI et GND.

On peut parfaitement réaliser cette carte à l'aide d'une plaquette à pastilles. On peut même utiliser une UNO ou une NANO, sachant que l'autonomie sera beaucoup plus faible.

Voici le code utilisé :

//#define MY_DEBUG

#define MY_RADIO_RF24
//#define MY_RADIO_RFM69

#define MY_RF24_CE_PIN        7
#define MY_RF24_CS_PIN        8

#define RLED                  2
#define GLED                  3

#define SLEEP_TIME            5000L
#define VREF                  1.099

#include <MySensors.h>  

#define CHILD_ID_TEMP         0

void before()
{
  Serial.print("MYSENSORS test sensor: ");
  Serial.println("OK");
}

void setup()  
  Serial.begin(115200);
  Serial.print("Setup");
  pinMode(RLED, OUTPUT);
  pinMode(GLED, OUTPUT);
  Serial.println(" OK");
}

void presentation() {
  Serial.print("Presentation");
  // Send the sketch version information to the gateway and Controller
  sendSketchInfo("test sensor", "1.1");
  // Present all sensors to controller
  present(CHILD_ID_TEMP, S_TEMP);
  Serial.println(" OK");
}

void sendTemp(void)
{
  MyMessage tempMsg(0,V_TEMP);

  Serial.println("sendTemp");

  float temperature = 20.00;

  if (send(tempMsg.setSensor(CHILD_ID_TEMP).set(temperature, 1)) == true) {
    digitalWrite(GLED, HIGH);
    digitalWrite(RLED, LOW);
    delay(500);
    digitalWrite(GLED, LOW);
    digitalWrite(RLED, LOW);
  }
  else {
    digitalWrite(GLED, LOW);
    digitalWrite(RLED, HIGH);
    delay(500);
    digitalWrite(GLED, LOW);
    digitalWrite(RLED, LOW);
  }
}

void loop()     
{
  sendTemp();
  sleep(SLEEP_TIME);
}

Toutes les cinq secondes, un test d'envoi d'une température fictive est effectué. Si la communication passe bien, la LED verte est allumée pendant 500ms, sinon la LED rouge est allumée.

Ce dispositif ne permet cependant pas de quantifier la qualité du réseau, comme on pourrait le faire en WIFI (RSSI).

En baladant cette carte un peu partout à l'extérieur de la maison, je constate qu'il y a des zones où le réseau n'est pas accessible. Il s'agit principalement de zones où la maison, dont les murs de pierre ont 50cm d'épaisseur, fait obstacle. Par contre, je ne m'attendais pas à ce que mon répéteur ait une portée de plus de 20 mètres à certains endroits.

Tester son environnement avec ce genre de dispositif avant la mise en place d'un capteur peut s'avérer très intéressant, et peut éviter des déboires.

4. conclusion

Ma gateway et mon répéteur sont bâtis autour de cartes ARDUINO NANO. Ce n'est pas la première fois que je suis obligé de recharger le code sur ce type de carte.

Je soupçonne un problème de fuses, car ce genre de problème peut survenir lorsque l'on coupe l'alimentation d'un ATMEGA328, et la mémoire FLASH est partiellement corrompue. Mes cartes PRO MINI n'ont pas ce genre de problème, mais cela ne veut pas dire grand chose étant donné qu'elles sont alimentées par batterie, et que par conséquent leur alimentation n'est jamais coupée.

J'envisage sérieusement de remplacer certains ARDUINOs par des modules ESP8266 ou ESP32. Malheureusement cette opération n'est pas possible sur tous les capteurs. En effet, le temps de réveil d'un ESP8266 ou d'un ESP32 est énorme, car il redémarre en partant de ZÉRO, ce qui implique une reconnexion au réseau WIFI, qui peut être longue. Sur un capteur du type détecteur de présence ou bouton-poussoir, la latence serait inacceptable.

Autre possibilité : utiliser des STM32 ? Malheureusement, les STM32 ne sont pas supportés par la librairie MYSENSORS.

Il va falloir vivre encore un moment avec ces défauts répétitifs. Pour info, le code de la gateway a été rechargé une seule fois, celui du répéteur 4 à 5 fois.

5. A lire également

Pour ceux qui ne connaissent pas DOMOTICZ ou MYSENSORS :


Cordialement

Henri


Octobre 2023 : Actualité des Blogs du Mois

     


Actualité des Blogs du Mois


Sur  Framboise 314 :

Sur  MCHobby :

Sur TutoDuino :

Sur ArduiBlog :


Cordialement

Henri 

  

dimanche 6 octobre 2024

Un Surpresseur DIY : dépannage

 



 

Un Surpresseur DIY : dépannage

 

J'avais présenté il y a 3 ans un projet de surpresseur :

Un Surpresseur DIY

Récupération d'eau de pluie : nouvelle installation

Récemment, j'ai observé que ma pompe se mettait en route pendant une fraction de seconde, se coupait, puis se remettait en route, plusieurs fois de suite, par à-coups.

En observant de plus près, je constate que lors de la mise en route de la pompe, l'aiguille du manomètre monte très rapidement au dessus de la pression maximale de réglage, qui est de 2 bars, la pompe se coupe, puis le manomètre retombe en dessous de la valeur minimale, et le cycle recommence.

Au premier abord, on pourrait soupçonner le pressostat, mais on va voir qu'il n'en est rien.

Il peut arriver qu'un surpresseur tombe en panne. On distingué 4 types de panne :

  • pompe
  • pressostat
  • fuite
  • ballon tampon

Cet article décrit les méthodes de dépannage, et ces méthodes peuvent être également utilisées pour dépanner un surpresseur du commerce.

1. Manomètre

Pour dépanner un surpresseur, il vaut mieux que celui-ci soit équipé d'un manomètre. Dans le cas contraire, il faudra en installer un. On peut parfaitement l'installer temporairement à la sortie du surpresseur.

2. La pompe

Il suffit d'ouvrir un robinet dans le circuit d'eau, et de relier la pompe directement au secteur pour voir si elle fonctionne ou pas. On peut également vérifier si elle est capable de relever l'eau à la hauteur désirée.

3. Le pressostat

Si la pompe ne se met pas en route lorsque la pression est trop basse, ou qu'elle ne se coupe pas lorsque la pression est trop haute, il y a de fortes chances que le pressostat soit déréglé ou en panne, et qu'il faille refaire les réglages, ou au pire, remplacer le pressostat.

4. Fuite

Une fuite peut occasionner des mises en route de la pompe sans raison apparente. Il peut s'agir d'une fuite vers l'extérieur du circuit, auquel cas celle-ci devrait être visible.

Si la fuite n'est pas visible, la cause de celle-ci peut être le clapet anti-retour en sortie de pompe. Le remplacer ou le nettoyer devrait résoudre le problème.

5. Le ballon tampon

Lorsque le ballon tampon est en cause, généralement la pompe se met en route par à-coups successifs.

Ce cas peut sembler anodin mais si vous tenez à votre installation d'eau de pluie, la mise en route répétée et par à-coups de la pompe peut occasionner des problèmes, car la pression risque de monter plus haut que prévu, même si c'est pendant de brefs instants. Cela met en danger l'installation. Je déconseille de laisser l'installation dans cet état, même si elle semble fonctionner.

Avant d'aller plus loin il faut bien comprendre le fonctionnement d'un ballon tampon :

Lorsque la pression tombe trop bas, le pressostat met la pompe en route. La vessie se remplit d'eau et gonfle, la pression d'eau augmente et le pressostat coupe la pompe lorsqu'elle a atteint la valeur maximale.

Lorsque la pompe se met en route plusieurs fois de suite par à-coups, il peut y avoir plusieurs causes :

  • la vessie est percée
  • la pression d'air dans le ballon est trop faible
  • la pression d'air dans le ballon est trop haute

5.1. Vessie percée

Il peut arriver que la vessie soit percée, auquel cas la réserve d'air se remplit d'eau et la pression d'air devient nulle. Dans ce genre de cas de figure, l'air du ballon sort par la conduite de sortie du surpresseur et par conséquent se retrouve dans le circuit d'alimentation.

Si un robinet est ouvert, l'air est libéré et l'eau s'écoule par à-coups. Si l'on observe ce genre de phénomène, cela doit mettre la puce à l'oreille, car c'est un bon indice de panne. Par contre ce comportement est normal si l'on a réalisé dernièrement une intervention sur le circuit d'eau, dans le but de remplacer un élément, ou de modifier le circuit.

Quand le ballon est monté avec le raccordement d'eau en haut (ce que je conseille), la valve de gonflage est en bas. En général il s'agit d'une valve du type Schrader, comme sur une roue de voiture :

Comme on le voit sur cette photo, la valve est protégée par un bouchon en plastique, qu'il suffit de dévisser pour avoir accès à celle-ci.

Si l'on ouvre la valve et que la vessie est percée, de l'eau va s'écouler. Il est alors recommandé de remplacer la vessie, ou le ballon.

Avant de remplacer la vessie ou le ballon, il faut débrancher le surpresseur, et faire tomber la pression en ouvrant un robinet.

Si l'on parvient à se procurer une vessie neuve, il faudra démonter l'ancienne, vider le ballon de toute l'eau qu'il contient, et mettre en place la nouvelle vessie. Ensuite il faut regonfler le ballon à l'aide d'une pompe à vélo jusqu'à atteindre une pression égale à la pression minimale de réglage du pressostat, ou légèrement inférieure.

Si le ballon est remplacé, il faut savoir qu'un ballon neuf est gonflé à 3 bars. A l'aide d'un manomètre, vous devez dégonfler le ballon jusqu'à atteindre une pression égale à la pression minimale de réglage du pressostat, ou légèrement inférieure.

Après remontage du ballon, on vérifiera l'absence de fuite au niveau du raccordement d'eau.

5.2. Pression d'air trop faible

Dans ce cas, la quantité d'air dans le ballon est quasi nulle, et l'eau de la vessie occupe un volume maximal. Il sera donc impossible de faire entrer plus d'eau dans celle-ci.

Si la pression dans la vessie est trop faible, la pompe se met en route, la pression monte rapidement car le volume d'air dans le ballon est faible ou nul, et l'effet ballon tampon est quasi inexistant. Le pressostat coupe la pompe et la pression peut redescendre plus bas que la valeur minimale de réglage, et la pompe se remet en route. L'opération se répète jusqu'à ce que la pression se stabilise à une valeur plus ou moins au dessus de la valeur minimale fixée.

Il faut vérifier la pression d'air du ballon à l'aide d'un manomètre, et regonfler le ballon à l'aide d'une pompe à vélo jusqu'à atteindre une pression égale à la pression minimale de réglage du pressostat, ou légèrement inférieure.

Les puristes vous diront que regonfler un ballon tampon à l'azote est préférable, car l'air contient de l'oxygène qui détériore le caoutchouc. C'est en tous cas le gaz utilisé par le fabricant du ballon pour le remplissage initial.

La panne dont j'ai été victime est bien celle-ci. Aucun écoulement d'eau, ni d'air d'ailleurs, lorsque j'ouvre la valve de gonflage. Il m'a donc suffit de regonfler le ballon à 1 bar pour que le surpresseur fonctionne à nouveau correctement.

5.3. Pression d'air trop haute

Dans ce cas, la quantité d'air dans le ballon occupe un volume maximal, et la vessie est tellement comprimée qu'il est impossible de faire entrer de l'eau dans celle-ci.

Si la pression dans la vessie est trop haute, la pression de l'eau ne parvient pas à combattre la pression de l'air du ballon. La pression monte très rapidement, et on se retrouve donc dans le même cas que précédemment.

Normalement, ce cas ne doit pas se produire avec le ballon d'origine du surpresseur. Par contre si vous avez remplacé récemment le ballon, il se peut que celui-ci soit gonflé par le fabricant à 3 bars ou plus, et que vous n'ayez peut être pas pensé à le dégonfler. A l'aide d'un manomètre, vous devez dégonfler le ballon jusqu'à atteindre une pression égale à la pression minimale de réglage du pressostat, ou légèrement inférieure.

6. Conclusion

Pour éviter tout problème, je pense qu'il est préférable de vérifier régulièrement la pression d'air du ballon, et le regonfler si nécessaire, tous les 6 mois par exemple.

Après avoir été confronté à ce problème de dégonflage de ballon, il m'a semblé intéressant de partager avec vous mon expérience, car le diagnostic n'était pas si évident au premier abord.


Cordialement
Henri

lundi 16 septembre 2024

Convertisseurs STEPUP & STEPDOWN : l'ondulation

 

Convertisseurs STEPUP & STEPDOWN : l'ondulation


Cet article fait suite à celui-ci : Convertisseurs STEPUP & STEPDOWN

Le but de ce nouvel article est de parler de l'importance de l'ondulation en sortie.

1. Pourquoi un convertisseur STEPDOWN ?

Alimenter un microcontrôleur à l'aide d'un module convertisseur à découpage a un avantage évident : le rendement est nettement supérieur à celui d'un régulateur linéaire.

Si l'on prend l'exemple suivant :

  • alimentation générale 12V
  • alimentation d'un ARDUINO sous 5V
  • besoin en courant 100mA

Le convertisseur à découpage a un rendement d'environ 90%.

La puissance dissipée en pure perte calorique (10%) par le convertisseur est de :

P = 5V * 0.1A * 10% = 0.05W

Si l'on adoptait un régulateur linéaire le rendement serait directement proportionnel à la différence de tension entre entrée et sortie :

P = (12V - 5V) * 0.1A = 0.7W

La différence est juste énorme.

2. L'ondulation

L'ondulation en sortie d'un régulateur linéaire est très faible, de l'ordre de 0.003% pour un LM1117, c'est à dire 5V * 0.003% = 0.15mV

Celle-ci est sans commune mesure avec celle d'un convertisseur à découpage. Elle dépend en outre de la charge. Voici une capture d'écran montrant l'ondulation d'un LM2596 débitant 100mA sous 5V :

L'ondulation atteint 150mV crête à crête, à une fréquence de 55KHz.

Mais est ce bien important ? L'ondulation en sortie d'un convertisseur à découpage peut elle avoir une influence sur le comportement d'un microcontrôleur ?

Je dirais que non tant qu'on se limite à une utilisation purement numérique.

Par contre dans le cas où l'on désire faire des mesures analogiques en utilisant le 5V comme tension de référence, l'ondulation impactera directement les mesures. Il en ira de même si l'on alimente un capteur analogique avec ce 5V pollué.

La précision risque d'en souffrir. La tension de sortie du LM2596, ainsi que la tension de référence va donc varier de +/-75mV.

Si la valeur lue est de 2.5V, l'ADC renverra une valeur d'environ 500 :

min = 2.5V * 1023 / (5 + 0.075) = 504

min = 2.5V * 1023 / (5 - 0.075) = 519

Si l'on effectue une mesure en continu, la valeur lue sur l'entrée de l'ADC va donc osciller entre ces deux valeurs, ce qui représente une erreur de 3%.

Il est un peu dommage de sacrifier la précision d'un ADC capable de mesurer une tension avec une résolution de 1/1024 points, c'est à dire +/- 5mV.

3. Amélioration

Dans l'article précédent, on avait vu que l'on pouvait réduire l'ondulation en sortie d'un module LM2596 à une valeur très faible (10mV) en ajoutant une cellule LC (self + condensateur).

Pourrait on obtenir le même résultat avec un simple condensateur ?

Il y a peu de chances, en effet le module LM2596 possède déjà un condensateur de sortie de 220µF.

En ajoutant un condensateur de 220µF supplémentaire, cette fois-ci au plus près de la charge, l'ondulation est de 75mV. Avec 1000µF elle descend à 50mV.

On voit bien que l'on est très loin des 0.15mV d'un régulateur linéaire.

Dans certains cas, on pourra difficilement se contenter de cette imprécision, dans d'autres cas, elle sera peu gênante. Tout dépend de l'application.

Suivant les besoins on pourra donc réduire l'ondulation en adoptant une solution adaptée :

  • l'ondulation n'est pas gênante : rien du tout
  • l'ondulation est légèrement gênante : un condensateur
  • l'ondulation est gênante : une cellule LC
  • l'ondulation est très gênante : voir plus loin

4. Solution alternative

Il existe des solutions alternatives pour effectuer des mesures précises tout en conservant un régulateur à découpage.

4.1. Utiliser un régulateur linéaire

On peut parfaitement utiliser le régulateur linéaire d'une carte UNO ou NANO en alimentant à l'aide d'un régulateur à découpage par la broche VIN ou le JACK entre 6.5V et 12V, par contre tout va dépendre de la tension appliquée sur VIN, et du courant nécessaire. Plus la tension sur VIN sera importante, et plus le courant demandé sera important, plus le régulateur chauffera.

Voir ici :

ARDUINO : l'alimentation (VCC, VIN, etc.)

Paragraphe 3.3.3. Puissance maximale

4.2. Utiliser la sortie 3.3V comme tension de référence

Avec un ARDUINO UNO ou NANO on peut relier la sortie 3.3V à l'entrée VREF. Ensuite dans le code on écrira :

analogReference(EXTERNAL);

En procédant de la sorte on ne pourra pas mesurer de tensions supérieures à 3.3V, ou alors il faudra installer un pont diviseur entre la tension à mesurer et l'entrée analogique.

Remarque : une carte ARDUINO PRO MINI ne possède pas de broche VREF.

4.3. Utiliser une référence de tension

J'ai déjà parlé de ces composants ici :

La référence de tension MAX6225, MAX6241 & MAX6250

Ici aussi on reliera la sortie de la référence à l'entrée VREF et on ajoutera la même ligne dans le code.

5. Conclusion

Quand on alimente un microcontrôleur à l'aide d'un convertisseur à découpage on pense rarement à ce problème d'ondulation. J'espère que cet article vous aura éclairé.


Cordialement

Henri


samedi 27 juillet 2024

Convertisseurs STEPUP & STEPDOWN : suite

 

Convertisseurs STEPUP & STEPDOWN : suite


Cet article fait suite à celui-ci : Convertisseurs STEPUP & STEPDOWN

Dans ce nouvel article, je propose de tester le comportement de deux convertisseurs STEPUP en fonction de leur tension d'entrée. En effet dans le cadre d'une utilisation avec une batterie LITHIUM-ION ou LIPO il serait intéressant de vérifier qu'à 3V ils soient encore capable de fournir une tension correcte.

1. Le XR2981


Le XR2981 est un modèle 5V.

Voici les résultats :

Tension d'entréeTension de sortie
à vide
Tension de sortie
charge 100Ω : 50mA
Tension de sortie
charge 10Ω : 500mA
4.2V5.18V5.13V
5.12V
3.7V5.18V5.13V
5.12V
3.3V5.18V5.13V3.3V
3V5.18V5.13V2.5V
2.7V2.6V2.4V2.2V

Le XR2981 tient bien la charge entre 4.2V et 3V, par contre sa tension de sortie s'écroule en dessous de 3.7V si le courant débité est important.

Le résultat à 2.7V ne nous intéresse pas vraiment, étant donné qu'il est déconseillé de laisser une batterie LITHIUM se décharger en dessous de 3V.

2. Le MT3608


Le MT3608 est réglé sur 12V.

Voici les résultats :

Tension d'entréeTension de sortie
à vide
Tension de sortie
charge 220Ω : 54mA
Tension de sortie
charge 22Ω : 540mA
4.2V12V12V11.5V
3.7V12V12V10V
3.3V12V12V9.2V
3V12V12V5.9V
2.7V12V12V5.1V

Le MT3608 tient bien la charge entre 4.2V et 2.7V, par contre, comme le XR2981, sa tension de sortie s'écroule si le courant débité est important. Il n'y a qu'à pleine charge (4.2V) qu'il parvient à fournir presque 12V.

A 3.7V il fournit tout de même 10V, ce qui peut être acceptable pour alimenter un moteur de quelques watts. Par contre si le moteur se bloque, celui-ci risque de demander plus de 1A, courant que le convertisseur sera peut être incapable de fournir.

3. Conclusion

Ces convertisseurs, malgré leur courant de sortie annoncé (2A) ne tiennent pas vraiment leurs promesses, sauf si l'on se contente d'alimenter un circuit ayant une consommation faible.

Si l'on désire pleinement tirer parti de la capacité d'une batterie LITHIUM-ION ou LIPO, avec ces convertisseurs, on pourra difficilement alimenter autre chose qu'un µcontrôleur et quelques capteurs, ou un petit moteur 12V.

Par contre en alimentation solaire, si la batterie est correctement rechargée tous les jours, on pourra débiter un courant plus important, à condition de ne pas laisser la tension de la batterie descendre en dessous de 3.7V.

A titre indicatif, lorsque la tension d'une batterie descend en dessous de 3.7V, il reste environ 20% de capacité, ce qui permet tout de même de profiter d'une bonne partie de la capacité de celle-ci.


Cordialement

Henri


mercredi 29 mai 2024

ESP32 : Comparons


ESP32 : Comparons


La famille de µcontrôleurs ESP32 s'est étoffée depuis quelques années :

  • ESP32
  • ESP32 S2
  • ESP32 C3
  • ESP32 S3

Voici deux pages résumant les caractéristiques des différents modèles :

Chip Series Comparison

Comparison table for ESP8266/ESP32/ESP32-S2/ESP32-S3/ESP32-C3/ESP32-C6

Les cartes basées sur l'ESP32 sont extrêmement nombreuses. On ne va pas les citer toutes ici. Etant assez fan des cartes WEMOS D1 mini et LOLIN D32, je me suis naturellement tourné vers les cartes de ce constructeur.

1. ESP32

L'excellente FIREBEETLE reste un modèle à privilégier si l'on désire une carte pour un projet fonctionnant sur batterie :

Son régulateur RT9080 lui assure une consommation en veille de 10µA.

La WEMOS LOLIN32 est une carte déjà ancienne, disposant également d'un connecteur batterie :


Sa consommation en veille est de 1.7mA.

2. ESP32 S2

Historiquement, l'ESP32 S2 est le premier modèle sorti. Il apporte une nouveauté : il intègre nativement un contrôleur USB, ce qui permet de se passer de convertisseur USB / série. Le C3 et le S3 sont équipés d'USB de la même façon.

WEMOS LOLIN S2 mini

Ces cartes ont un format particulièrement réduit, par contre la double rangée de broches empêche de les implanter sur une breadboard.

Attention : il semblerait que l'ESP32 S2 ne possède pas de BLUETOOTH BLE, ni de DAC.

3. ESP32 C3

WEMOS LOLIN C3 mini

Cette carte, par rapport à la précédente, n'intègre plus une antenne imprimée, mais une antenne CMS (le petit composant rouge). Certaines critiques laissent à penser que la portée de ces antennes serait inférieure.

A noter la présence d'une LED adressable WS2812B.

4. ESP32 S3

WEMOS LOLIN S3 mini

L'antenne est imprimée, comme sur le S2. Ici, aussi une LED adressable est présente.

Pour ceux qui préfèrent les cartes un peu mieux équipées, un modèle PRO existe :

WEMOS LOLIN S3 pro

Elle possède entre autres un connecteur batterie, et bien entendu un chargeur.

5. Préparatifs

5.1. IDE ARDUINO

Pour que le core ESP32 apporte le support des µcontrôleurs C3, S2 et S3, C3, il faut installer une version récente :

Installing the ESP32 Board in Arduino IDE (Windows, Mac OS X, Linux)

Si une version ancienne est installée, il suffit de la mettre à jour à l'aide du gestionnaire de cartes : 

Menu Outils / Type de carte / Gestionnaire de cartes. Filtrez votre recherche en tapant ESP32.

5.2. LED adressable

Le pilotage de la LED adressable nécessite l'installation de la librairie Adafruit NeoPixel, que l'on peut trouver dans le gestionnaire de bibliothèques :

Menu Outils / Gestionnaire de bibliothèques. Filtrez votre recherche en tapant neopixel.

5.3. Serial monitor

Pour que les sorties que l'on imprime à l'aide de Serial soient visibles dans le terminal, il faut sélectionner :

Menu Outils / USB CDC On Boot : enabled

6. Test

J'ai réalisé quelques tests avec une carte WEMOS LOLIN S3 mini. 

6.1. LED

Testons tout d'abord la LED embarquée :

#include <Adafruit_NeoPixel.h>

int neoPixelPin = 47;

Adafruit_NeoPixel strip = Adafruit_NeoPixel(1, neoPixelPin, NEO_GRB + NEO_KHZ800);

void setup() {
  Serial.begin(115200);
  strip.begin();  // initialize the strip
  strip.show();   // make sure it is visible
  strip.clear();  // Initialize all pixels to 'off'
  Serial.println("GO");
}

void loop() {
  strip.setBrightness(100);
  strip.setPixelColor(0, 0, 255, 0);
  strip.show();
  delay(1000);
  strip.setPixelColor(0, 255, 0, 0);
  strip.show();
  delay(1000);
  strip.setPixelColor(0, 0, 0, 255);
  strip.show();
  delay(1000);
}

La LED doit s'allumer alternativement en rouge, vert, bleu.

6.2. WebServer

L'exemple HelloServer de la librairie ESP32 permet d'afficher "hello from esp32!" sur un navigateur.

Dans cet exemple, bien entendu, il faut veiller à remplacer les identifiants par les vôtres :

const char *ssid = "........";
const char *password = "........";

L'exemple fonctionne sans problème. Le moniteur série affiche : 

Connected to XXXXXXXXXX
IP address: 192.168.1.20
MDNS responder started
HTTP server started

Entrer l'adresse indiquée dans la barre d'adresse de votre navigateur. Celui-ci affiche :

hello from esp32!

Bien entendu l'exemple est simpliste, mais je n'ai aucune raison de douter qu'un logiciel plus complexe pose des problèmes.

7. Conclusion

Ce premier contact avec cette carte WEMOS LOLIN S3 mini est plutôt positif.

J'ai l'impression que la connexion au WIFI est plus rapide qu'avec les autres cartes que j'ai testé. Cela reste à confirmer.

Pour ma part le principal intérêt de ces cartes mini est leur compacité. Elle ont la même taille qu'une WEMOS ESP8266 D1 mini, pour un nombre de GPIOs bien supérieur (sauf pour la C3).

Dans un prochain article je testerai l'aptitude de cette carte à servir de base à des projets basse consommation. 

Je doute que je puisse parvenir à une consommation ultra-basse, équivalente à celle d'une FIREBEETLE. Rien que la présence de la LED adressable ne me dit rien qui vaille, car ce genre de LED consomme, même si l'on ne s'en sert pas. Mais rien n'empêche de la supprimer.


Cordialement

Henri