Микроконтроллер за пару долларов смог раздавать веб-страницу прямо из дома. Без привычного сервера, без дорогого размещения и без серьезного запаса мощности. Проект скорее похож на техническую шутку, но страница действительно открывается в браузере.
Европейский разработчик и блогер Маурици Залевски собрал необычный веб-сервер на базе AVR64DD32. Такой 8-битный микроконтроллер продается примерно за $1,30. Внутри у него одно ядро AVR с частотой до 24 МГц, 8 КБ оперативной памяти, 64 КБ флеш-памяти и 256 байт энергонезависимой памяти. По современным меркам запас почти игрушечный, но для одной простой страницы хватило.
Сам Залевски рассказал, что сборка ничего ему не стоила, потому что все детали уже лежали под рукой. Если покупать компоненты отдельно, вместе с резисторами, конденсаторами и платой сумма приблизится к $2-3.
Главная сложность оказалась не в железе, а в передаче данных. Выводы микроконтроллера работают на частоте до 12 МГц, поэтому обычный Ethernet использовать не получилось. Даже старый 10BASE-T передает данные со скоростью 10 Мбит/с, а из-за манчестерского кодирования нагрузка на линию фактически удваивается.
Залевски мог купить отдельную микросхему Ethernet, но не захотел ждать доставку. Вместо этого он использовал SLIP, старый протокол для передачи сетевых пакетов по последовательной линии. Такой подход до сих пор встречается в проектах, где микроконтроллеры подключают к сети без сложной обвязки.
После подключения к сети пришлось заставить микроконтроллер отвечать на запросы. Устройство формирует ответные пакеты, меняет местами адреса отправителя и получателя, обновляет значение времени жизни пакета и обрабатывает TCP. На реализацию ушло несколько дней. С HTTP автор упростил задачу максимально, микроконтроллер отдает заранее прописанный ответ на любой запрос. Поэтому сайт ограничен одной страницей.
Еще один вопрос заключался в том, как вывести самодельный сервер в интернет без покупки публичного адреса. Залевски поднял соединение WireGuard между микроконтроллером у себя дома и сервером в дата-центре в Хельсинки. Внешний сервер принимает запросы и пересылает их на устройство по локальному адресу.
По словам автора, саму плату удалось подключить за несколько минут, а вот программа заняла несколько дней. Исходный код и готовый двоичный файл для 8-битного микроконтроллера Залевски выложил в своем блоге, так что проект можно повторить или доработать.
Источник
Нет комментариев