از یک پروژه شخصی تا یک ابزار جهانی: داستان تکامل USBasp از طرح اولیه‌ی توماس فیشل تا توسعه‌ی SANA USBasp

داستان تکامل USBasp از طرح اولیه‌ی توماس فیشل تا توسعه‌ی SANA USBasp
11 بازدید
۱۴۰۴-۰۷-۱۳
4 دقیقه
  • نویسنده: حسین لاچینی
  • درباره نویسنده: http://GitHub.com/HosseinLachini

مقدمه

گاهی مسیر رشد یک ایده از دل ساده‌ترین نیازها آغاز می‌شود؛ جایی که یک مهندس برای رفع مشکل شخصی‌اش دست به خلاقیت می‌زند، و نتیجه‌ی آن به محصولی جهانی تبدیل می‌شود. داستان SANA USBasp – Smart ZIF-Socket AVR Programmer دقیقاً یکی از همینمسیرهاست؛ ابزاری که از دل یک پروژه‌ی شخصی متولد شد و بعدها راهش را به بازارهای اروپا و آمریکا باز کرد.

نقطه‌ی آغاز؛ نیاز شخصی یک مهندس

تابستان سال ۱۳۹۲، من تصمیم گرفتم یک پروگرامر ساده‌تر و هوشمندتر برای میکروکنترلرهای AVR بسازم. در آن زمان از پروگرامر Hattel استفاده می‌کردم وواقعاً از طراحی کوچک و قابل حملش لذت می‌بردم؛ اما یک مشکل اساسی داشت: فقط در محیط ویندوز و با نرم‌افزار اختصاصی خودش کار می‌کرد. من کاربر لینوکس بودم و این محدودیت، عملاً من را از استفاده در پروژه‌های خودم بازمی‌داشت. از طرف دیگر، مدل‌های مختلف USBasp موجود در بازار هم مشکلات خودشان را داشتند: بعضی برای هر نوع پکیج چندین سوکت جداگانه داشتند که دستگاه را بزرگ و شلوغ می‌کردند. بعضی دیگر از یک سوکت استفاده می‌کردند اما مجبور بودی هر تراشه را دقیق در محل خاصی قرار دهی و خطر اشتباه همیشه وجود داشت. در برخی مدل‌ها هم با تغییر جامپر یا سوییچ مسیر پین‌ها را مشخص می‌کردند که باز هم ساده نبود. تمامی این مدل‌ها مشکل دیگری هم داشتند؛ تغذیه دائم سوکت باعث می‌شد تراشه از لحظه‌ی اتصال روشن شود و اگر برنامه‌ای روی آن بود، احتمال تداخل سیگنال‌ها وجود داشت.

روتینگ خودکار؛ ایده‌ای ساده با تأثیری بزرگ

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

تشخیص خودکار تراشه روی ZIF سوکت

برای تشخیص نوع تراشه، آرایه‌ای به نام AVR_PIN_CONFIG در فرم‌ویر تعریف کردم. در هر ردیف این آرایه، شماره‌ی پین‌های سیگنال‌های MOSI، MISO، SCK، RST، VCC، GND و XTAL برای هر تراشه مشخص شده بود. سپس توسط تابعی به نام pin_define پیکربندی پین‌ها خوانده می‌شد و تابع ispEnterProgrammingMode تست می‌کرد که آیا میکرو وارد حالت پروگرام می‌شود یا نه. اگر نمی‌شد، به کانفیگ بعدی
می‌رفت. چالش اصلی اینجا زمان بود؛ فرم‌ویر باید در کمترین زمان ممکن تراشه را تشخیص می‌داد، چون نرم‌افزارهای پروگرامر نباید احساس تأخیر کنند و باید تصور کنند با یک پروگرامر USBasp عادی در حال کار هستند.

شاید برای شما مفید باشد:
20Kbit- 1wire EEPROM

از یک پروژه شخصی تا یک ابزار جهانی: داستان تکامل USBasp از طرح اولیه‌ی توماس فیشل تا توسعه‌ی SANA USBasp

اضافه شدن پشتیبانی از EEPROMها

یکی از نیازهای من، پروگرام کردن EEPROMهای سری ۲۴ و ۹۳ بود. بنابراین فرم‌ویر را طوری توسعه دادم که با نرم‌افزار ProgISP سازگار شود. برای کشف نحوه‌ی ارتباط، دستورات ارسالی از سمت نرم‌افزار را با یک پروگرامر ساده بررسی کردم و متوجه شدم برای EEPROMهای سری ۹۳ مثلاً دستور 0x07 ارسال می‌شود. به همین ترتیب پروتکل‌های لازم را پیاده‌سازی و به فرم‌ویر اضافه کردم.

فراتر از پروگرامر؛ تستر دیجیتال آموزشی

