À propos de ce tutoriel :
Les bases de l'ESP32
1. Introduction à ESP32
2. Environnement de développement intégré ESP32 Arduino
3. VS Code et PlatformIO
4. Broches ESP32
5. Entrée et sortie ESP32
6. Modulation de largeur d'impulsion ESP32
7. Entrée analogique ESP32 ☑
8. Minuterie d'interruption ESP32
9 .ESP32 sommeil profond
Protocole ESP32
Serveur Web ESP32
ESP32LoRa
ESP32BLE
Client-serveur ESP32 BLE
Bluetooth ESP32
ESP32 MQTT
ESP32 ESP-MAINTENANT
Wi-Fi ESP32
WebSocket ESP32
ESP32 ESP-MESH
Boîte aux lettres ESP32
SMS ESP32
ESP32 HTTP obtenir POST
API Web HTTP GET
API Web HTTP POST
Articles sur le serveur ESP32
Continuez à mettre à jour, suivez les blogueurs et ne vous perdez pas ! ! !
Module de capteur ESP32
Continuez à mettre à jour, suivez les blogueurs et ne vous perdez pas ! ! !
Combat ultime ESP32
Plus de 100 projets pratiques ESP32, faites attention ! ! !
Cet article décrit comment lire l'entrée analogique via ESP32 à l'aide de l'IDE Arduino. Les lectures analogiques sont utiles pour lire les valeurs des résistances variables telles que les potentiomètres ou les capteurs analogiques.
Entrée analogique (CAN)
La lecture de valeurs analogiques avec l'ESP32 signifie que vous pouvez mesurer des niveaux de tension variables entre 0 V et 3,3 V.
La tension mesurée se voit alors attribuer une valeur comprise entre 0 et 4095, où 0 V correspond à 0 et 3,3 V correspond à 4095. Toute tension entre 0 V et 3,3 V se verra attribuer une valeur correspondante entre les deux.
Les ADC ne sont pas linéaires
Idéalement, vous vous attendez à un comportement linéaire lors de l'utilisation des broches ESP32 ADC. Cependant, cela ne se produit pas. Vous obtiendrez le comportement indiqué dans le tableau ci-dessous :
Ce comportement signifie que votre ESP32 ne peut pas faire la distinction entre 3,3 V et 3,2 V. Les deux tensions ont la même valeur : 4095.
Il en va de même pour les très basses valeurs de tension : pour 0 V et 0,1 V vous obtiendrez la même valeur : 0. Cela doit être gardé à l'esprit lors de l'utilisation des broches ESP32 ADC.
fonction analogRead()
Lire l'entrée analogique via l'ESP32 à l'aide de l'IDE Arduino revient à utiliser la fonction analog read() . Il prend en argument le GPIO que vous souhaitez lire :
lecture analogique (GPIO);
ESP32 prend en charge la mesure de 18 canaux différents. Seules 15 des cartes DEVKIT V1 DOIT (la version avec 30 GPIO) sont disponibles.
Saisissez le brochage de votre carte ESP32 et trouvez les broches ADC. Ceux-ci sont mis en évidence par une bordure rouge dans l'image ci-dessous.
En savoir plus sur les GPIO ESP32 : Référence des broches ESP32.
Ces broches d'entrée analogiques ont une résolution de 12 bits. Cela signifie que lorsque vous lisez une entrée analogique, elle peut aller de 0 à 4095.
Remarque : la broche ADC2 ne peut pas être utilisée lors de l'utilisation du Wi-Fi. Donc, si vous utilisez le Wi-Fi et que vous ne pouvez pas obtenir les valeurs de ADC2 GPIO, vous pouvez envisager d'utiliser ADC1 GPIO à la place, ce qui devrait résoudre votre problème.
Il existe d'autres fonctions plus avancées qui peuvent être utilisées avec les broches ADC qui peuvent être utilisées dans d'autres projets.
- analogReadResolution(resolution) : définit les bits d'échantillonnage 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.
- Analog Set Width (Largeur) : Définit les bits d'échantillonnage 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. Plage : 1 à 255.
- sim_set_samples (échantillons) : définit le nombre d'échantillons dans la plage. Par défaut, 1 échantillon. A pour effet d'augmenter la sensibilité.
- analogSetClockDiv(attenuation) : Règle le diviseur de fréquence pour l'horloge ADC. La valeur par défaut est 1. Plage : 1 à 255.
- analogSetAttenuation(attenuation) : 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 pas régler l'atténuation. L'ADC peut mesurer jusqu'à environ 800 mV (entrée 1 V = 1088 lectures ADC).
- ADC_2_5db : La tension d'entrée de l'ADC sera atténuée, étendant la plage de mesure à environ 1100 mV. (Entrée 1V = lecture ADC 3722).
- ADC_6db : La tension d'entrée de l'ADC sera atténuée, étendant la plage de mesure à environ 1350 mV. (Entrée 1V = lecture ADC 3033).
- ADC_11db : La tension d'entrée de l'ADC sera atténuée, étendant la plage de mesure à environ 2600 mV. (Entrée 1V = 1575 lectures ADC).
- analogSetPinAttenuation(pin, attenuation) : définit l'atténuation d'entrée pour la broche spécifiée. La valeur par défaut est ADC_11db La valeur d'atténuation est la même que celle de la fonction précédente.
- adcAttachPin(pin) : Attache une broche à l'ADC (efface également tous les autres modes analogiques qui peuvent être ouverts). Renvoie un résultat VRAI ou FAUX.
- adcStart(pin ), adcBusy(pin) et résultat adcEnd(pin) : démarre une conversion ADC sur le bus attaché à la pin. Vérifie si une conversion est en cours sur le bus ADC de la broche (renvoie TRUE ou FALSE). Obtenir le résultat de la conversion : renvoie un entier 16 bits.
Lire la valeur analogique du potentiomètre à l'aide de l'ESP32
Pour voir comment tout est connecté, nous allons prendre un exemple simple de lecture d'une valeur analogique à partir d'un potentiomètre.
Pour cet exemple, vous avez besoin des sections suivantes :
ESP32 DOIT DEVKIT V1
Potentiomètre Cavalier
de planche à pain
diagramme schématique
Connectez le potentiomètre à l'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.
le code
Nous utiliserons l'IDE Arduino pour programmer l'ESP32, alors assurez-vous que le plugin ESP32 est installé avant de continuer :
Ouvrez votre IDE Arduino et copiez le code suivant.
// Potentiometer is connected to GPIO 34 (Analog ADC1_CH6)
const int potPin = 34;
// variable for storing the potentiometer value
int potValue = 0;
void setup() {
Serial.begin(115200);
delay(1000);
}
void loop() {
// Reading potentiometer value
potValue = analogRead(potPin);
Serial.println(potValue);
delay(500);
}
Ce code lit simplement les valeurs du potentiomètre et imprime ces valeurs dans le moniteur série.
Dans le code, vous définissez d'abord à quel GPIO le potentiomètre est connecté. Dans cet exemple, GPIO 34 .
const int potPin = 34;
Dans setup() , la communication série est initialisée à un débit en bauds de 115200.
Serial.begin(115200);
À l'intérieur de loop() , utilisez la fonction analog read() pour lire l'entrée analogique à partir de
potValue = analogRead(potPin);
Enfin, imprimez la valeur lue par le potentiomètre dans le moniteur série.
Serial.println(potValue);
Téléchargez le code fourni sur votre ESP32. Assurez-vous que la carte et le port COM corrects sont sélectionnés dans le menu Outils.
exemple d'essai
Après avoir téléchargé le code et appuyé sur le bouton de réinitialisation ESP32, ouvrez le moniteur série à un débit de 115200 bauds. Tournez le potentiomètre et regardez la valeur changer.
La valeur maximale que vous obtiendrez est 4095 et la valeur minimale est 0.
Résumer
Dans cet article, vous avez appris à lire une entrée analogique à l'aide d'ESP32 et d'Arduino IDE. Bref:
- La carte de développement ESP32 DEVKIT V1 DOIT (version 30 broches) dispose de 15 broches ADC qui peuvent être utilisées pour lire les entrées analogiques.
- Ces broches ont une résolution de 12 bits, ce qui signifie que vous pouvez obtenir des valeurs comprises entre 0 et 4095.
- Pour lire une valeur dans l'IDE Arduino, il vous suffit d'utiliser la fonction analog read() .
- Les broches ESP32 ADC n'ont pas de comportement linéaire. Vous ne pourrez peut-être pas faire la différence entre 0 et 0,1 V, ou 3,2 et 3,3 V. Cela doit être gardé à l'esprit lors de l'utilisation des broches ADC.