سلام به دوستان سیسوگ. در این مقاله میخواهیم به معرفی آردوینو بپردازیم و اصلاً ببینیم این برد کوچک و کاربردی به چه صورت است و از کجا آمده است. پس تا پایان آموزش آردوینو با سیسوگ همراه باشید.
آردوینو چیست؟
اگر بخواهم به طور خلاصه بگویم، یک میکروکنترلر را گذاشتند روی برد و مدار تغذیه برای آن درست کردهاند، پروگرامر آن را طراحی کردهاند، برای آن پایههای ورودی و خروجی گذاشتند تا کار با آن راحتتر باشد، خازنها و مقاومت هایی را گذاشتند روی برد که میکروکنترلر را راه بیندازد و کار ما برای کار کردن با آن راحت شده باشد.
در تصویر زیر میتوانید چند نوع آردوینو را ببینید:
محیط آردوینو چگونه است؟
محیط آردوینو طوری طراحی شده است که کار با آن برای مبتدیان راحت باشد. حتی کسی که هیچ تجربهای در زمینهی الکترونیک یا نرمافزار نداشته باشد، میتواند با آردوینو دستگاههای موردنظر خود را بسازد. آردوینو در ساخت چیزهای مختلفی از جمله ابزارآلات موسیقی، ربات، مجسمه، بازی، وسایل خانه و… کاربرد دارد.
در سراسر جهان، آردوینو در بسیاری از پروژههای الکترونیک بهویژه توسط افرادی که میخواهند چیزهای سادهای بسازند، استفاده میشود. آردوینو به شکلی طراحی شده است که اشخاص غیرمتخصص هم بتوانند از آن استفاده کنند. این نرمافزار/سختافزار دارای تعداد زیادی نمونه کد است و نحوه استفاده از امکانات مختلف برد آردوینو نیز در آنها نشان داده شده است.
اگر بخواهم به طور خلاصه بگویم، یک میکروکنترلر را گذاشتند روی برد و مدار تغذیه برای آن درست کردهاند، پروگرامر آن را طراحی کردهاند، برای آن پایههای ورودی و خروجی گذاشتند تا کار با آن راحتتر باشد، خازنها و مقاومتهایی را گذاشتند روی برد که میکروکنترلر را راه بیندازد و کار ما برای کار کردن با آن راحت شده باشد.
این بعد سختافزاری آردوینو است و البته یک بعد نرمافزاری هم وجود دارد که میآید و در یک نرمافزاری که توسط آردوینو طراحی و اراِئه شده است برنامهتان را مینویسید و آن را به برد انتقال میدهید. در شکل زیر محیط این نرمافزار را میبینید.
آردوینو بیشتر به دلیل سختافزار خود معروف است؛ اما برای انجام پروژه و پروگرام کردن، شما به نرمافزار آن نیز احتیاج دارید. بهطورکلی آردوینو از دو قسمت اصلی تشکیل شده است:
- برد آردوینو که بخش سختافزاری میباشد و هنگامی که پروژه خود را ایجاد میکنید، از آن استفاده میکنید.
- Arduino IDE که بخش نرمافزاری است و روی سیستم شما اجرا میشود. از Arduino IDE برای نوشتن کدها، استفاده میشود. این کدهای کوچک که داخل محیط Arduio IDE نوشته میشوند، اسکچ (Sketch) نامیده میشوند.
آردوینو از کجا آمده است؟
در سال 2003 اولین برد در یک کلاس درسی و بر اساس کار تحقیقاتی در شهر Ivera در کشور ایتالیا به وجود آمد. اولین ورژن آردوینو بردی بود که از یک میکروکنترلر ارزان قیمت استفاده میکرد و مثلاً میشد چیزهای ساده مانند موتور یا LED و یا سنسورهای مختلفی را بهش متصل کرد و همینطور یک زبان برنامهنویسی واسط هم برای آن طراحی شده بود.
اما اسم آردوینو در اصل برگرفته شده از نام یک پادشاه ایتالیایی به نام اردوین (Arduin) است که چندین سال قبل از میلاد بر ایتالیا در شهر Ivera حکومت میکرد.
سختافزار آردوینو
برد آردوینو که بخش سختافزاری آردوینو است، جایی است که کدی که مینویسید، بر روی آن اجرا میشود. برد آردوینو مبتنی بر یک میکروکنترلر کوچک است که نمونه کوچک شده از یک پردازنده کامپیوتری است. این میکروکنترلر یا کامپیوتر کوچک، بسیار ضعیفتر از کامپیوترهایی است که ما از آنها استفاده میکنیم. اما از طریق همین میکروکنترلر کوچک و ارزان، میتوان بسیاری از پروژهها را انجام داد.
بیشتر بردهای محبوب دارای یک کانکتور USB هستند که برای تأمین برق و اتصالات برای آپلود نرمافزار بر روی برد استفاده میشود. شکل زیر یک برد پایه را نشان میدهد که بیشتر علاقهمندان، با این برد فعالیت خود را شروع میکنند، یعنی برد آردوینو Uno Arduino) Uno).
این برد دارای یک پردازنده 8 بیتی، ATmega328P (که دارای 2 کیلوبایت حافظه Static RAM یا SRAM است) و 32 کیلوبایت حافظه فلش به منظور ذخیره اسکچ ها است و همچنین، با فرکانس کاری 16 مگاهرتز، کار میکند. Arduino Uno دارای یک میکروکنترلر دیگر نیز هست که برای اتصال USB استفاده میشود.
برد آردوینو لئوناردو (Leonardo) نیز مدل دیگری از برد آردوینو است که از همان فرم برد آردوینو Uno استفاده میکند، اما پردازنده آن متفاوت است و دارای پردازندهای به نام ATmega32U4 است. این برد اسکچهای شما را اجرا میکند و همچنین، از اتصال USB محافظت میکند.
برد آردوینو لئوناردو ارزانتر از برد آردوینو Uno است و همچنین، دارای ویژگیهای جذابی مثل شبیهسازی دستگاههای USB مختلف از جمله ماوس و صفحهکلید میباشد.
برد دیگر آردوینو، Arduino Zero است که دارای ساختار پین مشابهی با مدلهای قبلی دارد؛ اما پردازنده سریعتری دارد. این برد برخلاف آردوینو Uno و آردوینو لئوناردو، این برد برای GPIO نمیتواند ولتاژ ورودی بیش از ۳٫۳ ولت را تحمل کند، برد آردوینو Zero یک پردازنده 32 بیتی دارد که با فرکانس 48 مگاهرتز کار می کند.
همچنین، این برد دارای رم با حافظه 32 کیلوبایت و حافظه فلش 256 کیلوبایت میباشد.
آردوینو و USB
برد آردوینو Uno دارای یک چیپ (میکروکنترلر) دوم برای مدیریت ارتباطات USB است. اما برد آردوینو لئوناردو فقط یک چیپ دارد که ATmega32U4 نام دارد و کد را اجرا میکند و همین چیپ ارتباطات USB را نیز کنترل میکند.
بردهای قدیمیتر آردوینو و بردهای مشابه به آن، از چیپ شرکت FTDI استفاده میکنند که این چیپ از یک USB برای ارتباط با پورت سریال استفاده میکند.
برخی از کلونهای ارزانتری که در بازار ایران به وفور وجود دارند، ممکن است از چیپی استفاده کنند که فانکشن مشابهی دارد، مانند CH340. برای استفاده از بردهای مبتنی بر CH340 احتمالاً نیاز به نصب درایور خواهید داشت.
گروه دیگری از بردهای مشابه با آردوینو نیز وجود دارد که دارای USB هستند، اما هیچ چیپ مخصوصی برای کنترل USB ندارند. بهجای آن، این بردها از یک تکنیک به نام big-banging برای اجراکردن نرمافزار رابط USB استفاده میکنند.
این بردها از جمله برد محبوب Trinket از شرکت Adafruit، ممکن است نتوانند بهخوبی با کامپیوترهای جدید کار کنند و اگر شما یک کامپیوتر قدیمی داشته باشید، خوششانسید و میتوانید از آن استفاده کنید. (شرکت Adafruit، برد Adafruit Trinket را تولید کرده است که این برد دارای USB لوکال است و همچنین، از مدل قبلی، بسیار سریعتر است.)
علاوه بر این، ممکن است شما با بردی مشابه آردوینو مواجه شوید که اتصال USB نداشته باشد. در عوض، این بردها پینهای سریالی دارد که نمیتوانند مستقیماً به یک پورت USB متصل شوند.
اگر میخواهید بردی برای آموزش خود انتخاب کنید که بتوانید بیشتر پروژههای آردوینو را با آن انجام دهید، برد آردوینو Uno، بهترین گزینه است. اما اگر پرفورمنس بهتری نسبت به برد آردوینو Uno میخواهید که دارای فرم فاکتور مشابهی با آن باشد، برد آردوینو Zero و بردهای مشابه آن مانند Metro M0 Express و RedBoard Turbo گزینههای خوبی هستند. بردهای سری MKR و Nano 33 نیز دارای پرفورمنسی عالی هستند، اما ابعاد کوچکتری نسبت به برد آردوینو Uno ارائه میدهند.
اشکال مختلف آردوینو
بردهای آردوینو در اشکال و ابعاد دیگری نیز عرضه می شوند؛ این بدین معنا است که پین های این بردها دارای ساختاری متفاوت هستند و با شیلدهایی که برای برد آردوینو Uno طراحی شده اند، سازگار نیستند.
MKR101 یک برد آردوینو است که دارای ابعاد کوچکتری است. پینهای این برد برای ورودی/خروجیهای ۳.۳ ولتی، طراحی شدهاند. همچنین، مثل برد آردوینو Zero، از یک چیپ ARM استفاده میکند.
MKR1010 دارای وایفای و یک مدار برای شارژکردن باتری LIPO است. همچنین، بردهای سری MKR با شیلدهای برد آردوینو Uno سازگار نیستند.
گسترش برد آردوینو با شیلدها
بردهای آردوینو را میتوان بهوسیله شیلدها گسترش داد که شما میتوانید آنها را در قسمت بالای برد به پین هدرهای برد آردوینو وصل کنید.
برخی از مدلهای بردهای آردوینو و بردهای سازگار با آردوینو، ممکن است افزونههایی داشته باشند که با شیلدها سازگار نیست؛ این موضوع به این دلیل است که بعضی از بردها، از یک فرم و ابعاد متفاوت با رایجترین مدل برد آردوینو یعنی آردوینو Uno، تولید میشوند. بهعنوانمثال، برد آردوینو MKR که بسیار کوچکتر از برد آردوینو Uno است.
نرمافزار آردوینو
برنامههای آردوینو که اسکچ (Sketch) نامیده میشوند، بر روی کامپیوتر با استفاده از IDE آن ساخته میشوند. IDE این امکان را فراهم میکند تا کد خود را بنویسید و بتوانید آن را ویرایش کنید و همچنین، این کد را به دستورالعملهایی تبدیل کنید که سختافزار آردوینو آن را بفهمد. همچنین، این دستورالعملها را در قالب کدهای کامپایل شده به برد آردوینو منتقل میکند.
IDE که مخفف عبارت integrated development environment است، نرمافزاری است که امکانات جامعی را برای برنامهنویسان رایانه برای توسعه نرمافزار فراهم میکند.
بردهای سازگار با آردوینو
برخی از مهمترین بردهای سازگار با آردوینو عبارتاند از:
- برد Bare Bones (BBB)
- بردهای شرکت Adafruit
- بردهای شرکت SparkFun
- بردهای شرکت Seeed Studio از جمله Grove
انواع آردوینو
آردوینو بردهای مختلفی برای کاربردهای گوناگون دارد که حجم و میکروکنترلر آنها باهم فرق دارند. اینجا چند تا از این بردهای معروف را به شما نشان میدهم:
همانطور که میبینید آردوینو بر حسب کاربرد شما بردهای مختلفی را وارد بازار کرده است، خوبی آنها این است که برنامهنویسی برای آنها باهم فرقی ندارد و با همان نرمافزار میتوانید برنامه خودتان را برای بردهای مختلف بنویسید. در عکس اول میتوانید Arduino nano را مشاهده کنید که اندازه آن کوچک است و میتوانید در پروژههایی که اندازه کوچک برایتان مهم است از آن استفاده کنید. در عکس دوم برد Arduino Uno را میبینید و در عکس سوم برد Arduinio mega را میبینید که اندازه بزرگتری نسبت به آن دو دارد و پایههای بیشتری دارد که میتوانید در پروژههای بزرگتر از آن استفاده کنید.
شاید پیش خودتان بگویید که خب آردوینو که همه میکروکنترلرهایش AVR هست و من آن را دوست ندارم؛ چون فرکانس کاری آن پایین است. خب آردوینو این مشکل شما را هم حل کرده و چند وقتی هست بردی مبتنی بر میکروکنترلرهای ARM را هم روانه بازار کرده به نام Arduino DUE.
اگر یکم بیشتر درباره انواع بردهای آردوینو سرچ کنید، میبینید که بردهای مختلفی را برایتان میآورد و اساساً آردوینو سعی کرده است که برای انواع نیازهای بشر انواع بردهای آردوینو ارائه کند. مثلاً امروزه دیدهاند که مبحث اینترنت اشیاء بسیار داغ هست، آردوینو هم برای این آمده و یک برد برای استفاده در IOT طراحی کرده است.
معرفی پایههای آردوینو
خب روی برد Arduino UNO پایههایی را میبینید. بعضی از این پینها دیجیتال هستند، یعنی میتوانید مقادیر 0 یا 1 را روی آنها قرار بدید و یا از آنها بخوانید، که عبارتند از پایههای 0 تا 13 که روی برد شماره گذاری شدهاند.
بعضی از آنها پینهای آنالوگ هستند که میتوانید مقادیر آنالوگ را از آنها بخوانید شامل پایههای A0 تا A5 .
روی بعضی از پایهها میتوانید مقادیر آنالوگ را قرار بدید که این پایهها در اصل با PWM کار میکنند. در ادامه آموزشها بهتون میگم که PWM اصلاً یعنی چی و چطور کار میکند. این پایهها با نماد ” ~ ” روی بورد مشخص شدهاند که 6 تا از همان پایههای دیجیتال هستند.
بعضی از پایههای دیگر هستند که کلاً یک ولتاژ روی آنها است و یا GND هستند. یکی از آنها دارای ولتاژ 3.3 ولت و دیگری 5 ولت است و دو پایه دیگر GND این بورد هستند. کاربرد این پایهها بیشتر برای تغذیه سنسورها یا ماژولهای جانبی است که به آردوینو وصلشان میکنیم و از آنها استفاده میکنیم. مطالبی را که گفتم میتوانید در شکل زیر ببینید:
این برد را میتوانید با استفاده از USB که به کامپیوتر وصل میشود و همچنین از طریق جک تغذیه که به آداپتور وصل میشود، تغذیه کنید. پورت USB علاوه بر این که برد را تغذیه میکند میتواند برد را از طریق کامپیوتر پروگرام کند.
خب تا اینجا از آموزش آردوینو گفتیم این آردوینو چیست و آن را معرفی کردیم. در ادامه آموزش آردوینو میخواهیم بگوییم این برد چه مزایا و چه معایبی دارد، کجا کاربرد دارد، چه کارهایی با آن انجام میدهند و…
کاربرد و مزایا و معایب آردوینو
کاربرد این برد که مشخص است، شما میتوانید با میکروکنترلری که روی آن قرار دارد یک سیستم الکترونیکی بسازید، مثلاً ربات و خیلی چیزهای دیگر.
اما از خوبیهای این برد بگم. مهمترین ویژگی این برد راحتی کار با آن است و همچنین، برنامهنویسی آن راحت است و وجود کتابخانههای زیاد و open source آن باعث شده است تا برای راهاندازی ماژولهای مختلف و پیچیده مثل Ethernet یا GSM و یا انواع نمایشگرها مشکلی نداشته باشید. محبوبیت این برد باعث شده که افراد زیادی روی این بردها کار کنند و کتابخانههای زیادی را بنویسند.
یکی دیگر از خوبیها را میتوان گفت: چون میکروکنترلر روی اکثر بردها AVR هست شما میتوانید برای کار با AVR از برنامهنویسی، زبان و کتابخانههای آردوینو استفاده کنید.
همچنین، خیلی از پروژههای دانشجوییتان را میتوانید با آردوینو بزنید.
اما بدی این برد این است که در پروژههای پیچیده به دلیل محدودیت سخت افزاری زیاد قابلاستفاده نیست.
در ادامه مقالات آموزش آردوینو سیسوگ را همراهی کنید.
سلام بسیار عالی بود ممنون
سلام
خداقوت،همین اول ی سوال بپرسم
من UNO د ارم و میخوام ی کد رو آپلود کنم ارور زیر میاد لطفا راهنمایی کنید،ظمنا روی کد های نمونه ی خود آردوینو هم این مشکل هست که بعد از چند بار آپلود زدن کد رو میریزه،مقدار بیتی هم ک اشاره میکنه هر دفعه متفاوته.
Arduino: 1.8.19 (Windows 10), Board: “Arduino Uno”
Sketch uses 6908 bytes (21%) of program storage space. Maximum is 32256 bytes.
Global variables use 650 bytes (31%) of dynamic memory, leaving 1398 bytes for local variables. Maximum is 2048 bytes.
avrdude: verification error, first mismatch at byte 0x0800
0xff != 0x80
avrdude: verification error; content mismatch
avrdude: verification error; content mismatch
ابتدا توسط یک پروگرمر و از طریق پورت ISP روی برد “بوت لودر متناسب” را بر روی میکرو کنترلر اپلود کنید.
سپس مشکل حل شده و میتونید مجدد یک برنامه ساده را امتحان کنید برای اپلود.
اگر این کار را نکرده اید بهتر است عبارت Arduino as ISP را سرچ کنید.
درود و ارادت سپاس از سایت فوق العاده تون کاش محیط نرم افزاری ویژوآل استودیو کد رو با اکستنشن پلتفرمیو برای آموزش انتخاب میکردید چون در کنارش میتونیم خیلی کارای بیشتری و پروگرام میکرو های بیشتری رو هم انجام بدیم
سلام در سری های آموزش بعدی حتما این موارد هم میپردازیم
سلام وقت بخیر
مخاطب متن مشخص نبود کی هست. برخی جاها تخصصی و برخی جاها بسیار عام بود.
جمله بندی بعضاً دوگانه بود و معانی مختلف برداشت میشد.
دسته بندی مطالب ضعیف بود و یک خط فکری رو من برداشت نکردم. حس کردم مطالب از جاهای مختلف صرفا کپی شده و کنار هم گذاشته شده که البته کار قابل تقدیری هست.
پروژه های پیچیده ای که گفتید قابل اجرا نیست رو نام ببرید.
محبوبیت زیاد این برد ها دلیل بر کتابخانه های زیاد نیست. اپن سورس با منبع باز بودن هست که این نتیجه رو حاصل کرده و برای درک بهتر این موضوع لازمه یه مقایسه با نرم افزار های کدویژن و iar انجام بشه تا مخاطب اینو درک کنه.
در پایان ممنونم از وقتی که برای تهیه این مقاله گذاشتید
سلام جناب آقای جعفری
از لحاظ دوگانه بودن حق رو به شما میدم، در مطالب بعدی این مورد برطرف میشه،
پروژه های پیچیده ای مثل پردازش تصویر و ویدئو رو منظورم هست.
حتما در مطالب بعدی به این موارد هم میپردازیم.
ممنون از شما
از همین ابتدای نوشته که خیلی راحت ذهن رو از غیرقابل توصیف بودن مسأله ها مثل آرودینو با تقسیم کردنش به سایر اجزای قابل شناسایی (میکروکنترلر + برد + مدار تغذیه + پروگرامر طراحی شده + پایه قرارداده شده ) جامعه ایران به افرادی مثل شما که که مطالب رو از پایه و اصولی درس میدن نیاز داره
سلام محمد عزیز
خوشحالم که مطلب براتون مفید بوده 🙂
اولیش که عاااااااااااااااااااااااالی بود.
سلام خوشحالم که این قسمت مورد تاییدتون بوده
به زودی منتظر قسمت های جدید باشید!