در نسخه‌های بعدی، بخش تستر دیجیتال TTL/CMOS را هم اضافه کردم. در تسترهای متداول، فقط نتیجه‌ی Pass/Fail نمایش داده می‌شود. اما من خروجی را به شکل نمودار شکل موج ورودی و خروجی نمایش دادم و نقاط خطا را با خط‌چین مشخص کردم تا کاربر درک بهتری از عملکرد واقعی قطعه داشته باشد. همچنین فایل‌های تعریف بردار تست به‌صورت متنی ذخیره می‌شدند تا کاربران بتوانند خودشان قطعات جدیدی به سیستم اضافه کنند. حتی با وارد کردن تعداد پین‌های یک آی‌سی، تستر می‌توانست چند گزینه‌ی احتمالی برای شناسایی قطعه پیشنهاد دهد.

از یک پروژه شخصی تا یک ابزار جهانی: داستان تکامل USBasp از طرح اولیه‌ی توماس فیشل تا توسعه‌ی SANA USBasp

از کارگاه شخصی تا بازار جهانی

اولین نسخه‌ها را برای استفاده‌ی شخصی ساختم و هرگز قصد فروش نداشتم. اما وقتی همکارانم این پروگرامر را دیدند، از من خواستند برایشان هم بسازم. به مرور سفارش‌ها بیشتر شد و در نهایت پروژه‌ای که از اتاق کار من شروع شده بود، به کشورهای مختلف رفت — از ایران تا اروپا و آمریکا. یکی از کاربران هلندی در بازخوردی نوشت:

“I can’t believe how small and perfect this programmer is. Automatic chip recognition and

cross-platform operation are just genius!”

درس‌هایی از مسیر توسعه

  • اگر محصولی بسازید که خودتان واقعاً از آن راضی باشید، کاربران هم آن را دوست خواهند داشت.
  • ترس از شروع نداشته باشید؛ مهم این است که مشکلی واقعی را حل کنید.
  • سادگی در طراحی، کلید پایداری و محبوبیت است.
  • پروژه‌های آموزشی می‌توانند به محصولات تجاری تبدیل شوند — اگر به درستی پرورش یابند.

نکات فنی در طراحی پروگرامرهای AVR

موضوع نکته کلیدی
روتینگ سیگنال‌ها سادگی طراحی با استفاده از امکانات داخلی میکروکنترلر زمان پاسخ‌گویی تأخیر کم در تشخیص تراشه برای حفظ سازگاری نرم‌افزار ایمنی سخت‌افزار عدم تغذیه دائم سوکت برای جلوگیری از تداخل سیگنال‌ها توسعه نرم‌افزار تعریف ماژول‌های جدا برای پشتیبانی از انواع EEPROM توسعه‌پذیری استفاده از فایل‌های متنی برای افزودن قطعات جدید در تستر آینده‌ی پروژه و دعوت به مشارکت پروژه‌ی SANA USBasp امروز به‌صورت کاملاً اوپن‌سورس در دسترس است و هنوز جای رشد بسیاری دارد. برخی از مسیرهای پیشنهادی برای توسعه:

  • مهاجرت به میکروکنترلرهای ARM با پشتیبانی USB داخلی (مثل STM32F103)
  • افزودن قابلیت‌هایی مانند Data Logger و Logic Analyzer
  • بازطراحی شماتیک و PCB با ابزارهای اوپن‌سورس
  • بهبود مستندات آموزشی برای کاربران تازه‌کار
شاید برای شما مفید باشد:
پروتکل DNP3 چیست؟

من از تمام علاقه‌مندان دعوت می‌کنم در توسعه‌ی این پروژه مشارکت کنند و با دادن ⭐️ به ریپوی پروژه در گیت‌هاب، هم از کار حمایت کنند و هم به بیشتر دیده
شدن آن کمک کنند.

نتیجه‌گیری

داستان SANA USBasp تنها درباره‌ی ساخت یک پروگرامر نیست؛ درباره‌ی فرآیند تبدیل یک نیاز شخصی به راه‌حلی جهانی است. پروژه‌ای که از دل تجربه
و ضرورت شکل گرفت، به ابزاری مورد اعتماد در جامعه‌ی مهندسی دنیا تبدیل شده است.
شاید این همان پیام اصلی باشد:

اگر به‌جای دنبال کردن بازار، روی رفع نیاز واقعی تمرکز کنید، بازار خودش به سراغ شما می‌آید.

اطلاعات
11
0
0
لینک و اشتراک
profile

نویسنده: حسین لاچینی

متخصص الکترونیک

http://GitHub.com/HosseinLachini


مقالات بیشتر
slide

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند. فروش در پالت
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. جستجو در آیسی
family

سیسوگ‌شاپ | فروشگاه محصولات Quectel

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند. پرسش در سیسوگ فرم
family

سیکار | اولین مرجع متن باز ECU در ایران

بررسی و ارائه اطلاعات مربوط به ECU (واحد کنترل الکترونیکی) و نرم‌افزارهای متن باز مرتبط با آن برو به سیکار
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
خانواده سیسوگ
سیسوگ‌شاپ

فروشگاه محصولات Quectel

پالت
سیسوگ فروم

محلی برای پاسخ پرسش‌های شما

سیسوگ جابز
سیسوگ
سیسوگ فروم
سی‌کار

اولین مرجع متن باز ECU در ایران

سیسوگ مگ
آی‌سی

موتور جستجوی قطعات الکترونیکی

سیسوگ آکادمی
پالت

بازار خرید و فروش قطعات الکترونیک

دیدگاه ها

become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله