# Wi-Fi Cafe: Локальное оповещение через IEEE 802.11 Beacon-кадры на ESP32 > Научно-исследовательский проект Бабчука Георгия Владимировича (2026). Система односторонней передачи данных в системное меню сетей Wi-Fi смартфона без подключения к точке доступа и без установки приложений (Zero-App). - DOI: [10.5281/zenodo.22865566](https://doi.org/10.5281/zenodo.22865566) - Автор: Бабчук Георгий Владимирович (ГУО «Гимназия г. Иваново», 11 «А» класс) - ORCID: [0009-0000-2505-2841](https://orcid.org/0009-0000-2505-2841) - Исходный код: [https://github.com/egraich/wifi-cafe](https://github.com/egraich/wifi-cafe) - Видеодемонстрация: [https://youtu.be/sZdIltr857k](https://youtu.be/sZdIltr857k) - Полная версия статьи и технической документации: [/llms-full.txt](/llms-full.txt) ## Краткое содержание работы (Abstract) Традиционные системы очередей (аппаратные пейджеры, QR-коды с веб-страницами) создают барьеры: требуют сотового интернета, закупки специализированного оборудования и открытия браузера на прикладном уровне (L7 OSI). В исследовании предложен переход на канальный уровень (L2 OSI). Микроконтроллер ESP32 генерирует сырые управляющие кадры-маяки стандарта IEEE 802.11 (Beacon frames), циклически транслируя статус готовности заказов прямо в поле SSID (например, `Alex: 40%`, `Заказ #7: 100%`). Гость видит свой заказ прямо в штатном системном меню Wi-Fi своего смартфона без подключения к сети и без расхода интернет-трафика. ## Ключевое научное открытие: Android vs iOS Гипотеза об универсальности отображения подтверждена частично из-за принципиальных различий сетевых стеков мобильных ОС: 1. **Google Android — Пассивное сканирование (Passive Scanning)**: - Радиомодуль смартфона переключается по каналам и слушает радиоэфир. - Приняв Beacon-кадр, ОС считывает поле SSID (Tag 0) и сразу выводит сеть в системный список. - Работает на 100% «из коробки», не требует обратной связи. 2. **Apple iOS (iPhone) — Активное сканирование (Active Scanning) с антиспуфингом**: - iOS отправляет широковещательные запросы `Probe Request` и строго ожидает ответа `Probe Response` от точки доступа. - Поскольку ESP32 осуществлял только одностороннюю инъекцию Beacon и не имел конечного автомата (State Machine) для обработки входящих запросов, iOS отфильтровывает такие сети как неподтвержденные. - Решение: реализация State Machine на микроконтроллере для генерации ответных кадров `Probe Response`. ## Аппаратно-программная архитектура - **Микроконтроллер**: Espressif ESP32 (Single RF Transceiver, 2.4 GHz). - **Режим работы**: Двойной интерфейс `WIFI_AP_STA`: - `STA (Station)`: подключение к Wi-Fi роутеру заведения, опрос Telegram Bot API по технологии Long Polling (`FastBot`). Бариста управляет заказами кнопками `/new`, `+20%`, `-20%`, `Delete`. - `SoftAP`: циклическая инъекция сырых 802.11 Beacon кадров через функцию `esp_wifi_80211_tx` каждые 100 мс. - **Обход аппаратного лимита одного SSID**: - Для каждого заказа программно генерируется уникальный локальный MAC-адрес (байт `0x02` + 5 случайных байт). - Смартфон воспринимает каждый заказ как отдельную точку доступа. - **Синхронизация радиоканала**: - Из-за единого радиомодуля интерфейсы STA и SoftAP зафиксированы на одном и том же канале (Channel 7 / 2442 MHz) для исключения частотных скачков (radio hopping) и падений watchdog. ## Структура кадра 802.11 Beacon - **Размер заголовка MAC**: 36 байт (Frame Control `0x8000`, Duration, Broadcast DA `FF:FF:FF:FF:FF:FF`, SA Virtual MAC, BSSID, Sequence Control, Timestamp 8B, Beacon Interval 100 TU / ~102.4 ms, Capability Info `0x0104`). - **Tag 0 (SSID)**: ID `0x00`, длина, полезная нагрузка. Ограничена 32 байтами (IEEE 802.11). - **Tag 1 (Supported Rates)**: 1, 2, 5.5, 11, 18, 24, 36, 54 Mbps. - **Tag 3 (DS Parameter Set)**: Номер рабочего радиоканала (1 байт). ## Экспериментальные метрики - **Интервал рассылки маяков**: 100 мс (10 пакетов/сек на заказ). - **Задержка сквозного обновления (End-to-End Latency)**: 150–250 мс от нажатия кнопки в Telegram до смены SSID в эфире. - **Дальность радиоприема в помещении**: 35–50 метров со штатной PCB-антенной ESP32. - **Расход оперативной памяти**: ~48 байт на один заказ в структуре `std::vector`. - **Энергопотребление и автономность**: ~150–180 мА (5V), свыше 36 часов непрерывной работы от стандартного аккумулятора 10 000 мА·ч. ## Дорожная карта развития (Future Work) 1. **State Machine для Probe Response**: полная поддержка Apple iOS. 2. **Энергонезависимая память (NVM)**: сохранение активной очереди во flash-память (`LittleFS` / `Preferences`) для защиты от внезапного обесточивания. 3. **Captive Portal**: локальная HTML-страница при нажатии на готовую сеть `Alex: 100%` с приглашением подойти к кассе. 4. **Offline Web Server**: резервный локальный веб-интерфейс на `192.168.4.1` для фестивалей без интернета и Telegram. 5. **Миграция на FastBot2**: оптимизация взаимодействия с Telegram API через постоянное соединение HTTP Keep-Alive. ## Библиографическая ссылка (ГОСТ 7.0.5) Бабчук, Г. В. Разработка системы локального оповещения «Wi-Fi Cafe» посредством программной генерации 802.11 Beacon-кадров на базе микроконтроллера ESP32 // ГУО «Гимназия г. Иваново», 2026. DOI: 10.5281/zenodo.22865566. ## BibTeX ```bibtex @misc{babchuk2026wificafe, author = {Babchuk, Heorhi}, title = {Wi-Fi Cafe: Zero-App Queue Management via 802.11 Beacon Frames on ESP32}, year = {2026}, publisher = {Zenodo}, doi = {10.5281/zenodo.22865566}, url = {https://github.com/egraich/wifi-cafe} } ```