Esp-01s, entrée analogique (et 0~2.3V)

Bonjour,
Je désirerais brancher un capteur d'humidité de sol capacitif sur un esp-01s.

J'ai probablement mal cherché car je n'ai pas trouvé de réponse pour ma première question : Quel GPIO utiliser et comment le déclarer (et l'utiliser dans le code)

Ensuite, j'ai lu que la plage d'entrée est 0-1V, mais le capteur va jusque ~2.3V. Je suppose qu'il faut utiliser un pont diviseur, par exemple 300/720 Ohms (un rapport 1/2.4). Mais maintenant, comment le brancher ?

Merci d'avance pour le coup de main !

sans bricolage un peu aventureux, l'ESP01 n'ayant pas de pin analogique disponible, vous ne pouvez pas lire la tension de sortie de votre capteur

Et pourtant ...
J'ai continué mes recherches et on parle souvent de la pin 6, sans que je saches exactement laquelle est-ce.
Mais mieux, j'ai trouvé ce projet qui utilise les 4 pins !

Mais il semble que ce soient les librairies qui gèrent les E/S

Edit
J'ai trouvé pour la broche 6, c'est en effet hasardeux

oui il parle à des composants qui sont en I2C

'ai trouvé pour la broche 6, c'est en effet hasardeux

oui... faut être précis avec son fer à souder... :slight_smile:
(Is it possible to have analog input on ESP-01? ou https://www.instructables.com/ESP-01-Extra-Pin-and-Home-Make-Soldering-Iron-Head/)

Pas le DHT11 - c'est ce qui est pour moi une porte ouverte. Il faudrait regarder comment se comporte la librairie.

L'aimais le ESP-01s pour sa faible consommation.

Je vais me tourner vers le Wemos D1 dont je vais devoir programmer un sleep mode. Une mesure par heure suffit largement.

effectivement pas I2C, c'est du "One Wire "

Pas tellement analogique comme composant. :grinning:

Pas plus "One Wire" qu'analogique même s'il n'y a qu'un fil (deux avec la masse :grinning:).
C'est un collecteur ouvert comme l'I2C mais sans adresse. Il faut vérifier si la charge de collecteur est présente sur le module, sinon en ajouter une (4,7 k) entre la sortie data et Vcc.
On peut l'utiliser sur n'importe quelle pin numérique.

C'est un protocole propriétaire qui est basé :

  • sur une liaison bidirectionnelle (pas de fil horloge),
  • sur une structure connue et fixe de message,
  • un code correcteur d'erreur,
  • sur la mesure de largeur d'impulsion, les "1_Logique" et "0_Logique" étant constitués de deux éléments binaires : un élément binaire 0 suivi d'un élément binaire 1.
    La largeur de l'élément binaire "1" détermine si on reçoit un "0_logique" ou un "1_Logique".

Avec un micro lent comme un avr (Uno, nano, etc) le circuit est chatouilleux.
Avec un ESP8266 il n'y aura pas de problème.

Oui j’ai dit n’importe quoi…

Cela ne représente que 0,00000000000000000000001 % de toutes tes réponses :grinning:

Pas une excuse cependant;)

Un capteur d'humidité capacitif est analogique. Seule solution : une carte avec entrée analogique.
Un DHT11 ou DHT22 n'est pas un capteur d'humidité du sol, étant donné que l'on ne peut pas l'enterrer.

On en trouve avec une interface I2C embarquée, par exemple chez adafruit ou le Chirp

Oui, bien sûr, mais celui mentionné par Renard32 dans sa demande est analogique.
On trouve aussi ceci :
https://fr.aliexpress.com/item/33052608123.html?spm=a2g0o.productlist.0.0.46af3bbeQbODOb&algo_pvid=74269275-d30c-47a6-99d8-2b31526f34af&algo_exp_id=74269275-d30c-47a6-99d8-2b31526f34af-20&pdp_ext_f={"sku_id"%3A"67463358315"}&pdp_npi=2%40dis!EUR!!17.6!!!!!%402100bdcf16551958556425855eed96!67463358315!sea

Merci d'enterrer cette discussion, je me suis tourné vers un Wemos D1 mini, et les mesures fonctionnent très bien. Je les envoie dans le réseau via mon serveur MQTT.
J'ai cependant un problème pour faire un sleep d'une heure.
Je recherche encore et si je ne trouve pas, je reviens vers vous avec nouveau topic

Merci encore à toutes et tous !

l'ESP01 n'est vraiment plus un bon choix effectivement.

J'ai cependant un problème pour faire un sleep d'une heure.
un ESP8266 sait dormir en Deep Sleep avec juste la RTC qui fonctionne. Au réveil c'est un reboot

pour le sommeil profond on fait un ESP.deepSleep( durée );
L'argument durée est en µS ➜ le nombre de micro secondes souhaité avant le réveil.

Comme Il s'agit d'un entier non signé codé sur 32 bits vous pouvez aller jusqu'à 4 294 967 296 µs soit ~4294s soit environ 71 minutes. donc dormir 1h est gérable directement comme cela.

D'après cette page : Reddit - Dive into anything

Ce capteur capacitif ESP32 consommerait 20mA, ce qui le rend inutilisable dans une application sur batterie.

Cette remarque laisse supposer que l'alimentation sera autonome, sinon, pourquoi se préoccuper de qq mA ?
A vérifier donc : la consommation du Soil Moisture Sensor Capacitive V2.0 Module
Rien ne dit qu'elle sera low-power ...

EDIT : reddit parle de 5mA, ce qui est assez conséquent (500 heures d'autonomie sur une batterie 18650 2500mAH, donc 20 jours).

Il y a la description plus bas dans la page : 17 heures. C'est ridicule, ça ne sert à rien.
J'alimente avec 2 x 18650 en série et j'abaisse à 5 Volts avec un AMS1117 5.0
Pour que le capteur ne soit pas alimenté quand il est en mode sleep qet qu'il ne consomme que 5mA, je pensais l'alimenter via un broche en OUT à HIGH mais la tension n'atteint que 3,10 volts, insuffisante pour faire fonctionner le capteur. (j'ai essayé)
Je vais donc devoir utiliser un transistor. Je n'ai pas grand chose : des 2N2222A qui devraient convenir, ou la grosse artillerie : des Darlington TIP122.
Seulement, je n'ai jamais su calculer une résistance pour la base. Pouvez-vous m'aider ?
Merci d'avance
Édit : bien entendu pour un 2N2222A :wink:

Un 2N2222 est déjà de la moyenne artillerie (600mA) :wink:
A mon avis, il vaudrait mieux couper le rail positif, car si l'alimentation est coupée par la masse, un courant pourra passer entre le +5V et la broche DATA :

Si l'on considère que le 2N2907 a un gain de 100 pour quelques mA de courant de collecteur, il suffit de diviser le courant de collecteur par le gain pour obtenir le courant de base.
Par exemple, pour 5mA :
Ib = Ic / 100 = 0.005 / 100 = 50µA.
On applique ensuite un coefficient de sécurité pour être sûr de saturer (au moins 2, ou mieux : 4) :
Ib = 50µA * 4 = 200µA
La tension base / émetteur vaut environ 0.6V.
Rb vaudra donc :
Rb = (5V - Vbe) / Ib = (5V - 0.6V) / 0.000200 = 22KΩ
22KΩ est un maxi, avec 10KΩ cela marchera aussi.

Un AMS1117 consomme 5mA au minimum.
Il y a beaucoup mieux. Voir ici : RitonDuino: Les régulateurs LDO

Vous voulez dire que même « coupé » le 2N2222A consomme quand même ?

Sinon, en sachant que le circuit va fonctionner 10 secondes (*) toutes les heures, je dirais que peu importe s'il y a quelques mA supplémentaires à cause d'un 2N2222A à ces moments là.

[quote="hbachetti, post:19, topic:1002409"]
Un AMS1117 consomme 5mA au minimum.
[/quote] Ah bien zut, on m'avait conseillé celui-là à la place d'un LM780x
Fichtre de p...n de bordel de m...e. Pourrais-je enfin avoir de bons conseils définitifs ?

Excusez-moi. Je suis assez fâché car j'ai un stock d'AMS1117

[quote="hbachetti, post:19, topic:1002409"]
Il y a beaucoup mieux. Voir ici : RitonDuino: Les régulateurs LDO
[/quote] Merci, mais c'est pour UNE batterie (et donc 3.3V). Je ne sais donc pas commander le capteur avec une telle tension. C'est pour cela que j'en ai mis 2 en série, pour avoir 5 Volts.
Comme vous êtes à l'origine de l'article cité ci-dessus, je suppose que vous pouvez me conseiller ?

Bon, 5 mA au repos, cela fait théoriquement 900 heures, soit un mois, ce qui n'est pas trop mal...

(*) au (re)démarrage ou lors du sortir du mode sleep, je laisse le circuit se stabiliser 10 secondes avant de faire une mesure.