Цей документ описує підключення компонентів до ESP32 для проекту BFU ACCESS CONTROL.
- Вимикайте живлення перед зміною проводів.
- Усі модулі мають мати спільний GND.
- OLED SSD1306 та PN532 працюють на одному I2C bus.
- LED обовʼязково підключайте через резистори 220 Ом.
- Для ESP32 використовуйте логіку 3.3V.
- ESP32 плата
- OLED SSD1306 I2C 128x64
- PN532 NFC/RFID модуль I2C
- 4x4 keypad
- червоний LED
- синій LED
- зелений LED
- 3 резистори 220 Ом для LED
- PWM buzzer
- дроти Dupont
- breadboard або монтажна плата
- USB кабель
| Лінія | ESP32 GPIO |
|---|---|
| SDA | GPIO21 |
| SCL | GPIO22 |
OLED та PN532 підключені паралельно до тих самих SDA/SCL. Це нормально для I2C, якщо пристрої мають різні адреси.
| OLED SSD1306 | ESP32 |
|---|---|
| SDA | GPIO21 |
| SCL | GPIO22 |
| VCC | 3.3V |
| GND | GND |
Типова адреса OLED: 0x3C.
| PN532 | ESP32 |
|---|---|
| SDA | GPIO21 |
| SCL | GPIO22 |
| VCC | 3.3V |
| GND | GND |
I2C address у коді: 0x24.
Перевірте, що PN532 переведений саме у I2C mode. На різних модулях це робиться DIP-перемикачами або перемичками.
| LED | ESP32 | Резистор |
|---|---|---|
| Red LED | GPIO5 | 220 Ом |
| Blue LED | GPIO18 | 220 Ом |
| Green LED | GPIO19 | 220 Ом |
Схема для кожного LED:
GPIO ESP32 → резистор 220 Ом → анод LED → катод LED → GND
Резистор обмежує струм через LED. Якщо підключити LED напряму без резистора:
- LED може згоріти;
- GPIO ESP32 може бути пошкоджений;
- плата може працювати нестабільно або перезавантажуватися.
У цьому проекті:
- червоний LED → 220 Ом;
- синій LED → 220 Ом;
- зелений LED → 220 Ом.
| Buzzer | ESP32 |
|---|---|
| Signal | GPIO23 |
| GND | GND |
Рекомендовано використовувати passive/PWM buzzer. У коді сигнал створюється через PWM(Pin(23)).
| Keypad Row | ESP32 |
|---|---|
| R1 | GPIO32 |
| R2 | GPIO33 |
| R3 | GPIO25 |
| R4 | GPIO26 |
| Keypad Column | ESP32 |
|---|---|
| C1 | GPIO27 |
| C2 | GPIO14 |
| C3 | GPIO13 |
| C4 | GPIO4 |
Карта кнопок:
1 2 3 A
4 5 6 B
7 8 9 C
* 0 # D
У проекті:
0-9— введення PIN;#— очистити PIN;*— підтвердити PIN;A— підтвердити IP-екран після старту.
| Пристрій | Контакт | ESP32 |
|---|---|---|
| OLED SSD1306 | SDA | GPIO21 |
| OLED SSD1306 | SCL | GPIO22 |
| OLED SSD1306 | VCC | 3.3V |
| OLED SSD1306 | GND | GND |
| PN532 | SDA | GPIO21 |
| PN532 | SCL | GPIO22 |
| PN532 | VCC | 3.3V |
| PN532 | GND | GND |
| Red LED | Signal | GPIO5 через 220 Ом |
| Blue LED | Signal | GPIO18 через 220 Ом |
| Green LED | Signal | GPIO19 через 220 Ом |
| Buzzer | Signal | GPIO23 |
| Buzzer | GND | GND |
| Keypad | R1 | GPIO32 |
| Keypad | R2 | GPIO33 |
| Keypad | R3 | GPIO25 |
| Keypad | R4 | GPIO26 |
| Keypad | C1 | GPIO27 |
| Keypad | C2 | GPIO14 |
| Keypad | C3 | GPIO13 |
| Keypad | C4 | GPIO4 |
У Thonny REPL виконайте:
from machine import Pin, I2C
i2c = I2C(0, scl=Pin(22), sda=Pin(21), freq=100000)
print([hex(x) for x in i2c.scan()])Очікуваний результат:
['0x24', '0x3c']
Якщо бачите тільки один пристрій — перевірте дроти другого пристрою, живлення та GND.