وقتی یه مهندس، یه ویپ یک‌بار مصرفو تبدیل به وب‌سرور میکنه!

احتمالاً وقتی یه ویپ (همون سیگار الکترونیکی یک‌بار مصرف) رو گوشه خیابون می‌بینی، بهش حتی نگاهم نمی‌کنی و فکر می‌کنی تهش به درد زباله‌دونی می‌خوره. اما یه مهندس رومانیایی باحال به اسم بوگدان یونسکو – که تو فضای مجازی با اسم BogdanTheGeek معروفه – نشون داده این گجت‌های فانتزی مخصوص بزرگ‌ترها کلی پتانسیل دیگه هم دارن!

قضیه از اونجا شروع میشه که بوگدان مدت‌ها باتری ویپ‌های دور ریخته شده رو جمع می‌کرد که یه روز چشمش خورد به مدل‌های نسبتا پیشرفته‌تر و متوجه شد داخلشون میکروکنترلر نسبتاً باحالی داره. میکروکنترلر همون مغز کامپیوتر کوچیکه که کارها رو کنترل می‌کنه. خلاصه یکی رو باز کرد و یه چیپ روش بود که نوشته شده بود PUYA C642F15. با یه کم کندوکاو فهمید در واقع اسم واقعیش PY32F002B ـه: این چیپ با یه پردازنده ۲۴ مگاهرتزی Arm Cortex M0+ کار میکرد. (ببین چیپ آرم یا Arm Cortex M0+ یه مدل پردازنده ساده و کم‌مصرفه که معمولاً تو دستگاه‌های خیلی کوچیک می‌زنن). فقط ۲۴ کیلوبایت حافظه فلش داشت و سه کیلوبایت رم که انصافاً واقعاً کمه، اندازه حافظه یه ماشین حساب قدیمیه!

بوگدان خودش هم گفت این کیت پایه به‌قدری ضعیفه که عملاً آدم حس می‌کنه دور انداختنیه! اما برای اون، همین سیستم در ظاهر ضعیف، یه چالش هیجان‌انگیز بود – می‌خواست یه وب‌سرور بسازه روش! وب‌سرور یعنی همون چیزی که سایت‌ها رو میزبانی می‌کنه و شما با مرورگر بهش وصل میشی.

حالا کِیفش اینجاست که چیپ این دستگاه می‌تونه از یه پروتکل قدیمی به اسم SLIP استفاده کنه. (SLIP یا Serial Line Internet Protocol همون راهی بود که تو زمان دایال‌آپ اینترنت اطلاعات رو از طریق سیم انتقال می‌دادن، چیز خیلی کلاسیک و قدیمی!) بوگدان با همین روش دستگاهش رو مثل یه مودم ۵۶K قدیمی (یعنی همون مودم‌های دایال‌آپ که اینترنتشون لاک‌پشتی بود!) راه‌اندازی کرد.

قدم بعدی این بود که یه کد سبک به اسم uIP 0.9 رو بهش اضافه کنه تا دستگاهش بتونه یه سایت خیلی ساده نمایش بده. این یه کتابخونه خیلی سبک برای برقراری ارتباط TCP/IP هست – همون پروتکلی که تو اینترنت می‌چرخیم.

اوایل کار کلاً یه شکست بود! پینگ‌ها (پینگ یعنی زمان رفت و برگشت یک سیگنال که نشون میده چقدر ارتباط کند یا سریعه) حدود ۱.۵ ثانیه زمان می‌برد و نصف بسته‌های اطلاعاتی اصلاً گم میشد. تازه یه صفحه ساده هم بیست ثانیه طول میکشید تا لود بشه، که خودش گفته بود اینقدر اوضاع شاخدرمیونه که آدم دوست داره بذاره و بره! 😂

ولی بوگدان زرنگی کرد: فهمید اشکال از کد خودشه. یه سازوکار به اسم رینگ‌بافر (Ring Buffer یعنی حافظه دَوَرانی که برای انتقال اطلاعات منظم‌تر و سریع‌تر استفاده میشه) بهش اضافه کرد و چندتا باگ هم رفع کرد. بعد پینگ شد ۲۰ میلی‌ثانیه – یعنی اصلاً صفر تا صدم عوض شد. سرعت لود هم رسید به ۱۶۰ میلی‌ثانیه. یعنی واقعاً باحاله، مخصوصاً با این سخت‌افزار خنده‌دار!

جالبیش جاییه که صفحه‌ای که رو این وب‌سرور کوچولو گذاشت، همون بلاگ خودش بود که درباره همین داستان توضیح داد (لینک: bogdanthegeek.github.io/blog/projects/vapeserver/). کل سایتش رو نهایتاً تو ۲۰ کیلوبایت جا داد! اما چون سرور خیلی کوچیکه و حافظه محدوده، اگه چند نفر همزمان بیان، با پیام ۵۰۳ روبرو میشن یعنی سرور نمیتونه بیشتر جواب بده!

بوگدان تو این پروژه باحال به اسم VapeServer نشون داده یه عالمه لوازم الکترونیکی که فکر می‌کنیم فقط به درد سطل آشغال می‌خورن، واقعاً کلی کاربر دیگه دارن. طبق تحقیقی که سال ۲۰۲۳ دانشگاه آکسفورد و بنیاد فارادی انجام دادن، تو انگلیس هر هفته ۱.۳ میلیون ویپ یک‌بار مصرف دور ریخته میشه – بله، درست شنیدی، هر هفته!

ویپ‌ها اکثراً هم میکروکنترلر و هم باتری و هم پورت USB-C دارن که کلی بیشتر از عمر کارکرد اصلیشون (یعنی همون انتقال نیکوتین) جواب میدن. پس میشه باهاشون کلی پروژه خفن انجام داد و کمتر زباله الکترونیک تولید کرد، که خودش حرف مهمی برای پایداری محیط زیسته.

بوگدان حتی سورس‌کدش رو هم تو گیت‌هاب گذاشته تا بقیه هم بتونن با این دستگاه‌ها بازی کنن. پروژه semihost-ip رو هم معرفی کرده که برای هر سی‌پی‌یوی آرم فقط با چند خط کد قابلیت semihosting میده – یعنی بتونه تو حالت اداره‌شده اطلاعات رد و بدل کنه (یه جور ارتباط ساده بین کامپیوتر مادر و دستگاه کوچیک).

کلاً این پروژه اثبات کرد حتی چیزی که بهش میگیم “یک‌بار مصرف” هم می‌تونه عجیب غافلگیرمون کنه. حالا دفعه بعدی یه ویپ رو خیابون دیدی، شاید به جای رد شدن از کنارش، یه پروژه خلاقانه به ذهنت برسه!

منبع: +