آردوینو, توصیه شده, مقاله های سیسوگ

آردوینو خوب، بد، زشت ! همه چیز درباره آردوینو

آردوینو خوب بد زشت

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

واقعا درک‌ این مساله برای من سخته که طرفداران این مجموعه متن باز چنین افراطی با مساله وجودی آردوینو برخورد می‌کنند و البته جبهه مقابل هم همین‌طور برخورد می‌کنند. این گونه برخورد واقعا منو یاد بحث هایی می اندازه که هفت، هشت سال پیش طرفدارهای میکروکنترلر AVR با طرفدارهای PIC می کردند و اینقدی که بحث بالا می‌گرفت که گویی نفرات خود طراح و تولید کننده این مدل چیپ ها هستند! در واقع به شخصه فکر می‌کنم داشتن چنین تعصباتی بیشتر از آن که نشان آگاهی و دانش باشد بیشتر نشان از جهل و نا آگاهی دارد ! بگذارید پرحرفی را کنار بگذاریم و برویم سر بحث اصلی یعنی آردوینو ! توی این مقاله سعی می‌کنیم با رویکرد متفاوتی که تا کنون باهاش مواجه بودیم پدیده آردوینو رو بررسی کنیم ! یعنی خوب، بد و زشت (اشاره به فیلم The Good, the Bad, and the Ugly با بازی عالی کلینت ایستوود). توصیه می‌کنم حتی اگر چشم دیدن آردوینو رو هم ندارید این مقاله رو از دست ندید چون خواهیم گفت چرا آردوینو خوب است و حتی اگر عاشق آردوینو هستند باز این مقاله رو از دست ندید! چون می‌گوییم چرا آردوینو بد است و در اخر به زشت بودن مسائلی می‌پردازیم که چند وقته گریبان گیر جامعه الکترونیک شده است و زیاد هم بی ربط به آردوینو نیست.

بهتر است اول با خوب شروع کنم و بعد به سراغ بد و زشت برویم 🙂 . با سیسوگ همراه باشید.

THE GOOD

آردوینو خوب !

آردوینو Open Hardware است

آردوینو Open Hardware استاگر از کهنه سربازهای حوزه الکترونیک باشید به خوبی به یاد دارید تا قبل از این که آردوینو پا به عرصه وجودی بگذارد ؛ همیشه یک مدار نیم بند از یک میکروکنترلر معرف مثل ATmega8/32 یا PIC16/18 را بروی برردبرد یا بررابرد داشتیم تا در کمترین زمان ممکنه قادر باشیم تست های برنامه نویسی روشون داشته باشیم و بدترین قسمت کار هم این بود که قصد راه اندازی یک آیسی حافظه یا یک سنسور را داشتید که DIP نبود و نمی‌شد آن را روی برردبرد قرار داد، تازه باید وارد بازی پیچیده طراحی PCB و چاپ برد و … می‌شدید و فاجعه وقتی بود که می دیدید برد را برعکس (mirror) زده اید 😐 تازه این همه ماجرا نیست ، فکر کنید در یک شهر کوچک زندگی می‌کردید که دسترسی به قطعات و مراکز چاپ برد نداشتید!

به جرات میتوان گفت که آردوینو به این کابوس ها پایان داد !

در واقع طراحی ماژولار این مجموعه متن باز (Open Source) باعث شده که اگر امروز قصد کنید سنسور یا آیسی خاصی را راه اندازی کنید به سادگی با مراجعه به بازار الکترونیک ماژول آن را خریداری کنید. واقعا چی بهتر از این ! دیگر نیازی نیست برد طراحی کنید کلی داکیومنت مطالعه کنید تا قطعات جانبی و مدار راه انداز اولیه را طراحی کنید ؛ قبلا تمام این کارها انجام شده است، تنها کاری که لازم است انجام دهید تهیه و اتصال آن به میکروکنترلر محبوبتان است و در پله بعدی راه اندازی ماژول مورد نظر.

تا حالا فکر کردید این مساله نسبتا ساده و پیش پا افتاده چقدر می‌تواند در روند راه اندازی و طراحی پروژه کمک کند و پروژه را به لحاظ زمانی جلو بیندازد ؟

آردوینو Open Source است

آردوینو OpenSource استآردوینو نه تنها Open Hardware است بلکه Open Source نیز هست ؛ یعنی علاوه بر حوزه سخت افزار در حوزه نرم افزاری نیز متن باز است علاوه بر این نه تنها در قسمت سخت افزار به صورت ماژولار عمل کرده است بلکه در قسمت نرم‌افزار نیز به همین شکل عمل کرده است !

تعداد کتابخانه های موجود برای انواع پردازنده آنقدر زیاد است که قابل تصور نیست ؛ این‌ها همه از نعمات متن باز بودن است و مشارکت جهانی برای کامل کردن مجموعه آردوینو . مشخص و مسلم است پیاده سازی چنین مجموعه بزرگی از کتابخانه های نرم افزاری برای این طیف از سخت افزار از عهد یک تیم و چند تیم خارج است.

امروزه تقریبا برای هر چیزی که فکرشو بکنید توی آردوینو کتابخانه آماده وجود داره که به دلیل متن باز بودن آن به سادگی میتونید از آنها در پروژه های شخصی و تجاری استفاده کنید. فکر می‌کنید اگر قرار بود کتابخانه مربوط به شبکه tcp/ip رو برای atmega328 پورت کنید، دقت کنید! پورت کنید نه این که از اول بنوسید چقدر زمان لازم بود؟

یا فرض کنید کارفرمای شما نیاز به راه اندازی سنسوری داشت که حتی داکیومنت های آن (به دلیل تحریم ایران) در دسترس شما نیست ! چنین پروژه ای بدون وجود آردوینو حداقل چند ماه زمان برای راه اندازی نیاز داشت ؛ اما امروزه وقتی کتابخانه های پربار آردوینو وجود دارد به سادگی می‌توان نحوه عملکرد هر نوع سنسوری را متوجه شد.

البته امیدوارم سوء برداشت نشده باشد ابزار تعیین کننده مهارت نیست ! بدین معنا که

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

آردوینو Multi Platform است

اگر از بحث های سخت افزار و ماژول های نرم افزاری هم بگذریم قابلیت بعدی که نمایان می‌شود پشتیانی آردوینو از پلتفرم های متنوع است! احتمالا اگر طراح و توسعه دهنده سخت افزار باشید ؛ در حال حاظر مجبور به استفاده از AVR و ARM (اگر درگیر PIC و خانواده های کنترلر دیگر نباشید) هستید و برای توسعه هر کدام از پلتفرم‌های مختلفی استفاده می‌کنید ؛ خوب فرض کنید محیط یک پارچه توسعه Arduino زحمت کوچ از یک خانواده به خانواده دیگر را از دوش شما برمیدارد و تنها با سوییچ ساده نرم افزاری قادر خواهید بود کد خود را از AVR بر روی ARM اجرا کنید. خوب این گزینه برای افرادی که تازه شروع به برنامه نویسی با میکروکنترلر کرده اند قطعا جذاب است.

حتی برای افراد حرفه ای که تنها کنجکاوی در خصوص یک خانواده گریبان گیرشان است میتواند جالب باشد ؛ مثلا برای کار کردن با پردازنده های Xtensa دیگر نیاز نیست کلی کتابخانه های مربوطه اولیه را بارگذاری و به دنبال مستندات راه اندازی باشید ؛ با چند کلیک ساده به سادگی می‌توانید سمپل کد های مورد نظرتون رو روی این معماری تست کنید.

آردوینو جهانی است !

آردوینو جهانی است

قبلا هم اشاره کرده ام ؛ یکی از مزایای مهم هر سیستمی گستردگی جامعه استفاده کننده است. این گستردگی باعث می‌شود که به سادگی قادر باشید جواب مشکلات خود را پیدا کنید، یا اگر باگی در یکی از کتابخانه های برنامه وجود داشته باشد در سریعترین زمان ممکن کشف و رفع شود. شاید یکی از تاثیر گذار ترین موارد جهت انتخاب یا عدم انتخاب یک پلتفرم همین مورد باشد. مخصوصا برای ما ایرانی ها که از جامعه جهانی به گونه ای طرد شده ایم (از یک سو فیلترینگ داخلی و از طرفی تحریم های جهانی ).

