اخبار تکنولوژیاینترنت اشیا - IOTمطالب آموزشیمطالب علمیمعرفی و مقایسه

تبدیل رزبری پای پیکو W به دانگل وای‌فای بدون درایور: بررسی پروژه pico-usb-wifi

بردهای توسعه میکروکنترلری مانند رزبری پای پیکو W (Raspberry Pi Pico W) با تراشه قدرتمند RP2040 و ماژول وای‌فای داخلی، دنیای اینترنت اشیا (IoT) و سیستم‌های نهفته را متحول کرده‌اند. معمولاً از این بردها برای برنامه‌نویسی با MicroPython یا C/C++ جهت کنترل سنسورها، راه‌اندازی رله‌ها یا ساخت گجت‌های هوشمند استفاده می‌شود. اما چه می‌شد اگر می‌توانستیم از این برد کوچک به عنوان یک کارت شبکه بی‌سیم (Wi-Fi Adapter) برای کامپیوتر یا سرور لینوکسی خود استفاده کنیم؟

اخیراً یک پروژه متن‌باز (Open-Source) به نام pico-usb-wifi معرفی شده است که دقیقاً همین کار را انجام می‌دهد. این فرم‌ور (Firmware) نوآورانه، پیکو W را به یک دانگل وای‌فای USB تبدیل می‌کند که بدون نیاز به نصب هیچ‌گونه درایور خاصی روی سیستم‌عامل‌های ویندوز، لینوکس و مک کار می‌کند. در این مقاله به بررسی عمیق این پروژه، نحوه عملکرد، دلایل جذابیت و کاربردهای آن می‌پردازیم.

openrouter banana2 rpi pico


پروژه pico-usb-wifi چیست؟

پروژه pico-usb-wifi یک فرم‌ور متن‌باز است که وقتی روی Raspberry Pi Pico W فلش می‌شود، آن را به یک کارت شبکه بی‌سیم با رابط USB تبدیل می‌کند. سیستم‌عامل میزبان (خواه توزیع‌های لینوکسی مثل اوبونتو و فدورا باشد، یا ویندوز و مک) این برد را به عنوان یک دستگاه شبکه اترنت مبتنی بر USB (با استاندارد CDC-NCM) می‌شناسد.

نکته شگفت‌انگیز اینجاست که شما به هیچ درایور اضافه‌ای نیاز ندارید. سیستم‌عامل فریب می‌خورد و فکر می‌کند که شما یک کابل LAN به آن متصل کرده‌اید، در حالی که در پس‌زمینه، پیکو W در حال دریافت و ارسال پکت‌های داده از طریق شبکه Wi-Fi است.


این پروژه چگونه کار می‌کند؟ (نگاهی فنی به معماری)

تراشه وای‌فای استفاده شده در Pico W، یعنی Infineon CYW43439، به طور مستقیم نمی‌تواند به عنوان یک پل ارتباطی (Bridge) بین USB و Wi-Fi عمل کند. بنابراین، توسعه‌دهندگان این فرم‌ور مجبور به پیاده‌سازی یک راهکار نرم‌افزاری هوشمندانه شدند.

این فرم‌ور یک پل لایه ۲ (Layer-2 Bridge) شفاف بین ماژول بی‌سیم Pico W و رابط USB آن ایجاد می‌کند. به بیان ساده‌تر:

  1. برد پیکو W در حالت USB Gadget Mode قرار می‌گیرد و خودش را به عنوان یک کارت شبکه اترنت (CDC-NCM) به سیستم معرفی می‌کند.
  2. پکت‌های شبکه که از طریق درگاه USB کامپیوتر به پیکو W ارسال می‌شوند، به صورت خام (Raw Ethernet Frames) دریافت می‌شوند.
  3. این پکت‌ها در لایه ۲ شبکه (Data Link Layer) به پکت‌های وای‌فای تبدیل شده و از طریق آنتن CYW43439 به روتر ارسال می‌شوند (و بالعکس).

ویژگی‌های فنی کلیدی:

  • پشتیبانی کامل از IPv4 و IPv6: بدون نیاز به تنظیمات NAT، بدون ایجاد زیرشبکه (Subnet) خصوصی و بدون نیاز به Port-Forwarding. کامپیوتر شما مستقیماً از روتر وای‌فای IP می‌گیرد.
  • کنسول مدیریت خارج از باند (Out-of-band Management): مدیریت شبکه‌ها و وارد کردن رمز وای‌فای از طریق یک پورت سریال مجازی (CDC-ACM) انجام می‌شود.
  • امنیت: پشتیبانی از پروتکل‌های رمزنگاری WPA2-PSK و WPA3-SAE.

چرا این پروژه تا این حد جذاب است؟

برای علاقه‌مندان به الکترونیک، شبکه و سیستم‌های نهفته، این پروژه از چندین زاویه شاهکار محسوب می‌شود:

۱. معماری بدون درایور (Driverless)

