گاهی مسیر رشد یک ایده از دل سادهترین نیازها آغاز میشود؛ جایی که یک مهندس برای رفع مشکل شخصیاش دست به خلاقیت میزند، و نتیجهی آن به محصولی جهانی تبدیل میشود. داستان SANA USBasp – Smart ZIF-Socket AVR Programmer دقیقاً یکی از همینمسیرهاست؛ ابزاری که از دل یک پروژهی شخصی متولد شد و بعدها راهش را به بازارهای اروپا و آمریکا باز کرد.
تابستان سال ۱۳۹۲، من تصمیم گرفتم یک پروگرامر سادهتر و هوشمندتر برای میکروکنترلرهای AVR بسازم. در آن زمان از پروگرامر Hattel استفاده میکردم وواقعاً از طراحی کوچک و قابل حملش لذت میبردم؛ اما یک مشکل اساسی داشت: فقط در محیط ویندوز و با نرمافزار اختصاصی خودش کار میکرد. من کاربر لینوکس بودم و این محدودیت، عملاً من را از استفاده در پروژههای خودم بازمیداشت. از طرف دیگر، مدلهای مختلف USBasp موجود در بازار هم مشکلات خودشان را داشتند: بعضی برای هر نوع پکیج چندین سوکت جداگانه داشتند که دستگاه را بزرگ و شلوغ میکردند. بعضی دیگر از یک سوکت استفاده میکردند اما مجبور بودی هر تراشه را دقیق در محل خاصی قرار دهی و خطر اشتباه همیشه وجود داشت. در برخی مدلها هم با تغییر جامپر یا سوییچ مسیر پینها را مشخص میکردند که باز هم ساده نبود. تمامی این مدلها مشکل دیگری هم داشتند؛ تغذیه دائم سوکت باعث میشد تراشه از لحظهی اتصال روشن شود و اگر برنامهای روی آن بود، احتمال تداخل سیگنالها وجود داشت.
در طراحی نسخهی خودم از میکروکنترلر ATmega168 استفاده کردم تا نسبت به طرح اصلی فضای فلش بیشتری داشته باشم. فرمویر را هم بر پایهی سورس اصلی USBasp نوشتهی توماس فیشل توسعه دادم تا سازگاری کامل با نرمافزارها و ابزارهای موجود حفظ شود. همین سازگاری یکی از دلایل مهم محبوبیت سریع این پروگرامر شد. اما مهمترین بخش طراحی من، روتینگ خودکار سیگنالها بود. برای حفظ سادگی، تصمیم گرفتم از قابلیتهای داخلی خود میکروکنترلر برای تغییر مسیر پینها استفاده کنم و خبری از مالتیپلکسرها یا سوییچهای مکانیکی نباشد. این روش هم هزینهی ساخت را پایین آورد و هم اندازهی
برد را کوچک کرد.
برای تشخیص نوع تراشه، آرایهای به نام AVR_PIN_CONFIG در فرمویر تعریف کردم. در هر ردیف این آرایه، شمارهی پینهای سیگنالهای MOSI، MISO، SCK، RST، VCC، GND و XTAL برای هر تراشه مشخص شده بود. سپس توسط تابعی به نام pin_define پیکربندی پینها خوانده میشد و تابع ispEnterProgrammingMode تست میکرد که آیا میکرو وارد حالت پروگرام میشود یا نه. اگر نمیشد، به کانفیگ بعدی
میرفت. چالش اصلی اینجا زمان بود؛ فرمویر باید در کمترین زمان ممکن تراشه را تشخیص میداد، چون نرمافزارهای پروگرامر نباید احساس تأخیر کنند و باید تصور کنند با یک پروگرامر USBasp عادی در حال کار هستند.
یکی از نیازهای من، پروگرام کردن EEPROMهای سری ۲۴ و ۹۳ بود. بنابراین فرمویر را طوری توسعه دادم که با نرمافزار ProgISP سازگار شود. برای کشف نحوهی ارتباط، دستورات ارسالی از سمت نرمافزار را با یک پروگرامر ساده بررسی کردم و متوجه شدم برای EEPROMهای سری ۹۳ مثلاً دستور 0x07 ارسال میشود. به همین ترتیب پروتکلهای لازم را پیادهسازی و به فرمویر اضافه کردم.
در نسخههای بعدی، بخش تستر دیجیتال TTL/CMOS را هم اضافه کردم. در تسترهای متداول، فقط نتیجهی Pass/Fail نمایش داده میشود. اما من خروجی را به شکل نمودار شکل موج ورودی و خروجی نمایش دادم و نقاط خطا را با خطچین مشخص کردم تا کاربر درک بهتری از عملکرد واقعی قطعه داشته باشد. همچنین فایلهای تعریف بردار تست بهصورت متنی ذخیره میشدند تا کاربران بتوانند خودشان قطعات جدیدی به سیستم اضافه کنند. حتی با وارد کردن تعداد پینهای یک آیسی، تستر میتوانست چند گزینهی احتمالی برای شناسایی قطعه پیشنهاد دهد.
اولین نسخهها را برای استفادهی شخصی ساختم و هرگز قصد فروش نداشتم. اما وقتی همکارانم این پروگرامر را دیدند، از من خواستند برایشان هم بسازم. به مرور سفارشها بیشتر شد و در نهایت پروژهای که از اتاق کار من شروع شده بود، به کشورهای مختلف رفت — از ایران تا اروپا و آمریکا. یکی از کاربران هلندی در بازخوردی نوشت:
“I can’t believe how small and perfect this programmer is. Automatic chip recognition and
موضوع نکته کلیدی
روتینگ سیگنالها سادگی طراحی با استفاده از امکانات داخلی میکروکنترلر زمان پاسخگویی تأخیر کم در تشخیص تراشه برای حفظ سازگاری نرمافزار ایمنی سختافزار عدم تغذیه دائم سوکت برای جلوگیری از تداخل سیگنالها توسعه نرمافزار تعریف ماژولهای جدا برای پشتیبانی از انواع EEPROM توسعهپذیری استفاده از فایلهای متنی برای افزودن قطعات جدید در تستر آیندهی پروژه و دعوت به مشارکت پروژهی SANA USBasp امروز بهصورت کاملاً اوپنسورس در دسترس است و هنوز جای رشد بسیاری دارد. برخی از مسیرهای پیشنهادی برای توسعه:
من از تمام علاقهمندان دعوت میکنم در توسعهی این پروژه مشارکت کنند و با دادن ⭐️ به ریپوی پروژه در گیتهاب، هم از کار حمایت کنند و هم به بیشتر دیده
شدن آن کمک کنند.
داستان SANA USBasp تنها دربارهی ساخت یک پروگرامر نیست؛ دربارهی فرآیند تبدیل یک نیاز شخصی به راهحلی جهانی است. پروژهای که از دل تجربه
و ضرورت شکل گرفت، به ابزاری مورد اعتماد در جامعهی مهندسی دنیا تبدیل شده است.
شاید این همان پیام اصلی باشد:
اگر بهجای دنبال کردن بازار، روی رفع نیاز واقعی تمرکز کنید، بازار خودش به سراغ شما میآید.
نویسنده شو !
سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.