PDA

View Full Version : برنامه نویسی سخت افزار های هوشمند مثل ربات و ...



prince0fpersia
یک شنبه 05 دی 1389, 13:45 عصر
با سلام به همگی


من رشته سخت افزار میخونم و با زبانهای c , c++ آشنایی تقریبا کاملی دارم(شایدم فکر میکنم که دارم!!) و java رو هم تا حدودی میشناسم ....

من چندین تا سوال که شاید از نظر شما خیلی مبتدی باشه میپرسم که امیدوارم جوابهامو از راهنمایی های شما دوستان دریافت کنم


1- دلم می خواد زبونی رو یاد بگیرم که توی برنامه نویسی سخت افزار از اون استفاده کنم و بتونم همه جور سخت افزاری رو باهاش برنامه ریزی کنم ... از یک ماشین حساب خیلی ساده گرفته تا چیزهایی مثل ecu و cruise controlخودرو تا سیستم های پیچیده تر مثل ربات ها و یا هواپیماهای بدون سرنشین و ... که بیشتر مربوط به هوش مصنوعی میشه فکر کنم

2- از چه میکرو کنترولری استفاده کنم که بهترین باشه(هزینه زیاد مهم نیست!) و بعدا مجبور نشم برای انجام کارهای پیشرفته تر به میکروی دیگه ای منتقل بشم.

3- از کجا شروع کنم؟

لطفا کتابهای (ترجیها الکترونیکی و فارسی) معرفی کنید (اگر لینک بدید که دیگه خیــلی لطف میکنید) که از مباحث خیلی ابتدایی و پایه شروع کنه(راجع به ساخت روبات) .... یعنی بگه چه چیزهایی لازمه (از نظر سخت افزاری) و چه دانشی لازمه ( از لحاظ برنامه نویسی و ....)



نمیدونم مثالهایی که بالا زدم چقدر مربوط به مبحث ریزپردازنده ها و برنامه ریزی اونها میشه پس لطفا دوستان حرفه ای خرده نگیرید و یک راهنمایی جامعی اگر میشه بکنید


پیشاپیش از همه کسانی که توی بحث شرکت میکنند تشکر میکنم

prince0fpersia
یک شنبه 05 دی 1389, 14:40 عصر
هلپ می پلیز

Mehran.GH
یک شنبه 05 دی 1389, 17:37 عصر
سلام


دلم می خواد زبونی رو یاد بگیرم که توی برنامه نویسی سخت افزار از اون استفاده کنم و بتونم همه جور سخت افزاری رو باهاش برنامه ریزی کنم ... از یک ماشین حساب خیلی ساده گرفته تا چیزهایی مثل ecu و cruise controlخودرو تا سیستم های پیچیده تر مثل ربات ها و یا هواپیماهای بدون سرنشین و ... که بیشتر مربوط به هوش مصنوعی میشه فکر کنم


c و ++c که بلد هستی کافی است و با جاوا هم که آشنا هستی دیگه بهتر !


اما برای تولید یک محصول همانند ECU یا " واحد کنترل موتور" که خودت مثال زدی نیاز داری یکسری روشها و پروتکلهای ارتباطی را تجربه داشته باشی و فقط برنامه نویسی c در میکرو تمام داستان نیست.

- نحوه کار و روش خواندن اطلاعات انواع سنسور در خودرو را باید آشنا باشی مثل سنسور جریان یا فشار و....
- بین کامپیوتر مرکزی اتومبیل و مثلا کنترل کننده فرمان و یا اجزا دیگر ممکن است از طریق CAN ارتباط برقرار شود که یک پروتکل ارتباطی رایج است در صنعت خودروسازی و باید با این پروتکل آشنا باشی
- در ECU ممکن است یک حافظه فلش باشد که از طریق I2C با میکرو ارتباط دارد و باید نحوه اتصال و نحوه انتقال اطلاعات را در این روش بدانی

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

یک مثال دیگر در مورد یک پروژه واقعی در خودرو :

تصور کن به عنوان یک برنامه نویس سخت افزار باید فرمان خودروهای جدید که در واقع با موتور الکتریکی کار می کند را پیاده سازی کنی
که شامل:
- یک موتور اصلی
- یک موتور پشتیبان (که در صورت خرابی اولی اتوموبیل باز هم قابل هدایت باشد)
- و یک موتور سومی که یک نیرویی خلاف موتور اصلی ایجاد می کند تا راننده در حین استفاده ار فرمان یک حالت سفت بودن فرمان را احساس کند.

به چه موضوعاتی احتیاج دارد؟

- زبان برنامه نویسی همان c می تواند باشد
- میکرو هر چه که دوست داری برای کارفرما این مهم نیست چه میکرویی استفاده می کنی بلکه کل سیستم باید درست کار کند.
- اما قسمت جالب داستان باید روش کنترل سیستمهای چند ورودی/چند خروجی MIMO که با کنترل کننده ساده PID تفاوت دارد را بلد باشی
- روش کنترل موتور الکتریکی را آشنا باشی
- روش پیاده سازی درایور برای موتورها را باید بدانی
- روش ارتباطی بین کنترل کننده فرمان و ECU ................

خلاصه کنم مطلب را :
زبان برنامه نویسی را که بلد هستی باید به سمت کاربردی خاص متمرکز کنی و موارد دیگری هم به اطلاعات خودت اضافه کنی تا بتوانی یک پروژه کاربردی را انجام دهی


از چه میکرو کنترولری استفاده کنم که بهترین باشه(هزینه زیاد مهم نیست!) و بعدا مجبور نشم برای انجام کارهای پیشرفته تر به میکروی دیگه ای منتقل بشم.

میکروکنترلر "بهترین" شاید زیاد عبارت درستی نباشد چون انتخاب میکرو مناسب بیشتر به نوع کار بستگی دارد اما کلا با میکروهای کوچک 8بیتی می توان خیلی مطالب پایه ای را یاد گرفت اما نهایتا در یک پروژه با توجه به قیمتهای مناسب و تکنولوژیهای جدید برای جاهایی که بخواهی الگوریتمی پیاده سازی کنی میکروهای 32 بیتی مناسب است.