یکی از بزرگترین کابوس‌های کاربران لینوکس (به ویژه در توزیع‌های سرور یا بردهای امبدد) پیدا کردن درایور مناسب برای دانگل‌های وای‌فای ارزان‌قیمت است. استفاده از استاندارد جهانی USB CDC-NCM به این معناست که هسته لینوکس (Linux Kernel) به صورت بومی از آن پشتیبانی می‌کند (Plug & Play واقعی).

۲. مدیریت از طریق ترمینال سریال (CLI)

شما برای وصل شدن به وای‌فای نیازی به نرم‌افزار گرافیکی ندارید. پیکو W دو پورت روی USB شبیه‌سازی می‌کند: یکی برای دیتای شبکه و دیگری پورت سریال (مثلاً /dev/ttyACM0 در لینوکس). شما می‌توانید با ابزارهایی مثل picocom یا minicom به برد متصل شوید و با دستورات متنی ساده، شبکه‌های اطراف را اسکن کرده و به آن‌ها متصل شوید:

۳. توسعه یافته با کمک هوش مصنوعی

نکته جالب توجهی که توسعه‌دهنده به آن اشاره کرده، استفاده از هوش مصنوعی (Claude Code) برای طراحی این فرم‌ور پیچیده با زبان C و کیت توسعه نرم‌افزار پیکو (PicoSDK) است. این نشان می‌دهد که ابزارهای AI چگونه مرزهای برنامه‌نویسی سیستم‌های نهفته را جابجا می‌کنند.


محدودیت‌ها: سرعت فدای انعطاف‌پذیری

آیا می‌توانیم این برد را جایگزین کارت شبکه اصلی لپ‌تاپ کنیم؟ پاسخ کوتاه خیر است.
بزرگترین گلوگاه این پروژه، رابط USB 1.1 موجود در میکروکنترلر RP2040 است که حداکثر پهنای باند تئوری آن $12 \text{ Mbps}$ است. در تست‌های عملی، میانگین سرعت انتقال داده (Throughput) این فرم‌ور حدود $4.75 \text{ Mbits/sec}$ اندازه‌گیری شده است.

این سرعت برای استریم ویدیوهای 4K مناسب نیست، اما برای کارهای خط فرمان (SSH)، انتقال فایل‌های متنی سبک، درخواست‌های API و مدیریت سرور کاملاً کفایت می‌کند.

slop 2


کاربردهای پروژه pico-usb-wifi

با توجه به قیمت یک دانگل وای‌فای معمولی (حدود ۲ تا ۵ دلار)، شاید بپرسید چرا باید از یک برد ۶ دلاری با سرعت کمتر استفاده کنیم؟ کاربردهای این پروژه بیشتر در سناریوهای خاص و فنی است:

  1. جعبه ابزار امداد شبکه (Emergency Networking):
    تکنسین‌های IT، مدیران سرور و تعمیرکاران سیستم‌های امبدد می‌توانند یک Pico W با این فرم‌ور را در کیف ابزار خود داشته باشند. اگر سرور یا مینی‌کامپیوتری (مانند یک کیس لینوکسی صنعتی) پورت LAN نداشته باشد یا کارت شبکه آن سوخته باشد، این برد به عنوان یک راه نجات موقت برای اتصال دستگاه به اینترنت و دانلود پکیج‌های ضروری عمل می‌کند.
  2. پروژه‌های هک و امنیت شبکه (Pentesting):
    به دلیل ماهیت شفاف در لایه ۲ و امکان تغییر کد منبع، این دستگاه پتانسیل بالایی برای تحلیل ترافیک (Packet Sniffing) یا پیاده‌سازی حملات شبکه به صورت یک ابزار فیزیکی پنهان دارد.
  3. توسعه‌دهندگان سیستم‌های نهفته و اینترنت اشیا:
    برای کسانی که در حال ساخت دستگاه‌های سفارشی بر پایه پردازنده‌هایی مانند STM32 یا بردهای مبتنی بر لینوکس (مثل بردهای Rockchip) هستند و می‌خواهند بدون درگیری با درایورهای پیچیده ماژول‌های وای‌فای، یک رابط شبکه بی‌سیم به دستگاه خود اضافه کنند.
  4. یادگیری و آموزش شبکه و USB:
    برای دانشجویان و علاقه‌مندان به الکترونیک، بررسی سورس‌کد این پروژه (که بر پایه PicoSDK نوشته شده) یک کلاس درس فوق‌العاده برای درک نحوه عملکرد پروتکل‌های USB (Gadget Mode) و پل‌زدن شبکه‌ها (Network Bridging) در سطح میکروکنترلرهاست.

راهنمای نصب و استفاده از pico-usb-wifi

کدهای منبع و مستندات کامل این پروژه در مخزن رسمی گیت‌لب به آدرس زیر در دسترس است:
🔗 گیت‌لب پروژه pico-usb-wifi

راه‌اندازی این دانگل وای‌فای سفارشی بسیار ساده است و به هیچ درایور اضافه‌ای در سمت میزبان نیاز ندارد. مراحل کار به شرح زیر است:

مرحله اول: فلش کردن فرم‌ور روی Pico W

