Bases · 11 min de lecture

Convertisseur de niveau logique : relier 3,3 V et 5 V sans risque

Convertisseur de niveau logique : pourquoi l'ESP32 et le Pico ne supportent pas 5 V, seuils VIH/VIL, pont diviseur, BSS138 pour l'I2C, 74HCT et modules.

Un convertisseur de niveau logique est un petit circuit qui permet à une carte en 3,3 V (ESP32, Raspberry Pi Pico, ESP8266) de dialoguer en sécurité avec une carte ou un module en 5 V (Arduino Uno, LCD I2C, HC-SR04, WS2812B). Relier une sortie 5 V directement à une broche 3,3 V peut l'abîmer lentement ou d'un coup ; dans l'autre sens, une entrée 5 V ne voit parfois même pas un signal 3,3 V comme un « 1 ». Savoir quand un convertisseur est nécessaire, et lequel suffit, fait disparaître les pannes mystérieuses de la moitié des projets à tensions mixtes.

Dans cet article, tu verras d'abord ce que signifient les seuils VIH et VIL et pourquoi les broches de l'ESP32 et du Pico ne supportent pas 5 V. Ensuite, nous verrons trois solutions avec des exemples : la conversion unidirectionnelle avec un pont diviseur à deux résistances, le convertisseur bidirectionnel à MOSFET BSS138 pour l'I2C, et les circuits 74HCT pour les signaux rapides comme le WS2812B ou le SPI. À la fin, un tableau indique quels modules fonctionnent directement en 3,3 V, suivi d'une liste d'erreurs fréquentes.

Carte de développement ESP32
Toutes les broches GPIO de l'ESP32 fonctionnent en logique 3,3 V ; un signal 5 V n'est pas sûr pour elles.

Que sont les niveaux logiques 3,3 V et 5 V ?

Une broche numérique ne connaît que 0 et 1, mais dans le monde réel la tension peut prendre n'importe quelle valeur entre 0 et l'alimentation. C'est pourquoi chaque fiche technique donne quatre seuils. VIH (entrée HIGH) est la tension la plus basse que l'entrée lit à coup sûr comme 1. VIL (entrée LOW) est la tension la plus haute lue à coup sûr comme 0. Entre les deux, la zone est indéterminée : la puce peut y lire 0 ou 1. Côté sortie, VOH est la tension minimale garantie quand la broche est à HIGH, et VOL la tension maximale garantie à LOW. Pour que deux puces dialoguent sans erreur, le VOH de l'émetteur doit rester nettement au-dessus du VIH du récepteur, et son VOL nettement sous le VIL du récepteur. L'article sur les portes logiques montre comment les portes décident avec ces seuils, et tu peux essayer dans l'outil portes logiques.

Puce (alimentation)VIL (max)VIH (min)VOL (max)VOH (min)Maximum sur la broche
ATmega328P, Arduino Uno (5 V)1,5 V (0,3 × VCC)3,0 V (0,6 × VCC)0,9 V4,2 V5,5 V
ESP32 (3,3 V)0,83 V (0,25 × VDD)2,48 V (0,75 × VDD)0,33 V2,64 V3,6 V
RP2040, Raspberry Pi Pico (3,3 V)0,8 V2,0 V0,5 VEnviron 2,6 V3,8 V
Série 74HC (5 V)1,5 V3,5 V0,1 V4,4 V5,5 V
Série 74HCT (5 V)0,8 V2,0 V0,1 V4,4 V5,5 V

Le tableau mène à trois conclusions importantes. D'abord, la sortie HIGH d'un Uno 5 V (4,2–5 V) dépasse nettement la limite de 3,6 V de l'ESP32 et de 3,8 V du Pico : dans ce sens, la conversion est indispensable. Ensuite, la sortie HIGH 3,3 V de l'ESP32 franchit généralement le seuil VIH de 3,0 V de l'Uno, mais le VOH minimal garanti par la fiche technique n'est que de 2,64 V ; la liaison fonctionne donc souvent, mais devient limite quand le fil s'allonge ou que la broche est chargée. Enfin, une puce 74HC alimentée en 5 V, un expandeur I2C à seuil de 0,7 × VCC comme le PCF8574 ou une LED WS2812B ne considèrent pas de façon fiable comme HIGH une tension inférieure à 3,5 V ; pour eux, un signal 3,3 V est réellement insuffisant. La série 74HCT a un VIH de 2,0 V, c'est pourquoi elle est l'un des moyens les plus propres de passer de 3,3 V à 5 V.