نباید فراموش کرد که معمولا در یک پروژه بزرگ مجبوری چندین میکرو و پروسسوراستفاده کنی

به طور مثال :
فرض کن خلبان خودکار برای یک UAV کار کرده ای که چندین میکرو در آن باید استفاده شود برای صرفه جویی در مصرف باطریها نیاز داری یک سیستم مدیریت انرژی داشته باشی و وظیفه این بخش مدیدریت انرژی این است که بخشهایی که ضروری نیست در طول پرواز و نزدیک شدن به هدف خاموش باشد خوب در این موارد یک میکرو کوچک 8 بیتی که خودش مصرف انرژی کمی دارد می تواند وظیفه خاموش روشن کردن بقیه قسمتها را انجام دهد و در کنار بقیه میکروها یا پردازنده ها که کار موقعیت یابی و ارتباط مخابراتی و .... را انجام می دهند می تواند یک وظیفه ساده اما مهم را انجام دهد


از دیدگاه آموزشی هم اگر کسی بخواهد مثلا مفهوم اینتراپت را متوجه باشد یا مثلا نحوه عملکرد بوت لودر را ; با یک میکرو کوچک می توان این موارد را دقیق یاد گرفت اما اگر به سراغ میکرو arm که لینوکس بر روی آن پورت شده و مثلا بوت لودر آن U-Boot است دیگر چیز زیادی نمیتوان از آنچه "در پشت صحنه" اتفاق می افتد متوجه شد بنابراین همیشه شروع از مطالب ساده تر توصیه می شود.

برای کارهایی در آینده هم پیشنهاد می کنم یک برد ARM® Cortex™-A8 مثلا http://beagleboard.org/ یا هر مدل مشابه تهیه کن و اگر هم میخواهی زیاد هزینه نکنی یک Dockstar (http://www.seagate.com/www/en-us/products/network_storage/freeagent_dockstar/) را پیشنهاد می کنم که یک میکرو دارد با هسته arm و میتوان لینوکس بر روی آن نصب کرد (دقیق نمیدانم چه خانواده ای اما ظاهرا باید Marvell Feroceon باشد ) و با کمی حوصل میتوان یک برد arm داشت با حدود 20 یورو که بهترین انتخاب برای کاربرد آموزشی است و یا دستگاه های مشابه که در بازار هست و درون آن یک میکرو arm به کار رفته با کمی تغییر می توان هم کمی تجربه عملی کسب کرد و هم اینکه یک برد آموزشی خوب داشت.

prince0fpersia
دوشنبه 06 دی 1389, 12:11 عصر
سلام

1-

c و ++c که بلد هستی کافی است و با جاوا هم که آشنا هستی دیگه بهتر !


اما برای تولید یک محصول همانند ECU یا " واحد کنترل موتور" که خودت مثال زدی نیاز داری یکسری روشها و پروتکلهای ارتباطی را تجربه داشته باشی .

مثلا:
- نحوه کار و روش خواندن اطلاعات انواع سنسور در خودرو را آشنا باشی مثل سنسور جریان یا فشار و روش ارتباط سنکرون یا SPI را بدانی به چه نحو دیتا را به کامپیوتر مرکزی انتقال می دهد
- بین کامپیوتر مرکزی اتومبیل و مثلا کنترل کننده فرمان و یا اجزا دیگر ممکن است از طریق CAN ارتباط برقرار شود که یک پروتکل ارتباطی رایج است در صنعت خودروسازی
- درون ECU ممکن است یک حافظه فلش باشد که از طریق I2C با میکرو ارتباط دارد و باید نحوه اتصال و نحوه انتقال اطلاعات را در این روش بدانی

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

یک مثال دیگر در مورد یک پروژه واقعی در خودرو :

تصور کن به عنوان یک برنامه نویس سخت افزار باید فرمان خودروهای جدید که در واقع با موتور الکتریکی کار می کند را پیاده سازی کنی
که شامل:
- یک موتور اصلی
- یک موتور پشتیبان (که در صورت خرابی اولی اتوموبیل باز هم قابل هدایت باشد)
- و یک موتور سومی که یک نیرویی خلاف موتور اصلی ایجاد می کند تا راننده در حین استفاده ار فرمان یک حالت سفت بودن فرمان را احساس کند.

به چه موضوعاتی احتیاج دارد؟

- زبان برنامه نویسی همان c می تواند باشد
- میکرو هر چه که دوست داری برای کارفرما این مهم نیست چه میکرویی به کار بردی بلکه سیستم باید درست کار کند.
- اما قسمت جالب داستان باید روش کنترل سیستمهای چند ورودی/چند خروجی MIMO که با کنترل کننده ساده PID تفاوت دارد را بلد باشی
- روش کنترل موتور الکتریکی را آشنا باشی
- روش پیاده سازی درایور برای موتورها را باید بدانی
- روش ارتباطی بین کنترل کننده فرمان و ECU ................

خلاصه کنم مطلب را :
زبان برنامه نویسی را که بلد هستی باید به سمت کاربردی خاص متمرکز کنی و موارد دیگری هم به اطلاعات خودت اضافه کنی تا بتوانی یک پروژه کاربردی واقعی را انجام دهی

2-
میکروکنترلر "بهترین" شاید زیاد عبارت درستی نباشد چون انتخاب میکرو مناسب بیشتر به نوع کار بستگی دارد اما کلا با میکروهای کوچک 8بیتی می توان خیلی مطالب پایه ای را یاد گرفت اما نهایتا در یک پروژه با توجه به قیمتهای مناسب و تکنولوژیهای جدید برای جاهایی که بخواهی الگوریتمی پیاده سازی کنی میکروهای 32 بیتی مناسب است.


نباید فراموش کرد که معمولا در یک پروژه بزرگ مجبوری چندین میکرو و پروسسوراستفاده کنی

به طور مثال :
فرض کن خلبان خودکار برای یک UAV کار کرده ای که چندین میکرو در آن باید استفاده شود برای صرفه جویی در مصرف باطریها نیاز داری یک سیستم مدیریت انرژی داشته باشی که بخشهایی که ضروری نیست در طول پرواز و نزدیک شدن به هدف خاموش باشد خوب در این موارد یک میکرو کوچک 8 بیتی که خودش مصرف انرژی کمی دارد می تواند وظیفه خاموش روشن کردن بقیه قسمتها را انجام دهد و در کنار بقیه میکروها که کار موقعیت یابی و ارتباط مخابراتی و .... را انجام می دهند می تواند یک وظیفه ساده اما مهم را انجام دهد



