Conversor de nível lógico: conecte dispositivos de 3,3 V e 5 V com segurança
O que é um conversor de nível lógico? Por que os pinos do ESP32 e do Pico não toleram 5 V, limiares VIH/VIL, divisores de tensão, BSS138 para I2C, chips 74HCT e uma tabela de módulos.
Um conversor de nível lógico é um pequeno circuito que permite que uma placa que opera com 3,3 V (ESP32, Raspberry Pi Pico, ESP8266) se comunique com segurança com uma placa ou módulo que opera com 5 V (Arduino Uno, LCD I2C, HC-SR04, WS2812B). Conectar uma saída de 5 V diretamente a um pino de 3,3 V pode danificar o pino aos poucos ou instantaneamente; no sentido contrário, um sinal de 3,3 V às vezes nem é reconhecido como “1” por uma entrada de 5 V. Saber quando você precisa de um conversor e qual é suficiente elimina as falhas misteriosas de metade dos projetos que combinam tensões diferentes.
Neste artigo, você vai primeiro entender o que significam os limiares VIH e VIL e por que os pinos do ESP32 e do Pico não toleram 5 V. Depois, veremos três soluções com exemplos: conversão unidirecional com um divisor de tensão de dois resistores, um conversor bidirecional com MOSFET BSS138 para I2C e chips 74HCT para sinais rápidos, como WS2812B ou SPI. No final, há uma tabela com os módulos que funcionam diretamente com 3,3 V e uma lista de erros comuns.