شما می‌توانید این پروژه را با استفاده از pico-sdk و CMake خودتان کامپایل کنید، اما ساده‌ترین راه استفاده از فایل باینری آماده است:

  1. ابتدا دکمه BOOTSEL روی برد رزبری پای پیکو W را نگه دارید و سپس آن را از طریق کابل USB به سیستم متصل کنید.
  2. سیستم‌عامل شما یک درایو فلش جدید به نام RPI-RP2 را شناسایی می‌کند.
  3. فایل کامپایل شده pico-usb-wifi.uf2 را کپی کرده و داخل این درایو قرار دهید.
  4. برد به طور خودکار ری‌استارت شده و با فرم‌ور شبکه بوت می‌شود.

مرحله دوم: پیکربندی و اتصال به وای‌فای (بدون نیاز به شبکه)

همان‌طور که پیش‌تر اشاره شد، این دستگاه دو پورت سریال مجازی (CDC-ACM) ایجاد می‌کند. پورت اول (معمولاً /dev/ttyACM0 در لینوکس) برای کنسول مدیریت خارج از باند (Out-of-band) استفاده می‌شود.
با استفاده از ابزارهایی مانند picocom یا screen به برد متصل شوید:

در محیط ترمینالِ باز شده، می‌توانید با دستورات متنی ساده شبکه‌های اطراف را اسکن کرده و متصل شوید. یک سناریوی اتصال استاندارد به این شکل است:

  1. جستجوی شبکه‌ها: عبارت scan را تایپ کنید تا لیست وای‌فای‌های اطراف (SSID، قدرت سیگنال و آدرس مک) نمایش داده شود.
  2. انتخاب شبکه: با دستور join <number> (مثلاً join 1) شبکه مورد نظر را از لیست انتخاب کنید.
  3. وارد کردن رمز عبور: با دستور set pass <password> رمز وای‌فای را وارد کنید. (از استانداردهای WPA2 و WPA3 پشتیبانی می‌شود).
  4. ذخیره تنظیمات: در نهایت دستور save را وارد کنید تا اطلاعات در بخش انتهایی حافظه فلش برد ذخیره شود. با این کار، برد می‌تواند تا ۸ پروفایل شبکه را ذخیره کند و پس از قطع و وصل شدن برق، به طور خودکار به آن‌ها متصل شود.

مرحله سوم: دریافت IP و دسترسی به اینترنت

پس از اتصال موفق برد به مودم، سیستم‌عامل میزبان شما (خواه توزیع‌های لینوکسی با NetworkManager و systemd-networkd باشد، یا ویندوز) به طور خودکار از طریق پروتکل‌های DHCP (برای IPv4) و SLAAC (برای IPv6) تنظیمات شبکه را مستقیماً از روتر اصلی دریافت می‌کند.
اگر در ترمینال لینوکس از دستور ip addr استفاده کنید، می‌بینید که اینترفیس جدید دقیقاً مانند یک کابل LAN عمل کرده و IP محلی مودم را دریافت کرده است.

راهنمای عیب‌یابی سریع با نشانگر LED روی برد

توسعه‌دهنده برای اینکه بدون نیاز به ترمینال از وضعیت اتصال مطلع شوید، الگوهای چشمک‌زن مفیدی را برای LED روی برد (Onboard LED) برنامه‌ریزی کرده است:

  • روشنِ ثابت: اتصال با موفقیت به مودم برقرار شده است (حالت عادی کارکرد).
  • چشمک‌زن آهسته ($1 \text{ Hz}$): تنظیمات وای‌فای پیکربندی شده و دستگاه در حال تلاش برای اتصال (Associating) است.
  • چشمک‌زن سریع ($5 \text{ Hz}$): هیچ شبکه وای‌فایی روی برد تنظیم نشده است (باید از طریق کنسول مدیریت شبکه‌ای را معرفی کنید).
  • دو بار چشمک سریع و مکث: دستگاه در حالت اسکن پیوسته (Live Scan) قرار دارد.

نتیجه‌گیری

پروژه pico-usb-wifi یک نمونه بارز از خلاقیت در دنیای سخت‌افزارهای متن‌باز است. تبدیل میکروکنترلری که اساساً برای کنترل پایه‌های GPIO و اجرای اسکریپت‌های ساده (مثل MicroPython) طراحی شده به یک آداپتور شبکه استاندارد، قدرت و انعطاف‌پذیری تراشه RP2040 را به رخ می‌کشد.

اگرچه محدودیت‌های سرعت رابط USB 1.1 مانع از آن می‌شود که این پروژه یک جایگزین دائمی برای کارت‌های شبکه باشد، اما به عنوان یک ابزار کاربردی در مواقع اضطراری، یک ابزار دیباگینگ برای تکنسین‌های لینوکس و یک پلتفرم آموزشی عالی، ارزش بسیار بالایی دارد. اگر یک رزبری پای پیکو W بلااستفاده در کشوی قطعات الکترونیکی خود دارید، همین امروز فایل .uf2 این پروژه را دانلود کرده و این قابلیت جذاب را تست کنید!

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا