Преобразователь логических уровней: безопасное соединение устройств на 3,3 V и 5 V
Что такое преобразователь логических уровней? Почему пины ESP32 и Pico не выдерживают 5 V, пороги VIH/VIL, делители напряжения, BSS138 для I2C, микросхемы 74HCT и таблица модулей.
Преобразователь логических уровней — небольшая схема, которая позволяет плате на 3,3 V (ESP32, Raspberry Pi Pico, ESP8266) безопасно обмениваться данными с платой или модулем на 5 V (Arduino Uno, I2C LCD, HC-SR04, WS2812B). Прямое соединение выхода 5 V с пином на 3,3 V может повредить пин постепенно или мгновенно; в обратном направлении вход на 5 V иногда даже не распознаёт сигнал 3,3 V как «1». Понимание того, когда нужен преобразователь и какой подойдёт, устраняет загадочные сбои в половине проектов с разными напряжениями.
В этой статье ты сначала узнаешь, что означают пороги VIH и VIL и почему пины ESP32 и Pico не выдерживают 5 V. Затем мы рассмотрим три решения с примерами: однонаправленное преобразование делителем из двух резисторов, двунаправленный преобразователь на MOSFET BSS138 для I2C и микросхемы 74HCT для быстрых сигналов, например WS2812B или SPI. В конце есть таблица модулей, которые работают напрямую при 3,3 V, и список частых ошибок.

