Cet article montre comment lire les entrées analogiques avec l’ESP32 à l’aide de l’ Arduino Arduino. La lecture analogique est utile pour lire des valeurs à partir de résistances variables telles que des potentiomètres ou des capteurs analogiques.
La lecture des entrées analogiques avec l’ESP32 est aussi simple que d’utiliser la fonction analogRead (GPIO), qui accepte comme argument le GPIO que vous souhaitez lire.
Nous avons également d’autres tutoriels sur l’utilisation des broches analogiques avec la carte ESP:
- ESP8266 ADC – Lisez les valeurs analogiques avec Arduino ID, MicroPython et Lua
- Lectures analogiques ESP32 avec MicroPython
Regardez la vidéo
Vous pouvez regarder le tutoriel vidéo ou continuer à lire cette page pour les instructions écrites.
Entrées analogiques (CAN)
La lecture d’une valeur analogique avec l’ESP32 signifie que vous pouvez mesurer des niveaux de tension variables entre 0 V et 3,3 V.
La tension mesurée est alors affectée à une valeur comprise entre 0 et 4095, dans laquelle 0 V correspond à 0, et 3,3 V correspond à 4095. Toute tension comprise entre 0 V et 3,3 V recevra la valeur correspondante entre les deux.
ADC est non linéaire
Idéalement, vous vous attendez à un comportement linéaire lors de l’utilisation des broches ADC ESP32. Cependant, cela n’arrive pas. Ce que vous obtiendrez est un comportement comme indiqué dans le tableau suivant :
Ce comportement signifie que votre ESP32 n’est pas capable de distinguer 3.3 V à partir de 3,2 V. Vous obtiendrez la même valeur pour les deux tensions: 4095.
La même chose se produit pour les valeurs de très basse tension: pour 0 V et 0,1 V, vous obtiendrez la même valeur: 0. Vous devez garder cela à l’esprit lorsque vous utilisez les broches ADC ESP32.
Il y a une discussion sur GitHub à ce sujet.
Fonction analogRead()
Lire une entrée analogique avec l’ESP32 à l’aide de l’ Arduino Arduino est aussi simple que d’utiliser la fonction analogRead(). Il accepte comme argument, le GPIO que vous souhaitez lire:
analogRead(GPIO);
L’ESP32 prend en charge les mesures dans 18 canaux différents. Seulement 15 sont disponibles dans la carte DEVKIT V1 DOIT (version avec 30 GPIO).
Prenez le brochage de votre carte ESP32 et localisez les broches ADC. Ceux-ci sont surlignés d’une bordure rouge dans la figure ci-dessous.
En savoir plus sur les GPIO ESP32 : Référence de brochage ESP32.
Ces broches d’entrée analogiques ont une résolution de 12 bits. Cela signifie que lorsque vous lisez une entrée analogique, sa plage peut varier de 0 à 4095.
Remarque : Les broches ADC2 ne peuvent pas être utilisées lorsque le Wi-Fi est utilisé. Donc, si vous utilisez le Wi-Fi et que vous avez du mal à obtenir la valeur d’un GPIO ADC2, vous pouvez envisager d’utiliser un GPIO ADC1 à la place, cela devrait résoudre votre problème.
Autres fonctions utiles
Il existe d’autres fonctions plus avancées à utiliser avec les broches ADC qui peuvent être utiles dans d’autres projets.
- analogReadResolution (résolution) : définit les bits d’échantillon et la résolution. Il peut s’agir d’une valeur comprise entre 9 (0 – 511) et 12 bits (0 – 4095). La résolution par défaut est de 12 bits.
- analogSetWidth (largeur): définit les bits d’échantillon et la résolution. Il peut s’agir d’une valeur comprise entre 9 (0 – 511) et 12 bits (0 – 4095). La résolution par défaut est de 12 bits.
- analogSetCycles (cycles) : définit le nombre de cycles par échantillon. La valeur par défaut est 8. Gamme: 1 à 255.
- analogSetSamples (échantillons) : définit le nombre d’échantillons dans la plage. La valeur par défaut est 1 échantillon. Cela a pour effet d’augmenter la sensibilité.
- analogSetClockDiv (atténuation): réglez le diviseur pour l’horloge ADC. La valeur par défaut est 1. Gamme: 1 à 255.
- analogSetAttenuation (atténuation) : définit l’atténuation d’entrée pour toutes les broches ADC. La valeur par défaut est ADC_11db. Valeurs acceptées:
- ADC_0db : ne règle aucune atténuation. L’ADC peut mesurer jusqu’à environ 800 mV (entrée 1V = lecture ADC de 1088).
- ADC_2_5db: La tension d’entrée de l’ADC sera atténuée, étendant la plage de mesure jusqu’à env. 1100 mV. (Entrée 1V = lecture CAN de 3722).
- ADC_6db: La tension d’entrée de l’ADC sera atténuée, étendant la plage de mesure jusqu’à env. 1350 mV. (Entrée 1V = lecture CAN de 3033).
- ADC_11db: La tension d’entrée de l’ADC sera atténuée, étendant la plage de mesure jusqu’à env. 2600 mV. (Entrée 1V = lecture CAN de 1575).
- analogSetPinAttenuation (pin, atténuation): définit l’atténuation d’entrée pour la broche spécifiée. La valeur par défaut est ADC_11db. Les valeurs d’atténuation sont les mêmes que celles de la fonction précédente.
- adcAttachPin (pin): Attachez une broche à l’ADC (efface également tout autre mode analogique qui pourrait être activé). Renvoie un résultat VRAI ou FAUX.
- adcStart(pin), adcBusy(pin) et resultadcEnd(pin) : démarre une conversion ADC sur le bus de la broche attachée. Vérifiez si la conversion sur le bus ADC de la broche est en cours d’exécution (renvoie TRUE ou FALSE). Obtenez le résultat de la conversion : renvoie un entier de 16 bits.
Il y a une très bonne vidéo expliquant ces fonctions que vous pouvez regarder ici.
Lire les valeurs analogiques d’un potentiomètre avec ESP32
Pour voir comment tout se lie, nous allons faire un exemple simple pour lire une valeur analogique d’un potentiomètre.
Pour cet exemple, vous avez besoin des pièces suivantes:
- Carte ESP32 DOIT DEVKIT V1 (lire les meilleures cartes de développement ESP32)
- Potentiomètre
- Platine de prototypage
- Fils de raccordement
Vous pouvez utiliser les liens précédents ou aller directement à MakerAdvisor.com/tools pour trouver toutes les pièces pour vos projets au meilleur prix!
Schéma
Câblez un potentiomètre à votre ESP32. La broche centrale du potentiomètre doit être connectée au GPIO 34. Vous pouvez utiliser le schéma suivant comme référence.
Code
Nous programmerons l’ESP32 à l’aide de l’ Arduino Arduino, alors assurez-vous d’avoir le module complémentaire ESP32 installé avant de continuer:
- Instructions Windows – Carte ESP32 dans Arduino ID
- Instructions Mac et Linux – Carte ESP32 dans Arduino Arduino
Ouvrez votre Arduino Arduino et copiez le code suivant.
// Potentiometer is connected to GPIO 34 (Analog ADC1_CH6) const int potPin = 34;// variable for storing the potentiometer valueint potValue = 0;void setup() { Serial.begin(115200); delay(1000);}void loop() { // Reading potentiometer value potValue = analogRead(potPin); Serial.println(potValue); delay(500);}
Afficher le code brut
Ce code lit simplement les valeurs du potentiomètre et imprime ces valeurs dans le moniteur série.
Dans le code, vous commencez par définir le GPIO auquel le potentiomètre est connecté. Dans cet exemple, GPIO 34.
const int potPin = 34;
Dans le setup(), initialisez une communication série à une vitesse en bauds de 115200.
Serial.begin(115200);
Dans la boucle(), utilisez la fonction analogRead() pour lire l’entrée analogique du potPin.
potValue = analogRead(potPin);
Enfin, imprimez les valeurs lues à partir du potentiomètre du moniteur série.
Serial.println(potValue);
Téléchargez le code fourni sur votre ESP32. Assurez-vous d’avoir la bonne carte et le bon port COM sélectionnés dans le menu Outils.
Tester l’exemple
Après avoir téléchargé le code et appuyé sur le bouton de réinitialisation ESP32, ouvrez le moniteur série à une vitesse de transmission de 115200. Tournez le potentiomètre et voyez les valeurs changer.
La valeur maximale que vous obtiendrez est 4095 et la valeur minimale est 0.
Conclusion
Dans cet article, vous avez appris à lire les entrées analogiques à l’aide de l’ESP32 avec l’ Arduino Arduino. En résumé:
- La carte DOIT ESP32 DEVKIT V1 (version avec 30 broches) dispose de 15 broches ADC que vous pouvez utiliser pour lire les entrées analogiques.
- Ces broches ont une résolution de 12 bits, ce qui signifie que vous pouvez obtenir des valeurs de 0 à 4095.
- Pour lire une valeur dans l’ Arduino Arduino, il vous suffit d’utiliser la fonction analogRead().
- Les broches ADC ESP32 n’ont pas de comportement linéaire. Vous ne pourrez probablement pas faire la distinction entre 0 et 0,1V, ou entre 3,2 et 3,3V. Vous devez garder cela à l’esprit lorsque vous utilisez les broches ADC.
Nous espérons que ce petit guide vous sera utile. Si vous souhaitez en savoir plus sur l’ESP32, inscrivez-vous à notre cours: Learn ESP32 with Arduino ID.
Autres guides ESP32 que vous pourriez aussi aimer:
- Écran OLED ESP32 avec Arduino ID
- ESP32 avec capteur de température et d’humidité DHT à l’aide d’Arduino Server
- Serveur Web ESP32 avec lectures DHT
- 20+ Projets et tutoriels ESP32
Merci d’avoir lu.