🏷️ Terminal Bramy RFID (ESP32 + Home Assistant)
Inteligentny terminal RFID do sterowania bramą z wykorzystaniem ESP32, RC522, OLED SSD1306 oraz Home Assistant.
🚀 Szybki start
Konfiguracja
W pliku secrets.yaml zdefiniuj:
wifi_ssidwifi_passwordapi_encryption_keyota_password
Pomocnik Utwórz w Home Assistant encję: input_text.terminal_status
Instalacja
- Skompiluj projekt w ESPHome
- Wgraj na ESP32
- System automatycznie obniży taktowanie do 80 MHz (oszczędzanie energii)
Tagi
- Zeskanuj kartę
- W Home Assistant → Tagi
- Nazwij tag zaczynając od: Legitymacja Np Legitymacja Jan Kowalski
🏗️ Architektura systemu
System działa w modelu Klient–Serwer.
Warstwa sprzętowa
- ESP32
- RFID RC522 (SPI)
- OLED SSD1306 (I2C)
Warstwa logiczna
- Home Assistant weryfikuje tag
- Komunikacja przez Native API (AES-128)
Optymalizacja
- Lokalny fallback wyświetlania
- Underclocking 80 MHz
- Light Sleep WiFi
💻 Wymagania sprzętowe
| Element | Model |
|---|---|
| Mikrokontroler | ESP32 DevKit V1 |
| RFID | RC522 13.56 MHz |
| Wyświetlacz | OLED SSD1306 128x64 |
| Zasilanie | 18650 3.7V lub 5V DC |
| Pasywa | 2× Rezystor 220Ω, Przekaźnik 5V |
🔌 Pinout
| Moduł | Pin | ESP32 GPIO | Opis |
|---|---|---|---|
| RC522 | VCC | 3.3V | ⚠ NIE 5V |
| RC522 | RST | GPIO 4 | Reset |
| RC522 | GND | GND | Masa |
| RC522 | MISO | GPIO 19 | SPI |
| RC522 | MOSI | GPIO 23 | SPI |
| RC522 | SCK | GPIO 18 | SPI |
| RC522 | SDA | GPIO 5 | SPI CS |
| OLED | SDA | GPIO 21 | I2C |
| OLED | SCL | GPIO 22 | I2C |
| Przekaźnik | IN | GPIO 13 | Sterowanie |
| LED Zielona | + | GPIO 12 | 220Ω |
| LED Czerwona | + | GPIO 14 | 220Ω |
📝 Kod ESPHome (czytnik-brama.yaml)
esphome:
name: terminal-brama
platformio_options:
board_build.f_cpu: 80000000L
esp32:
board: esp32dev
framework:
type: arduino
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
power_save_mode: LIGHT
fast_connect: true
api:
reboot_timeout: 0s
encryption:
key: !secret api_encryption_key
ota:
- platform: esphome
password: !secret ota_password
logger:
level: INFO
i2c:
sda: 21
scl: 22
spi:
clk_pin: 18
mosi_pin: 23
miso_pin: 19
rc522_spi:
cs_pin: 5
reset_pin: 4
update_interval: 500ms
on_tag:
then:
- homeassistant.tag_scanned: !lambda 'return x;'
switch:
- platform: gpio
pin: 13
id: przekaznik_bramy
restore_mode: ALWAYS_OFF
🤖Automatyzacja Home Assistant (automations.yaml)
alias: "Terminal Bramy - Obsługa"
trigger:
- platform: event
event_type: tag_scanned
action:
- variables:
v_nazwa: "{{ trigger.event.data.name }}"
- choose:
- conditions:
- condition: template
value_template: "{{ v_nazwa is not none and 'Legitymacja' in v_nazwa }}"
sequence:
- action: input_text.set_value
target:
entity_id: input_text.terminal_status
data:
value: "{{ v_nazwa | replace('Legitymacja ', '') | trim }}"
- action: switch.turn_on
target:
entity_id: switch.terminal_brama_przekaznik_bramy
- conditions:
- condition: template
value_template: "{{ v_nazwa is none or 'Legitymacja' not in v_nazwa }}"
sequence:
- action: input_text.set_value
target:
entity_id: input_text.terminal_status
data:
value: "Brak Uprawnień"
mode: restart
🔒 Bezpieczeństwo
🔐 Szyfrowanie AES-128 (Native API)
📴 Fail-safe (brama domyślnie zamknięta)
🌐 Zalecane HTTPS dla zdalnego HA
📄 Licencja
Projekt udostępniony na licencji MIT. Możesz używać w projektach prywatnych i komercyjnych.
Description
System kontroli dostępu do bramy uczelnianej oparty na Elektronicznej Legitymacji Studenckiej (ELS). Projekt wykorzystuje technologię RFID, mikrokontroler ESP32 oraz zdalną bazę danych do weryfikacji uprawnień w czasie rzeczywistym.