Pourquoi les broches de l'ESP32 et du Pico ne supportent-elles pas 5 V ?

Chaque broche d'entrée d'une puce 3,3 V possède de petites diodes de protection qui la relient au rail 3,3 V et à GND. Elles sont conçues pour absorber des impulsions très brèves comme une décharge électrostatique, pas un courant permanent. Si tu appliques 5 V sur la broche, la diode du haut conduit et un courant circule de la source 5 V vers le rail 3,3 V. Si la résistance interne de la source est faible, ce courant atteint des dizaines de milliampères et détruit la diode et le circuit de la broche en les échauffant. S'il est plus faible, la broche ne meurt pas tout de suite, mais la puce s'use avec le temps, et le rail 3,3 V peut même être tiré vers le haut au point que la carte s'alimente par la broche : tu débranches le câble d'alimentation et la LED de l'ESP32 reste faiblement allumée. La fiche technique de l'ESP32 fixe pour les broches une limite d'alimentation + 0,3 V (environ 3,6 V), celle du RP2040 d'alimentation + 0,5 V (environ 3,8 V). « J'ai essayé une fois et ça n'a pas cassé » ne veut pas dire que la broche tolère 5 V.

Les broches numériques de la puce RP2350 du Raspberry Pi Pico 2 sont conçues pour tolérer 5 V lorsque la carte est alimentée ; les entrées analogiques (GP26–GP29) n'en font pas partie, et les broches ne délivrent toujours que 3,3 V en sortie. Appliquer 5 V sur les broches d'une carte éteinte reste risqué dans tous les cas. Sur le premier Pico (RP2040), l'ESP32 et l'ESP8266, aucune broche ne tolère 5 V.

De quoi as-tu besoin selon le cas ?

CasExempleSolution
Sortie 5 V → entrée 3,3 VTX de l'Uno → RX de l'ESP32, ECHO du HC-SR04 → PicoPont diviseur (signaux lents) ou tampon 74LVC (signaux rapides)
Sortie 3,3 V → entrée 5 V (VIH vers 3 V)TX de l'ESP32 → RX de l'UnoFonctionne souvent en direct ; un 74HCT pour une marge garantie
Sortie 3,3 V → entrée 5 V (VIH 3,5 V)ESP32 → WS2812B, puce 74HC en 5 VUn tampon comme le 74HCT125 / 74AHCT125
Ligne bidirectionnelle à drain ouvertI2C (SDA, SCL), 1-WireConvertisseur à MOSFET BSS138
Ligne bidirectionnelle rapide push-pullBus de données parallèle74LVC245 avec broche de direction, ou TXS0108E

Conversion unidirectionnelle avec un pont diviseur (5 V → 3,3 V)

Le moyen le plus simple d'amener une sortie 5 V sur une entrée 3,3 V, ce sont deux résistances. Le signal entre par la résistance du haut R1, le point milieu va à la broche 3,3 V, et la résistance du bas R2 va à GND. La sortie vaut Vsortie = 5 V × R2 / (R1 + R2) ; avec R2 égale au double de R1, les 5 V tombent à 3,33 V. Le pont ne fonctionne que dans un sens, de la tension haute vers la basse : il ne convient donc pas aux lignes bidirectionnelles où le côté 3,3 V doit répondre. Sa vitesse est aussi limitée, car la résistance de sortie du pont forme avec la capacité de la broche un petit filtre RC qui arrondit les fronts. Pour choisir les valeurs, utilise le calculateur de pont diviseur, et pour l'explication complète, l'article sur le pont diviseur de tension.

