MakePython ESP32, un thermomètre connecté
Le module MakePython ESP32
Ce module est disponible sur le site Makerfabs et un Kit avec un livre de projets sur le site d'elektor.
Il comprend un ESP32 avec un écran OLED et un grand nombre de GPIO disponibles, voir le brochage ci-contre.
Le projet
Un module capteur de température DS18B20 (une résistance de 4,7 Kohms est reliée entre la broche DO et VCC) est connecté à la broche IO2. Si l'on utilise un DS18B20 à 3 broches, cette résistance est nécessaire.
La température est affichée sur l'écran OLED et enregistrée toutes les 30 s sur la plateforme Thingspeak.
Après lancement du programme un tableau de bord comme celui ci-dessous est exécuté sur Thingspeak.

Le compte sur Thingspeak
Le programme
Le programme utilise micropython avec l'environnement Thonny
On renplace MyKEY par la Clé API( Write API Key) générée, My SSID par Le nom du réseau Wifi et My Password par la clé de sécurité.
Les fonctions :
Connect_Wifi(): permet de se connecter au réseau wifi
Display_text(); place le texte au centre de l'écran
La boucle While True:
Acquisition de la température et affichage avec 4 chiffres sur l'écran
Connexion au réseau et envoi des données de température toutes les 30 s sur la plateforme ThingspeaK.
La bibliothèque SSD1306.py doit être chargée dans la mémoire de l'ESP32.
On la trouve sur Github.

#
# Digital thermometer
# Jmd 27/08/2026
from machine import Pin, I2C
import ssd1306
import machine
import utime
import onewire, ds18x20
import network
import socket
APIKEY ="MyKEY" # Write your API Write Key
#function to connect WIFI
def Connect_Wifi():
import network
net = network.WLAN(network.STA_IF)
if not net.isconnected():
net.active(True)
net.connect("My SSID", "My Password") # Write your BOX SSID and Password
utime.sleep(5)
print (net.ifconfig())
def display_text(text, line, column):
oled.text(text, 8*column, 9*line)
i2c = machine.SoftI2C(scl=Pin(5),sda=Pin(4),freq =100000)
oled=ssd1306.SSD1306_I2C(128,64,i2c)
Temp = machine.Pin(2)
ds = ds18x20.DS18X20(onewire.OneWire(Temp))
while True:
#
# Display the temperature on the screen
#
roms=ds.scan() # Scan DS18B20
ds.convert_temp() # Convert temperature
utime.sleep_ms(750) # Delay to convert
for rom in roms:
temperature = ds.read_temp(rom) # Read temperature
oled.fill(0)
display_text("Temp(C)= ", 3, 1)
display_text(str(temperature)[:4], 3, 9) # Display on the screen
oled.show()
#
# Send temperature on the Thingspeak server every 30 s
#
Connect_Wifi()
sock = socket.socket()
addr = socket.getaddrinfo("api.thingspeak.com",80)[0][-1]
sock.connect(addr)
host = "api.thingspeak.com"
path = "api_key="+APIKEY+"&field1="+ str(temperature)
sock.send(bytes("GET /update?%s HTTP/1.0\r\nHost: %s\r\n\r\n" %(path,host), "utf8"))
sock.close()
utime.sleep(30)
Il faut tout d'abord créer un compte sur Thingspeak. D'autres plateformes peuvent être utilisées comme Sparkfun.
Après la création du compte, on clique sur New Channel, on valide le formulaire complété.
Une API est créée. La clé sera copiée et remplacée dans le programme à la ligne 13 : # Write your API Write Key

On peut adapter le tableau de bord et ajouter des widgets comme une jauge.

Le paramétrage de thingspeak est terminé.