O que são níveis lógicos de 3,3 V e 5 V?
Um pino digital só conhece 0 e 1, mas, no mundo real, a tensão pode ter qualquer valor entre 0 e a tensão de alimentação. Por isso, o datasheet de cada chip apresenta quatro limiares. VIH (entrada em HIGH) é a menor tensão que a entrada garante reconhecer como 1. VIL (entrada em LOW) é a maior tensão que ela garante reconhecer como 0. A região entre esses valores é indefinida: o chip pode ler 0 ou 1 nela. No lado da saída, VOH é a menor tensão que o pino garante ao fornecer HIGH, e VOL é a maior tensão que ele garante ao fornecer LOW. Para que dois chips se comuniquem de forma confiável, o VOH do transmissor deve ficar com uma margem segura acima do VIH do receptor, e o VOL do transmissor com uma margem segura abaixo do VIL do receptor. Você pode ver como as portas tomam decisões com esses limiares no artigo sobre portas lógicas e experimentá-las na ferramenta Portas lógicas.
| Chip (alimentação) | VIL (máx.) | VIH (mín.) | VOL (máx.) | VOH (mín.) | Máximo absoluto do pino |
|---|---|---|---|---|---|
| ATmega328P, Arduino Uno (5 V) | 1,5 V (0,3 × VCC) | 3,0 V (0,6 × VCC) | 0,9 V | 4,2 V | 5,5 V |
| ESP32 (3,3 V) | 0,83 V (0,25 × VDD) | 2,48 V (0,75 × VDD) | 0,33 V | 2,64 V | 3,6 V |
| RP2040, Raspberry Pi Pico (3,3 V) | 0,8 V | 2,0 V | 0,5 V | Cerca de 2,6 V | 3,8 V |
| Série 74HC (5 V) | 1,5 V | 3,5 V | 0,1 V | 4,4 V | 5,5 V |
| Série 74HCT (5 V) | 0,8 V | 2,0 V | 0,1 V | 4,4 V | 5,5 V |
A tabela permite tirar três conclusões importantes. Primeiro, a saída HIGH de um Uno de 5 V (4,2–5 V) ultrapassa claramente o limite de 3,6 V do ESP32 e de 3,8 V do Pico, então a conversão nesse sentido é obrigatória. Segundo, a saída HIGH de 3,3 V do ESP32 normalmente supera o limiar VIH de 3,0 V do Uno, mas o menor VOH garantido pelo datasheet é de 2,64 V; por isso, a conexão costuma funcionar, mas fica no limite à medida que o fio fica mais longo ou que a carga no pino aumenta. Terceiro, um chip 74HC alimentado com 5 V, um expansor I2C com limiar de 0,7 × VCC, como o PCF8574, ou um LED WS2812B não reconhece de forma confiável como HIGH um valor abaixo de 3,5 V; para esses chips, um sinal de 3,3 V realmente não basta. A série 74HCT tem VIH de 2,0 V, por isso é uma das formas mais simples e confiáveis de converter 3,3 V em 5 V.
Por que os pinos do ESP32 e do Pico não toleram 5 V?
Cada pino de entrada de um chip de 3,3 V tem pequenos diodos de proteção que conectam o pino à linha de 3,3 V e ao GND. Eles foram projetados para absorver pulsos muito curtos, como descargas estáticas, e não corrente contínua. Quando você aplica 5 V ao pino, o diodo superior conduz e a corrente flui da fonte de 5 V para a linha de 3,3 V. Se a resistência interna da fonte for baixa, essa corrente chega a dezenas de miliampères e destrói o diodo e os circuitos ao redor do pino por aquecimento. Se a corrente for menor, o pino não para de funcionar imediatamente, mas o chip se degrada com o tempo, e a tensão da linha de 3,3 V pode até subir, fazendo a placa começar a se alimentar pelo pino: você desconecta o cabo de alimentação e o LED do ESP32 continua aceso com brilho fraco. O datasheet do ESP32 especifica um limite para o pino de alimentação + 0,3 V (cerca de 3,6 V), e o do RP2040, de alimentação + 0,5 V (cerca de 3,8 V). “Testei uma vez e não queimou” não significa que o pino tolera 5 V.
O que você precisa em cada caso?
| Caso | Exemplo | Solução |
|---|---|---|
| Saída de 5 V → entrada de 3,3 V | Uno TX → ESP32 RX, HC-SR04 ECHO → Pico | Divisor de tensão (sinais lentos) ou buffer 74LVC (sinais rápidos) |
| Saída de 3,3 V → entrada de 5 V (VIH em torno de 3 V) | ESP32 TX → Uno RX | Geralmente funciona diretamente; use um 74HCT para garantir as margens |
| Saída de 3,3 V → entrada de 5 V (VIH de 3,5 V) | ESP32 → WS2812B, um chip 74HC de 5 V | Um buffer como o 74HCT125 / 74AHCT125 |
| Linha bidirecional de dreno aberto | I2C (SDA, SCL), 1-Wire | Conversor com MOSFET BSS138 |
| Linha bidirecional rápida do tipo push-pull | Barramento de dados paralelo | 74LVC245 com pino de direção ou TXS0108E |
Conversão unidirecional com divisor de tensão (5 V → 3,3 V)
A forma mais simples de levar uma saída de 5 V a uma entrada de 3,3 V usa dois resistores. O sinal entra pelo resistor superior R1, o ponto intermediário vai ao pino de 3,3 V e o resistor inferior R2 vai ao GND. A saída é Vout = 5 V × R2 / (R1 + R2); usar R2 com o dobro do valor de R1 reduz 5 V para 3,33 V. Um divisor só funciona em um sentido: da tensão mais alta para a mais baixa, então não pode ser usado em linhas bidirecionais nas quais o lado de 3,3 V precisa responder. Sua velocidade também é limitada, porque a resistência de saída do divisor forma um pequeno filtro RC com a capacitância do pino e arredonda as bordas do sinal. Use a calculadora de divisor de tensão para escolher os valores e veja a explicação completa no artigo sobre divisor de tensão.
| R1 (lado do sinal) | R2 (lado do GND) | Saída com 5 V | Resistência de saída | Indicado para |
|---|---|---|---|---|
| 1 kΩ | 2 kΩ (dois de 1 kΩ em série) | 3,33 V | 667 Ω | A maioria das aplicações, incluindo sinais rápidos; consome 1,7 mA em HIGH |
| 2,2 kΩ | 3,3 kΩ | 3,00 V | 1,3 kΩ | Margem mais segura; UART, HC-SR04 ECHO |
| 10 kΩ | 20 kΩ | 3,33 V | 6,7 kΩ | Baixa corrente; UART até 115200 baud e sinais lentos |
| 4,7 kΩ | 10 kΩ | 3,40 V | 3,2 kΩ | No limite; se a linha de 5 V subir para 5,25 V, a saída será de 3,57 V; não recomendado |
Exemplo: UART entre um Arduino Uno e um ESP32
Em projetos nos quais o Uno lê os sensores e o ESP32 envia os dados à internet por Wi-Fi, as duas placas se comunicam por UART. Como a linha TX do Uno fornece 5 V, ela se conecta ao pino RX do ESP32 por um divisor de 1 kΩ + 2 kΩ. A linha TX de 3,3 V do ESP32 pode ir diretamente ao pino RX do Uno, pois o Uno reconhece qualquer valor acima de 3,0 V como HIGH. Para deixar a porta serial USB do Uno (D0, D1) livre para o computador, o lado do Uno usa SoftwareSerial em D10 e D11; no ESP32, a segunda porta serial de hardware, Serial2, usa GPIO 16 (RX) e 17 (TX). Os GNDs das duas placas devem ser conectados entre si.
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}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}Antes de carregar o código, meça o ponto intermediário do divisor com um multímetro: com o Uno ligado e sem enviar nada, você deve medir cerca de 3,3 V, porque uma linha UART fica em HIGH quando está ociosa. Se o Monitor Serial do Uno mostrar uma linha como “ESP32: OK 6” a cada segundo, a comunicação está funcionando nos dois sentidos. A 9600 baud, um bit dura 104 µs, enquanto o atraso introduzido pelo divisor de 1 kΩ + 2 kΩ está na faixa dos nanossegundos, então a velocidade não é motivo de preocupação.
Exemplo: conectar um HC-SR04 a um Raspberry Pi Pico

