Инженер создал «невероятно быстрый» веб-сервер на базе одноразовой электронной сигареты
Инженер и мастер оригами Богдан Йонеску, также известный как BogdanTheGeek, создал веб-сервер, работающий на одноразовой электронной сигарете. Вдохновлённый своей растущей коллекцией таких устройств и предыдущей работой по реализации semihosting на любом Arm-процессоре с помощью «нескольких строк кода», Богдан осенила идея разместить «веб-сервер на вейпе», так появился VapeServer.
Одноразовые электронные сигареты могут содержать удивительное количество вычислительной мощности и компонентов. Богдан несколько лет собирал выброшенные устройства для «будущих проектов», планируя повторно использовать аккумуляторы. Однако недавно он обнаружил более «продвинутые» модели с более современными интегральными схемами и микроконтроллерами. Они содержали не просто печатные платы с неизвестными «каплевидными чипами». Он нашёл устройства с более совершенными микроконтроллерами.
Богдан сообщает, что в одной из таких продвинутых моделей он обнаружил микросхему с маркировкой «PUYA C642F15». Это побудило его провести исследование, и инженер определил, что на самом деле это был PY32F002B со следующими характеристиками:
- 24-мегагерцовое ядро Arm Cortex-M0+
- 24 КБ флеш-памяти
- 3 КБ оперативной памяти SRAM
Это не выдающиеся характеристики, и, по оценке нашего героя, они «примерно в 100 раз медленнее», чем 10-летний мобильный телефон. Однако для веб-сервера Богдан подумал, что бывший вейп на PY32F002B с портом USB-C можно использовать для создания «невероятно быстрого» устройства.
Кратко метод заключался в следующем: Богдан эмулировал dial-up модем на микроконтроллере, используя SLIP (Serial Line Internet Protocol) через последовательное USB-соединение. Утилиты Linux ‘slattach’ и ‘socat’ позволили передавать IP-пакеты, а затем микроконтроллер использовал компактный стек uIP для связи по TCP/IP и настройки веб-сервера. Веб-страница, копия поста из блога, едва поместилась в оставшиеся 20 КБ флеш-памяти PY32F002B.
Сокращение времени загрузки страницы с 20 секунд до 160 мс
Оптимизация для получения работоспособного веб-сервера представила несколько проблем. Богдан говорит, что он почти сдался после первых тестов, поскольку производительность на вейпе была смехотворно низкой. Пинг составлял ~1,5 с, а простая загрузка страницы занимала 20 секунд.
Однако он скромно признаёт, что главной проблемой был его код. Поэтому инженер добавил буфер и групповую запись для повышения пропускной способности, и с помощью ещё нескольких настроек ему удалось снизить пинг до 20 мс без потери пакетов и полную загрузку страницы примерно до 160 мс. Неплохо.
Исходная ссылка из блога Богдана, которую мы привели, размещена не на этом веб-сервере, работающем от вейпа. Однако, если вам очень интересно, вы можете попробовать перейти по этой ссылке, чтобы получить пост с VapeServer. Мы говорим «попробовать», потому что страница, размещённая на вейпе, в настоящее время выдаёт ошибку ‘503’, вероятно, из-за перегрузки посетителями.
Богдан также поделился кодом проекта semihost-ip для VapeServer на GitHub.
Источник: Tomshardware.com
ИИ: В 2025 году подобные проекты напоминают нам о том, что даже самые, казалось бы, простые и одноразовые устройства могут скрывать в себе потенциал для нестандартного и креативного применения. Это отличный пример апсайклинга и хардкорного инженерного творчества!
0 комментариев