با تقریب خوبی میشود گفت وقتی توی برنامه یا پروژه ای به مشکلی بر می‌خورید قبلا یکی در جهان به اون مشکل برخورده و احتمالا برای حلش تلاش کرده (البته یه احتمال خیلی ضعیف هم هست که شما اولین نفر باشید 😐 ) و اگر جامعه استفاده کننده از پلتفرم انتخابی شما بزرگ باشه زودتر به نتیجه دلخواه خواهید رسید!

و واقعا از این مهم نمیشه چشم پوشید.

THE BAD

آردوینو بد !

آردوینو بد است

 

تعداد افرادی که در مقابل استفاده از آردوینو جبهه می‌گیرند کم نیست و حتی عده ای پا را فراتر از خیال گذارده و آن را توطئه دشمن می‌دانند! و قصد دشمن برای از بین بردن عمق علم الکترونیک کشور و سطحی کردن آن! (کی میشه که این دشمن پنداری های بیمار گونه رو کنار بگذاریم) آیا واقعا چنین است؟ آیا آردوینو قادر به انجام چنین کاری است؟ اگر هست چرا پیش از ایران دیگر کشورهای جهان سوم دچار چنین بلایی نشده‌اند؟

از شوخی که بگذریم، باید به این سوال پاسخ داد که آیا آردینو بد است؟ ؛ و اگر بد است دقیقا به کدام دلیل بد است ؛ بگذارید تعدادی از استدلال های موجود در این خصوص را لیست کنیم و تک تک، هر کدام را بررسی کنیم:

  • آردوینو باعث سطحی شدن دانش الکترونیک می‌شود
  • آردوینو باعث بی سواد شدن قشر تحصیل کرده می‌شود
  • آردوینو باعث می‌شود هر کسی فکر کند طراح است

آردوینو باعث سطحی شدن دانش الکترونیک می‌شود

آیا واقعا علم الکترونیک را این گونه شناخته‌اید که همه چیز آن میکروکنترلر است؟ پس سخت در اشتباه هستید؛ بگذارید کمی اصول اولیه را بررسی کنیم الکترونیک به دو دسته کلی آنالوگ و دیجیتال قابل تقسیم است؛ از آنجایی که آردوینو نمی تواند کاری به بخش آنالوگ داشته باشد! احتمالا سراغ بخش دیجیتال می‌رود که خود باز به دو دسته مدارات منطقی و مدارات شامل پردازنده تقسیم می‌شود، از مدارات شامل پردازنده هم خود دسته‌هایی دارد که میکروکنترلر بخش کوچکی از آن است!

در ضمن تمام این حالات برای وقتی است که بپذیریم آردوینو واقعا به یاد گیری میکروکنترلر لطمه وارد می کند! که در گزاره بعد بیشتر به این موضوع خواهیم پرداخت.

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

آردوینو باعث بی‌سواد شدن قشر تحصیل کرده می‌شود

در قسمت قبل گفتیم که میکروکنترلر بخش کوچکی از الکترونیک و دانش قشر تحصیل کرده را تشکل می‌دهد؛ با این حال آیا استفاده از آردوینو باعث بی‌سوادی یا سطحی شدن سواد قشر تحصیل کرده می‌شود؟ برای جواب به این سوال بگذارید نگاهی به سیستم آموزش عالی داشته باشیم. و بررسی کنیم که در حال حاظر میکروکنترلر از چه روشی در دانشگاه های ما تدریس می‌شود که وجود آردوینو باعث سطحی شدن آن می‌شود.

احتمالا برای آموزش میکروکنترلر از AVR یا نهایتا ARM استفاده می‌شود و احتمالا کامپایلر کدویژن یا نهایتا Keil ؛ کاربرد چند تا رجیستر رو توضیح می‌دهند و احتمالا چند تا پروتکل مثل Uart و SPI رو هم تشریح می‌کنند و در نهایت یه برنامه ترکیبی از چند پرفرال رو هم مثال می زنند و تمام! این می‌شود تمام دانش یک فرد تحصیل کرده از میکروکنترلر! البته اگر تنها به آموزش دانشگاهی اکتفا کند و خود به دنبال فراگیری فراتر از آن نباشد.

وجود آردوینو کجای این حلقه گسستگی ایجاد می‌کند؟ ؛ نرم افزار را هم می‌شود بدون کتابخانه های آردوینو در آردوینو نوشت واقعا فکر می‌کنید فرقی می‌کند ؟

چه از کتابخانه های آماده آردوینو استفاده کنید و چه از کدویزارد کدویژن – هر دو یک نتیجه را خواهند داشت ؛ لازم است که سیستم آموزشی اصلاح شود.

فکر می‌کنم برای آموزش صحیح میکروکنترلر لازم است میکروکنترلر به دو بخش سخت افزار و نرم افزار تفکیک شود؛ در بررسی های سخت افزاری عملکرد سخت افزاری بخش های مختلف مورد بررسی قرار گیرد فارغ از مباحث نرم‌افزاری! در واقع شاید این بخش واقعا کم رنگ شده و الان بیشتر تمرکز روی بخش برنامه نویسی میکروکنترلر گذاشته شده است و احتمالا به همین دلیل آردوینو را برای این سبک آموزش خطرناک می‌بینند؛ چرا که سعی می کنند سخت افزار را به کمک نرم افزار آموزش دهند.

آردوینو باعث می‌شود هر کسی فکر کند طراح است

بگذارید اشاره کنیم که آدم‌هایی که توانایی های خود و سیستم را نمی‌شناسند با فراگیری هر موضوع ساده‌ای از سیستم دچار توهوم دانش می‌شوند و از آن پس دیگر خدا را هم بنده نیستند! متاسفانه از این دست آدم ها در زمینه الکترونیک کنم نداریم. دقیقا مساله سر فهم ما از دانش خودمان است؛ کسی که فکر می‌کنید با کپی کردن چند کتابخانه و چسباندن آنها به هم پروژه ای راه اندازی کرده است یک طراح تمام عیار است دقیقا دچار توهوم دانستن است.

آیا به نظر شما فرقی می‌کند که این کتابخانه‌ها را از گیت هاب برداشته باشد و در کدویژن و keil کپی کرده باشد یا این که با چند کلیک در آردوینو نصب کرده باشد ؟ در واقع نمی‌شود همه تقصیر را به گردن آردوینو انداخت که نصب و استفاده از کتابخانه‌ها را ساده کرده است

THE UGLY

در واقع آردوینو نه چیز بدی است و نه چیز زشتی است ؛ چیزی که آن را در نظر ما بد و یا زشت می‌کند استفاده نامناسب از آن است. استفاده از آردوینو هیچ خطری برای هیچ کسی ایجاد نمی کند. آردوینو یک پلتفرم متن باز است که خیلی از کارها را ساده کرده است؛ آردوینو ایجاد شد تا هنرمندان بدون داشتن دانش الکترونیک قادر باشند ایده های طراحی خودشون رو پیاده سازی کنند فکر میکنم واقعا توی این رسالتش موفق هم بوده است.

اما وقتی شاهد این هستیم استادی پروژه های دانشگاهی رو بر اساس آردوینو می‌پذیره یا این که پروژهای تجاری براساس این پلتفرم طراحی می‌شوند (مخصوصا توی کشوری که شاهد رانت و رانت بازی هستیم) اصلا جای تعجب نداره که عده ای از این پلتفرم فوق العاده متنفر باشند.

