آردوینو یکی از بزرگترین حرکت های متن باز در حوزه الکترونیک است و کمتر کسی است که تاحالا اسمش رو نشنیده باشه اما همیشه یک مشکل اساسی داشته به نظر من ؛ و اون هم نداشتن یک ویراشگر حرفه ای است ، در این پست سعی خواهیم کرد که یک ویرایشگر حرفه ای رو برای آرودینو معرفی کنیم؛ شرکت ماکروسافت غول جهان سرمایه داری است ؛ اما چطور امکان دارد که این دو در کنار هم قرار بگیرند؟
جواب را به سادگی میشود در تغییر رویه سیاست های ماکروسافت دنبال کرد که در سال جاری حرکت های بسیار زیادی را انجام داده که خود را حامی دنیای متن باز معرفی کند ، از انتشار سورس کد MS-DOS تا خرید GitHub و… البته برخی از این حرکت ها هم کمی تامل برانگیز است و مقداری نگران کننده ! از این قضایا که بگذریم ماکروسافت به تازگی پروژه ای متن باز را معرفی کرده که در واقع می توان گفت همان ویرایشگر ویژوال استودیو است و تحت عنوان Vs Code شناخته میشود. قابلیت ها و امکانات ویرایشگر ویژوال استودیو بر کسی پوشیده نیست ما در این آموزش سعی خواهیم کرد که با استفاده از این ویرایشگر قدرتمند و با استفاده از افزونه متن باز PlatformIO برای برد های آردوینو برنامه بنویسیم و بر روی آنها برنامه ریزی کنیم. پس با سیسوگ همراه باشید.
ویژوال استودیو کد چیست ؟
ویژوال استودیو کد در سال 2015 در کنفرانس Build معرفی شد و مدتی بعد در گیت هاب با لایسنس MIT منتشر شد که تا کنون بیش از 42 هزار کامیت نیز داشته است. واقعا چه کسی فکر میکرد روزی ماکروسافت یک نرم افزار متن باز ارائه کنه آن هم تحت مجوز MIT ؛ واقعا عجیبه ؛ ولی خوب چیزیه که اتفاق افتاده و ما هم با آغوش باز از متن باز استقبال خواهیم کرد حتی اگر کار ماکروسافت بوده باشه ؛ ویرایشگر ویژوال استودیو کد از زبان های مختلفی پشتیبانی میکنه و تقریبا به جرات میتوان گفت که در حال حاضر کمتر زبانی است که توسط این ویرایشگر پشتیبانی نشه.
لازمه اشاره کنم که محبوبیت این ویرایشگر به حدی است که طبق یه نظر سنجی که در سال 2018 سایت Stack Overflow انجام داد ؛ ویژوال استودیو کد با کسب رای 34.9 درصد محبوب ترین ویرایشگر انتخاب شد.
ویژوال استودیو کد برای پلتفرم های ویندوز ؛ لینوکس ؛ مک در دسترس است و به سادگی میتوانید از سایت ویژوال استودیو کد آن را دانلود کنید.
بعد از دانلود و نصب آن که مثل نصب همه نرم افزار های دیگر است ؛ در ادامه به کانفیگ و آماده سازی این ویرایشگر برای آردوینو خواهیم پرداخت.
نصب PlatformIO بر روی ویژوال استودیو کد
PlatformIO در واقع یک اکوسیستم کامل است برای طراحی و توسعه سیستم های IOT ( چیزنت ) است. PlatformIO نیز متن است و نزدیک به 600 عدد دستگاه و برد IOT را پشتیانی میکند؛ برد های آردینو نیز از این جمله برد ها هستند.
برای نصب PlatformIO کافیه که گام های زیر رو دونه به دونه انجام بدید.
اول در نرم افزار VSCode ( ویژوال استودیو کد ) به قسمت Package Manager بروید.
دوم عبارت platformio-ide را جستجو کنید.
سوم بر روی کلید Install کلیک کند و منتظر شوید تا نصب پایان یابد.
اگر نصب به درستی انجام شده باشد ؛ در نوار کناری VSCode باید آیکون PlatformIO را مشاهده کنید. مطابق عکس زیر
ساخت اولین پروژه آردوینو با ویژوال استودیو کد
برای ساخت پروژه ابتدا به صفحه خانه (Home) در PlatfromIO بروید و بر روی کلید New Project کلیک کنید.
بعد از فشردن کلید New Project پنجره ای ظاهر می شود که لازم است نوع سخت افزار و اسم پروژه و البته فریمور مورد استفاده را در آن مشخص کنید ؛
بعد ایجاد پروژه ؛ به سادگی میتوانید پروژه ایجاد شده را در قسمت سمت چپ نرم افزار مشاهده کنید ، مطابق عکس زیر به قسمت src رفته و بر روی فایل main.cpp دابل کلیک کنید تا فایل مذکور باز شود.
در فایل باز شده ، کد زیر را بنویسید و آن را ذخیره کنید
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #include <Arduino.h> int led = 13; void setup() { // put your setup code here, to run once: pinMode(led, OUTPUT); } void loop() { // put your main code here, to run repeatedly: digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) delay(100); // wait for a second digitalWrite(led, LOW); // turn the LED off by making the voltage LOW delay(100); // wait for a second } |
بله به همین راحتی ؛ یک پروژه ساخته شد و کد مورد نظر را به آن اضافه کردیم.
کامپایل و انتقال کد به برد آردوینو
همانطور که در تصور زیر مشاهده میکند ، برای کامپایل کد و پروگرام کردن برد Arduino تنها کافی است از نوار ابزار پایین صفحه که معمولا به رنگ آبی هم هست ؛ گزینه های مشخص شده را انتخاب کنید.
سلام، خداقوت
شما استفاده از آردوئینو و کتابخانهی stm32duino رو برای stm32 توصیه میکنید؟ برای استفادهی تجاری. نسبت به روش توابع HAL به نظرتون نقطهی ضعف خاصی دارند؟ اگر منبع خوبی هم سراغ دارید ممنون میشم معرفی کنید.
خیلی ممنونم
سلام دوست عزیز
اینها ابزار هستند و تا جای ممکن سعی شده با سلیقه کاربر همراه باشن
من در خود آردوینو مشکلی نمی بینم که نشه ازش استفاده تجاری انجام داد به هر حال یک برنامه است و اگر درست نوشته بشه به خوبی کار خواهد کرد 🙂
من حتی نمونه PLC دیدم که با اردوینو ساخته شده و حتی برنامه نویسی شده ، پس همه چیز به خود شما برمیگیرده
سلام و عرض ادب، ممنون خیلی مطلب خوبی بود، یه سوال داشتم هرچی میگردم راهنما براش پیدا نمیکنم، هیچ کجا آموزش فارسی برای آردویینو با vs code پیدا نمیشه، اگه هم بخوام آموزش arduino با فریمورک خوده آردووینو رو یاد بگیرم و بعد که یاد گرفتم بیام با vscode کار کنم، با زبان سی آموزش دادن، نه سی پلاس پلاس، نمیدونم چیکار کنم، ممنون میشم راهنمایی بفرمایید
سلام دوست عزیز
خیلی ساده میتونید از platformIO استفاده کنید 🙂
یه پلاگینه که روی vscode نصب میشه و خیلی راحت میتونید آردوینو رو استفاده کنید
سلام وخسته نباشید من این افزونه رو نصب کردم ولی هیچ علامتی چیزی اضافه نشد به وی اس کدم چیکار باید بکنم
سلام من یکavr پروگرام شده دارم میخوام پاکش کنم دوباره پروگرام کنم چه طوری این کارو در vs codeانجام بدم
خوب شما باید از پروگرامر avrdude استفاده کنید که میتونید از توی تریمنال هم بهش دستور بدید 🙂
C:\> avrdude -p m88p -c usbasp -e
نمونه اش این شکل هست که از پروگرامر usbasp برای پاک کردن میکروکنترلر atmega88 استفاده میکنه
سلام
فایل .hex را کجا میشه پیدا کرد؟
سلام
میتونید از این لینک جواب سوالتون رو پیدا کنید!
سلام من شروع کردم کار کردم با vs code اما الان به کد های درست من گیر داده و خط کشیده زیرش
کد ها توی ide اردینو مشکل نداره
ممکنه راهنمایی کنید
آیا موقع کامپایل به شما خطا میده یا نه درست کامپایل میشه ؟
ممنونم از همکاریتون
چندتا از extensions ها اضافه رو پاک کردم درست شد
خوشحال شدم که درست شده
سلام
هنگام پروگرم کردن در VSCODE در افزونده platformIO برای esp8266 در پایان پروگرام کردن با نمایش پیغام زیر
Leaving…
Hard resetting via RTS pin…
از کاربر میخواد که بصورت دستی برد را ریست کنید , در حالی که در محیط IDE آردوینو خودش بصورت اتوماتیک پس از پروگرم کردن برد را ریست میکند
میخواستم ببینم دستور یا کدی هست که به فایل platformio.ini اضافه کنیم که این ریست خودکار توسط برنامه انجام شود ؟
سلام تا اونجا که من کار کردم – خودش به صورت سخت افزاری ریست میکنه !
لازمه که بدونید پروگرامر اردوینو و پلتفرم برای esp یکی هست – این پیام هم داره میگه که با استفاده از پایه rts ریست سخت افزاری انجام شده :/
سلام
بله میدونم پروگرامر اردوینو و پلتفرم برای esp یکی هست و سالها است دارم باش کار میکنم
در آی دی ای خود اردوینو خودش به صورت سخت افزاری ریست میکند و مشکلی نیست
ولی VSCODE با نمایش پیغام
Leaving…
Hard resetting via RTS pin منتظر میماند که بصورت دستی ریست کنیم میکرو را
امیدوارم لینک زیر جواب سوال شما باشه
https://community.platformio.org/t/sonoff-basic-upload-problem-hard-resetting-via-rts-pin/11627
سلام
کلا برای پروگرام کردن esp با اردوینو باید یکبار بعد از کامپایل و قبل از اپلود توی مود فلش ریست بشه
مکافاتی هم هست!
حالا جالبه که من برخی برد ها رو دیدم مشکلی ندارد و برخی رو دیدم مشکل دارند که در نوع خودش جالب توجه هست
سلام
چگونه میتوان کتابخانه هایی که در آردوینو اسنفاده میکنیم را به platformIO اضافه کنیم
من فایل های کتابخانه را به شاخه LIB پروژه اضافه کردم ولی باز هم از کتابخانه استفاده شده ایراد میگیرد
اگه از کتابخانه هایی باشه که با خود آردوینو نصب میکنید به سادگی در صفحه خانه پلتفرم io میتونید مثل خود آردوینو نصب کنید به شکل آنلاین.
اگر نه که فایل ها رو باید به پروژه اضافه کنید.
سلام و تشکر بابت مطالب آموزنده
من چند وقت است دنبال یک IDE بی درسر مثل ویرایشگر خود آردیونو ولی با قابلیت IDE حرفه ای هستم
ویرایشگر Eclipse سیسوگ را نصب کردم یه مدت خوب بود ولی بعد با نصب کتابخانه های مختلف از برنامه ایراد میگیره
PlatfomIO هم به کتابخانه ها گیر میده
اگر میشه یک آموزش یا توضیح در خصوص مدیریت کتابخانه ها در platformIO و چگونگی افزودن کتابخانه به دایرکتوری پروژه و پارمتر lib_deps در فایل platformIO.ini بدهید.
ممنون
سلام
توی نسخه های جدید eclipse آردوینو به خود ide اضافه شده است – ورژن ۲۰۱۹ این ویرایشگر رو تست کنید.
سلام و تشکر بابت مطالب آموزنده
ببخشید من چیزی رو درست متوجه نشدم. اگر امکان دیباگ برای آردوینو نباشه پس دلیل استفاده از این IDE بجای آردوینو چی میتونه باشه؟ آیا فقط شکیل تر بودن یا قابلیت تکمیل خودکار کد یا چیز دیگه ای هست؟
سلام دوست عزیز ؛ ابتدا بذارید اشاره کنم که اصلا برد های آردینو امکان سخت افزاری دیباگ شدن رو ندارن ؛ پس وقتی امکان سخت افزاری روی چیزی موجود نباشه چطور میشه از یک نرم افزار توقع دیباگ رو داشت !
خوب اما در خصوص نرم افزار بله درست حدس زدید مهم ترین مورد مدیریت کد و البته هوشمندی در کد کامپلیشن هست حتی خطاهای احتمالی برنامه نویسی رو در قالب وارنینگ بهتون گزارش میده ، قابلیت git هم یکی از مهم ترین ابزارهای این ویرایشگر هست ؛ از طرفی مدیریت ساخت و ایجاد کتابخانه هم هست و صدها مورد دیگه !
البته وقتی این موارد مهم میشه که قصد نوشتن یک برنامه بزرگ رو داشته باشید ؛ اون موقع متوجه میشید که چقدر این موارد مهمه
البته افزونه ای از ماکروسافت در بخش افزونه ها هست که عنوان میکنه امکان دیباگ هم داره.
https://marketplace.visualstudio.com/items?itemName=vsciot-vscode.vscode-arduino#overview
این افزونه منحصرا توسط ماکروسافت برای آردوینو ارایه شده.
بله دیده بودم این افزونه رو ولی نتونستم باهاش کار کنم ، برای همین سراغ PLatformIO رفتم
شما چه مدل برد آردوینویی رو میخواید دیباگ کنید دقیقا ؟
خوب البته هنوز به مبحث دیباگ نرسیدم و ابتدای راه هستم.
ولی بیشتر برای بردهای متداول مثل UNO و NANO تو فکرم هست.
ببینید میکروکنترلر این دو برد امکان دیباگ رو ندارند اصلا ؛ تنها کاری که شاید بتونید انجام بدید ؛ شبیه سازی هست با نرم افزار های مربوطه
شما اول باید به امکانات سخت افزاری نگاه کنید بعد در خصوص قابلیت ها به جمع بندی برسید.
سلام
آیا امکان فعالسازی وقفه ی یوزارت در آردوینو برای میکروی Stm32f1 وجود داره؟
بنده هر چقدر تلاش کردم از طریق تابع serialEvent نتونستم هیچ چیزی دریافت کنم
سلام دوست عزیز ؛ تا حالا نیاز نشده با وقفه سریال کار کنم ولی ظاهرا امکانش هست لینک زیر رو مطالعه بفرمایید
https://www.stm32duino.com/viewtopic.php?t=1139
سلام خسته نباشید
آیا در آردوینو امکان دیباگ کد وجود داره مثلا در همین IDE
سلام
ببینید تا اونجا که اطلاع دارم ، آردوینو امکان دیباگ کد رو نداره ؛ این IDE امکان دیباگ رو داره ولی فکر نمیکنم برای آردوینو بشه ازش استفاده کرد.
سلام می شه اردوینو رو بدون سیم وبا بلوتوث پرگرام کرد با این نرم افزار؟
چرا باید بشه همچین کاری کرد ؟ ؛ اگر با خود آردوینو میشه چنین کاری کرد ؛ مطمئن باشید با این هم میشه چنین کاری کرد ؛ چون این هم دقیقا از ابزار های آردوینو استفاده میکنه
سلام دوست عزیز
مثل همیشه عالی بود تشکر
خواهش میکنم دوست عزیز
نظرات شما باعث دلگرمی ما میشه
دستت درد نکنه مثل همیشه عالی بود
خواهش میکنم دوست عزیز 🙂
واقعا کاربردی بود این مطلب 🙂
خواهش میکنم دوست عزیز
موفق باشید