Lectures analogiques ESP32/ESP8266 avec MicroPython

Lectures analogiques ESP32/ESP8266 avec MicroPython

Ce tutoriel montre comment lire des valeurs analogiques avec les cartes ESP32 et ESP8266 à l’aide du firmware MicroPython. A titre d’exemple, nous allons lire les valeurs d’un potentiomètre.

ESP32 ESP8266 Lectures analogiques avec MicroPython

Obtenir des lectures analogiques avec ESP32 et ESP8266 est un peu différent, il y a donc une section pour chaque carte dans ce tutoriel.

Conditions préalables

Pour suivre ce tutoriel, vous avez besoin du firmware MicroPython installé dans vos cartes ESP32 ou ESP8266. Vous avez également besoin d’un IDE pour écrire et télécharger le code sur votre carte. Nous suggérons d’utiliser Thonny IDE ou uPyCraft IDE :

Lectures analogiques – ESP8266

ESP8266 n’a qu’une seule broche analogique appelée A0. La broche analogique ESP8266 a une résolution de 10 bits. Il lit la tension de 0 à 3,3 V puis attribue une valeur comprise entre 0 et 1023.

Noter: certaines versions de l’ESP8266 ne lisent qu’un maximum de 1 V sur la broche ADC. Assurez-vous de ne pas dépasser la tension maximale recommandée pour votre carte.

Lectures analogiques – ESP32

Il y a plusieurs broches sur l’ESP32 qui peuvent agir comme des broches analogiques – elles sont appelées broches ADC. Tous les GPIO suivants peuvent agir comme broches ADC : 0, 2, 4, 12, 13, 14, 15, 25, 26, 27, 32, 33, 34, 35, 36 et 39.

En savoir plus sur les GPIO ESP32 : Référence de brochage ESP32 : Quelles broches GPIO devez-vous utiliser ?

Les broches ESP32 ADC ont une résolution de 12 bits par défaut. Ces broches lisent une tension comprise entre 0 et 3,3 V, puis renvoient une valeur comprise entre 0 et 4095. La résolution peut être modifiée sur le code. Par exemple, vous souhaiterez peut-être n’avoir qu’une résolution de 10 bits pour obtenir une valeur comprise entre 0 et 1023.

lecture analogique esp32 esp8266 micropython

Le tableau suivant montre quelques différences entre la lecture analogique sur l’ESP8266 et l’ESP32.

ESP8266 ESP32
Broches analogiques A0 (CAN 0) GPIO : 0, 2, 4, 12, 13, 14, 15,
25, 26, 27, 32, 33, 34, 35, 36,
et 39.
Résolution 10 bits (0-1023) 12 bits (0-4095)
Changer la résolution Non Oui

Schématique

La lecture analogique fonctionne différemment dans ESP32 et ESP8266. Il y a un schéma différent et un script différent pour chaque carte.

Pour suivre ce tuto, vous devez câbler un potentiomètre sur votre carte ESP8266 ou ESP32.

Pièces requises

Voici une liste des pièces dont vous avez besoin pour construire le circuit :

Vous pouvez utiliser les liens précédents ou accéder directement à MakerAdvisor.com/tools pour trouver toutes les pièces pour vos projets au meilleur prix !

1642173125 164 Lectures analogiques ESP32ESP8266 avec MicroPython

Schéma – ESP32

Suivez le diagramme schématique suivant si vous utilisez une carte ESP32 :

Lectures analogiques ESP32 avec schéma de circuit MicroPython

Dans cet exemple, nous utilisons GPIO 34 pour lire les valeurs analogiques du potentiomètre, mais vous pouvez choisir n’importe quel autre GPIO prenant en charge ADC. Lisez notre guide de brochage ESP32 pour en savoir plus sur les GPIO ESP32.

Schéma – ESP8266

Suivez le diagramme schématique suivant si vous utilisez une carte ESP8266 :

Lectures analogiques ESP8266 avec schéma de circuit MicroPython

L’ESP8266 prend en charge la lecture analogique uniquement sur le A0 épingler.

Scénario

Il existe quelques différences en ce qui concerne la lecture analogique dans ESP32 et ESP8266 concernant le code. Vous devez écrire un script légèrement différent selon la carte que vous utilisez. Assurez-vous de suivre le code de votre carte spécifique.

Scénario – ESP32

Le script suivant pour l’ESP32 lit les valeurs analogiques de GPIO 34.

# Complete project details at https://Raspberryme.com

from machine import Pin, ADC
from time import sleep

pot = ADC(Pin(34))
pot.atten(ADC.ATTN_11DB)       #Full range: 3.3v

while True:
  pot_value = pot.read()
  print(pot_value)
  sleep(0.1)

Afficher le code brut

Comment fonctionne le code

Pour lire les entrées analogiques, importez le ADC classe en plus de la Épingler classe de la machine module. Nous importons également les sommeil méthode.

from machine import Pin, ADC
from time import sleep

Ensuite, créez un ADC objet appelé pot sur GPIO 34.

pot = ADC(Pin(34))