R1 (côté signal)R2 (côté GND)Sortie sous 5 VRésistance de sortieUsage conseillé
1 kΩ2 kΩ (deux 1 kΩ en série)3,33 V667 ΩLa plupart des usages, y compris les signaux rapides ; consomme 1,7 mA à HIGH
2,2 kΩ3,3 kΩ3,00 V1,3 kΩLa marge la plus sûre ; UART, ECHO du HC-SR04
10 kΩ20 kΩ3,33 V6,7 kΩFaible courant ; UART jusqu'à 115200 bauds et signaux lents
4,7 kΩ10 kΩ3,40 V3,2 kΩLimite ; si le rail 5 V monte à 5,25 V on obtient 3,57 V, déconseillé

Exemple : UART entre un Arduino Uno et un ESP32

Dans les projets où l'Uno lit les capteurs et où l'ESP32 envoie les données sur Internet par Wi-Fi, les deux cartes dialoguent en UART. Comme la ligne TX de l'Uno délivre 5 V, elle rejoint la broche RX de l'ESP32 par un pont de 1 kΩ + 2 kΩ. La ligne TX 3,3 V de l'ESP32 peut aller directement à la broche RX de l'Uno, car l'Uno considère comme HIGH tout ce qui dépasse 3,0 V. Pour laisser le port série USB de l'Uno (D0, D1) libre pour l'ordinateur, l'Uno utilise SoftwareSerial sur D10 et D11 ; sur l'ESP32, le deuxième port série matériel, Serial2, fonctionne sur GPIO 16 (RX) et 17 (TX). Les GND des deux cartes doivent impérativement être reliés.

C++ (Arduino IDE)
1// Arduino Uno: SoftwareSerial ile ESP32'ye veri gönder / send data to the ESP32 with SoftwareSerial
2// Uno D11 (TX, 5 V) -> 1k -> ESP32 GPIO 16 ; GPIO 16 -> 2k -> GND
3// ESP32 GPIO 17 (TX, 3,3 V) -> Uno D10 (RX) doğrudan / directly ; GND <-> GND
4#include <SoftwareSerial.h>
5
6SoftwareSerial link(10, 11);   // RX, TX
7
8void setup() {
9  Serial.begin(9600);          // bilgisayar / computer
10  link.begin(9600);            // ESP32 hattı / ESP32 line
11}
12
13void loop() {
14  int raw = analogRead(A0);
15  link.print(F("A0="));
16  link.println(raw);           // ör. / e.g. "A0=512"
17
18  unsigned long start = millis();
19  while (millis() - start < 1000) {          // 1 sn cevap bekle / wait 1 s for a reply
20    if (link.available()) {
21      String reply = link.readStringUntil('\n');
22      Serial.print(F("ESP32: "));
23      Serial.println(reply);
24    }
25  }
26}
C++ (Arduino IDE)
1// ESP32: Serial2 ile Uno'dan gelen satırları oku ve cevap ver / read lines from the Uno on Serial2 and reply
2const int RX2_PIN = 16;        // bölücünün orta noktası / divider midpoint
3const int TX2_PIN = 17;        // Uno D10'a doğrudan / straight to Uno D10
4
5void setup() {
6  Serial.begin(115200);
7  Serial2.begin(9600, SERIAL_8N1, RX2_PIN, TX2_PIN);
8}
9
10void loop() {
11  if (Serial2.available()) {
12    String line = Serial2.readStringUntil('\n');
13    line.trim();
14    Serial.print("Uno: ");
15    Serial.println(line);
16    Serial2.print("OK ");      // 3,3 V çıkış Uno için yeterli / 3.3 V output is enough for the Uno
17    Serial2.println(line.length());
18  }
19}

Avant de téléverser, mesure le point milieu du pont au multimètre : Uno en marche et sans émission, tu dois lire environ 3,3 V, car une ligne UART est à HIGH au repos. Si le moniteur série de l'Uno affiche chaque seconde une ligne comme « ESP32: OK 6 », la communication fonctionne dans les deux sens. À 9600 bauds, un bit dure 104 µs, alors que le retard introduit par le pont 1 kΩ + 2 kΩ se compte en nanosecondes ; la vitesse ne pose donc aucun problème.

Exemple : brancher un HC-SR04 sur un Raspberry Pi Pico

Capteur de distance à ultrasons HC-SR04
Le HC-SR04 fonctionne en 5 V et sa broche ECHO délivre une impulsion de 5 V ; il doit rejoindre les cartes 3,3 V via un pont.