Что такое логические уровни 3,3 V и 5 V?
Цифровой пин знает только 0 и 1, но в реальности напряжение может быть любым от 0 до напряжения питания. Поэтому в даташите каждой микросхемы указаны четыре пороговых значения. VIH (входной HIGH) — минимальное напряжение, которое вход гарантированно распознаёт как 1. VIL (входной LOW) — максимальное напряжение, гарантированно распознаваемое как 0. Область между ними неопределённая: микросхема может считать её как 0 или как 1. Для выхода VOH — минимальное напряжение, которое пин гарантирует при выдаче HIGH, а VOL — максимальное напряжение, которое он гарантирует при выдаче LOW. Для надёжного обмена между двумя микросхемами VOH передатчика должен с запасом превышать VIH приёмника, а VOL передатчика — быть с запасом ниже VIL приёмника. Как элементы принимают решения по этим порогам, можно узнать в статье логические элементы и проверить в утилите логических элементов.
| Микросхема (питание) | VIL (макс.) | VIH (мин.) | VOL (макс.) | VOH (мин.) | Предельно допустимое напряжение пина |
|---|---|---|---|---|---|
| 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 | Около 2,6 V | 3,8 V |
| Серия 74HC (5 V) | 1,5 V | 3,5 V | 0,1 V | 4,4 V | 5,5 V |
| Серия 74HCT (5 V) | 0,8 V | 2,0 V | 0,1 V | 4,4 V | 5,5 V |
Из таблицы следуют три важных вывода. Во-первых, выходной HIGH платы Uno с питанием 5 V (4,2–5 V) явно превышает предел 3,6 V для ESP32 и 3,8 V для Pico, поэтому в этом направлении преобразование обязательно. Во-вторых, выходной HIGH 3,3 V платы ESP32 обычно превышает порог VIH 3,0 V платы Uno, но минимальное гарантированное даташитом VOH составляет 2,64 V; поэтому соединение часто работает, однако при удлинении провода или нагрузке на пин оказывается на грани. В-третьих, микросхема 74HC с питанием 5 V, расширитель I2C с порогом 0,7 × VCC, например PCF8574, или светодиод WS2812B не будут надёжно распознавать напряжение ниже 3,5 V как HIGH; для них сигнала 3,3 V действительно недостаточно. У серии 74HCT порог VIH равен 2,0 V, поэтому она представляет собой один из самых удобных способов преобразовать 3,3 V в 5 V.
Почему пины ESP32 и Pico не выдерживают 5 V?
У каждого входного пина микросхемы на 3,3 V есть небольшие защитные диоды, соединяющие его с шиной 3,3 V и GND. Они рассчитаны на поглощение очень коротких импульсов, например статического разряда, а не постоянного тока. Когда на пин подаётся 5 V, верхний диод открывается и ток течёт от источника 5 V в шину 3,3 V. Если внутреннее сопротивление источника мало, ток достигает десятков миллиампер и нагревом разрушает диод и цепи вокруг пина. При меньшем токе пин не выходит из строя сразу, но микросхема со временем деградирует, а напряжение шины 3,3 V может даже повыситься настолько, что плата начнёт питаться через пин: ты отключаешь кабель питания, а светодиод ESP32 продолжает тускло светиться. В даташите ESP32 предел для пина равен напряжению питания + 0,3 V (около 3,6 V), а у RP2040 — напряжению питания + 0,5 V (около 3,8 V). «Один раз получилось и ничего не сломалось» не означает, что пин допускает 5 V.
Что нужно в каждом случае?
| Ситуация | Пример | Решение |
|---|---|---|
| Выход 5 V → вход 3,3 V | Uno TX → ESP32 RX, HC-SR04 ECHO → Pico | Делитель напряжения (медленные сигналы) или буфер 74LVC (быстрые сигналы) |
| Выход 3,3 V → вход 5 V (VIH около 3 V) | ESP32 TX → Uno RX | Часто работает напрямую; для гарантированного запаса — 74HCT |
| Выход 3,3 V → вход 5 V (VIH 3,5 V) | ESP32 → WS2812B, микросхема 74HC на 5 V | Буфер, например 74HCT125 / 74AHCT125 |
| Двунаправленная линия с открытым стоком | I2C (SDA, SCL), 1-Wire | Преобразователь на MOSFET BSS138 |
| Быстрая двунаправленная двухтактная линия | Параллельная шина данных | 74LVC245 с выводом направления или TXS0108E |
Однонаправленное преобразование делителем напряжения (5 V → 3,3 V)
Самый простой способ подключить выход 5 V ко входу 3,3 V — два резистора. Сигнал поступает через верхний резистор R1, средняя точка соединяется с пином на 3,3 V, а нижний резистор R2 — с GND. Выходное напряжение Vout = 5 V × R2 / (R1 + R2); если R2 вдвое больше R1, напряжение 5 V снижается до 3,33 V. Делитель работает только в одном направлении: от более высокого напряжения к более низкому, поэтому не подходит для двунаправленных линий, где сторона 3,3 V должна отвечать. Скорость тоже ограничена: выходное сопротивление делителя вместе с ёмкостью пина образует небольшой RC-фильтр и скругляет фронты сигнала. Подбирай номиналы в калькуляторе делителя напряжения, а подробное объяснение смотри в статье делитель напряжения.
| R1 (со стороны сигнала) | R2 (со стороны GND) | Выход при 5 V | Выходное сопротивление | Для чего подходит |
|---|---|---|---|---|
| 1 kΩ | 2 kΩ (два по 1 kΩ последовательно) | 3,33 V | 667 Ω | Большинство задач, включая быстрые сигналы; потребляет 1,7 mA при HIGH |
| 2,2 kΩ | 3,3 kΩ | 3,00 V | 1,3 kΩ | Самый безопасный запас; UART, HC-SR04 ECHO |
| 10 kΩ | 20 kΩ | 3,33 V | 6,7 kΩ | Малый ток; UART до 115200 бод и медленные сигналы |
| 4,7 kΩ | 10 kΩ | 3,40 V | 3,2 kΩ | На грани; при росте шины 5 V до 5,25 V выдаёт 3,57 V, не рекомендуется |
Пример: UART между Arduino Uno и ESP32
В проектах, где Uno считывает датчики, а ESP32 передаёт данные в интернет по Wi-Fi, платы обмениваются данными через UART. Поскольку линия TX платы Uno выдаёт 5 V, она подключается к пину RX платы ESP32 через делитель 1 kΩ + 2 kΩ. Линию TX 3,3 V платы ESP32 можно соединить напрямую с пином RX платы Uno, поскольку Uno воспринимает всё выше 3,0 V как HIGH. Чтобы оставить последовательный порт USB платы Uno (D0, D1) свободным для компьютера, на Uno используется SoftwareSerial на D10 и D11; на ESP32 второй аппаратный последовательный порт Serial2 работает на GPIO 16 (RX) и 17 (TX). GND обеих плат обязательно нужно соединить.
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}Перед загрузкой измерь напряжение в средней точке делителя мультиметром: когда Uno включена, но ничего не передаёт, должно быть около 3,3 V, поскольку линия UART в состоянии покоя имеет уровень HIGH. Если в мониторе порта Uno каждую секунду появляется строка вроде «ESP32: OK 6», обмен работает в обоих направлениях. На скорости 9600 бод один бит длится 104 мкс, а задержка, вносимая делителем 1 kΩ + 2 kΩ, измеряется наносекундами, поэтому о скорости можно не беспокоиться.
Пример: подключение HC-SR04 к Raspberry Pi Pico

HC-SR04 надёжно работает только от 5 V. Если Pico питается от USB, подключи VCC датчика к пину VBUS платы Pico (пин 40). Вход TRIG без проблем распознаёт импульс 3,3 V от Pico, поэтому его можно соединить напрямую с GP15. Однако ECHO возвращает импульс 5 V: резистор 1 kΩ ставится между ECHO и GP14, а резистор 2 kΩ — между GP14 и GND. Код измеряет длительность импульса ECHO в микросекундах с помощью time_pulse_us и переводит её в расстояние, используя скорость звука в воздухе (около 343 м/с).
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)Двунаправленный преобразователь уровней BSS138
На большинстве небольших плат, продающихся как «4-канальные преобразователи логических уровней», каждый канал содержит один N-канальный MOSFET (МОП-транзистор) BSS138 и два подтягивающих резистора по 10 kΩ. Схема предельно проста: затвор MOSFET подключён к 3,3 V (LV), исток — к стороне низкого напряжения, а сток — к стороне высокого напряжения. Подтягивающий резистор каждой стороны подтягивает линию к её напряжению питания. Эта схема предназначена для линий с открытым стоком, таких как I2C, которые только притягивают линию к 0, а формирование уровня 1 оставляют подтягивающим резисторам. Она автоматически работает в обе стороны; пин направления, указывающий, какая сторона передаёт, не нужен.
- Обе стороны в покое: на затворе и истоке MOSFET по 3,3 V, напряжение между ними равно нулю, и MOSFET закрыт. Каждая сторона подтянута своим резистором к HIGH: сторона LV — к 3,3 V, сторона HV — к 5 V.
- Сторона 3,3 V притягивает линию к LOW: напряжение истока падает до 0 V; поскольку на затворе остаётся 3,3 V, напряжение затвор–исток становится равным 3,3 V, и MOSFET открывается. Через MOSFET сторона HV притягивается к LOW.
- Сторона 5 V притягивает линию к LOW: встроенный диод MOSFET открывается и снижает напряжение истока примерно до 0,7 V. Когда напряжение затвор–исток достигает примерно 2,6 V, MOSFET полностью открывается, и на стороне LV тоже устанавливается полноценный LOW.
| Пин модуля | Куда подключать | Примечание |
|---|---|---|
| LV | Пин 3V3 платы на 3,3 V | Питание стороны низкого напряжения и напряжение затворов MOSFET |
| HV | Источник 5 V (5V платы Uno или VIN платы ESP32) | Питание подтяжки стороны высокого напряжения |
| GND (два) | GND обеих плат | Общая земля обязательна |
| LV1–LV4 | Пины ESP32 или Pico | Сигналы стороны 3,3 V |
| HV1–HV4 | Пины модуля на 5 V | Каждому соответствует пин LV с тем же номером |
Пример: подключение ESP32 к I2C LCD на 5 V
Символьные LCD 16x2 не дают достаточной контрастности без питания 5 V, а расположенный сзади адаптер I2C на PCF8574 подтягивает SDA и SCL к 5 V резисторами 4,7 kΩ. Кроме того, порог VIH у PCF8574 равен 0,7 × VCC, то есть 3,5 V при питании 5 V; напряжение 3,3 V от ESP32 ниже этого порога. Поэтому преобразователь BSS138 между LCD с I2C и ESP32 одновременно защищает пины и обеспечивает надёжный обмен. Подключи так: пин 3V3 платы ESP32 к LV, её пин VIN (5 V от USB) к HV и VCC дисплея, все GND вместе; GPIO 21 к LV1, а HV1 к SDA дисплея; GPIO 22 к LV2, а HV2 к SCL дисплея. Если приведённый ниже код сканера находит LCD (обычно по адресу 0x27 или 0x3F), преобразователь работает.
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}Микросхемы 74HCT: быстрые однонаправленные сигналы
Когда делитель или BSS138 слишком медленны, профессиональное решение — буферная микросхема. Серия 74HCT работает от 5 V, но её входной порог совместим с TTL (VIH = 2,0 V), поэтому она легко распознаёт сигнал 3,3 V от ESP32 или Pico как HIGH и выдаёт полноценный сигнал 5 V с крутыми фронтами. Чаще всего её используют на линии данных лент WS2812B: пин ESP32 подключается ко входу 74AHCT125, а её выход через резистор 330 Ω — к DIN ленты; вывод OE (разрешение) микросхемы 74AHCT125 соединяется с GND. Для обратного направления, то есть понижения быстрого сигнала 5 V до 3,3 V, используют 74LVC125 или 74LVC245 с питанием 3,3 V; входы этих микросхем допускают до 5,5 V независимо от собственного питания.
| Решение | Питание | Направление | Каналы | Типичное применение |
|---|---|---|---|---|
| 74AHCT125 / 74HCT125 | 5 V | 3,3 V → 5 V | 4 | Данные WS2812B, SPI, MAX7219 |
| 74HCT245 | 5 V | 3,3 V → 5 V | 8 | Параллельная шина данных, много выходов |
| 74LVC125 / 74LVC245 | 3,3 V | 5 V → 3,3 V | 4 / 8 | Быстрые выходы датчиков 5 V, модули SD-карт |
| Модуль BSS138 | 3,3 V и 5 V | Двунаправленное | 4 | I2C, 1-Wire, медленный UART |
| Делитель напряжения | Не требуется | 5 V → 3,3 V | 1 | UART RX, HC-SR04 ECHO, кнопки |
Какие модули работают напрямую при 3,3 V?
В таблице ниже показано, можно ли подключать наиболее распространённые модули для проектов ESP32 и Pico к плате на 3,3 V без преобразователя. Модули с отметкой «Да» можно питать от пина 3V3 и подключать их сигнальные пины напрямую. Но под одним названием могут продаваться разные версии модуля; проверь, есть ли на плате стабилизатор или преобразователь уровней, а если остаются сомнения, измерь напряжение на сигнальном пине мультиметром при поданном VCC.
| Модуль | Напрямую при 3,3 V | Примечание |
|---|---|---|
| Модуль BME280 / BMP280 | Да | Сама микросхема допускает максимум 3,6 V; питай её от 3V3 |
| DHT11 / DHT22 | Да | 3,3–5,5 V; при 3,3 V используй короткий кабель |
| DS18B20 | Да | 3,0–5,5 V; подтяжка 4,7 kΩ к 3,3 V |
| OLED 0,96″ (SSD1306) | Да | На модуле есть стабилизатор; питание от 3V3 сохраняет на I2C тоже 3,3 V |
| MPU6050 (GY-521) | Да | Подтягивающие резисторы модуля подключены к VCC; питай его от 3V3 |
| RC522 RFID | Да, только 3,3 V | Питание от 5 V разрушает модуль |
| nRF24L01 | Да, только 3,3 V | Добавь конденсатор 10–100 µF по питанию |
| HC-SR04 | Нет | Питай от 5 V и понижай ECHO делителем; версия на 3,3 V — HC-SR04P |
| LCD 16x2 с I2C (PCF8574) | Частично | LCD нужно 5 V; используй BSS138 для SDA и SCL |
| Светодиодная лента WS2812B | Частично | Питание 5 V; данные 3,3 V на грани, рекомендуется 74AHCT125 |
| Модуль реле на 5 V | Частично | На модулях с активным LOW уровень HIGH 3,3 V может не полностью отпускать реле; выбирай модуль с управлением от 3,3 V |
| Сервопривод SG90 | Сигнал — да | Питай мотор от 5 V; сигнала ШИМ (PWM) 3,3 V обычно достаточно |
Частые ошибки и их исправление
| Симптом | Вероятная причина | Исправление |
|---|---|---|
| Преобразователь BSS138 совсем не работает | Питание LV и HV не подключено или перепутано | Подай 3,3 V на LV и 5 V на HV; соедини GND |
| Светодиод ESP32 тускло светится при отключённом USB | Сигнал 5 V питает плату через пин | Добавь делитель или преобразователь на эту линию |
| После делителя сигнал искажён или его фронты скруглены | Сопротивления слишком велики для быстрой линии | Уменьши номиналы до 1 kΩ + 2 kΩ или используй буфер 74LVC |
| Первый светодиод ленты WS2812B мерцает | Данные 3,3 V ниже порога VIH 3,5 V | Преобразуй сигнал в 5 V через 74AHCT125 и добавь 330 Ω на линию данных |
| I2C то работает, то зависает | Подтяжка к 5 V и высокий порог VIH устройства | Используй BSS138 и снизь частоту до 100 kHz |
| Реле не отпускает | Модуль реле с активным LOW не распознаёт 3,3 V как HIGH | Используй модуль с управлением от 3,3 V или транзисторный драйвер |
| Символы UART искажаются при передаче через преобразователь | Нет общей GND | Соедини GND обеих плат |
Преобразование логических уровней может звучать сложно, но сводится к трём правилам: всегда защищай линию, идущую от 5 V к 3,3 V, проверяй порог VIH приёмника на линии от 3,3 V к 5 V и используй BSS138 на двунаправленных линиях, таких как I2C. С этими правилами ты можешь уверенно объединять Arduino, ESP32 и Pico в одном проекте. В приложении BlueGrays каждое соединение в проектах с ESP32 и Raspberry Pi Pico объясняется с указанием пинов, соответствующих логическому уровню платы, и пошаговой схемой подключения.
Частые вопросы
Допускает ли ESP32 напряжение 5 V на пинах?
Нет. Даташит ESP32 задаёт для пинов GPIO максимум, равный напряжению питания + 0,3 V, то есть около 3,6 V. При подаче 5 V защитные диоды пина открываются, ток течёт в шину 3,3 V, и пин может выйти из строя со временем или сразу. То, что он какое-то время работает, не делает такое подключение безопасным.
Можно ли соединить Arduino с ESP32 без преобразователя уровней?
Частично. Сигналы 3,3 V от ESP32 к Arduino обычно превышают порог Uno 3,0 V, поэтому их можно подключать напрямую. Но сигналы 5 V от Arduino к ESP32 обязательно должны проходить через делитель напряжения или преобразователь. В любом случае GND обеих плат нужно соединить.
Какой преобразователь логических уровней выбрать для I2C?
Поскольку линии I2C имеют открытый сток, лучший выбор — двунаправленный преобразователь на MOSFET BSS138; он без проблем работает на 100 и 400 kHz. Микросхемы для I2C, например PCA9306, решают ту же задачу. Делитель напряжения для I2C не подходит, потому что линия передаёт данные в обоих направлениях.
Работает ли WS2812B с данными 3,3 V от ESP32?
Часто да, но это не гарантировано. WS2812B с питанием 5 V ожидает на входе данных не менее 3,5 V, а 3,3 V ниже этого порога; первый светодиод может мерцать, особенно при длинном проводе или повышении питания выше 5 V. Надёжное решение — буфер вроде 74AHCT125 или 74HCT125 на линии данных.
Что использовать: делитель напряжения или модуль преобразователя уровней?
Если нужно понизить медленный однонаправленный сигнал с 5 V до 3,3 V, например UART RX или HC-SR04 ECHO, достаточно двух резисторов — это самое дешёвое решение. Если линия двунаправленная (I2C) или нужно повысить 3,3 V до 5 V, делитель не поможет; используй модуль BSS138 или буфер 74HCT. Для очень быстрых сигналов подходят буферные микросхемы.
Что означают HV и LV на преобразователе логических уровней?
HV (high voltage) — сторона высокого напряжения, обычно подключаемая к 5 V, а LV (low voltage) — сторона низкого напряжения, подключаемая к 3,3 V. Пины HV1–HV4 соединяются с сигналами устройства на 5 V, а соответствующие LV1–LV4 — с пинами платы на 3,3 V. Земля обеих сторон объединяется на пинах GND модуля.
Что собрать после прочтения
Все проекты
Мигающий светодиод на ESP32
Учит базовой работе с выходами GPIO на ESP32. Эффект мигания получается включением и выключением светодиода с цифрового пина. Это ESP32-версия классического проекта мигания на Arduino UNO; базовые команды мигания в среде Arduino те же, но расположение пинов ESP32 и уровни GPIO 3,3 V отличаются от Arduino UNO.