La ligne suivante définit que nous voulons pouvoir lire la tension dans toute la gamme.

pot.atten(ADC.ATTN_11DB)

Cela signifie que nous voulons lire la tension de 0 à 3,3 V. Cela correspond à un réglage du taux d’atténuation de 11db. Pour cela, nous utilisons le attention() méthode et passez en argument : ADC.ATTN_11DB.

le attention() méthode peut prendre les arguments suivants :

  • ADC.ATTN_0DB — la tension de gamme complète : 1,2 V
  • ADC.ATTN_2_5DB — la tension de gamme complète : 1,5 V
  • ADC.ATTN_6DB – la tension de gamme complète : 2,0 V
  • ADC.ATTN_11DB — la tension de gamme complète : 3,3 V

Dans le tandis que boucle, lisez la valeur du pot et enregistrez-la dans le pot_value variable. Pour lire la valeur du pot, utilisez simplement le lire() méthode sur la pot objet.

pot_value = pot.read()

Ensuite, imprimez la valeur du pot.

print(pot_value)

A la fin, ajoutez un délai de 100 ms.

sleep(0.1)

Lorsque vous faites pivoter le potentiomètre, vous obtenez des valeurs de 0 à 4095 – c’est parce que les broches ADC ont une résolution de 12 bits par défaut. Vous souhaiterez peut-être obtenir des valeurs dans d’autres plages. Vous pouvez modifier la résolution en utilisant le largeur() méthode comme suit :

ADC.width(bit)

le bit argument peut être l’un des paramètres suivants :

  • ADC.WIDTH_9BIT: plage 0 à 511
  • ADC.WIDTH_10BIT: plage 0 à 1023
  • ADC.WIDTH_11BIT: plage 0 à 2047
  • ADC.WIDTH_12BIT: plage 0 à 4095

Par example:

ADC.width(ADC.WIDTH_12BIT)

En résumé:

  • Pour lire une valeur analogique, vous devez importer le ADC classer;
  • Pour créer un ADC objet simplement utiliser CAN (broche (GPIO)), dans lequel GPIO est le numéro du GPIO dont vous voulez lire les valeurs analogiques ;
  • Pour lire la valeur analogique, il suffit d’utiliser le lire() méthode sur la ADC objet.

Scénario – ESP8266

Le script suivant pour l’ESP8266 lit les valeurs analogiques de A0 épingler.

# Complete project details at https://Raspberryme.com

from machine import Pin, ADC
from time import sleep

pot = ADC(0)

while True:
  pot_value = pot.read()
  print(pot_value)
  sleep(0.1)

Afficher le code brut

Comment fonctionne le code

Pour lire les entrées analogiques, importez le ADC classe en plus de la Épingler classe de la machine module. Nous importons également le sommeil méthode.

from machine import Pin, ADC
from time import sleep

Ensuite, créez un ADC objet appelé pot au A0 épingler.

pot = ADC(0)

Noter: ADC0 (A0) est la seule broche de l’ESP8266 qui prend en charge la lecture analogique.

Dans la boucle, lisez la valeur du pot et enregistrez-la dans le pot_value variable. Pour lire la valeur du pot, utilisez le lire() méthode sur la pot objet.

pot_value = pot.read()

Ensuite, imprimez le pot_value.

print(pot_value)

A la fin, ajoutez un délai de 100 ms.

sleep(0.1)

En résumé:

  • Pour lire une valeur analogique, vous utilisez le ADC classer;
  • Pour créer un ADC objet appelez simplement CAN(0). L’ESP8266 ne prend en charge que la lecture ADC sur A0 épingler.
  • Pour lire la valeur analogique, utilisez la lire() méthode sur la ADC objet.

Manifestation

Après avoir enregistré le code sur votre carte ESP à l’aide de Thonny IDE ou uPyCraft IDE, tournez le potentiomètre.

ESP32 ESP8266 Lectures analogiques avec schéma de circuit MicroPython

Vérifiez le shell de votre IDE MicroPython pour lire les valeurs du potentiomètre. Si vous utilisez un ESP32, vous devriez obtenir des lectures entre 0 et 4095 – ou des lectures entre 0 et 1023 avec un ESP8266.

Lectures analogiques ESP32 ESP8266 avec démonstration MicroPython

Emballer

Dans ce tutoriel, nous vous avons montré comment lire des valeurs analogiques à l’aide de MicroPython avec les cartes ESP32 et ESP8266. Il existe plusieurs GPIO sur l’ESP32 qui peuvent lire des valeurs analogiques. De l’autre côté, l’ESP8266 ne prend en charge que les lectures analogiques sur le A0 (ADC0).

La lecture des valeurs analogiques avec l’ESP32 et l’ESP8266 est légèrement différente, mais en résumé, vous devez créer un ADC objet, puis utilisez la lire() méthode pour obtenir les valeurs.

Nous espérons que vous avez trouvé ce tutoriel utile. Si vous débutez avec MicroPython, vous aimerez peut-être également les ressources suivantes :

Merci d’avoir lu.