سرو وبسایت با یک میکروکنترلر یکدلاری
خلاصهٔ کاملتر
Maurycy Zalewski، یک توسعهدهنده و بلاگر اروپایی، ثابت کرده که میشه یک صفحهی وب واقعی را روی یک میکروکنترلر ۸ بیتی با قیمت حدود ۱.۳۰ دلار سرو کرد. تراشهای که استفاده کرده AVR64DD32 ساخت Microchip هست — با هستهی AVR، سرعت کلاک ۲۴ مگاهرتز، ۸ کیلوبایت SRAM و ۶۴ کیلوبایت حافظهی فلش. هزینهی کل پروژه با احتساب مقاومت، خازن و برد، حدود ۲ تا ۳ دلار میشه.
اولین چالش اتصال به اینترنت بود. پایههای I/O این تراشه حداکثر ۱۲ مگاهرتز پهنای باند دارن، در حالی که اترنت پایه (10BASE-T) روی ۱۰ مگابیت بر ثانیه کار میکنه و با کدگذاری Manchester که هر بیت را به دو سیگنال تبدیل میکنه، در واقع ۲۰ مگابیت بر ثانیه روی سیم میفرسته — بیشتر از ظرفیت تراشه. راهحل، پروتکل SLIP (Serial Line Internet Protocol) بود؛ یک استاندارد ۳۸ ساله که ترافیک IP را روی خط سریال منتقل میکنه و هنوز در لینوکس پشتیبانی میشه.
پیادهسازی TCP و HTTP روی این تراشهی محدود، چند روز وقت گرفت. برای پکتهای خروجی، آدرس مبدا و مقصد جابهجا میشن و مقدار TTL ریست میشه. هندل کردن HTTP هم با برگردوندن یک پاسخ ثابت (hardcoded) برای هر درخواست ساده شده — که البته یعنی سایت فقط از یک URL پشتیبانی میکنه.
آخرین مشکل، دسترسی عمومی بود. Zalewski نمیخواست برای IP عمومی پول بده، پس با WireGuard یک تونل امن از میکروکنترلر خانگیاش به یک سرور در دیتاسنتر هلسینکی راه انداخته و درخواستها از اونجا با آدرس محلی به تراشه پروکسی میشن. این یعنی کاربران مستقیم به stack TCP/IP میکروکنترلر وصل نمیشن، ولی همین روش در پروژههای مشابه قبلی هم استفاده شده.
نکات کلیدی:
- تراشهی AVR64DD32 با قیمت ۱.۳۰ دلار، هستهی اصلی این وبسرور است
- پروتکل SLIP جایگزین اترنت شده چون I/O تراشه از سرعت اترنت کمتره
- پیادهسازی TCP چند روز طول کشید؛ HTTP با یک پاسخ ثابت سادهسازی شده
- سایت فقط یک URL داره و درخواستها از طریق WireGuard و یک پروکسی به تراشه میرسن
- سورس کد و باینری آماده برای میکروکنترلرهای ۸ بیتی در وبلاگ نویسنده منتشر شده