Le HC-SR04 ne fonctionne de manière fiable qu'en 5 V. Si tu alimentes le Pico par USB, relie le VCC du capteur à la broche VBUS du Pico (broche 40). L'entrée TRIG détecte sans problème l'impulsion 3,3 V du Pico et va donc directement sur GP15. ECHO renvoie en revanche une impulsion de 5 V : une résistance de 1 kΩ se place entre ECHO et GP14, et une de 2 kΩ entre GP14 et GND. Le code mesure la durée de l'impulsion ECHO en microsecondes avec time_pulse_us et la convertit en distance avec la vitesse du son dans l'air (environ 343 m/s).

MicroPython
1# Raspberry Pi Pico + HC-SR04 (ECHO bölücüyle) / Raspberry Pi Pico + HC-SR04 (ECHO through a divider)
2# VCC -> VBUS (pin 40), GND -> GND, TRIG -> GP15, ECHO -> 1k -> GP14 -> 2k -> GND
3from machine import Pin, time_pulse_us
4import time
5
6trig = Pin(15, Pin.OUT)
7echo = Pin(14, Pin.IN)
8
9
10def distance_cm():
11    trig.value(0)
12    time.sleep_us(2)
13    trig.value(1)                      # 10 µs tetik darbesi / 10 µs trigger pulse
14    time.sleep_us(10)
15    trig.value(0)
16    t = time_pulse_us(echo, 1, 30000)  # en fazla 30 ms bekle / wait at most 30 ms
17    if t < 0:
18        return None                    # yankı yok / no echo
19    return t * 0.0343 / 2              # gidiş-dönüş / round trip
20
21
22while True:
23    d = distance_cm()
24    if d is None:
25        print("Olcum yok / No echo")
26    else:
27        print("Mesafe / Distance: {:.1f} cm".format(d))
28    time.sleep(0.5)

Le convertisseur de niveau bidirectionnel BSS138

La plupart des petites cartes vendues comme « convertisseur de niveau logique 4 canaux » comportent, pour chaque canal, un MOSFET canal N BSS138 et deux résistances de tirage de 10 kΩ. Le circuit est d'une grande simplicité : la grille du MOSFET est reliée à 3,3 V (LV), la source au côté basse tension et le drain au côté haute tension. Chaque côté a sa propre résistance de tirage vers sa tension. Ce montage est conçu pour les lignes à drain ouvert comme l'I2C, qui ne font que tirer la ligne à 0 et laissent le niveau 1 aux résistances de tirage, et il fonctionne tout seul dans les deux sens ; aucune broche de direction n'indique quel côté parle.

  1. Les deux côtés au repos : la grille et la source du MOSFET sont toutes deux à 3,3 V, la tension entre elles est nulle et le MOSFET est bloqué. Chaque côté est tiré à HIGH par sa propre résistance : le côté LV à 3,3 V, le côté HV à 5 V.
  2. Le côté 3,3 V tire la ligne à LOW : la source descend à 0 V ; la grille restant à 3,3 V, la tension grille-source atteint 3,3 V et le MOSFET conduit. Le côté HV est tiré à LOW à travers le MOSFET.
  3. Le côté 5 V tire la ligne à LOW : la diode interne (body diode) du MOSFET conduit et abaisse la source vers 0,7 V. Dès que la tension grille-source atteint environ 2,6 V, le MOSFET conduit pleinement et le côté LV passe lui aussi entièrement à LOW.
Broche du moduleÀ relier àRemarque
LVBroche 3V3 de la carte 3,3 VAlimentation côté bas et tension de grille des MOSFET
HVSource 5 V (5V de l'Uno ou VIN de l'ESP32)Alimentation des tirages côté haut
GND (deux)GND des deux cartesMasse commune obligatoire
LV1–LV4Broches de l'ESP32 ou du PicoSignaux côté 3,3 V
HV1–HV4Broches du module 5 VChacune correspond à la broche LV de même numéro
La vitesse d'une carte BSS138 est fixée par ses résistances de tirage de 10 kΩ : elle gère sans peine l'I2C à 100 et 400 kHz et l'UART à 115200 bauds, mais ses fronts sont trop lents pour les données WS2812B à 800 kHz ou un SPI de plusieurs MHz. Les cartes 8 canaux à direction automatique comme le TXS0108E sont plus rapides sur les signaux push-pull ; elles fonctionnent aussi en I2C mais peuvent devenir instables avec de fortes résistances de tirage sur la ligne et de longs fils. Le TXB0108, de la même famille, ne convient pas du tout à l'I2C.