یا این که دوره های آموزشی برای این پلتفرم متن باز ساده برگذار می‌کنند آن هم با چه شهریه های گزاف و ادعاهای مضحک! واقعا خنده‌دار است؛ پلتفرمی این چنین ساده که برای کار کردن با آن حتی نیازی به دانش الکترونیک ندارید و به سادگی هر شخصی قادر به درک و کار کردن با آن است ؛ اینطور باید مورد سوء استفاده قرار بگیرد و البته برخی از همکاران هم طوری ادعا می‌کنند گویا اینترنت اشیاء یا IOT د را نحصار آنها و آردوینو است.

امیدوارم که این کژ فهمی ها هم هرچه زودتر اصلاح شود تا شاهد استفاده صحیح و منطقی از این پلتفرم متن باز باشیم.

 

 

در زیر نیز نظر جناب اقای مهندس اژدرکش که سالها تجربه در زمینه آردوینو دارند و کانال و گروهی با نام آردوینو فارسی را هم مدیریت میکنند می بینیم مطلبی که که حاوی نکات فنی مناسبی در مورد آردوینو هست:

سلام دوست عزیز
من رضا اژدرکش هستم و سالهاست که دارم در زمینه آردوینو تحقیق و آن را تدریس میکنم.
همه مطالب شما و همچنین نظرات دوستان رو خوندم.
متاسفانه نه شما خوب به معایب آردوینو اشاره کرده بودید و نه دوستان خوب از بد بودن آردوینو دفاع کرده بودند. چون این پلتفرم بد نیست. ولی زیادی خوب هم نیست.
قدرت برنامه نویسی یک برنامه نویس هست که باعث عملکرد عالی یک مدار و یا درست عمل نکردن یک مدار و هنگ کردن اون میشه نه برد آردوینو…
مثلا شما بجای 0 یا 5 ولت به یک میکروکنترلر 2 ولت بدهید، چه اتفاقی میافته؟؟ میکرو این رو چی فرض میکنه؟؟ 0 یا 1 ؟؟؟ دانش فنی اینجا بکار میاد… و فرقی هم نمیکنه که با آردوینو دارید کار میکنید یا با میکروکنترلر خالی.
شما با نرم افزار قدرتمند آردوینو برنامه هاتون رو براحتی مینویسید. (دقت کنید که فقط برنامه نویسی) حالا میتونید اون رو روی بردهای آماده آردوینو آپلود کنید و یا روی یک میکروکنترلر خاصی که دوست دارید و PCB دلخواه خودتون رو با تکنیک های حذف نویز و غیره میسازید و استفاده میکنید. (پاسخ یکی از عزیزان که نظر داده بودند).
نظرات شما راجع به خوب بودن آردوینو کاملا درسته و بنده تایید میکنم. ولی شما در مورد بد بودن آردوینو فقط به نظرات دوستان اشاره کردید و بحث علمی انجام ندادید که این درست نیست. باید معایب خود آردوینو رو برسی کنید نه نظرات دوستان رو…

حالا معایب آردوینو چیه؟؟؟

1- معایب برد های آردوینو:
برد های آردوینو فقط و فقط یک مشکل دارند آن هم این است که برد پروگرامر روی آنها هست و وقتی از باتری برای تغذیه استفاده میکنیم، این برد پروگرامر باتری مصرف میکند. که این مساله را میتوانیم با ساخت PCB خودمان برطرف کنیم.

2- معایب نرم افزار آردوینو:
نرم افزار آردوینو دوتا ایراد بزرگ داره:
1- مدیریت حافظه مربوط به رشته ها در آردوینو درست انجام نمیشه. ورژن برنامه آردوینو الان یادم نیست ولی از یک ورژن آردوینو به بعد، برای سرعت بخشیدن به برنامه های در حال اجرا و همچنین فشرده سازی کدهای نوشته شده توسط کاربر، یک سری بهینه سازی هایی روی نرم افزار آردوینو صورت گرفت که این بهینه سازی ها خیلی خوب بودند ولی باعث شد پاک کردن حافظه HEAP (گاربج کلینینگ) که در برنامه به متغیر های رشته ای اختصاص داده شده بود با مشکل مواجه بشه و پاک نشوند. که امیدواریم در ورژن های بعدی آردوینو این مشکل اصلاح بشه.
2- در برنامه نویسی آردوینو از توابعی مثل delay, millis, micros استفاده شده که این توابع خودشون هم از وقفه تایمر 0 استفاده میکنند. پس تایمر 0 آردوینو از لحظه روشن کردن برد آردوینو فعال هست تا ابد…. حتی اگر از آن استفاده ای نکنیم. و هر یک میکروثانیه داره وقفه میده به میکروکنترلر… و این باعث میشه که نتونیم با آردوینو شکل موج های دقیق و زمانبندی درستی رو ایجاد کنیم. و اگه بخواهیم تایمر 0 رو خاموش کنیم و برنامه خودمون رو بنویسیم، باید 90%کتابخانه های موجود رو که آردوینو داره بهشون افتخار میکنه رو کنار بگذاریم. چون همه کتابخانه ها از این توابع استفاده کرده اند.
البته این موضوع زمانی هست که هدف ما تولید شکل موج های دقیق و یا زمان بندی دقیق باشه. ولی در بقیه موارد، آردوینو نه تنها حرف نداره بلکه بینظیر هم هست.

هرکسی که میگه آردوینو هنگ میکنه یا بچه بازیه بیاد من دوتا سوال ازش بپرسم ببینم دانش الکترونیک اش در چه حدی هست که این نظریه رو داره مطرح میکنه و اصلا مگه میشه بدون دانش الکترونیک مداری ساخت.
همین دوستانی که دانش الکترونیک ندارند و سرسری چند تا دستور برنامه نویسی یاد گرفته اند هستند که مداراتی رو میسازند و نهایتا اون مدار یک خرابی در دستگاه های متصل شده بوجود میاره و میگن آردوینو بده…

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

 

انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

شما نیز میتوانید یکی از نویسندگان سیسوگ باشید.   همکاری با سیسوگ