O HC-SR04 só funciona de forma confiável com 5 V. Se você alimenta o Pico por USB, conecte o VCC do sensor ao pino VBUS do Pico (pino 40). A entrada TRIG reconhece o pulso de 3,3 V do Pico sem problemas, então vai diretamente ao GP15. ECHO, porém, retorna um pulso de 5 V; conecte um resistor de 1 kΩ entre ECHO e GP14 e um resistor de 2 kΩ entre GP14 e GND. O código mede a duração do pulso ECHO em microssegundos com time_pulse_us e a converte em distância usando a velocidade do som no ar (cerca de 343 m/s).
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)O conversor de nível bidirecional BSS138
A maioria das pequenas placas vendidas como “conversores de nível lógico de 4 canais” tem um MOSFET de canal N BSS138 e dois resistores de pull-up de 10 kΩ por canal. O circuito é extremamente simples: o gate do MOSFET está ligado a 3,3 V (LV), seu terminal fonte vai ao lado de baixa tensão e seu dreno ao lado de alta tensão. O resistor de pull-up de cada lado eleva a linha até a tensão de alimentação daquele lado. Essa configuração foi projetada para linhas de dreno aberto, como I2C, que apenas levam a linha a 0 e deixam o nível 1 a cargo dos resistores de pull-up, e funciona nos dois sentidos automaticamente; não há um pino de direção indicando qual lado está transmitindo.
- Os dois lados ociosos: O gate e o terminal fonte do MOSFET estão ambos em 3,3 V, a tensão entre eles é zero e o MOSFET está desligado. Cada lado é levado a HIGH pelo próprio resistor: o lado LV a 3,3 V e o lado HV a 5 V.
- O lado de 3,3 V leva a linha a LOW: O terminal fonte cai para 0 V; como o gate permanece em 3,3 V, a tensão entre gate e fonte passa a ser de 3,3 V e o MOSFET liga. O lado HV é levado a LOW pelo MOSFET.
- O lado de 5 V leva a linha a LOW: O diodo de corpo dentro do MOSFET conduz e reduz a tensão do terminal fonte para cerca de 0,7 V. Quando a tensão entre gate e fonte chega a cerca de 2,6 V, o MOSFET liga completamente e o lado LV também vai totalmente a LOW.
| Pino do módulo | Conectar a | Observação |
|---|---|---|
| LV | Pino 3V3 da placa de 3,3 V | Alimentação do lado de baixa tensão e tensão de gate dos MOSFETs |
| HV | Fonte de 5 V (5V do Uno ou VIN do ESP32) | Alimentação dos resistores de pull-up do lado de alta tensão |
| GND (dois) | GND das duas placas | É necessário um GND comum |
| LV1–LV4 | Pinos do ESP32 ou do Pico | Sinais do lado de 3,3 V |
| HV1–HV4 | Pinos do módulo de 5 V | Cada um corresponde ao pino LV de mesmo número |
Exemplo: conectar um ESP32 a um LCD I2C de 5 V
Os LCDs de 16x2 caracteres não oferecem contraste suficiente se não forem alimentados com 5 V, e o módulo adaptador I2C PCF8574 na parte traseira eleva SDA e SCL a 5 V com resistores de 4,7 kΩ. Além disso, o limiar VIH do PCF8574 é de 0,7 × VCC, ou seja, 3,5 V com alimentação de 5 V; os 3,3 V do ESP32 ficam abaixo desse valor. Por isso, usar um conversor BSS138 entre o LCD I2C e o ESP32 protege os pinos e torna a comunicação confiável. Faça as conexões assim: pino 3V3 do ESP32 em LV, pino VIN (5 V do USB) em HV e no VCC do LCD, todos os GNDs juntos; GPIO 21 em LV1 e HV1 no SDA do LCD; GPIO 22 em LV2 e HV2 no SCL do LCD. Se o código do scanner abaixo encontrar o LCD (normalmente em 0x27 ou 0x3F), o conversor está funcionando.
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}Chips 74HCT: sinais rápidos em um só sentido
Quando um divisor ou um BSS138 é lento demais, a solução profissional é um chip buffer. A série 74HCT opera com 5 V, mas seu limiar de entrada é compatível com TTL (VIH = 2,0 V), então reconhece facilmente o sinal de 3,3 V de um ESP32 ou Pico como HIGH e fornece um sinal completo de 5 V com bordas bem definidas. O uso mais comum é a linha de dados de fitas WS2812B: o pino do ESP32 vai à entrada de um 74AHCT125, e sua saída passa por um resistor de 330 Ω até o DIN da fita; o pino OE (habilitação) do 74AHCT125 é ligado ao GND. Para o sentido contrário, reduzindo um sinal rápido de 5 V para 3,3 V, você usa um 74LVC125 ou 74LVC245 alimentado com 3,3 V; as entradas desses chips toleram até 5,5 V, independentemente da própria alimentação.
| Solução | Alimentação | Direção | Canais | Aplicação típica |
|---|---|---|---|---|
| 74AHCT125 / 74HCT125 | 5 V | 3,3 V → 5 V | 4 | Dados do WS2812B, SPI, MAX7219 |
| 74HCT245 | 5 V | 3,3 V → 5 V | 8 | Barramento de dados paralelo, muitas saídas |
| 74LVC125 / 74LVC245 | 3,3 V | 5 V → 3,3 V | 4 / 8 | Saídas rápidas de sensores de 5 V, módulos de cartão SD |
| Módulo BSS138 | 3,3 V e 5 V | Bidirecional | 4 | I2C, 1-Wire, UART lenta |
| Divisor de tensão | Nenhuma | 5 V → 3,3 V | 1 | UART RX, HC-SR04 ECHO, botões |
Quais módulos funcionam diretamente com 3,3 V?
A tabela abaixo resume se os módulos mais usados em projetos com ESP32 e Pico podem ser conectados a uma placa de 3,3 V sem conversor. Você pode alimentar os módulos marcados com “Sim” pelo pino 3V3 e conectar seus pinos de sinal diretamente. Ainda assim, módulos vendidos com o mesmo nome podem ter versões diferentes; verifique se a placa tem regulador ou conversor de nível e, em caso de dúvida, meça a tensão no pino de sinal com um multímetro enquanto o VCC estiver alimentado.
| Módulo | Direto em 3,3 V | Observação |
|---|---|---|
| Módulo BME280 / BMP280 | Sim | O chip em si aceita no máximo 3,6 V; alimente-o pelo 3V3 |
| DHT11 / DHT22 | Sim | 3,3–5,5 V; mantenha o cabo curto com 3,3 V |
| DS18B20 | Sim | 3,0–5,5 V; pull-up de 4,7 kΩ para 3,3 V |
| OLED de 0,96 polegada (SSD1306) | Sim | O módulo tem regulador; alimentá-lo pelo 3V3 mantém o I2C em 3,3 V também |
| MPU6050 (GY-521) | Sim | Os resistores de pull-up do módulo vão ao VCC; alimente-o pelo 3V3 |
| RC522 RFID | Sim, apenas 3,3 V | Alimentá-lo com 5 V destrói o módulo |
| nRF24L01 | Sim, apenas 3,3 V | Adicione um capacitor de 10–100 µF à alimentação |
| HC-SR04 | Não | Alimente-o com 5 V e reduza ECHO com um divisor; a versão de 3,3 V é o HC-SR04P |
| LCD I2C 16x2 (PCF8574) | Parcialmente | O LCD precisa de 5 V; use um BSS138 para SDA e SCL |
| Fita LED WS2812B | Parcialmente | Alimentada com 5 V; dados de 3,3 V ficam no limite, recomenda-se um 74AHCT125 |
| Módulo relé de 5 V | Parcialmente | Em módulos ativos em LOW, um HIGH de 3,3 V pode não desativar completamente o relé; escolha um módulo com acionamento de 3,3 V |
| Servo SG90 | Sinal, sim | Alimente o motor com 5 V; um sinal PWM de 3,3 V costuma ser suficiente |
Erros comuns e como corrigi-los
| Sintoma | Causa provável | Correção |
|---|---|---|
| O conversor BSS138 não funciona | Alimentações LV e HV desconectadas ou invertidas | Alimente LV com 3,3 V e HV com 5 V; una os GNDs |
| O LED do ESP32 fica aceso com brilho fraco mesmo com o USB desconectado | Um sinal de 5 V está alimentando a placa por um pino | Adicione um divisor ou conversor nessa linha |
| O sinal fica distorcido ou arredondado após o divisor | Resistores com valores altos demais para uma linha rápida | Reduza para 1 kΩ + 2 kΩ ou use um buffer 74LVC |
| O primeiro LED de uma fita WS2812B pisca irregularmente | Os dados de 3,3 V ficam abaixo do limiar VIH de 3,5 V | Converta para 5 V com um 74AHCT125 e adicione 330 Ω à linha de dados |
| O I2C funciona às vezes e trava em outras | Pull-ups para 5 V e limiar VIH alto no dispositivo | Use um BSS138 e reduza a velocidade para 100 kHz |
| O relé nunca desativa | O módulo relé ativo em LOW não reconhece 3,3 V como HIGH | Use um módulo com acionamento de 3,3 V ou um driver com transistor |
| Os caracteres UART ficam ilegíveis ao passar pelo conversor | Falta de GND comum | Conecte os GNDs das duas placas |
A conversão de nível lógico pode parecer técnica, mas se resume a três regras: sempre proteja uma linha que vai de 5 V para 3,3 V, verifique o limiar VIH do receptor em uma linha que vai de 3,3 V para 5 V e use um BSS138 em linhas bidirecionais, como I2C. Com essas regras, você pode combinar tranquilamente um Arduino, um ESP32 e um Pico no mesmo projeto. No app BlueGrays, cada conexão dos projetos com ESP32 e Raspberry Pi Pico é explicada com pinos compatíveis com o nível lógico da placa e um diagrama de fiação passo a passo.
Perguntas frequentes
O ESP32 tolera 5 V?
Não. O datasheet do ESP32 estabelece um máximo de alimentação + 0,3 V, cerca de 3,6 V, para os pinos GPIO. Ao aplicar 5 V, os diodos de proteção do pino conduzem, a corrente flui para a linha de 3,3 V e o pino pode falhar com o tempo ou imediatamente. O fato de parecer funcionar por um tempo não torna isso seguro.
Posso conectar um Arduino a um ESP32 sem conversor de nível?
Parcialmente. Os sinais de 3,3 V que vão do ESP32 para o Arduino normalmente superam o limiar de 3,0 V do Uno, então podem ser conectados diretamente. Os sinais de 5 V que vão do Arduino para o ESP32, porém, devem passar por um divisor de tensão ou conversor. Em todos os casos, os GNDs das duas placas devem ser unidos.
Qual conversor de nível lógico devo usar para I2C?
Como as linhas I2C são de dreno aberto, um conversor bidirecional com MOSFET BSS138 é a melhor escolha; ele funciona sem problemas a 100 e 400 kHz. Chips projetados para I2C, como o PCA9306, fazem o mesmo trabalho. Um divisor de tensão não pode ser usado no I2C, porque a linha transmite dados nos dois sentidos.
Um WS2812B funciona com os dados de 3,3 V do ESP32?
Muitas vezes sim, mas não é garantido. Um WS2812B alimentado com 5 V espera pelo menos 3,5 V na entrada de dados, e 3,3 V fica abaixo desse limiar; o primeiro LED pode piscar irregularmente, principalmente com um fio mais longo ou quando a alimentação ultrapassa 5 V. A solução confiável é um buffer como o 74AHCT125 ou 74HCT125 na linha de dados.
Devo usar um divisor de tensão ou um módulo conversor de nível?
Se você está reduzindo um sinal lento e unidirecional de 5 V para 3,3 V, como UART RX ou HC-SR04 ECHO, dois resistores bastam e são a solução mais barata. Se a linha for bidirecional (I2C) ou você precisar elevar 3,3 V para 5 V, um divisor não resolve; use um módulo BSS138 ou um buffer 74HCT. Para sinais muito rápidos, chips buffer são a escolha certa.
O que significam HV e LV em um conversor de nível lógico?
HV (high voltage, alta tensão) é o lado de alta tensão e normalmente se conecta a 5 V, enquanto LV (low voltage, baixa tensão) é o lado de baixa tensão e se conecta a 3,3 V. Os pinos HV1–HV4 vão aos sinais do dispositivo de 5 V, e os pinos LV1–LV4 correspondentes vão aos pinos da placa de 3,3 V. Os GNDs dos dois lados são unidos nos pinos GND do módulo.
Projetos para montar depois desta leitura
Ver todos os projetos
LED piscando com ESP32
Ensina o uso básico de uma saída GPIO no ESP32. Fazemos um LED piscar ligando e desligando um pino digital. É a versão para ESP32 do clássico projeto blink do Arduino UNO: os comandos básicos de blink no ambiente Arduino são os mesmos, mas a disposição dos pinos e os níveis de 3,3 V dos GPIOs do ESP32 diferem dos do Arduino UNO.

