Utiliser un capteur capacitif avec la Raspberry Pi Pico en MicroPython
(Mis à jour le 04/01/2023)

Un capteur capacitif permet d’avoir une sorte de bouton tactile qui se comporte comme un bouton-poussoir. Ils sont omniprésents dans les appareils du quotidien. Contrairement au bouton-poussoir classique, il n’y a aucun déplacement mécanique du bouton.
Le module détecte la pression d’un doigt dès qu’il est posé sur la surface sensible. Avec ce type de module basique, on ne peut pas connaître l’intensité de la pression exercée par le doigt mais uniquement sa présence.
Note
Sur les cartes ESP32, ce type de module n’est pas très utile, car l’ESP32 intègre déjà une dizaine de capteurs capacitifs sur ces broches. Par contre, sur la Raspberry Pi Pico, il peut être utilisé pour remplacer un simple bouton-poussoir.
Comment fonctionne un capteur capacitif ?
Comme indiqué dans son nom, c’est un capteur qui est basé sur la variation de la capacité d’un condensateur. Un condensateur est constitué de deux plaques métalliques placées face à face, séparées par un substrat (ici l’épaisseur de la PCB en FR4 qui fait office de substrat).

Sur ce module, il n’y a qu’une seule plaque métallique pour le condensateur, la deuxième étant représentée par votre doigt😉. En fait, quand le doigt est posé sur la face avant, un condensateur est formé avec une très petite capacité. C’est cette variation de signal qui est renvoyé par le module sur la broche SIG
.
Note
Il est important de se rappeler que ces capteurs capacitifs ne seront pas aussi fiables qu’un bouton-poussoir mécanique. Ils sont susceptibles d’être affectés par des capacités parasites de l’environnement qui peuvent altérer ou fausser les mesures.
Branchements du capteur capacitif
Voici le brochage à réaliser pour utiliser ce module :
Module Capteur Capacitif |
Rasperry Pi Pico |
---|---|
|
|
|
|
|
|

Script pour tester le capteur capacitif du module
Une manière de récupérer la valeur est d’utiliser une broche analogique (et donc l’ADC de la Pi Pico).
from machine import Pin, ADC
import time
# Create an ADC object linked to pin 26
adc = ADC(Pin(26, mode=Pin.IN))
while True:
# Read ADC and convert to voltage
val = adc.read_u16()
val = val * (3.3 / 65535)
print(round(val, 2), "V") # Keep only 2 digits
# Wait a bit before taking another reading
time.sleep_ms(100)
Voici un aperçu lorsqu’on touche le module avec son doigt :

Vous remarquerez que les valeurs obtenues sont binaires : soit 0.01V de base soit 3.3V quand le doigt touche le module. On peut donc simplifier le code et utiliser n’importe quelle broche digitale de la Pico pour détecter une pression.
from machine import Pin
pin_capteur = Pin(26, mode=Pin.IN, pull=Pin.PULL_UP)
while True:
if pin_capteur.value() == 1:
print("Doigt detecté")