66 دیدگاه در “آردوینو خوب، بد، زشت ! همه چیز درباره آردوینو

  1. Avatar for Arian Arian گفت:

    سلام لطفا اگه میشه زودتر سوالم رو جواب بدین مرسیی

  2. Avatar for امیرحسین امیرحسین گفت:

    سلام وقتتون به خیر،
    ممنون از متن جامعتون.
    یک سوال داشتم، میشه بفرمایید بای کسی که آردوئینو و AVR رو بلده توانایی کار با STM (به جز این که در بازار کار خواهان بیشتری داره) چه اهمیتی داره؟
    (مثلا یک موردی که به نظر من میرسه امکانات خاص STM در رابطه با رابط گرافیکیه)

    1. Avatar for Zeus ‌ Zeus ‌ گفت:

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

  3. Avatar for میثم میثم گفت:

    درود، از نظرات شما درباره نقد منصفانه آردوینو بسیارسپاسگزارم، بنده نیز چندسال(۴سال) است در پروژه‌هایم از آردوینو بهره می‌برم، در صورتی که ۲دهه در الکترونیک فعالم و با AVR و مدارهای منطقی و آنالوگ در حد وسیعی کار کردم، و با نظر شما کاملا موافقم که طراح باید انقدر به دانش الکترونیک مسلط باشد که بداند چه چیز را کجا به کار ببرد! و نخواهد که ضعف خود در یک حیطه خاص را با فشار به یک حیطه دیگر جبران کند!
    در مورد آردوینو هم برخی محدودیتها وجود دارد. مثلا در یک پروژه چند سنسور و عملگر استفاده کرده بودم و در کامپایل هیچ ایرادی نبود اما در عمل، به مشکل های جدی برخوردم… که با کلی کلنجار فهمیدم فراخوانی از چند کتابخانه باعث اخلال میشود و….
    در پایان از شما ممنونم

  4. Avatar for حسین حسین گفت:

    سلام.من از زمان z80 در خدمتتون هستم.z80 و حتی سی پی یو های سری 80. مقالتون برام جالب بود و به نکات خوبی اشاره کردید.بنده یادم هست که برای برنامه یه تابلو روان چند هزار خط برنامه می نوشتیم.برای یه سنسور ساده باید کلی دیتا شیت اون سنسور رو می خوردیم و تمام زمان بندی ها و……رعایت می کردیم.این بد بود به خاطر اینکه طول اجرای پروژه زمان بر، طراحی سخت افزاری پیچیده تر بود. ولی عوضش ریز تمام پروتکل ها رو در میاوردیم.با عمق تر از الان سواد داشتیم.به سخت افزار مسلط بودیم..من یادمه بدون رفرنس یا کتاب و یا نت برنامه مینوشتیم. و خیلی مسلط تر بودیم و کم ادعاتر. دیباگ برنامه ها و درجه اطمینان برنامه ها چون سطح اسمبلی و سخت افزار کار می کردیم بیشتر بود.در یه جمله بگم میدونستیم چی کار می کردیم و درجه اطمینان بیشتری داشتیم.ولی خوب اون موقع فقط سری z80 بود و 80 .آیا سی پی یو دیگه ای هم بود؟ بگذریم بعدش میکروکنترلر های اومد .همون خانواده اینتل 80 .یه درجه بهتر شد.سخت افزار کامپکت تر شد .دیگه نیاز نبود رم و حافظه و ……..جدا بزاری. ولی باز اسمبلی بود. تو ادیتورهای داس و یا نهایتا ویندوز مینوشتیم و بعد کامپایلر ها رو صدا میکردیم که هگز بدن. من یادمه خودم با ویژوال بیسک ادیتور و کامپایلر سرخود نوشته بودم .که با پروگرامر دست سازم که پارالل پروگرم میکردسازگار بود. و یه قدم جلوتر بودم .بعدا پروگرامر های آنبرد سریال اومد.یه قدم به جلو.کم کم پای میکرو چیپ هم به بازار ایران باز شد. میکرویی به مراتب سازگار تر با صنعت.گرچه یادمه همون موقع هم پی ال سی های زایلوگ توش اتمل کار شده بود و اگه شرایط برد و سخت افزار رو رعایت می کردی اتمل هم تو محیط پرنویز عالی کار میکرد.هر کی میگه نه بیاد برد دستگاه دایکست که الان پانزده ساله تو یه جای پر از موتور و نویز هست و کار میکنه رو نشونش بدم. بعد کم کم سر و کله میکرو های 16 بیتی و32 بیتی و شرکت های دیگه باز شد.آیا میشه شرایط الان که اینهمه تنوع میکرو و زبان برنامه نویسی و سخت افزار وجود داره رو با اون موقع مقایسه کرد؟ آیا نوع برنامه های شی گرای الان رو میشه با اسمبلی اون موقع نوشت؟ به نظر من هر چیزی معایب و مزایای خودش رو داره.برای کارفرما این مهمه که کارش بدون ایراد و ارزان کار کنه.بقیش مهم نیست.یکی دوست داری با اردوینو باشه یکی دوست داره با کد ویژن باشه یکی stm کار میکنه.مهم نیست .مهم کارکردن صحیح اون دیوایس هست. بدی و یا خوبی روش و برنامه رو طراح و برنامه نویس متحمل میشه. من خودم هنوز گاهی با کدویژن کار میکنم.گاهی با اردوینو و……….مهم اینه که کار طرف به درستی انجام بشه و اینکه هر کس با چی راحت تره.

    1. Avatar for Sisoog Os Sisoog Os گفت:

      سلام
      ممنون بابت به اشتراک گذاری تاریخچه و تجربه خودتون

  5. Avatar for محمد محمد گفت:

    سلام و خسته نباشید
    من یه مدار آردوینو برای خودم ساختم.
    الان مشکلم اینه که گهگاهی میکروکنترلر شروع می کنه به داغ کردن، حتی اگه برنامه بلینک اپلود شده باشه.
    البته این رو هم بگم که تغذیه میکروکنترلر(آردوینو) از مدار بوستر باطری لیتیوم و و باطری لیتیوم انجام میشه.

    1. Avatar for Zeus Zeus گفت:

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

  6. Avatar for رضا اژدرکش رضا اژدرکش گفت:

    سلام دوست عزیز
    من رضا اژدرکش هستم و سالهاست که دارم در زمینه آردوینو تحقیق و آن را تدریس میکنم.
    همه مطالب شما و همچنین نظرات دوستان رو خوندم.
    متاسفانه نه شما خوب به معایب آردوینو اشاره کرده بودید و نه دوستان خوب از بد بودن آردوینو دفاع کرده بودند. چون این پلتفرم بد نیست. ولی زیادی خوب هم نیست.
    قدرت برنامه نویسی یک برنامه نویس هست که باعث عملکرد عالی یک مدار و یا درست عمل نکردن یک مدار و هنگ کردن اون میشه نه برد آردوینو…
    مثلا شما بجای 0 یا 5 ولت به یک میکروکنترلر 2 ولت بدهید، چه اتفاقی میافته؟؟ میکرو این رو چی فرض میکنه؟؟ 0 یا 1 ؟؟؟ دانش فنی اینجا بکار میاد… و فرقی هم نمیکنه که با آردوینو دارید کار میکنید یا با میکروکنترلر خالی.
    شما با نرم افزار قدرتمند آردوینو برنامه هاتون رو براحتی مینویسید. (دقت کنید که فقط برنامه نویسی) حالا میتونید اون رو روی بردهای آماده آردوینو آپلود کنید و یا روی یک میکروکنترلر خاصی که دوست دارید و PCB دلخواه خودتون رو با تکنیک های حذف نویز و غیره میسازید و استفاده میکنید. (پاسخ یکی از عزیزان که نظر داده بودند).
    نظرات شما راجع به خوب بودن آردوینو کاملا درسته و بنده تایید میکنم. ولی شما در مورد بد بودن آردوینو فقط به نظرات دوستان اشاره کردید و بحث علمی انجام ندادید که این درست نیست. باید معایب خود آردوینو رو برسی کنید نه نظرات دوستان رو…

    حالا معایب آردوینو چیه؟؟؟

    1- معایب برد های آردوینو:
    برد های آردوینو فقط و فقط یک مشکل دارند آن هم این است که برد پروگرامر روی آنها هست و وقتی از باتری برای تغذیه استفاده میکنیم، این برد پروگرامر باتری مصرف میکند. که این مساله را میتوانیم با ساخت PCB خودمان برطرف کنیم.

    2- معایب نرم افزار آردوینو:
    نرم افزار آردوینو دوتا ایراد بزرگ داره:
    1- مدیریت حافظه مربوط به رشته ها در آردوینو درست انجام نمیشه. ورژن برنامه آردوینو الان یادم نیست ولی از یک ورژن آردوینو به بعد، برای سرعت بخشیدن به برنامه های در حال اجرا و همچنین فشرده سازی کدهای نوشته شده توسط کاربر، یک سری بهینه سازی هایی روی نرم افزار آردوینو صورت گرفت که این بهینه سازی ها خیلی خوب بودند ولی باعث شد پاک کردن حافظه HEAP (گاربج کلینینگ) که در برنامه به متغیر های رشته ای اختصاص داده شده بود با مشکل مواجه بشه و پاک نشوند. که امیدواریم در ورژن های بعدی آردوینو این مشکل اصلاح بشه.
    2- در برنامه نویسی آردوینو از توابعی مثل delay, millis, micros استفاده شده که این توابع خودشون هم از وقفه تایمر 0 استفاده میکنند. پس تایمر 0 آردوینو از لحظه روشن کردن برد آردوینو فعال هست تا ابد…. حتی اگر از آن استفاده ای نکنیم. و هر یک میکروثانیه داره وقفه میده به میکروکنترلر… و این باعث میشه که نتونیم با آردوینو شکل موج های دقیق و زمانبندی درستی رو ایجاد کنیم. و اگه بخواهیم تایمر 0 رو خاموش کنیم و برنامه خودمون رو بنویسیم، باید 90%کتابخانه های موجود رو که آردوینو داره بهشون افتخار میکنه رو کنار بگذاریم. چون همه کتابخانه ها از این توابع استفاده کرده اند.
    البته این موضوع زمانی هست که هدف ما تولید شکل موج های دقیق و یا زمان بندی دقیق باشه. ولی در بقیه موارد، آردوینو نه تنها حرف نداره بلکه بینظیر هم هست.

    هرکسی که میگه آردوینو هنگ میکنه یا بچه بازیه بیاد من دوتا سوال ازش بپرسم ببینم دانش الکترونیک اش در چه حدی هست که این نظریه رو داره مطرح میکنه و اصلا مگه میشه بدون دانش الکترونیک مداری ساخت.
    همین دوستانی که دانش الکترونیک ندارند و سرسری چند تا دستور برنامه نویسی یاد گرفته اند هستند که مداراتی رو میسازند و نهایتا اون مدار یک خرابی در دستگاه های متصل شده بوجود میاره و میگن آردوینو بده…

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

    1. Avatar for Sisoog Os Sisoog Os گفت:

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

  7. Avatar for هادی هادی گفت:

    با سلام یه سوال از خدمتتون داشتم اگر ما بخواهیم یک پروژه عملی و کاربردی درست کنیم آیا می توانیم از برد آردوینو استفاده کنیم؟ به عنوان مثال شما فرض کنید که می‌خواهیم یک دماسنج دیجیتال درست کنیم و از آن در خانه استفاده کنیم آیا منطقی است که یک برد آردوینو به همراه متعلقات برای ساخت دماسنج استفاده شود؟

    1. Avatar for zeus zeus گفت:

      سلام دوست عزیز
      بله چرا غیرمنطقی باشه ؟

  8. بازتاب: چرا آردوینو در دنیای امروز یک ضرورت است - میکرولرن
  9. Avatar for هادی هادی گفت:

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

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      فکر میکنم ابتدا باید یه پروژه جدید بسازید !‌
      یا شاید هم با پاک کردن و نصب مجدد مشکل حل بشه

  10. Avatar for محمد حسین رحیمی محمد حسین رحیمی گفت:

    سلام.
    دلایل شما درست ولی
    از نظر ریش سفید ها و حرفه ای های الکترونیک اردوینو اسباب بازی بیش نیس.
    ی دلیل بیارم که اردوینو بد است:
    ببین شما وقتی با اردوینو کار می‌کنی با ی سری شیلد های آماده سر و کار داری.
    ینی هیچ چالشی در رابطه با سخت افزار نداری
    خب این خودش ی مشکل خیلی بزرگه
    ولی وقتی با میکرو ها کار کنی(به شرطی که سخت افزار رو خودت آماده کنی) خیلی با چالش های سخت افزاری مواجه میشوی. از ترک های پاور تا نویز رله ها و.‌..
    و اینا همه تجربه میشه واسه کار های بعدی(درسته سن و سال ندارم ولی اینقدر میفهمم،درسته تجربه ام کمه ولی همه این چیزایی که میگم رو حس کردم)
    اگه مبتدی باشی میتونی از اردوینو استفاده کنی و پیش بری.
    ولی میتونی خودت PCB بکشی و کلی چیز یاد بگیری.

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

    مصاحبه گر: سلام
    متقاضی: سلام

    مصاحبه گر: بنده رزومه شما رو مطالعه کردم، قید کردید تسلط بر میکروکنترلرهای AVR
    متقاضی: بله بله

    مصاحبه گر: ما امتحان کوچکی رو آماده کردیم که یک بِردبُرد هست و یک میکروکنترلر و قطعاتی ساده، لطف کنید مدار درخواستی ما رو ببندید و الگوریتمی که ازتون خواسته شده رو کد نویسی کنید

    متقاضی: ?
    متقاضی: من فقط با آردوینو و پرتئوس کار کردم!

    مصاحبه گر: ??
    مصاحبه گر: ههههم خب موفق باشید
    مصاحبه گر: شخص بعدی رو راهنمایی کنید داخل

    نصیحتی برادرانه و از صمیم قلب:
    بیشتر در مسیر استفاده از آردوینو فکر کنید و اساتید محترم دانشگاه که چنین مسیری رو طی می کنید، لطفا این دانشجو ها رو به سمت استفاده از آردوینو سوق ندید. نسبت آموزشتون مسئولیت دارید.
    دانشجو پس از گذشت چندین ترم هنوز نمیتونه یه مدار ساده رو روی برد برد ببنده. این برای دانشجوی الکترونیک یه فاجعه است.

    دوستانی که درگیر آردوینو هستید، اینکه از این مطلب درس بگیرید یا جبهه، اینو خودتون انتخاب می کنید ولی سعی کنید بیشتر روی این مسئله فکر کنید.
    من وظیفه خودم میدونستم که این بحران در حال شیوع در جامعه الکترونیک رو گوشزد کنم.

    دقت کنید، این ابزار “بد” نیست ولی استفاده از اون برای یک مهندس الکترونیک یک بحران. این ابزار همون طور که خود سایتش اشاره کرده به درد اشخاصی میخوره که یا دانش آموزن و یا هیچ زمینه از الکترونیک ندارن.
    )
    به گفته خود آردوینو
    منبع:
    https://www.arduino.cc/en/Guide/Introduction
    ببخشید اگه طولانی شد.

    1. Avatar for Sisoog Os Sisoog Os گفت:

      سلام دوست عزیز
      ممنون از نظر کاملتون به نکات خوبی هم اشاره کردید

  11. Avatar for شاهو شاهو گفت:

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

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

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

      1. Avatar for شاهو شاهو گفت:

        کتابخانه RCSwitch نگا کنید . https://github.com/sui77/rc-switch/
        به عنوان مثال enableReceive از کلاس RCSwitch بررسی کنید . البته شاید بخاطر دانش کم من باشه که نمی تونم آدرس ها رو پیدا کنم. ممنون میشم راهنمایی کنید .

        1. Avatar for زئوس Zeus زئوس Zeus گفت:

          سلام – خوب الان کجای ایت تابع ها براتون گنگ هست

          void RCSwitch::enableReceive(int interrupt) {
          this->nReceiverInterrupt = interrupt;
          this->enableReceive();
          }

          void RCSwitch::enableReceive() {
          if (this->nReceiverInterrupt != -1) {
          RCSwitch::nReceivedValue = 0;
          RCSwitch::nReceivedBitlength = 0;
          #if defined(RaspberryPi) // Raspberry Pi
          wiringPiISR(this->nReceiverInterrupt, INT_EDGE_BOTH, &handleInterrupt);
          #else // Arduino
          attachInterrupt(this->nReceiverInterrupt, handleInterrupt, CHANGE);
          #endif
          }
          }

          این تاب به دو صورت اوررایت شده – یعنی هم میتونید بدون پارامتر استفاده اش کنید و هم با پارامتر و یه سری مقادیر داخل کلاس رو مقدار دهی کردن.

          1. Avatar for شاهو شاهو گفت:

            اسامی توابع و ثوابت واضح و گویاس مشکلی در درک عملکرد این توابع ندارم . تنها دنبال اسامی ریجیستر ها بودم . ممنون که وقت گذاشتین

  12. Avatar for hmd hmd گفت:

    سلام
    اول از همه بگم تمایل من بیشتر به سمت برنامه نویسی رجیستری و کار با میکروهای صنعتی (تر) مثل Pic, Arm هستش ولی به نظر من کلا پلتفرم آردوینو پلتفرم خیلی خوبی هستش و مخصوصا کار آدم رو راحت میکنه و باعث میشه به هدف نهاییش فکر کنه نه ابزار
    فقط من با خود سخت افزار آردوینو مشکل دارم مخصوصا با میکرو avr اون
    در مورد avr هر چند با رعایت اصول طراحی میشه استفاده صنعتی کرد اما مسئله هزینه بر بودن این کار است چه از لحاظ زمانی و چه از لحاظ ریالی
    البته پروژه هایی مثل فکر کنم پنگوئن یا چیزی شبیه این هست که آردوینو رو با Pic پیاده کرده یا حتی با Arm هم دیدم
    و خب از بردهایی مثل NodeMCU و ESP32 هم میشه با آی دی ای آردوینو استفاده کرد که اینم خیلی خوبه، بهرحال وجود کتابخونه های غنی و ماژولهای فراوان چیزی نیست که بشه به راحتی ازش گذشت
    اگر هم کاربرد خیلی صنعتی و شرایط خیلی خاص مد نظر بود خب بهتره از PLC استفاده بشه

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

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

      1. Avatar for hmd hmd گفت:

        فقط یک نکته هست
        وقتی میگیم استفاده صنعتی یا تولید صنعتی خیلی ها این اشتباه رو میکنن که فکر میکنن محصول صنعتی یعنی چیزی که تو کارخونه ها و نظامی و … استفاده بشه
        در صورتیکه اینطور نیست و خیلی از محصولاتی که ما تو خونمون داریم هم صنعتی حساب میشه (ماشین لباسشویی، تلویزیون، یخچال و …) و اگر از این دید نگاه کنیم می‌بینیم که برای خیلی از محصولات دم دستی هم نباید سمت آردوینو بریم چه برسه به محصولاتی که برای کارخانجات حساس و مصارف نظامی و … است

        1. Avatar for زئوس Zeus زئوس Zeus گفت:

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

          1. Avatar for hmd hmd گفت:

            نه اتفاقا مسئله هم سخت افزاری است هم نرم افزاری
            شما یک دستورالعمل درست و صحیح آشپزی (برنامه) رو به دو نفر میدین
            یکیشون آشپز حرفه ای هستش و یکیشون نه
            آشپز حرفه ای غذای خوب درست میکنه و آشپز غیرحرفه ای مشخص نیست بتونه درست انجام بده
            پس بله فرق داره اگر یک برنامه یکسان رو هم به هر دو میکرو بدیم چون خود سخت افزار avr مشکلاتی داره که pic خیلی در برابر اون مشکلات مقاوم تره

          2. Avatar for زئوس Zeus زئوس Zeus گفت:

            سلام دوست عزیز
            خوب در واقع خودتون با مثالی که زدید جواب خودتون رو دادید. مهارت توی آشپزی مهمه نه دستگاه های مورد استفاده – یک آشپز تازه کار با بهترین تجهیزات آشپزخانه باز هم نمیتونه کیفیت آشپزی که از وسایل معمولی برای آشپزی استفاده میکنه رو داشته باشه .
            البته که لوازم آشپزی هم مهم هست ولی نه اینقدری که مدنظر شماست. در مورد سخت افزار avr فکر نمیکنم این نقص هایی که فکر میکنید رو داشته باشه – حداقل من نه جایی دیدم و نه جایی خوندم اگر مقاله ای در خصوص معرفی کنید که خیلی خوب میشه 🙂

          3. Avatar for hmd hmd گفت:

            خب فکر کنم شما اشتباه متوجه موضوع شدین
            در این مثال دستورالعمل آشپزی معادل نرم افزار بود و آشپز معادل سخت افزار

            اگر قرار باشه کاسه و ملاقه و گاز و … رو بیاریم وسط اون موقع مقایسه طوری دیگه میشه

            فکر کن قراره غذایی رو در مدت کم بپزی یا گرم کنی و دیگ زودپز یا مایکروفر نداری، اونموقع نمیتونی با قابلمه معمولی کارت رو انجام بدی پس خود ابزار هم این وسط مهمه

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

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

          4. Avatar for زئوس Zeus زئوس Zeus گفت:

            منم دقیقا میگم و گفتم استفاده صحیح از ابزار !!
            با کباب پز میشه کباب خوب درست کرد و با قابلمه نمیشه کباب درست کرد و برعکسش هم با قابلمه میشه خورشت خوب درست کرد و با کباب پز نمیشه این کار رو انجام داد به همین سادگی! – برای هر مصرفی از ابزار درستش استفاده کنید ممکنه اون ابزار جایی avr باشه و جای دیگری pic

          5. Avatar for hmd hmd گفت:

            بله درسته ادامه ندیم بهتره

            حقیقتش نه میکروچیپ کارخونه بابای منه نه با avr پدرکشتگی دارم

            از هر دوشون هم استفاده کردم حتی در مواردی مثل استفاده از esp8266 ترجیح میدم از آی‌دی‌ای آردوینو استفاده کنم بخاطر کتابخونه های زیاد و کاربرد راحت

            ولی با همه اینها و طبق توصیه خود میکروچیپ که الان هم pic تولید میکنه هم avr و طبق تجربه خودم و دوستان حرفه ای که بعضا در جاهای مهمی مشغول کار هستن بازم توصیه در نهایت همون pic هست در حیطه کاری مشخص خودش

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

          6. Avatar for زئوس Zeus زئوس Zeus گفت:

            بسیار متشکر که تجربه خودتون رو با ما به اشتراک گذاشتید 🙂

        2. Avatar for hmd hmd گفت:

          بازم به یک نکته دقت نکردید
          ما داریم راجع به دو تا چیز مشابه صحبت میکنیم با کارکرد مشابه نه دو تا چیز متفاوت
          میکرو avr, pic هر دوشون قراره یک کار انجام بدن ولی کار کباب پز و قابلمه از هم متفاوته

          موضوع مثل اینه که مسئله پخت کباب باشه، حالا داریم دو مدل کباب پز رو مقایسه می‌کنیم، مشابه اینکه شما بخوای دو مدل گوشی هوشمند رو مقایسه کنی که در ظاهر امکانات و … شبیه هم هستن ولی در عمل یکی همش هنگی و قطعی و … داره یکی خوب کار میکنه

          1. Avatar for زئوس Zeus زئوس Zeus گفت:

            به نظرم این بحث بیشتر از آن که یک یحث منطقی و سودمند باشه بیشتر سفسطه است.
            و لازم نمی بینم ادامه اش بدم – اگه نه هیچ میکرویی با هیچ آشپزی یا دستورغذا یا ظرف و یا هر چیز دیگه ای قابل مقایسه نیست در واقع چون پارامترهای بسیار متفاوت تری داره/

  13. Avatar for سید محمدعلی سید محمدعلی گفت:

    آقا منم دانشجوی مهندسی نرم‌افزارم او از آردوینو برای پروژه های تفریحی شخصی استفاده میکنم، ولی خب avr هم علاقه دارم.
    در کل توی همه ی علوم هرچقدرم یاد بگیری نمی‌تونی ادعا بکنی که همشو بلدی چون هر روز علوم در حالِ پیشرفتن.

  14. Avatar for جواد جواد گفت:

    با سلام و تشکر از مطالب مفید سایتتون
    اینکه چه کسی و چگونه از آردوینو استفاده میکنه بحث مفصلی است ولی یاد گیری و بکاربردن آردینو و یا هر ابزار و برنامه جدید برای افرادی که علاقمند به الکترونیک هستند گامی است رو به جلو
    ولی اگر کسی با تسلط بر آردوینو خود را خدای برنامه نویسی و الکترونیک می داند انسان کم ظرفیتی است، در هر علمی ما خط پایان نداریم و اگر اینگونه نبود ما هر روز شاهد اینهمه نوآوری و خلاقیت در علوم و بخصوص الکترونیک نبودیم و چنانچه علوم را به یک مسابقه ماراتن تشبیه کنیم افرادی که برای خود جایگاه والایی در یک علم قائلند و خود را در اوج میبینند در واقع در همان 100 متر و یا 400 متر اولیه کار را تمام شده میدانند.

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      سلام – متشکرم برای نظرتون – با نظر شما موافقم 🙂
      اصولا هر کسی که فکر کردن در حوزه ای از علم و دانش به انتها رسیده و به قولی خدای آن رشته است – قطعا چیزی از ان علم درک نکرده است.

  15. Avatar for علیرضا علیرضا گفت:

    بادرود فراوان خدمت سروران گرامی:
    این نظر شخصی من است.و انتظار ندارم که همه پسند باشد.
    من از آدردینو به عنوان یک الگویی برای شروع می بینم.مثلا برای GSM library به c تبدیل کردم و یک سری باگ برای میکرو من داشت برطرف کردم و کلی تو زمان صرفه جویی کردم کل دنیا هم اینجوریه و github رو برای توسعه درست کردن .و به دید من برای دوستانی دیگر که کار حرفه ای انجام نمیدن صرفا یک ابزار است. بهتر از هیچی است مخصوصلا اینکه open source است. متاسفانه ژنتیک ما انگار عوض شده و همه چی رو به عنوان دشمن و تهدید نگاه میکنیم .در حالی که کافیه دیدمون رو عوض کنیم مطمئن باشید که نتیجه بهتری میگیرم.
    سپاس

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      سلام دوست عزیز
      ممنون برای نظرتون – منم با شما موافق هستم
      از ابزار باید استفاده کرد.

  16. Avatar for رضاصباغیان رضاصباغیان گفت:

    عالی

  17. Avatar for مهندس مهندس گفت:

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

    1. Avatar for Sisoog Os Sisoog Os گفت:

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

  18. Avatar for علی علی گفت:

    سلام.یه سوال؟
    با استفاده از آردینو و کتابخانه های آن میتوان برای برد های غیر از برد آردینو کد نویسی کرد.
    مثلا من یک میکرو atmega8 یا atmega64 دارم که می خواهم روی آن ها برای یه پروژه خاص کدنویسی کنم آیا امکانش هست یا باید حتما برد آردوینو داشته باشیم؟

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      سلام دوست عزیز
      بله حتما امکانش هست و به سادگی میتونید این کار رو انجام بدید 🙂
      کافیه یه کوچولو سرچ کنید.
      مثلا این آموزش رو ببینید.

  19. Avatar for امیر امیر گفت:

    آردوینو یه پلتفرم خیلی خوب برای شروع به یادگیری هستش
    ولی استفاده از اون در پروژه های صنعتی اشتباه است
    به عنوان نمونه توابع milis, micros چون در پیاده سازی انها از یک تایمر 1us استفاده شده که intrrupt میده باعث می شه به ازای هر 16 کلاک که برنامه شما اجرای می شه 6 کلاک بعدی به اجرای شدن وقفه هدر بره که یعنی شما دارید فقط 72% درصد قدرت میکرو استفاده می کنید
    6 کلاک = 4 کلاک برای اجرا شدن وقفه+ 2کلاک ++ کردن متغییر های مربوط به توابع micros, milis

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      سلام دوست عزیز
      متشکرم برای نظرتون ؛ ولی لازم میدونم اصلاح کنم مطابق مستندات فنی آردوینو (سورس کد کتابخانه wiring.c)
      دقیقا توی خط 25 توضیح داده که کلاک ورودی تایمر در واقع 1/64 ام کلاک سیستم هست ؛ که توی هر 256 تیک تایمر صفر آورفلو میکنه ! یعنی هر 16384 کلاک یک بار اینتراپت خواهیم داشت نه هر میکروثانیه
      اما تابع micros چطور کار میکنه میتونید به خط 79 از سورس مراجعه کنید ؛ ولی خیلی مختصر بخوام بگم اینه که تعداد سرریز های تایمر ضرب در 256 بعلاوه مقدار کانتر تایمر صفر میشه 🙂
      روش هوشمندانه ای البته با مقداری خطای قابل پذیرش

      1. Avatar for زئوس Zeus زئوس Zeus گفت:

        البته در مورد صنعتی بودن بیشتر شرایط سخت افزار مطرح هست نه در واقع نرم افزار
        چون شما برای برد های آردوینو میتونید از اتمل استودیو یا حتی کدویژن برنامه نویسی کنید و محدودیتی ندارید.

        1. Avatar for کامران کامران گفت:

          خدای المپ جان
          با تشکر از مطلبتون

          که متاسفانه خوش بینی بدون چون و چرا هستش

          بله آردوینو بسیار پر کاربرد هستش و خود بنده هم چند سالی هستش که مشغولش هستم و خیلی هم استفاده می کنم
          این رو توجه بکن که کسایی که آردوینو رو خلق کردن برای راحتر کردن کار حوزه iot و هوش مصنوعیه که واقعا پیشرفت خوبیه

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

          و امثال آردوینو بدون شک باعث سطحی شدن علم میشه چون کشور هایی مثل ما بقول شما جهان سومی مصرف کننده هستن و میشن

          الان وقت ندارم بیشتر برات توضیح میدادم

          بازم میام

          در ضمن الکترونیکمن وقت برای سیاست نداره چون همه چی براش الکترونیک

          به نظر دیگران هم احترام گذاشتن نشانه شخصیتشه

          موفق باشی

          1. Avatar for زئوس Zeus زئوس Zeus گفت:

            سلام آقا کامران عزیز
            هیچ کدوم از این مواردی که فرموردید باعث سطحی شدن علم نمیشه دوست من ؛ مثل این میمونه که بفرمایید استفاده از آیسی باعث شده که ما علممون سطحی بشه چون مدارات ترانزیستوری رو درست درک نمیکنیم چرا آدم بیاد از آیسی 555 استفاده کنه خوب میره مدار ترانزیستوریش رو میبنده دستشم باز تره و … در واقع این صحبت صحیح نیست
            هر کدام از این موارد در جایگاه خاص خودشون ارزش مند هستند و نمیشود کلا وجود هر کدام رو زیر سوال برد.
            تنها به این دلیل که عده ای ممکن است متوهم شوند(در هر صورت این قشر با هر چیزی دچار توهم می شوند) نمیشود چشم بر مزایای ابزار سودمندی چون آردوینو شد.
            در ضمن خلقت آردوینو هیچ ارتباطی به حوزه iot نداشته است – متاسفانه عدم آگاهی برخی این سوء برداشت را ایجاد کرده است – توصیه میکنم توضیحات خالق آردوینو رو در مورد خلقتش توی گیت هابش مطالعه بفرمایید.

            + متوجه منظور شما در مورد سیاست نشدم 😐 قطعا ما هم دنبال رو هیچ سیاستی نیستیم.

    2. Avatar for Ali Ali گفت:

      1.تابع millis هر 16384 کلاک یه دونه وقفه میده

      2.شما میتوانید با از کار انداختن تایمر یا در بعضی هسته ها در قسمت تنظیمات این این دو تابع را از کار بیندازید.

      3. در مورد سخت افزار و نویز پذیری باهاتون موافقم اما اما اما اگه اصول PCB زدن بلد باشی IDE آردوینو هم مثل کدویژن یه کامپایلره و کد هگز رو چه با بوت لودر و چه بدون بوت لودر در اختیار کاربر قرار میده که میشه اونو با یه پروگرمر عین کدویژن ریخت روی میکرو

  20. Avatar for محسن کریمی خوشحال محسن کریمی خوشحال گفت:

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

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      خواهش میکنم دوست عزیز
      موافقم ؛ البته همه افراد حتی حرفه ای ها هم وقتی میخوان توی وقتشون صرفه جویی کنید به سراغ آردوینو و کتابخونه هاش میرن 🙂
      بله درسته ؛ کد های آردوینو و کتابخونه هاش (البته نه همشون) از کیفیت خیلی خوبی برخوردار هست !
      امیدارم که سیستم های نا کارآمد آموزشی هرچه زودتر اصلاح بشن 😐

  21. Avatar for صفا سلیمی صفا سلیمی گفت:

    سلام مهندس لذت بردم

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      سلام – خواهش میکنم
      ممنون برای کامنت و انتقال فیدبک

  22. Avatar for حسین حسین گفت:

    با سلام.
    مقاله جالبی بود . مرسی .
    آردوینو قسمت سخت افزاریش خیلی خوبه …
    منتها قسمت بدش زبان برنامه نویسش هست و یک مقداری هم IDE ش .
    من عادت دارم وقتی میخوام برنامه بنویسم باید از جزئیات میکرو تا حدود زیادی سر در بیارم . وگرنه هزارتا سوال بی جواب توی ذهنم شکل میگیره .
    وقتی به زبان آردوینو ( که فکر میکنم یک لایه نرم افزاری روی c ست ) نگاه میکنم و بخوام طبق اون کاری رو انجام بدم انگار که دست و پاهام رو با طناب ببندن و یک مداد توی دهانم بگذارن و بهم بگن حالا یه پرتره طراحی کن !!!!!
    بعلاوه کلی باید وقت گذاشته بشه تا از اون لایه نرم افزاری ( که یک چیز بیخود و الکی هست ) و توابعش سر در آورد !!
    بیشتر به این درد میخوره که صرفا بخواهید کاری رو انجام بدید تا اینکه چیزی رو یاد بگیرید.
    حتی بعضی وقتها با c هم مشکل پیدا میکنم و به سرم میزنه اسمبلی بنویسم .
    اما در اینکه برای هر ماژولی کتابخانه ش نوشته شده و باعٍث صرفه جویی در وقت میشه هیچ شکی درش نیست .
    در کل مقاله جالبی بود و نگاه جالبی به مسئله داشتید . به خصوص در رابطه با اسمش!!
    سپاس.

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      سلام دوست عزیز خواهش میکنم
      به نظر من قسمت نرم افزاریش حتی بهتر از سخت افزاریش هم هست ولی بله ide خیلی بدی برای کدنویسی حرفه ای داره
      آردوینو زبان خاصی نداره , همون c++ هست که استاندارده و البته لازمه بگم که c رو هم به شکل کامل پشتیبانی میکنه
      والا منم حقیقتش اینه که خیلی با توابع آردوینو راحت نیستم و نهایتا از سخت افزارش استفاده میکنم.
      ممنون برای کامنت خوبتونم ؛

      1. Avatar for حسین حسین گفت:

        سلام فرمایش شما کاملا درسته . زبانش c++ هست (کمپایلر gcc ) راستش ساختار برنامه نویسیش ظاهرا کمی باc و c++ فرق داره یک تابع به اسم setup داره که فقط یکبار اجرا میشه و یک تابع به اسم loop که همون کار while در تابع main زبان c استاندارد رو انجام میده . قبلا یک مقدار وقت گذاشته بودم و توی هدرها و یکسری از فایلهاش سرک کشیدم . این توابع setup & loop رو چطوری پیاده سازی کردن که کار تابع main رو انجام میده ؟ به نظرم با کتابخانه معمولی c نشه یک همچین کاری کرد ، برای همین به نظرم اومد یک لایه به زبان c , c++ اضافه کردن البته کماکان دستورات استاندارد هم اجرا میشن .( زیاد هم باهاش کار نکردم ، دیدم وضعیتش اینطوریه دیگه سمتش نرفتم ) .

        1. Avatar for زئوس Zeus زئوس Zeus گفت:

          سلام
          واقعا چیز پیچیده ای نداره ، مثلا همین تابع setup و loop دقیقا میشه فرض کرد به شکل زیر نوشته شده

          void setup()
          {
          /*arduino setup function*/
          }

          void loop()
          {
          /*arduino loop function*/
          }

          int main(void)
          {
          setup();

          while(1)
          {
          loop();
          }
          }

          دقیقا همون C خودمون است ؛ فقط چون بک اندش رو ما بررسی نمی کنیم ممکنه به نظرمون بیاد که انگار خیلی متفاوته در صورتی که واقعا اینطور نیست
          دلیل این که اومدن از زبان c++ استفاده کردند دقیقا اینه که برنامه نویس های کامپیوتر خیلی با این زبان راحت تر هستند ؛ ولی در واقع زبان C++ زبان مناسبی برای سخت افزار نیست فکر میکنم یه سری مسائل پیش میاره مخصوصا تو جاهایی که باید با خود سخت افزار درگیر بشه
          حتی کرنل لینوکس هم با C نوشته شده نه C++ ؛ پس انتخاب زبان C++ صرفا برای راحتی استفاده بوده

          1. Avatar for حسین حسین گفت:

            فرمایش شما کاملا درسته . متوجه میشم چی میفرمایید .
            اونقدری که میفهمم زبان c )c++) یک زبان تابعی هست . درسته که عملکرد توابع setup و
            loop معادل با همون تابع main(void) که شما به درستی فرمودید.
            اما کمپایلر آردوینو چون اساس زبان c++ , c هست نمیتونه خودش تشخیص بده کهsetup و
            loop چی هستن ( راستش درک این هست ) پس باید یک چیزی این معادل سازی به تابعmain(void) رو انجام بده تا برای gcc معنی داشته باشه….خود gcc نمیتونه اینکار و بکنه ( وقتی کد هگز داره اجرا میشه فقط تابعی که اسمش main هست اجرا میشه بقیه توابع بر اساس فراخوانی از main شروع به کار میکنن ) کمپایلر آردوینو خودش این تابع معادل ازsetup و loop را تولید میکنه ؟ یا قبل از ترجمه خود ide میاد این اصلاح رو انجام میده ؟
            نقطه مبهم اینجاست .
            سپاس بابت وقتی که میگذارید . یکم طولانی شد .

          2. Avatar for زئوس Zeus زئوس Zeus گفت:

            سلام (خوشم میآد از این که سوال گر هستید و به دنبال روشن کردن نقاط خاموش هستید)
            خوب بله شما درست میگید خود کامپایلر نمیتونه بفهمه چون همیشه کامپایلر های C برنامه رو از تابع Main شروع میکنند ؛ پس چطور وجود توابع setup و loop رو متوجه میشه ؟
            خوب خیلی ساده است ؛ آردینو یه فریمورک داره که همراه هر پروژه ای با پروژه کامپایل میشه و توی بکگراند هست و به همین دلیل ما نمی بینیمش ؛ مثلا وجود کلاس Serial از همینجا میآد ؛ یعنی توی اون فریمورک داره همراه با سورس ما کامپایل میشه ؛ خوب حالا سورس این فریمورک کجاست – معلومه دیگه توی گیت هاب آردوینو خوب حالا دقیقا مین برنامه کجاست ؟
            توی این آدرس میتونید تعریف Main فریمورک آردوینو رو ببینید 🙂
            که توی خط 33 دقیقا main به شکل زیر تعریف شده


            int main(void)
            {
            init();

            initVariant();

            #if defined(USBCON)
            USBDevice.attach();
            #endif

            setup();

            for (;;) {
            loop();
            if (serialEventRun) serialEventRun();
            }

            return 0;
            }

          3. Avatar for حسین حسین گفت:

            سلام .
            هوممممممممممممم!!
            گیرم دقیقا همین موضوع بود .
            ( به طور مثال توی یک کد دیدم از رابط سریال استفاده کرده بود ولی با توجه به کریستال 16 MHZ آردوینو واحد Uart دچار خطا میشه پس حدس میزدم احتمالا سریال رو نرم افزاری پیاده سازی کرده باشه . حالا که نرم افزاری هست ، تایمینگش رو چطوری پیاده کرده؟؟ با دیلی که دقیق نیست پس مجبور میشه از تایمر استفاده کنه و از کدوم تایمر استفاده ….. و هزار مسئله شبیه این که موقع کد نوشتن کلی درد سر ممکنه درست کنه )

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

            سپاس فراوان جناب زئوس گرامی
            بابت زحمتی که میکشید و بابت وقتی که میگذارید .

          4. Avatar for زئوس Zeus زئوس Zeus گفت:

            سلام
            البته توی آردوینو به دو شکل میشه واحد سریال رو پیاده سازی کرد
            پیشفرضش همون سخت افزاری است ولی به شکل نرم افزاری هم امکان تعریفش هست ِ دقیقا درست حدس زدید از تایمر برای زمان بندی استفاده میکنه
            ولی این که از کدوم تایمر داره استفاده میکنه منم نمیدونم باید سورسش رو دید 🙂
            خواهش میکنم دوست عزیز

  23. Avatar photo رسول خواجوی بجستانی گفت:

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

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

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

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

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