Exemple : relier un ESP32 à un LCD I2C 5 V

Les écrans LCD 16x2 à caractères n'offrent pas assez de contraste s'ils ne sont pas alimentés en 5 V, et le module I2C PCF8574 placé au dos tire SDA et SCL vers 5 V avec des résistances de 4,7 kΩ. De plus, le seuil VIH du PCF8574 vaut 0,7 × VCC, soit 3,5 V sous 5 V ; les 3,3 V de l'ESP32 restent en dessous. Placer un convertisseur BSS138 entre le LCD I2C et l'ESP32 protège donc les broches et fiabilise la communication. Le câblage est le suivant : 3V3 de l'ESP32 sur LV, VIN (5 V de l'USB) sur HV et sur le VCC du LCD, tous les GND reliés ; GPIO 21 sur LV1 et HV1 vers SDA du LCD ; GPIO 22 sur LV2 et HV2 vers SCL du LCD. Si le code de scan ci-dessous trouve l'écran (généralement à 0x27 ou 0x3F), le convertisseur fonctionne.

C++ (Arduino IDE)
1// ESP32 I2C tarayıcı: BSS138 dönüştürücü üzerinden 5 V'luk cihazları bul
2// ESP32 I2C scanner: find 5 V devices through a BSS138 converter
3// GPIO 21 -> LV1 / HV1 -> SDA ; GPIO 22 -> LV2 / HV2 -> SCL ; 3V3 -> LV ; VIN (5 V) -> HV
4#include <Wire.h>
5
6const int SDA_PIN = 21;
7const int SCL_PIN = 22;
8
9void setup() {
10  Serial.begin(115200);
11  Wire.begin(SDA_PIN, SCL_PIN);
12  Wire.setClock(100000);       // 100 kHz, BSS138 için rahat hız / comfortable speed for the BSS138
13}
14
15void loop() {
16  int found = 0;
17  for (byte addr = 1; addr < 127; addr++) {
18    Wire.beginTransmission(addr);
19    if (Wire.endTransmission() == 0) {      // 0 = ACK, cihaz var / device present
20      Serial.printf("Cihaz / Device: 0x%02X\n", addr);
21      found++;
22    }
23  }
24  if (found == 0) Serial.println("Cihaz yok / No device found");
25  Serial.println("---");
26  delay(3000);
27}

Circuits 74HCT : signaux rapides unidirectionnels

Quand le pont et le BSS138 sont trop lents, la solution professionnelle est un circuit tampon. La série 74HCT s'alimente en 5 V, mais ses entrées ont des seuils compatibles TTL (VIH = 2,0 V) : elle reconnaît donc sans peine le signal 3,3 V d'un ESP32 ou d'un Pico comme HIGH et délivre un vrai signal 5 V aux fronts nets. L'usage le plus courant est la ligne de données des rubans WS2812B : la broche de l'ESP32 va à l'entrée d'un 74AHCT125, dont la sortie rejoint le DIN du ruban via une résistance de 330 Ω ; la broche OE (validation) du 74AHCT125 est reliée à GND. Pour le sens inverse, ramener un signal 5 V rapide à 3,3 V, on utilise un 74LVC125 ou un 74LVC245 alimenté en 3,3 V ; leurs entrées supportent jusqu'à 5,5 V quelle que soit leur propre alimentation.

SolutionAlimentationSensCanauxUsage typique
74AHCT125 / 74HCT1255 V3,3 V → 5 V4Données WS2812B, SPI, MAX7219
74HCT2455 V3,3 V → 5 V8Bus de données parallèle, nombreuses sorties
74LVC125 / 74LVC2453,3 V5 V → 3,3 V4 / 8Sorties rapides de capteurs 5 V, modules carte SD
Module BSS1383,3 V et 5 VBidirectionnel4I2C, 1-Wire, UART lent
Pont diviseurAucune5 V → 3,3 V1RX d'UART, ECHO du HC-SR04, boutons

