Micropython et ESP32

 

bouton violet L'environnement de développement Thonny

On peut utiliser Micropython en mode console dans un terminal, mais la programmation avec l'IDE Thonny sera beaucoup plus conviviale.

Il faut tout d'abord installer Micropython sur l'ESP 32, avec un ordinateur sous windows, suiver la procédure décrite sur le site :

UPESY

Après avoir vérifié que Micropython est bien sur L'ESP 32 et installé Thonny, il faut faire quelques réglages simples.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

bouton violetUn voltmètre avec bargraphe

J'utilise une platine ESP32 DEVKIT, mais cela peut fonctionner avec une autre carte ESP32, il faut juste respecter le brochage.
En utilisant la broche IO34 en entrée analogique, on mesure la tension présente et on l'affiche sur l'afficheur OLED.
Le potentiomètre ( 47 Kohms) permet de régler la tension présente sur l'entrée entre 0 et 3,3 V


Cofiguration I2C :

SDA ---> IO21

SCL ---> IO22


Après exécution du programme on affiche bien la tension en chiffres et sur le bargraphe.

Le programme convertit la tension analogique au format texte et l'affiche dans un rectangle. Il créé le bargraphe. La fonction oled.fill_rect dessine un rectangle plein dont la longueur dépend de la mesure.

 

 

 

 

 

 

 

 

 

 
# voltmètre
# JMD dec 2021
from machine import Pin, ADC, I2C
from time import sleep
import ssd1306

i2c = I2C(-1, scl=Pin(22), sda=Pin(21))

oled_width = 128
oled_height = 64
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c)

mesure = ADC(Pin(34))
mesure.atten(ADC.ATTN_11DB)
aff = 0
pos = 1

while True:
  mesure_value = mesure.read()
  #conversion de la mesure en tension
  voltage = 0.000816*mesure_value + 0.037822 
  V=str(round(voltage, 3)) + " V"
  # variable affichage pour le baragraph
  aff = int(voltage*39)
  print (aff)
  # Affichage des graphiques
  oled.fill(0)
  oled.rect(23, 8, 74, 18, 1) # rectangle pour encadrer la tension
  oled.text(V, 30, 13) # affichage de la tension
  # traçage du baragraph
  oled.hline(0, 48, 128, 1)
  for n in range(10):
      pos = n*13
      oled.vline(pos, 44, 8, 1)
  oled.text("3",114, 54)
  oled.text("2",76, 54)
  oled.text("1",38, 54)
  oled.text("0",0, 54)
  oled.fill_rect(0, 36, aff, 4, 1)
  oled.show()
  sleep(0.2)
   
  

bouton violetVisualiser le signal

A la manière d'un oscillocope, on peut visualiser le signal, à conditions que la fréquence soit assez basse et l'amplitude ne dépassant pas 3,3 V.
Un générateur sera connecté à la place du potentiomètre.

Le programme utilise la fonction oled.scroll pour balayer l'axe des X.

 
# Oscillo
#JMD Dec 2021

from machine import Pin, ADC, I2C
from time import sleep
import ssd1306

i2c = I2C(-1, scl=Pin(22), sda=Pin(21))

oled_width = 128
oled_height = 64
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c)

mesure = ADC(Pin(34))
mesure.atten(ADC.ATTN_11DB)
vmax = 3.4
dotPos_old = int(oled_height/2)

while True:
  mesure_value = mesure.read()
  voltage = 0.000816*mesure_value + 0.037822  
  
  dotPos_new = oled_height-int(voltage/vmax*oled_height)-1
  oled.line(0, dotPos_new, 0, dotPos_old, 1)
  oled.scroll(1, 0)
  oled.line(0, dotPos_new, 0, dotPos_old, 0) 
  dotPos_old = dotPos_new
  oled.show()


Si l'ESP32 peut-être programmé avec l'environnement Arduino, Micropython est une autre alternative. Il existe de nombreuses bibliothèques et le langage Python est un outil puissant.
Pour ce tutoriel vous aurez besoin d'un afficheur OLED I2C compatible ssd1306 et d'un potentiomètre. Nous allons créer un voltmètre avec un bargraphe et visualiser les signaux.