Управление светодиодом кнопкой на ESP32 (удержание)
Светодиод горит, когда кнопка нажата, и гаснет, когда её отпускают. Показывает, как используются цифровой входной пин ESP32 и встроенный подтягивающий резистор. Режим INPUT_PULLUP избавляет от внешнего резистора.

Измерение освещённости модулем LDR на ESP32
Наблюдение в мониторе порта в реальном времени за сырым значением ADC модуля LDR и относительным процентом освещённости, вычисленным по опорным значениям темноты и света. Этот процент — не измерение в люксах. Учит логике калибровки модуля. Идеально выполнить его перед проектом 10, потому что он нужен для определения порога.

Мигание встроенным светодиодом Raspberry Pi Pico (Pico и Pico W)
Первый проект серии Raspberry Pi Pico! Мигаем зелёным встроенным светодиодом, чтобы проверить, что плата работает, — классический первый опыт «Hello World». НИКАКИХ внешних компонентов, только Pico и USB-кабель. Код написан на MicroPython (официальном языке, поддерживаемом Raspberry Pi Foundation). Изучи в Thonny IDE класс machine.Pin, режим Pin.OUT, методы led.on()/off() и time.sleep(). Каждое переключение видно в выводе (REPL).

I2C LCD-дисплей (16x2) на ESP32
В этом проекте символьный LCD-экран 16x2 подключается к ESP32 по протоколу I2C и выводит текст. Благодаря I2C экраном можно управлять всего двумя пинами данных (SDA и SCL), не тратя 6+ пинов, как при классическом параллельном подключении. Код печатает постоянное сообщение в первой строке и счётчик, растущий каждую секунду, во второй. Кроме того, при запуске работает сканер I2C, который выводит адрес дисплея в монитор порта.