Quels modules fonctionnent directement en 3,3 V ?

Le tableau ci-dessous indique si les modules les plus utilisés dans les projets ESP32 et Pico peuvent se brancher sans convertisseur sur une carte 3,3 V. Les modules marqués « Oui » s'alimentent par la broche 3V3 et leurs broches de signal se relient directement. Attention toutefois : des modules vendus sous le même nom existent en plusieurs versions ; regarde si la carte porte un régulateur ou un convertisseur de niveau et, en cas de doute, mesure au multimètre la tension de la broche de signal, VCC sous tension.

ModuleDirect en 3,3 VRemarque
Module BME280 / BMP280OuiLa puce elle-même accepte 3,6 V au maximum ; alimente-la par 3V3
DHT11 / DHT22Oui3,3–5,5 V ; en 3,3 V, garde le câble court
DS18B20Oui3,0–5,5 V ; résistance de tirage de 4,7 kΩ vers 3,3 V
OLED 0,96" (SSD1306)OuiLe module a un régulateur ; l'alimenter en 3V3 garde aussi l'I2C en 3,3 V
MPU6050 (GY-521)OuiLes résistances de tirage du module vont à VCC ; alimente-le par 3V3
RFID RC522Oui, 3,3 V uniquementL'alimenter en 5 V détruit le module
nRF24L01Oui, 3,3 V uniquementAjoute un condensateur de 10–100 µF sur l'alimentation
HC-SR04NonAlimente-le en 5 V et divise ECHO ; la version 3,3 V est le HC-SR04P
LCD 16x2 I2C (PCF8574)En partieLe LCD veut du 5 V ; utilise un BSS138 pour SDA et SCL
Ruban LED WS2812BEn partieAlimenté en 5 V ; des données en 3,3 V sont limites, un 74AHCT125 est conseillé
Module relais 5 VEn partieSur les modules actifs à l'état bas, un HIGH de 3,3 V peut ne pas relâcher complètement le relais ; choisis un module à commande 3,3 V
Servo SG90Signal ouiAlimente le moteur en 5 V ; un signal PWM de 3,3 V suffit en général

Erreurs fréquentes et solutions

SymptômeCause probableSolution
Le convertisseur BSS138 ne fonctionne pas du toutLV et HV non alimentées ou inverséesApplique 3,3 V sur LV et 5 V sur HV ; relie les GND
La LED de l'ESP32 reste faiblement allumée sans USBUn signal 5 V alimente la carte par une brocheAjoute un pont ou un convertisseur sur cette ligne
Signal déformé ou arrondi après le pontRésistances trop grandes pour une ligne rapidePasse à 1 kΩ + 2 kΩ ou utilise un tampon 74LVC
La première LED d'un ruban WS2812B scintilleLes données 3,3 V sont sous le seuil VIH de 3,5 VConvertis en 5 V avec un 74AHCT125 et ajoute 330 Ω sur la ligne de données
L'I2C marche parfois et se bloque parfoisTirages vers 5 V et seuil VIH élevé sur le périphériqueUtilise un BSS138 et descends à 100 kHz
Le relais ne retombe jamaisLe module relais actif à l'état bas ne voit pas 3,3 V comme HIGHUtilise un module à commande 3,3 V ou un étage à transistor
Caractères UART corrompus à travers le convertisseurPas de masse communeRelie les GND des deux cartes
Avant de mettre sous tension un montage à tensions mixtes pour la première fois, mesure au multimètre chaque ligne de signal allant vers la carte 3,3 V, carte encore débranchée. Si aucune ne dépasse 3,6 V, tu peux brancher la carte sans risque. Cette habitude toute simple est le moyen le moins cher de sauver un ESP32.