Controle de LED com botão no ESP32 (momentâneo)
O LED acende enquanto o botão está pressionado e apaga ao soltá-lo. Mostra como usar o pino de entrada digital e o resistor pull-up interno do ESP32. O modo INPUT_PULLUP dispensa um resistor externo.

Leitura da intensidade da luz com módulo LDR e ESP32
Acompanhe em tempo real no Monitor Serial o valor bruto do ADC do módulo LDR e a porcentagem relativa de luz calculada a partir de referências de escuridão e claridade. Essa porcentagem não é uma medida em lux. O projeto ensina a lógica de calibração do módulo. É ideal fazê-lo antes do projeto 10, pois ajuda a determinar o valor do limiar.

Piscar o LED integrado do Raspberry Pi Pico (Pico e Pico W)
O primeiro projeto da série Raspberry Pi Pico! Fazemos o LED verde integrado piscar para verificar se a placa funciona — um primeiro experimento no estilo clássico "Hello World". SEM componentes externos, apenas o Pico e um cabo USB. O código foi escrito em MicroPython (a linguagem com suporte oficial da Raspberry Pi Foundation). Aprenda a usar a classe machine.Pin, o modo Pin.OUT, os métodos led.on()/off() e time.sleep() no Thonny IDE.

Display LCD I2C com ESP32 (16x2)
Neste projeto, exibimos texto conectando um display LCD de 16x2 caracteres ao ESP32 pelo protocolo I2C. Com o I2C, controlamos o display usando apenas dois pinos de dados (SDA e SCL), dispensando o uso de seis ou mais pinos da conexão paralela tradicional. O código mostra uma mensagem fixa na primeira linha e um contador que aumenta a cada segundo na segunda linha. Na inicialização, também executamos um scanner I2C para mostrar o endereço do display no Monitor Serial (geralmente 0x27 ou 0x3F).