Ультразвуковой датчик расстояния HC-SR04 на ESP32
Ультразвуковой датчик HC-SR04 вычисляет расстояние по времени, за которое испущенная им звуковая волна отражается от предмета и возвращается (Time of Flight). В этом проекте ESP32 подаёт импульс 10 микросекунд на пин TRIG датчика, а длительность эха читает с пина ECHO через pulseIn(). Вычисленное расстояние в сантиметрах выводится на I2C LCD 16x2. HC-SR04 работает от 5V, поэтому на пине ECHO нужен делитель напряжения.

Управление лентой WS2812B NeoPixel на ESP32
Адресуемые светодиоды WS2812B (NeoPixel) — умные RGB-светодиоды, которыми управляют цепочкой через один пин данных. В этом проекте лента WS2812B из 8 светодиодов управляется библиотекой Adafruit_NeoPixel и показывает плавную радужную анимацию. Логика 3,3V у ESP32 работает с большинством WS2812B, но на случай нестабильности показано решение с последовательным резистором 470Ω и конденсатором 1000µF. Анимация получается сдвигом значения оттенка.

Raspberry Pi Pico: управление внешним светодиодом (макетная плата)
Следующий шаг после встроенного светодиода Pico: подключить внешний светодиод на макетной плате и управлять им через пин GP14. В этом проекте ты узнаешь, как использовать любой пин GPIO общего назначения у Pico как выход, какая полярность у светодиода (длинная ножка = анод/+, короткая = катод/–) и зачем нужен токоограничивающий резистор (220Ω). Без резистора через светодиод пойдёт слишком большой ток, и он может сгореть. Схема очень простая: Pico GP14 → резистор 220Ω → светодиод → GND.
Другие статьи
Приложение BlueGrays
Собери эту схему шаг за шагом в телефоне
Схема подключения, код и список деталей на одном экране. 200+ проектов на Arduino, ESP32 и Pico готовы к сборке.
Наведи камеру телефона
Наведи камеру на код — откроется магазин приложений на телефоне.
или открыть магазин