از دیدگاه آموزشی هم اگر کسی بخواهد مثلا مفهوم اینتراپت را متوجه باشد یا مثلا نحوه عملکرد بوت لودر را ; با یک میکرو کوچک می توان این موارد را دقیق یاد گرفت اما اگر به سراغ میکرو arm که لینوکس بر روی آن پورت شده و مثلا بوت لودر آن U-Boot است دیگر چیز زیادی نمیتوان از آنچه "در پشت صحنه" اتفاق می افتد متوجه شد بنابراین همیشه شروع از مطالب ساده تر توصیه می شود.

برای کارهایی در آینده هم پیشنهاد می کنم یک برد ARM® Cortex™-A8 مثلا http://beagleboard.org/ یا هر مدل مشابه تهیه کن و اگر هم میخواهی زیاد هزینه نکنی یک Dockstar (http://www.seagate.com/www/en-us/products/network_storage/freeagent_dockstar/) را پیشنهاد می کنم که یک میکرو دارد با هسته arm و میتوان لینوکس بر روی آن نصب کرد (دقیق نمیدانم چه خانواده ای اما ظاهرا باید Marvell Feroceon باشد ) و با کمی حوصل میتوان یک برد arm داشت با حدود 20 یورو که بهترین انتخاب برای کاربرد آموزشی است و یا دستگاه های مشابه که در بازار هست و درون آن یک میکرو arm به کار رفته با کمی تغییر می توان هم کمی تجربه عملی کسب کرد و هم اینکه یک برد آموزشی خوب داشت.



ضمن تشکر از شما دوست عزیز .... پس میشه گفت زبان c بهترین زبان برای این کار هست؟ چون ما یادمه توی دانشگاه یک درسی داشتیم به اسم زبان ماشین و برنامه سازی سیستم که روی پردازنده های 8086 کار میکردیم و با زبون اسمبلی .... فکر میکنم دیگه این نوع پردازنده از دور خارج شده باشه درسته؟


الان من باید برم برنامه نویسی روی میکرو کنترولر هارو یاد بگیرم پس؟ ( این نحوه کار کردن با ورودی و خروجی ها و سنسور ها و .... هم شامل همین بخش میشه؟ یعنی برم یک کتابی راجع به نحوه برنامه ریزی میکروکنرولر x بخونم همه کارهایی که میشه با اون میکروکنترولر کرد رو یاد میگیرم دیگه؟) و بعدش میتونم اون میکرو رو به سنسور ها و لوازم جانبی که برنامه اش رو به میکرو دادم وصل کنم و مثلا یک ربات یا هرچیزی که میخوام رو سر هم کنم

فقط اینجا یک سوال میمونه .... من هر وسیله جانبی رو بخوام به میکرو وصل کنم (مثلا کیبرد کامپیوتر- موس کامپیوتر- وب کم و ...) باید برای اون میکرو درایور این قطعات رو هم برنامه نویسی کنم؟!! و این مستلزم دونستن سیستمی که توی هرکدوم از این قطعات به کار رفته نمیشه آیا؟!!

روی این میکرویی که گفتین روش لینوکس داره میشه از درایور های لینوکس هرکدوم از این قطعات که مثال زدم استفاده کرد؟ (منظورم درایور هایی هستش که وقتی اینهارو به یک pc معمولی وصل میکنیم روش نصب میکنیم)

بهتره اینطور بپرسم این لینوکس همون لینوکسی هست که روی کامپیوترها هم نصب میشه؟!! (یعنی میکروی ما تبدیل به یک pc میشه؟! ((البته مسلما با قدرت خیلی کمتر)) )

Mehran.GH
دوشنبه 06 دی 1389, 15:03 عصر
- دروسی که در دانشگاه اموزش داده می شود بیشتربا هدف یادگیری مفاهیم است و طبیعی است که نباید انتظار زیادی داشت به هر حال 8086 را فراموش کن

- همان c و ++c و جاوا که بلد هستی عالی است و برای میکروها هم تمرکز روی C است

- هر برد آموزشی که تهیه کنی معمولا یک سایت مرجع دارد که جزییات کامل را توضیح داده و معمولا یک wiki هم دارند و از همه مهمتر گروه های فعال هستند در اینترنت که به بحث و تبادل نظر مشغولند و پروژهای خودشان را معرفی می کنند و بعضی پروژه ها همopensource است که می توانی دانلود کنی و اگر دوست داشتی تغییر بدهی و تکمیل کنی.

