Вебсервер на чипі від вейпа: хостинг із 3 КБ оперативної пам’яті
Ідея
Інженер Богдан Іонеску (BogdanTheGeek) створив повноцінний вебсервер на базі мікроконтролера, який він витягнув із одноразового вейпа. Так, того самого - з ринку електронних сигарет. Це не просто технічний жарт, а реально діючий проект, який демонструє межі можливого у світі мікроелектроніки.
Що всередині вейпа?
Серцем вейпа виявився мікроконтролер PUYA PY32C642 на базі ядра ARM Cortex-M0+ із наступними характеристиками:
- 24 КБ флеш-пам’яті
- 3 КБ оперативної пам’яті
- 24 МГц частота ядра
- Відсутність підтримки Wi-Fi чи Ethernet
Незважаючи на це, пристрій підтримує semihosting - спосіб, за допомогою якого мікроконтролер може «спілкуватися» з комп’ютером через USB-налагоджувач. Саме це стало «вікном у мережу».
Як вейп вийшов в Інтернет?
Щоб підключити цей чип до мережі, автор використав SLIP (Serial Line Internet Protocol) — старий мережевий протокол, який дозволяє передавати IP-пакети через послідовний порт. Linux (а з невеликим налаштуванням — і macOS) підтримують SLIP. Через pyOCD
та socat
створено віртуальний серійний порт, який забезпечує підключення до TCP/IP-стека.
Для самого вебсервера використано uIP — легкий IP-стек з прикладом мікроскопічного HTTP-сервера.
Оптимізація - швидкість
Початкові результати були жахливими:
- Ping - 1,5 секунди
- 50% пакетів губились
- Сторінка вантажилась понад 20 секунд
Але після оптимізації:
- Введено буфер обміну та пакетну передачу даних
- Зменшено навантаження на semihosting
- Ping - 20 мс
- Сторінка - 160 мс
Використано лише ~45% ОЗП і ~21% флеш-пам’яті.
Що можна розмістити?
Звісно, про розміщення React чи WordPress тут не йдеться. Проте:
- 20 КБ пам’яті вистачає для статичних сторінок, наприклад, особистого блогу
- Вебсервер також має JSON API - можна отримати унікальний ID мікроконтролера або кількість запитів з моменту останнього перезавантаження
Цей вейп не просто сервер, а ще й міні-хостинг для geek-проектів.
Відкритий код
Богдан виклав проект на GitHub - будь-хто може повторити досвід, адаптувати код чи використати його для навчання. Це чудовий приклад, як із мінімальних ресурсів можна створити повноцінну, хоч і крихітну, систему.
Висновок
- Мікроконтролер із вейпа перетворився на діючий вебсервер
- Без Wi-Fi, без Ethernet - лише через USB та старі протоколи
- Мінімум заліза - максимум уяви
Хочеш побачити, як це виглядає? Автор запустив сайт прямо на вейпі (посилання доступне через Web Archive, бо проєкт часто перевантажений запитами).