چگونه یک مهندس امبدد سیستم(سامانه ی نهفته) شویم؟(۱)

امبدد سیستم چیست؟ امبدد سیستم(سامانه ی نهفته) به سیستم‌های تعبیه شده قابل برنامه‌ریزی یا با برنامه ثابت گفته می‌شود که برای انجام یک عملکرد خاص درون یک سیستم بزرگ‌تر طراحی میشود.امبدد سیستم‌ها برخلاف یک رایانه چند منظوره، مانند یک رایانه شخصی که به شکلی انعطاف‌پذیر (از نظر معماری پردازنده) طراحی شده‌است که قسمت بزرگی از نیازهای مصرف‌کننده‌ها را برآورده کند برای انجام کار مشخصی طراحی شده‌اند. سامانه‌های نهفته، امروزه برای کنترل خیلی از دستگاه‌ها به کار می‌روند. از لحاظ فیزیکی، گستره سامانه‌های نهفته از دستگاه‌های قابل حمل مانند: ساعت مچی و پخش کننده‌های MP3 تا ایستگاه-های نصب شده و ثابت، مانند چراغ راهنمایی،کنترل کننده منطقی برنامه پذیر و سامانه‌های بزرگ و پیچیده مانند: خودرو هیبرید، تصویربرداری با تشدید خودروی هیبریدی، ام‌آرآی و اویونیک به‌کار می‌روند.قلب امبدد سیستم‌ها را یک چیپست برنامه پذیر (microcontroller / DSP / FPGA ) تشکیل میدهد. و هسته ی اصلی شغل‌های مرتبط با این رشته برنامه‌ریزی کردن این چیپست هاست. در واقع میشه گفت این رشته یه محدوده ی مشترک بین رشته الکترونیک تا نرم افزار رو پوشش میده.خب از اونجایی که از این دست توضیحات در اینترنت فراوونه و خودتون بهتره بیشتر بخونید،بریم سراغ مسائل دیگه. اول اینکه برای شروع کار در حوزه امبدد سیستم چه تخصص ها و چه ابزار هایی نیاز دارید؟-برای اینکه به این سؤال دقیق‌تر جواب بدیم بهتر این هستکه از سؤال اصلی‌تری شروع کنیم که: در شغل مهندسی امبدد سیستم چه کارهایی انجام میشه؟در هر پروژه مراحل زیر به ترتیب انجام میشه: اول : مشخص کردن مشکل ، راه حل و انتخاب نوع سخت افزاردوم : طراحی مدار راه انداز و مدار های جانبی میکروکنترلرسوم : طراحی برد مدار چاپی (PCB)چهارم : کدنویسی و برنامه ریزیپنجم : شبیه سازی سیستم (البته این مرحله میتونه به مرحله دوم انتقال پیدا کنه تا قبل از هزینه تولید برد اولیه از کارکرد مدار مطمئن شد.)ششم : تست کارکرد شما میتوانید در یک موقعیت شغلی (به عنوان متخصص امبدد سیستم) در یک یا چند مرحله از مراحل تولید ذکر شده در بالا قرار بگیرد.قابل به ذکر است در کشور زیبامون ایران به لایلی که خودتون شاید بهتر بدونید به احتمال زیاد همه این‌ها یکپارچه به عهده شماست!!!! و با حقوق اداره کار! خلاصه اینکه از همین اول بدونید بهتره :)خب حالا میتونیم به ازا هر مرحله نرم‌افزار ها ، دانش و ابزار های مورد نیاز رو معرفی کنیم: مرحله اول (مشخص کردن مشکل، راه حل و سخت‌افزار) به نظر من مهمترین مرحله کاره، شناخت کامل از مشکل خیلی مهمه ، اینکه دستگاهی که قصد ساختشو داریم چه تعداد ورودی و خروجی داره چه قطعاتی از چه جنسی رو قراره کنترل کنه و آیا نیاز به رابط کاربری تصویری داره یا صوتی یا ارتباط با رایانه یا…؟اینکه اگر قرار هست یک سنسور را به عنوان ورودی بدهیم به چه دقتی نیاز داره؟ این دستگاه قراره در چه محیطی کار کنه؟ آیا پر از نویز است یا مرطوب است یا...؟ آیا دستگاه در شوک های مکانیکی یا الکتریکی قرار میگیرد؟ و …با جواب دادن به این سؤالات میتونید کلیت پروژه رو مشخص کنید و اینکه بهترین و بهینه ترین سخت‌افزار برای این پروژه انتخاب کنید. سخت‌افزار شما میتونه از یک برد ساده اردوینو uno یا یک ایولویشن برد آماده باشد یا در حالتی که برد آماده خود را پیدا نکردید وارد مرحله دوم یعنی طراحی مدار و برد مدارچاپی شوید.arduino unoمیکروکنترلر ها و ای سی های برنامه پذیر متنوعی وجود دارد که برای کارتان میتوانید انتخاب کنید .اما به عنوان سرنخ در بازار امروز ایران میشه از میکروکنترلر های STM32 , AVR ATMEGA Series , PIC16 , PIC18 , MSP430 و FPGA های xilinx , یا DSP های شرکت microchip به اسم DSPIC نام برد.stm32 boardلازم نیست در همه ی این‌هایی که گفتم متخصص باشید چون احتمالاً عمرتون کفاف نمیده و تازه به همین‌ها محدود نمیشه. قبلاً میگفتن برای شروع از avr شروع کنید که سادست . اما به نظرم این روزها با توجه به اهمیت قیمت و کاربرد های متنوع و… صاف برید سراغ STM32.اینکه چرا STM32 رو ایشالا در یه پست مفصلاً توضیح میدم.من برای اینکه ایده اولیه رو در ذهنم پرورده کنم و تمام وجه های ممکن رو بررسی کرده باشم از نرم‌افزار Xmind استفاده میکنم.یکی دیگه از برنامه‌های خوب برای این کار visio هست . که توسط شرکت مایکروسافت ارائه شده.visioالبته اگر از لینوکس و نرم‌افزار آزاد استفاده میکنید: freemind , mindmaster گزینه های خوبی هستن.در مرحله دوم(طراحی مدار راه انداز و مدارهای جانبی میکروکنترلر) نیاز به کمی دانش الکترونیک(دربارهء منابع تغدیه ، مدار های سوییچ رله ها ، بافر کردن ورودی ها و…. ) و دانش خوب زبان انگلیسی(برای خواندن دیتاشیت قطعات و میکروکنترلری که استفاده کرده‌اید) و یک نرم‌افزار طراحی مدار که صدرنشین Altium Designer هست.Altium Designerالبته اگر قصد دارید آدم خوبی باشید و از نرم افزارهای کرک شده استفاده نکنید. نرم‌افزار های رایگان خوبی هم برای این کار هست. من kicad و eagle رو پیشنهاد میکنم. اولی کاملاً رایگان و دومی با محدودیت‌هایی به صورت رایگان قابل استفاده است.مرحله سوم (طراحی pcb ) تقریباً راحت ترین و حوصله سر بر ترین قسمت کار است. درسته که کمی اطلاعات الکترونیکی(شامل ضخامت صحیح برای ترک ها و شناخت بلوک های مدار برای جدا سازی و شناخت از قطعات و نوع آن‌ها بر اساس شکل ظاهری و ...) برای شروع میخواد ولی به نظرم چالش آن چیزی بیشتر از موش را به خانه برسانید نیست :)) از همان نرم‌افزار های معرفی شده در بخش سه برای کشیدن برد مدار چاپی استفاده میکنیم و نهایتاً به چیزی میرسیم شبیه عکس زیر که به آن برد مدار چاپی میگویند.PCB(printed circuit board)پس از اینکه برد مدارچاپی رو به یکی از شرکت های مربوطه سفارش دادیم قطعات اونو مونتاژ کرده و حالا یک برد آماده و بدون برنامه داریم که باید شروع کنیم به برنامه نویسی و پروگرام کردن آن.میخواستم این توضیحات رو در یک قسمت بدم اما از اونجا که بخش نرم افزار کلی نکته داره و حیفه از دست بدیمش ، دو قسمتیش کردم.اگر نکته‌ای رو فراموش کردم حتماً بهم یادآوری کنید.ممنون.