حالا چون Beagleborad را مثال زدم درباره این برد سایت اصلی خودش توضیح کامل دارد و wiki (http://elinux.org/BeagleBoard) هم دارد و بخش پروژه های آن هم کاربران فعالی دارد مثلا ربات که نوشتی یک نمونه http://mechomaniac.com/robots

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


باید خودت تصمیم بگیری که چقدر میخواهی هزینه کنی و امکان تهیه چه بردی را در محل زندگی داری و بعد در کنار مطالعه , موضوعات مورد نظرت را با نوشتن کدهای نمونه در برد آموزشی تست کنی
مطاله کتاب خیلی خوب است اما کتابی که حالت کاربری توضیح داده باشد نه اینکه معماری میکرو را 300 صفحه توضیح دهد و بعد هم 200 صفحه پینها و رجیسترهای میکرو را رمان نویسی کند!!

- راجع وسیله جانبی هم (درباره بردی که لینوکس نصب شده) می توانی از درایورهای لینکوس استفاده کنی
البته در لینکوس درایور دو لایه دارد Kernel Space و User Space که اگر بخواهم توضیح مختصر بدهم بسیاری درایورهای مورد نیاز را باید فقط در کرنل فعال کنی و نحوه استفاده را در همان wiki مربوطه مطالعه کنی اما بعضی موارد پیشرفته ممکنن است در آینده برایت پیش بیاد که مثلا یک شتاب سنج در ربات پرنده داری که چندین اطلاعات مختلف را می فرستد و یکسری پارامترها را می گیرد و ... که در این موارد باید یک درایور در لایه User Space خودت بنویسی که زبان برنامه نویسی همان c است و در آینده هر وقت در این مرحله مشکل داشتی باز می توان بیشتر توضیح داد اما برای شروع فعلا نیازی نداری.

این Beagleboard توانایی خیلی زیادی دارد و کلا موجود جالبی است در حقیقت همانند یک کامپیوتر کوچک است که مانیتور و ماوس و .... هم به آن متصل می شود

http://i52.tinypic.com/34hazpf.jpg



درباره سوال آخر هم لینوکس یک ویژگی جالب دارد که مادولار است و هر بخشی را که لازم داری می توانی تعریف کنی و تفاوت این لینوکس که در میکرو است با لینوکس در PC قابلیتهای گرافیکی در لینوکس عادی است , البته لینوکس باید برای این پروسسور خاص پورت شده باشد مثلا لینوکس برای arm داریم و یا x86 و .... اما این موارد قبلا به وسیله دیگران انجام شده و نیازی نداری فکرت را درباره این موارد مشغول کنی.
جدیدا android که سیستم عامل گوگل است هم برای arm پورت شده ولی کلا اینکه چه لینوکسی استفاده کنی در سایتهای "مربوط به همان برد خاص" کامل توضیح داده اند و راجع به لینوکسهای Debian یا OpenWRT یا Gentoo اگر در آینده سوال داشتی بیا همینجا بپرس

prince0fpersia
دوشنبه 06 دی 1389, 17:25 عصر
به عنوان سوال آخر ....میشه یک لیستی از چیزهای پایه ای که باید بخرم و حدود قیمت و اینکه از کجا باید بخرم بهم بدی

خیلی خیلی ممنون میشم .... از راهنمایی های خوبی هم که تا الان کردی بازم تشکر میکنم

Mehran.GH
دوشنبه 06 دی 1389, 19:36 عصر
به عنوان سوال آخر ....میشه یک لیستی از چیزهای پایه ای که باید بخرم و حدود قیمت و اینکه از کجا باید بخرم بهم بدی



اگر ایران هستی در مورد قیمت و اینکه از کجا تهیه کنی نمیتونم کمک کنم چون هیچ اطلاعی درباره بردهای آموزشی قابل تهیه در ایران ندارم! فعلا هم اگر تصمیم گرفتی با میکرو 32 بیتی کار کنی و لینکوس که صحبت کردیم , یک برد اموزشی arm نیاز داری که حالا روی sdcard یا flash برد مورد نظر لینوکس نصب شده باشد و لیست خاصی نیاز نداری.

پیشنهاد می کنم از farzadsw سوال کنی ببینی چه بردی در ایران ساخته می شود و به چه نحو میتوان تهیه کرد.

farzadsw
چهارشنبه 08 دی 1389, 14:59 عصر
با تشکر از آقا مهران بابت توضیحات کاملشون ،
اگر میخواید با سیستم عامل کار کنید یا باید برید سراغ ARM9 یا ARM Cortex-A8 . برای اینا توی تهران (تقاطع جمهوری و جافظ) این برد ها رو میشه پیدا کرد :

1. mini2440 : برد بر اساس پردازنده ARM9 سامسونگ هست (S3C2440 ) . قیمتش حدود 180-200 هزار تومانه . i/o های نسبتا کاملی داره (جزییاتش رو از اینترنت ببینید) و همراش یه lcd چهار اینچ هست و بنابراین نیازی به اتصال به مانیتور ندارید . البته برای اتصال به مانیتور باید یه ماژول جداگانه تهیه کنید .
فرکانس کاری پردازندش حدود 400 مگا هرتز هست و با رم و فلشهای مختلفی ارائه میشه (64 مگ تا 256 مگ) . در کل بین سایر arm9 های موجود بازار سرعت و عملکرد بهتری داره (هرچند تو ایران انتخابهای زیادی هم وجود نداره) .

2. Beagle Board : توضیحات این بورد رو آقا مهران دادن ، سرعت و عملکرد و ابعادش واقعا عالی هست . این بورد رو هم تو تهران (همون تقاطع...) حدود 300 هزار تومن میفروشن.

3. devBoard (اگه اشتباه نکرده باشم) : این بورد هم مثل BeagleBoard از چیپ omap3530 استفاده کرده (ARM Cortex-a8 ) و سرعت و عملکردش مشابه همون هست فقط ابعادش بزرگتره و i/o های بیشتری داره و قیمتش هم یکم گرونتره.

به غیر اینا بوردهای دیگه ای هم پیدا میشه ، مثل یه بورد برای ARM11 از شرکت Friendly ARM (همون شرکتی که mini2440 رو ساخته) ولی قیمتش نزدیک به beagleboard هست ، در حالی که arm11 در برابر ARM Cortex-a8 خیلی ضعیفتر هست (خصوصا با امکانات جانبی omap3530) .

در کل اگه مشکل محدودیت مالی ندارید ، به نظر من بهترین انتخاب beagleboard هست ، چون علاوه بر سرعت بالا و ابعاد کوچیک (یعنی به راحتی تو هر پروژه ای میتونید ازش استفاده کنید) ، منابع و سورس کد براش بیشتر از بقیه هست . اگر beagle Board پیدا نگردید devbaord و یا بردهای دیگه ای که بر اساس omap3530 هست انتخاب مناسبیه . mini2440 هم با توجه به قیمت و امکاناتش ، برای شروع کار با embedded os ها گزینه بدی نیست ولی نباید انتظار پردازش بالایی ازش داشته باشید (beagleboard , devboard بیش از 4 برابر سریعتر هستند) .

* این قیمتهایی که من گفتم مربوط به 6 ماه پیش هست و با توجه به ثبات اقتصادی کشور عزیزمون ، خودتون بهتر میدونید که به احتمال زیاد تغییر کرده اند.

-----------------------------

اما اگه دنبال سیستم عامل نیستید و با مقدمات کار با پروسسور ها آشنایی نسبتا خوبی دارید (همون 8086) ، به نظر من بهتره برید سراغ ARM Cortex-m3 (از این لحاظ که بعدا زیاد پلتفورمتون رو تغییر ندید). چون این سری از پردازنده ها جایگزین خوبی برای arm7tdmi هستند اما مشکل اصلیشون ، کم بودن منابع آموزشی (خصوصا فارسی) و سخت تر پیدا شدن ic و بوردشون تو بازار هست. اگر با مواردی که گفتم مشکلی ندارید ، به نظر من بهترین انتخاب هستند (سری stm32f103 از STmicro و lpc11 از nxp)
اگر میبینید شروع کردن کار با cortex-m3 سخته ، میتونید استارت کار رو با AVR یا PIC بزنید (کاری که همه میکنند) و بعد برید سراغ میکرو های قوی تر.

در کل انتخابهای بسیار بسیار زیادی برای کار با میکرو های بدون سیستم عامل (8 و 32 بیتی) دارید مثل :
ATTiny ، ATMega و ATXmega از سری avr که هر کدومشون هم چنیدین مدل دارند . همینطور PIC16 , PIC18 .... PIC32 از سری PIC و انواع میکرو های ARM7TDMI از اتمل و nxp و ... و انواع ARM Cortex-m3 و ...... و حتی میکرو های دیگه ای که زیاد تو ایران پیدا نمیشه (FreeScale , TI و...) . بنابراین با توجه به امکاناتی که نیاز دارید باید تصمیم بگیرید از کدومشون استفاده کنید مثلا برای یه ربات تعقیب خط از arm cortex-m3 استفاده نمیکنن (چون یه Atmega هم کار رو به خوبی انجام میده) ولی برای autoPilot گزینه بسیار مناسبی هست.

prince0fpersia
جمعه 10 دی 1389, 10:34 صبح
با تشکر از آقا مهران بابت توضیحات کاملشون ،
اگر میخواید با سیستم عامل کار کنید یا باید برید سراغ ARM9 یا ARM Cortex-A8 . برای اینا توی تهران (تقاطع جمهوری و جافظ) این برد ها رو میشه پیدا کرد :

1. mini2440 : برد بر اساس پردازنده ARM9 سامسونگ هست (S3C2440 ) . قیمتش حدود 180-200 هزار تومانه . i/o های نسبتا کاملی داره (جزییاتش رو از اینترنت ببینید) و همراش یه lcd چهار اینچ هست و بنابراین نیازی به اتصال به مانیتور ندارید . البته برای اتصال به مانیتور باید یه ماژول جداگانه تهیه کنید .
فرکانس کاری پردازندش حدود 400 مگا هرتز هست و با رم و فلشهای مختلفی ارائه میشه (64 مگ تا 256 مگ) . در کل بین سایر arm9 های موجود بازار سرعت و عملکرد بهتری داره (هرچند تو ایران انتخابهای زیادی هم وجود نداره) .

2. Beagle Board : توضیحات این بورد رو آقا مهران دادن ، سرعت و عملکرد و ابعادش واقعا عالی هست . این بورد رو هم تو تهران (همون تقاطع...) حدود 300 هزار تومن میفروشن.

3. devBoard (اگه اشتباه نکرده باشم) : این بورد هم مثل BeagleBoard از چیپ omap3530 استفاده کرده (ARM Cortex-a8 ) و سرعت و عملکردش مشابه همون هست فقط ابعادش بزرگتره و i/o های بیشتری داره و قیمتش هم یکم گرونتره.

به غیر اینا بوردهای دیگه ای هم پیدا میشه ، مثل یه بورد برای ARM11 از شرکت Friendly ARM (همون شرکتی که mini2440 رو ساخته) ولی قیمتش نزدیک به beagleboard هست ، در حالی که arm11 در برابر ARM Cortex-a8 خیلی ضعیفتر هست (خصوصا با امکانات جانبی omap3530) .

در کل اگه مشکل محدودیت مالی ندارید ، به نظر من بهترین انتخاب beagleboard هست ، چون علاوه بر سرعت بالا و ابعاد کوچیک (یعنی به راحتی تو هر پروژه ای میتونید ازش استفاده کنید) ، منابع و سورس کد براش بیشتر از بقیه هست . اگر beagle Board پیدا نگردید devbaord و یا بردهای دیگه ای که بر اساس omap3530 هست انتخاب مناسبیه . mini2440 هم با توجه به قیمت و امکاناتش ، برای شروع کار با embedded os ها گزینه بدی نیست ولی نباید انتظار پردازش بالایی ازش داشته باشید (beagleboard , devboard بیش از 4 برابر سریعتر هستند) .

* این قیمتهایی که من گفتم مربوط به 6 ماه پیش هست و با توجه به ثبات اقتصادی کشور عزیزمون ، خودتون بهتر میدونید که به احتمال زیاد تغییر کرده اند.

-----------------------------

اما اگه دنبال سیستم عامل نیستید و با مقدمات کار با پروسسور ها آشنایی نسبتا خوبی دارید (همون 8086) ، به نظر من بهتره برید سراغ ARM Cortex-m3 (از این لحاظ که بعدا زیاد پلتفورمتون رو تغییر ندید). چون این سری از پردازنده ها جایگزین خوبی برای arm7tdmi هستند اما مشکل اصلیشون ، کم بودن منابع آموزشی (خصوصا فارسی) و سخت تر پیدا شدن ic و بوردشون تو بازار هست. اگر با مواردی که گفتم مشکلی ندارید ، به نظر من بهترین انتخاب هستند (سری stm32f103 از STmicro و lpc11 از nxp)
اگر میبینید شروع کردن کار با cortex-m3 سخته ، میتونید استارت کار رو با AVR یا PIC بزنید (کاری که همه میکنند) و بعد برید سراغ میکرو های قوی تر.

در کل انتخابهای بسیار بسیار زیادی برای کار با میکرو های بدون سیستم عامل (8 و 32 بیتی) دارید مثل :
ATTiny ، ATMega و ATXmega از سری avr که هر کدومشون هم چنیدین مدل دارند . همینطور PIC16 , PIC18 .... PIC32 از سری PIC و انواع میکرو های ARM7TDMI از اتمل و nxp و ... و انواع ARM Cortex-m3 و ...... و حتی میکرو های دیگه ای که زیاد تو ایران پیدا نمیشه (FreeScale , TI و...) . بنابراین با توجه به امکاناتی که نیاز دارید باید تصمیم بگیرید از کدومشون استفاده کنید مثلا برای یه ربات تعقیب خط از arm cortex-m3 استفاده نمیکنن (چون یه Atmega هم کار رو به خوبی انجام میده) ولی برای autoPilot گزینه بسیار مناسبی هست.


سلام دوست عزیز ....ضمن تشکر

میخواستم اگر لطف کنید تفاوت های میکرو های با سیستم عامل و بدون سیستم عامل رو بگید و اینکه چه سیستم عامل یا سیستم عاملهایی میشه روی اینها نصب کرد؟ و آیا میشه واسشون سیستم عامل هم نوشت؟ و اینکه روی این سیستم عامل ها قاعدتا باید بشه یک سری برنامه هایی رو هم نصب کرد دیگه؟

کلا برای چه کاربردهایی از کدوم سری میکرو ها استفاده میشه

اگر یک مقایسه جامعی بفرمایید و به سوالاتی که پرسیدم پاسخ بدید واقعا ممنون میشم

farzadsw
جمعه 10 دی 1389, 15:11 عصر
سیستم عاملهایی که میشه روی اینا نصب کرد باید برای پلتفورم ARM پورت شده باشن. مثلا از خانواده linux ، توزیع های debian , ubunto , fedora , Angestrom و یسری دیگه برای arm (ورژنهای مختلف ARM) پورت شدن که میتونید از اونا استفاده کنید . در خانواده ویندوز هم WinCE , WindowsXP Embedded رو میشه بر روی arm9 و بالاتر نصب کنید. سیستم عاملهای دیگه ای با کار برد خاص(مثل شیکه) + پورت کردن سیستم عامل دلخواه توسط خودتون(توصیه نمیشه!) + نوشتن سیستم عامل!(توصیه نمیشه) رو هم میتونید در نظر داشته باشید.
باید ببینید هدفتون چیه ؛ اگه مثلا ساحت یه سرور شبکه هست ، پورت کردن سیستم عامل یا نوشتن سیستم عامل توجیه منطقی نداره ، چون سیستم عامل برای این کار به صورت آماده وجود داره.

فرق یه دستگاه با سیستم عامل و بدون سیستم عامل ،همونطوری که خودتون میدونید،توی سهولت استفاده برای کاربر ، توسعه سریعتر نرم افزار و محیط گرافیکی(نه لزوما) هست. بنابراین وقتی قرار نیست کسی پشت دستگاه بشینه (کار های رباتیک و اتوماسیون) و یا نرم افزار های مختلف و متنوعی روی دستگاه نصب بشه ، نیازی به استفاده از سیستم عامل (سیستم عامل های عمومی مثل ویندوز و linux های desktop ) نیست.
میکرو(پروسسور)هایی که میشه روشون سیستم عامل نصب کرد (mmu دارند)، عموما سرعت بیشتری دارند ، به مدارات پیچیده تری نیاز دارند ، مصرف انرژی بیشتری دارن . بنابرابن باعث افزایش هزینه ، ابعاد و وزن محصول نهایی میشن. ولی میکرو(کنترلر)هایی که سیستم عامل روشون نصب نمیشه (mmu ندارن) برعکس : مصرف کم ، امکانات جانبی زیاد(مدار جانبی کم و ساده تر) ، ارزان و البته با قدرت پردازش کمتری هستند.
* روی میکروهایی که mmu ندارند (مثل arm7 و...) میشه یک سری سیستم عاملهای خاص (مثل RTOS ها) رو اجرا کرد و منظور از اینکه روی یه میکرو میشه سیستم عامل نصب کرد ، سیستم عاملهایی مثل linux , windows ,android,symbian , ... هست.

با توجه به مواردی که گفتم میشه این نتیجه رو گرفت که اگه نیاز به رابط کاربری گرافیکی (مثل pda ها) ، اجرای نرم افزار های سطح بالا (tcp/ip , .netframework ,.. ) ، قدرت پردازش بالا ( پردازش سیگنال یا تصویر) و مواردی از این دست هست ؛ از میکرو پروسسور ها (همون میکرو هایی با mmu ) استفاده میشه .
برای مواردی که مصرف کم انرژی(مثل ساعت ، سنسور نتورکینگ و ..) ، هزینه پایین(محصولات تجاری و تولید انبوه مثل اسباب بازی ، ماشین حساب و...) ، قابلیت اطمینان بالا ( ربات های مختلف ، سیستم auto pilot ,....) لازم هست ، از میکرو کنترلر ها استفاده میشه.
معمولا در سیستم های پیچیده از ترکیب این دوتا در کنار هم استفاده میشه . مثلا رباتی که پردازش تصویر داره ، از یه میکرو کنترلر برای درایو موتور و ارتباط با سنسور ها استفاده میشه و از یه میکرو پروسسور برای پردازش تصویر ویا اچرای الگوریتمهای پیچیده .
یا مثلا برای autopilot از یه میکرو کنترلر برای خوندن سنسور ها و کنترل موتور ها و پایدار سازی سیستم استفاده میشه و یه میکروپروسسور برنامه های سطح بالا (user interface و مسیر یابی و اتصال به اینترت ...) رو اجرا میکنه . به این ترتیب میشه به راحتی برنامه و فابلیت های autopilot رو توسعه داد.

*در مواردی که زمان بندی و قابلیت اطمینان خیلی مهم و حساس هست (مثل همون auto pilot ، کروز کنترلر ، کنترل فشار و دمای دیگ بخار و...) از سیستم عاملهای بلادرنگ استفاده میشه نه سیستم عاملهایی مثل linux , windows جنرال، چون در صورت بروز خطا (هنگ کردن ، تاخیر و...) اتفاقات بدی میوفته !

mdshakeri
چهارشنبه 16 شهریور 1390, 01:52 صبح
سلام
من رفتم دیروز این beagleboard رو گیر اوردم قیمتشم 340 هزار تومن بود اما مشکل اساسی اینه که به بسته بندیش نمیخورد از خارج از کشور اومده باشه یک کارتن درپیت با یه لیبل بی کیفیت داشت هیچی دیگه ای هم جز دو تا ضربه گیر ابری همراهش نبود...کلا همینجوریه؟شما قبلا خریدی ازینا؟امکانش هست تو ایران (تو چین !!) درست شده باشه....

farzadsw
پنج شنبه 17 شهریور 1390, 17:22 عصر
تو ایران که محاله ساخته شده باشه (اگه ساخته بشه حدود 500 هزارتومن برای تولید کننده تمام میشه) . من نمونه چینی اش رو هم ندیدم . چینیها با توجه مدارش از روش بردهای دیگریبا سخت افزار مشابه ولی بورد با شکل متفاوت ساختند ولی دقیقا عین خود بیگل تا اونجایی که من دیدم ندارن.
حدس من اینه که اینا برای اینکه هزینه پستیشون کمتر بشه ، موقع حمل جعبه ها و بسته بندی رو انداختن دور و به صورت فله ای آوردن . بعد اینجا تو جعبه خودشون دوباره بسته بندی کردن . اینکار غیر از هزینه یه مزیت دیگه هم براشون داره که اسم و جعبه خودشون رو استفاده می کنن.

Mehran.GH
جمعه 18 شهریور 1390, 04:40 صبح
سلام
من رفتم دیروز این beagleboard رو گیر اوردم قیمتشم 340 هزار تومن بود اما مشکل اساسی اینه که به بسته بندیش نمیخورد از خارج از کشور اومده باشه یک کارتن درپیت با یه لیبل بی کیفیت داشت هیچی دیگه ای هم جز دو تا ضربه گیر ابری همراهش نبود...کلا همینجوریه؟شما قبلا خریدی ازینا؟امکانش هست تو ایران (تو چین !!) درست شده باشه....


بسته بندی beagleboard زیاد مرغوب نیست و این مدلی است :

http://s4.postimage.org/1u751n7l0/image.jpg (http://postimage.org/image/1u751n7l0/)

محتوا ی جعبه هم فقط یک Sdcard و یک beagleboard



اما یکسری Clone هم ازش هست مثلا مدلی که شرکت EBV دارد کیفیت متفاوت است.

http://s4.postimage.org/1u7vi8rhg/image.jpg (http://postimage.org/image/1u7vi8rhg/)

محتوای بسته

http://s4.postimage.org/1u83rxhyc/image.jpg (http://postimage.org/image/1u83rxhyc/)
که البته قیمت هم بالاتر است.


مبلغ 340 هزار تومان برای همان برد اصلی که اشاره کرده کمی تعجب آور است , الان نگاه که کردم در سایت digikey حدود 137 یورو فکر کنم حدود 220 هزار تومان . این نوع بردها را اگر امکانش برایت باشد از طریق خارج از ایران تهیه کنی از نظر هزینه توجیه بذیر تر است.

jblaox
شنبه 19 شهریور 1390, 09:23 صبح
سلام
من رفتم دیروز این beagleboard رو گیر اوردم قیمتشم 340 هزار تومن بود اما مشکل اساسی اینه که به بسته بندیش نمیخورد از خارج از کشور اومده باشه یک کارتن درپیت با یه لیبل بی کیفیت داشت هیچی دیگه ای هم جز دو تا ضربه گیر ابری همراهش نبود...کلا همینجوریه؟شما قبلا خریدی ازینا؟امکانش هست تو ایران (تو چین !!) درست شده باشه....

سلام

من هم یک برد پاندا (http://barnamenevis.org/pandaboard.org) دارم ، مثل شما فقط یک جعبه مقوایی با خود برد و دو تا پلاستیک ضربه گیر و دیگر هیچ ! ولی خوب من اطمینان دارم که چینی نیست چون مستقیم از خود آمریکا خریدم و مسافر برام آورد کلا همینجوری ....

فکر نمیکنم این ها چینی باشند ، اگر شک دارید کافی در youtube سرچ کنید : Unboxing PandaBoard یا Unboxing beagleboard


راستی 340 تومن برای کدوم مدل ، امیدوارم xM باشد. این ها چند مدل دارند که مدل xM در امریکا 200 دلار قیمت داره ، و مدل معمولی 150 دلار که اگر به ریال تبدیل کنی و 65% هم هزینه پست و ... را اضافه کنید قیمت منصفانه بدست آوردید . فکر کنم در پاساژ فرشته بتوانید فروشنده منصف پیدا کنید .

موفق باشید

mdshakeri
شنبه 19 شهریور 1390, 16:47 عصر
اینجا چه زود جواب میدن!! خیلی خوبه:تشویق:
همون مدل xm بود بسته بندیشم مثل همون عکس اولی که آقا مهران گذاشتس(همینم با کلی گشتن گیر اوردم)...من امکان خرید از خارج کشور رو ندارم یه چیزی که بود موقع خرید فروشنده گفت "آقای سپاس یار" گفتن هرکی برد رو خرید و سوال داشت شمارشو داده باهاش تماس بگیریم:متفکر:به نظر من 340 تو ایران منصفانه است :گریه: البته اگه برد کار کنه. تو یه سایت دیدم قیمت گذاشته بود 480 تومن:متعجب:
آقا این پاساژ فرشته که میگی کدومه؟؟من این برد رو تو یه مغازه فقط تونستم پیدا کنم. کوچه خیلی باریکی که بعد پاساژ امجد...

jblaox
شنبه 19 شهریور 1390, 18:20 عصر
اینجا چه زود جواب میدن!! خیلی خوبه:تشویق:
همون مدل xm بود بسته بندیشم مثل همون عکس اولی که آقا مهران گذاشتس(همینم با کلی گشتن گیر اوردم)...من امکان خرید از خارج کشور رو ندارم یه چیزی که بود موقع خرید فروشنده گفت "آقای سپاس یار" گفتن هرکی برد رو خرید و سوال داشت شمارشو داده باهاش تماس بگیریم:متفکر:به نظر من 340 تو ایران منصفانه است :گریه: البته اگه برد کار کنه. تو یه سایت دیدم قیمت گذاشته بود 480 تومن:متعجب:
آقا این پاساژ فرشته که میگی کدومه؟؟من این برد رو تو یه مغازه فقط تونستم پیدا کنم. کوچه خیلی باریکی که بعد پاساژ امجد...

سلام

همان جا است دیگه قبل از این که بروید در داخل کوچه(پاساژ) بالای سر خودتان را نگاه کنید :لبخند: ، البته احتمالا .

شما قیمت یا از جهان کیت (http://barnamenevis.org/jk-sensor.com) گرفتی یا بل الکتریک (http://barnamenevis.org/bel-elc.com) ، که من این مدل xM پشت پنجره آن بل الکتریک دیدم ، ببین پاندا داره یا نه چون پاندا هم همون قیمت در جهان و اگر به همون قیمت پیدا کنید پاندا برتری بیشتری نسبت به بیگلی دارد ، هرچند در دنیا پاندا خیلی کمتر هست ، من میخواستم از بلاد کفر بگیرم سفارشم (یک عدد) در صف تولید این شرکت texas int... مونده بود ، شانسی یکی سفارش عمده داد برای من هم قاطی باقالی ها ....

اگر یک مقدار دیگه هزینه کنی میتوانید گزینه های خیلی خیلی بهتری داشته باشید البته منابع آموزشی خاصی ندارند (همون X86) برمبنای پردازنده های اینتل یا AMD هستند و ارزان ارزان های آن ها بر مبنای ARM هستند که inel و AMD یک سر گردن از OMAP قوی تر هستند ، به دنبال Embedded PC یا Single-Board برگرد ...

این ها مثال های هستند : اینجا (http://www.beckhoff.com/english.asp?motherboards/default.htm) را نگاه کنید ، نمایده آنها در ایران این (http://www.nicmehr.com/productslist-fa.asp?Content_ID=59) است و ...

کلا نماینده اکثر این Single-Board یا Embedded PC های با پدر و مادر دار و معروف را میتوانید در ایران نمایندشون در اینجا (http://www.cnckaran.com/Device/Electric/computerpage.asp) پیدا کنید .

موفق باشید

ali208
شنبه 19 شهریور 1390, 19:29 عصر
با سلام
دوستان نظراتی کاملی دادند. به نظر من دنبال منابع فرسی نباشید چون اخرش به بن بست میرسی. اگر دانشجوی سالهای اول لیسانس هستی وفت بزار برای یاد گیری زبان که از هر چیزی واجب تره. در مورد برد های اموزشی گزینه های زیادی هستش که به نظرم حتما با 32 بیتی شروع کن. مثلا خانوادهARM از شرکت ATMEL . هدر برد هایش را می تونی از www.eca.ir تهیه کنی که برای شروع خوب هستن. برای طراحی embedded system حتما دانش سخت افزار را باید بالا ببری که بهترین منابعش زبان اصلی هستن. در مورد منبع فارسی برای ARM کتاب مرجع کامل میکروکنترهای ARM سری AT91 از انتشارات نص بدک نیست. یه سری هم به www.iranmicro.ir بزن . و مجلات pmm را دانلود کن که برنامه نویسی و سخت افزار AT91sam7x256 را قدم به قدم توضیح داده.
موفق باشد.

mdshakeri
دوشنبه 21 شهریور 1390, 11:52 صبح
از همون بل الکترونیک قیمت کردم...اگه بشه پاندا رو گیر اورد بخاطر به روزتر بودنش بهتر از بیگله ولی بیگل برد پروژه های بیشتری براش نوشته شده برا همین بیشتر میتونه تو آموزش کمک کنه چون هدف از خرید اینجور بردا آموزشه...

jblaox
سه شنبه 22 شهریور 1390, 00:17 صبح
از همون بل الکترونیک قیمت کردم...اگه بشه پاندا رو گیر اورد بخاطر به روزتر بودنش بهتر از بیگله ولی بیگل برد پروژه های بیشتری براش نوشته شده برا همین بیشتر میتونه تو آموزش کمک کنه چون هدف از خرید اینجور بردا آموزشه...

پاندا هم در وطن یافت می شود اما قیمت 2 برابر قیمت جهانی :

اینجا را نگاه کن : http://esys.ir/product/?p=198 داره میده 575 تومان (http://esys.ir/product/Files/PriceList/Esys-PriceList.RAR) که خیلی زیاد چون قیمت جهانی آن حداکثر 174+10 $ است که خیلی خیلی غیر منصفانه است .

mdshakeri
سه شنبه 22 شهریور 1390, 22:59 عصر
با عرض پوزش از تمامی دوستان بدینوسیله اعلام می شود که beagleboard-xM با قیمت 450 هزار تومان در فروشگاه بل عرضه می شود و فروشنده از روی اشتباه (!!) قیمت beagleboard معمولی را به اینجانب داده بودند (340 هزار تومان) که حتی فاقد پورت Rj45 می باشد....این درحالیست که در http://www.iran-module.ir/index.php/cPath/21_54/pname/Beagle قیمت مدل xM و معمولی را بترتیب 337 و 550 هزار تومان و همچنین در http://esys.ir/product/?p=197&img=1 مدل معمولی این برد را 480 هزار تومان قیمت گذاری کرده اند...اگر کسی تونست از شیوه قیمت گذاری مراکز فوق اطلاعی کسب کنه این بنده رو هم بی خبر نذاره شاید ازین شوک خارج شدم:متعجب::متعجب:
خدایا خودت به فریاد ما برس...آقا مهران ما رو آلمان راه نمیدن بیایم اونجا؟؟؟:گریه::گریه:

R_BABAZADEH
دوشنبه 08 اسفند 1390, 18:17 عصر
میتونی یه سیستم با آرم 11 و چیپ 6410 سامسونگ با ال سی دی رنگی 7 اینچ و windows ce6 رو از ادرس زیر بگیری من گرفتم قیمتش هم مناسبه دارم الان باهاش کشتی میگیرم تا بتونم با vb.net براش برنامه بنویسم

www.icrec-co.com

fjp1369
شنبه 29 تیر 1392, 13:45 عصر
salam. mikhastam rajebe ecu azatoon ye soal beporsam.mishe be vorodii ecu sensor jadidi vasl kard va badesh barnameye ecu ro ye meghdar taghir dad ta mashin ba oon sensore jadidi ke vash gozashtim ham kar kone??
mamoolan pardazandeye ecu ha az che modelii hastesh?
mamnoon misham j bediid