La conversion de niveau logique paraît technique, mais elle se résume à trois règles : protège toujours une ligne qui va du 5 V vers le 3,3 V, vérifie le seuil VIH du récepteur sur une ligne qui va du 3,3 V vers le 5 V, et utilise un BSS138 sur les lignes bidirectionnelles comme l'I2C. Avec ces règles, tu peux réunir sans souci un Arduino, un ESP32 et un Pico dans le même projet. Dans l'application BlueGrays, chaque connexion des projets ESP32 et Raspberry Pi Pico est expliquée avec des broches adaptées au niveau logique de la carte et un schéma pas à pas.

Questions fréquentes

L'ESP32 tolère-t-il le 5 V ?

Non. La fiche technique de l'ESP32 limite les GPIO à l'alimentation + 0,3 V, soit environ 3,6 V. Sous 5 V, les diodes de protection de la broche conduisent, le courant part vers le rail 3,3 V et la broche peut lâcher avec le temps ou immédiatement. Le fait que cela semble fonctionner un moment ne le rend pas sûr.

Peut-on relier un Arduino et un ESP32 sans convertisseur de niveau ?

En partie. Les signaux 3,3 V qui vont de l'ESP32 vers l'Arduino franchissent généralement le seuil de 3,0 V de l'Uno et peuvent être reliés directement. En revanche, les signaux 5 V qui vont de l'Arduino vers l'ESP32 doivent toujours passer par un pont diviseur ou un convertisseur. Dans tous les cas, les GND des deux cartes doivent être reliés.

Quel convertisseur de niveau logique utiliser pour l'I2C ?

Les lignes I2C étant à drain ouvert, le meilleur choix est un convertisseur bidirectionnel à MOSFET BSS138, qui fonctionne sans souci à 100 et 400 kHz. Les puces conçues pour l'I2C comme le PCA9306 font le même travail. Un pont diviseur est inutilisable en I2C, car la ligne transporte des données dans les deux sens.

Un WS2812B fonctionne-t-il avec les données 3,3 V de l'ESP32 ?

Souvent oui, mais rien n'est garanti. Un WS2812B alimenté en 5 V attend au moins 3,5 V sur son entrée de données, et 3,3 V est sous ce seuil ; la première LED peut scintiller, surtout avec un long fil ou une alimentation au-dessus de 5 V. La solution fiable est un tampon comme le 74AHCT125 ou le 74HCT125 sur la ligne de données.

Faut-il un pont diviseur ou un module convertisseur de niveau ?

Pour abaisser de 5 V à 3,3 V un signal lent et unidirectionnel, comme le RX d'une UART ou l'ECHO du HC-SR04, deux résistances suffisent et c'est la solution la moins chère. Si la ligne est bidirectionnelle (I2C) ou s'il faut élever 3,3 V à 5 V, le pont ne sert à rien ; utilise un module BSS138 ou un tampon 74HCT. Pour les signaux très rapides, les circuits tampons sont le bon choix.

Que signifient HV et LV sur un convertisseur de niveau logique ?

HV (high voltage) désigne le côté haute tension, généralement relié au 5 V, et LV (low voltage) le côté basse tension, relié au 3,3 V. Les broches HV1–HV4 vont aux signaux de l'appareil 5 V, et les broches LV1–LV4 de même numéro aux broches de la carte 3,3 V. Les GND des deux côtés se rejoignent sur les broches GND du module.

Voir tous les projets
Clignotement LED avec ESP32
#103Débutant

Clignotement LED avec ESP32

Enseigne l'utilisation de base des sorties GPIO avec l'ESP32. Nous obtenons un effet de clignotement en allumant et éteignant une LED à partir de la broche numérique. Version ESP32 du projet blink classique sur Arduino UNO ; les commandes de base de blink dans l'environnement Arduino restent les mêmes, mais le brochage et les niveaux GPIO de 3,3 V de l'ESP32 diffèrent de ceux de l'Arduino UNO.

4.7(37)
100
ESP32 Contrôle de LED avec bouton poussoir (Push)
#104Débutant

ESP32 Contrôle de LED avec bouton poussoir (Push)

La LED s'allume lorsque le bouton est enfoncé et s'éteint lorsqu'il est relâché. Montre comment la broche d'entrée numérique de l'ESP32 et la résistance pull-up interne sont utilisées. Grâce au mode INPUT_PULLUP, aucune résistance externe n'est nécessaire.

4.6(36)
55
Mesure de l'intensité lumineuse avec le module LDR ESP32
#113Débutant

Mesure de l'intensité lumineuse avec le module LDR ESP32

Suivi en temps réel sur le moniteur série de la valeur brute de l'ADC du module LDR et du pourcentage relatif de luminosité calculé à partir de références dans l'obscurité et à la lumière. Ce pourcentage n'est pas une mesure en lux. Permet de comprendre le principe de calibrage du module. Il est préférable de réaliser cet exercice avant le projet 10, car il sert à déterminer la valeur seuil.

4.6(36)
55
Clignotement LED Intégrée Raspberry Pi Pico (Pico et Pico W)
#147Débutant

Clignotement LED Intégrée Raspberry Pi Pico (Pico et Pico W)

Le projet d'ouverture de la série Raspberry Pi Pico ! Nous faisons clignoter la LED verte intégrée pour vérifier que la carte fonctionne — une première expérience classique "Hello World". AUCUN composant externe, juste Pico et câble USB. Le code est écrit en MicroPython (le langage officiellement soutenu par la Raspberry Pi Foundation). Apprends la classe machine.Pin, le mode Pin.OUT, les méthodes led.on()/off() et time.sleep() dans Thonny IDE. Suis chaque basc

5.0(1)
10
Écran LCD I2C ESP32 (16x2)
#119Intermédiaire
Premium

Écran LCD I2C ESP32 (16x2)

Dans ce projet, nous affichons du texte en connectant un écran LCD 16x2 à l'ESP32 via le protocole I2C. Grâce à l'I2C, nous pouvons contrôler l'écran avec seulement 2 broches de données (SDA et SCL) ; cela évite le gaspillage de 6 broches ou plus inhérent à la connexion parallèle classique. Le code affiche un message fixe sur la première ligne et un compteur qui augmente chaque seconde sur la deuxième ligne. De plus, au démarrage, nous lançons un scanner I2C pour afficher l'adresse de l'écran su

4.9(23)
40
ESP32 HC-SR04 Télémètre à ultrasons
#116Intermédiaire

ESP32 HC-SR04 Télémètre à ultrasons

Le capteur à ultrasons HC-SR04 calcule la distance en mesurant le temps de vol (Time of Flight) de l'onde sonore qu'il émet lorsqu'elle rebondit sur un objet. Dans ce projet, nous enverrons une impulsion de 10 microsecondes depuis l'ESP32 vers la broche TRIG du capteur et nous lirons la durée de l'écho provenant de la broche ECHO à l'aide de la fonction pulseIn(). Nous afficherons la distance calculée en cm sur un écran LCD I2C 16x2. Le capteur HC-SR04 fonctionnant en 5 V, un diviseur de ten

4.9(28)
46
Contrôle d'une bande NeoPixel WS2812B avec l'ESP32
#126Intermédiaire
Premium

Contrôle d'une bande NeoPixel WS2812B avec l'ESP32

Les LED adressables WS2812B (NeoPixel) sont des LED RGB intelligentes pouvant être contrôlées en série via une seule broche de données. Dans ce projet, nous allons contrôler une bande WS2812B de 8 LED à l'aide de la bibliothèque Adafruit_NeoPixel afin de créer une animation fluide représentant un arc-en-ciel. Bien que le niveau logique 3,3 V de l'ESP32 fonctionne sans problème avec la plupart des composants WS2812B, nous présenterons une solution comprenant une résistance en série de 470 Ω et un

4.9(19)
30
Allumage d'une LED externe sur le Raspberry Pi Pico (plaque d'essai)
#148Débutant

Allumage d'une LED externe sur le Raspberry Pi Pico (plaque d'essai)

Après la LED intégrée du Pico : connecter une LED externe à la maquette et la contrôler via la broche GP14. Ce projet vous permet d’apprendre comment utiliser n’importe quelle broche GPIO à usage général du Pico en sortie, de comprendre la polarité de la LED (grande patte = anode/+, petite patte = cathode/–) et de découvrir pourquoi une résistance de limitation de courant (220 Ω) est indispensable. Si vous n'installez pas cette résistance, un courant excessif traversera la LED et celle-ci risque

4.5(2)
7