Medidor ultrassônico de distância HC-SR04 com ESP32
O sensor ultrassônico HC-SR04 calcula a distância medindo o tempo que a onda sonora emitida leva para atingir um objeto e retornar (tempo de voo). Neste projeto, enviaremos um pulso de 10 microssegundos do ESP32 ao pino TRIG do sensor e leremos a duração do eco no pino ECHO com pulseIn(). Exibiremos a distância calculada em centímetros em um LCD I2C 16x2. Como o HC-SR04 opera a 5V, é preciso usar um divisor de tensão no pino ECHO; caso contrário, o GPIO de 3,3V do ESP32 será danificado.

Controle de fita WS2812B NeoPixel com ESP32
Os LEDs endereçáveis WS2812B (NeoPixel) são LEDs RGB inteligentes que podem ser controlados em cadeia por um único pino de dados. Neste projeto, vamos controlar uma fita WS2812B de 8 LEDs com a biblioteca Adafruit_NeoPixel para criar uma animação suave de arco-íris. Embora o nível lógico de 3,3V do ESP32 funcione sem problemas na maioria dos lotes de WS2812B, vamos mostrar uma solução com um resistor de 470Ω em série e um capacitor de 1.000µF para casos de instabilidade.

Raspberry Pi Pico: controle de LED externo (protoboard)
O próximo passo após o LED integrado do Pico: conectar um LED externo à protoboard e controlá-lo pelo pino GP14. Neste projeto, você aprende a usar qualquer pino GPIO de uso geral do Pico como saída, a polaridade do LED (terminal longo = ânodo/+, terminal curto = cátodo/–) e por que um resistor limitador de corrente (220Ω) é necessário. Sem o resistor, uma corrente excessiva passa pelo LED e pode queimá-lo. O circuito é muito simples: Pico GP14 → resistor de 220Ω → LE
Mais artigos
- Divisor de tensão: fórmula, escolha dos resistores e exemplos com Arduino
- O que é I2C? SDA, SCL, resistores de pull-up e um scanner com Arduino
- O que é UART? Guia de ligação TX/RX, baud rate e comunicação serial com Arduino
- O que é ESP32? Características, configuração na Arduino IDE e seu primeiro projeto com Wi-Fi
App BlueGrays
Monte este circuito passo a passo pelo celular
Esquema do circuito, código e lista de componentes em uma só tela. Mais de 200 projetos com Arduino, ESP32 e Pico prontos para montar.
Escaneie com seu celular
Aponte a câmera para o código para abrir a loja de aplicativos do seu celular.
ou abrir a loja

