آموزش آردوینو (Arduino)

دسته بندی: آموزش اینترنت اشیاء (IOT)

آردوینو

آنچه در این صفحه می خوانید:

آشنایی با آردوینو (Arduino)

Arduino یک پلتفرم الکترونیکی اوپن سورس است که بر اساس سخت افزار و نرم افزارهای با کاربرد آسان ساخته شده است. بوردهای Arduino قادر به خواندن ورودی ها مثلا نور روی حسگر، اثر انگشت یا پیام توییتر هستند و آن را به یک خروجی تبدیل می کنند و موتور را فعال می کند، یک LED را روشن می کند و چیزی را به صورت آنلاین منتشر می کند. می توانید با ارسال مجموعه ای از دستورالعمل ها به میکروکنترلر روی بورد، به بورد خود بگویید که چه کاری انجام دهد. برای این منظور شما از زبان برنامه نویسی Arduino (مبتنی بر سیم کشی) و نرم افزار آردوینو IDE بر اساس پردازش استفاده می کنید.

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

آردوینو در انستیتوی طراحی تعامل Ivrea به عنوان ابزاری آسان برای نمونه سازی سریع متولد شد و هدف دانش آموزان بدون پیش زمینه در الکترونیک و برنامه نویسی بود. به محض رسیدن به اجتماع گسترده تری، بورد آردوینو برای تطبیق با نیازها و چالش های جدید، تغییراتی را ارائه داد و پیشنهاد خود را از بوردهای ساده 8 بیتی گرفته تا محصولات برای برنامه های اینترنت اشیا، گجت های پوشیدنی، چاپ سه بعدی و محیط های تعبیه شده متمایز کرد. همه بوردهای Arduino کاملاً اوپن سورس هستند و به کاربران این امکان را می دهند که بطور مستقل از آنها بسازند و در نهایت آنها را با نیازهای خاص خود سازگار کنند. نرم افزار آن نیز از نوع اوپن سورس است و با کمک کاربران در سراسر جهان رو به رشد است.

تاریخچه آردوینو (Arduino)

پروژه آردوینو در موسسه طراحی تعامل IDII در Ivrea ایتالیا آغاز شد. در آن زمان دانشجویان از میکروکنترلر BASIC Stamp با هزینه 50 دلار استفاده می کردند که برای بسیاری از دانشجویان هزینه قابل توجهی بود. در سال 2003، Hernando Barragan بستر توسعه Wiring را به عنوان پروژه پایان نامه کارشناسی ارشد در IDII، تحت نظارت ماسیمو بانزی و کیسی ریاس ایجاد کرد. کیسی ریاس به دلیل ایجاد همکاری با بن فرای، پلتفرم توسعه پردازش معروف است. هدف از این پروژه ایجاد ابزارهای ساده و کم هزینه برای ایجاد پروژه های دیجیتال توسط غیر مهندسین بود. سکوی سیم کشی از یک برد مدار چاپی (PCB) با میکروکنترلر ATmega168، یک IDE مبتنی بر پردازش و توابع کتابخانه تشکیل شده بود تا به راحتی میکروکنترلر را برنامه ریزی کند. در سال 2003، ماسیمو بانزی به همراه دیوید ملیس، یکی دیگر از دانشجویان IDII و دیوید کوارتلیز، پشتیبانی از میکروکنترلر ارزان قیمت ATmega8 را به Wiringاضافه کردند. اما آنها به جای ادامه کار بر روی Wiring، پروژه انشعاب را اجرا کردند و به آن آردوینو تغییر نام دادند.

تیم اصلی آردوینو هسته ای متشکل از ماسیمو بانزی، دیوید کوارتلیس، تام ایگو، جیانلوکا مارتینو و دیوید ملیس بود، اما باراگنون برای شرکت در این مسابقات دعوت نشده بود. پس از اتمام پلتفرم Wiring، نسخه های سبک تر و کم هزینه تری در جامعه اوپن سورس توزیع شد. در اکتبر سال 2017، آردوینو همکاری خود را باARM Holdings اعلام کرد. در این اطلاعیه، آمده است: ARM آزادی را به عنوان ارزش اصلی آردوینو و بدون هیچ گونه قفل با معماری ARM به رسمیت شناخته است. آردوینو قصد دارد به همکاری با همه فروشندگان و معماری های فناوری ادامه دهد.

سخت افزار آردوینو (Arduino)

Arduino سخت افزار اوپن سورس است. طرح های مرجع سخت افزاری تحت مجوز Creative Commons Attribution-Share-Alike 2.5 توزیع شده و در وب سایت آردوینو موجود است. طرح بندی و پرونده های تولید برخی از نسخه های سخت افزار نیز موجود است.

اگرچه طراحی سخت افزار و نرم افزار بصورت آزاد تحت مجوزهای copyleft در دسترس است، اما توسعه دهندگان درخواست كرده اند كه نام Arduino منحصر به محصول رسمی باشد و بدون اجازه از آنها برای کارهای مشتق استفاده نمی شود. سند سیاست رسمی در مورد استفاده از نام Arduino تأکید می کند که این پروژه برای درج کار دیگران توسط محصول رسمی باز است. چندین محصول سازگار با آردوینو که بصورت تجاری منتشر شده اند، با استفاده از نام های مختلفی که با duino- به پایان می رسند، از نام پروژه جلوگیری می کنند.

بیشتر بوردهای Arduino از یک میکروکنترلر AVR هشت بیتی با مقادیر مختلف حافظه فلش، پین و ویژگی های مختلف تشکیل شده است. آردوینو 32 بیتی با استفاده از Atmel SAM3X8E در سال 2012 معرفی شد. این بوردها از پین های یک یا دو ردیف یا هدرهای زوج استفاده می کنند که اتصالات را برای برنامه نویسی و ادغام در مدارهای دیگر تسهیل می کند. اینها ممکن است با ماژول های اضافی که به آنها شیلد نامیده می شود ارتباط برقرار کنند. شیلد های چندگانه و احتمالاً انباشته شده ممکن است از طریق یک گذرگاه سریال I²C به صورت جداگانه قابل نمایش باشند. بیشتر بوردها شامل یک تنظیم کننده خطی 5 ولت و یک اسیلاتور کریستالی 16 مگاهرتز یا رزوناتور سرامیکی هستند. برخی از طرح ها، مانند LilyPad، با سرعت 8 مگاهرتز اجرا می شوند و به دلیل محدودیت خاص فاکتور شکل، با تنظیم کننده ولتاژ مادربرد توزیع می شوند.

میکروکنترلرهای Arduino با یک بوت لودر از قبل برنامه ریزی شده اند که آپلود برنامه ها را در حافظه فلش روی چیپ ساده می کند. بوت لودر پیش فرض Arduino UNO بوت لودر optiboot است. کد برنامه بوردها از طریق اتصال سریال به رایانه دیگر بارگیری می شوند. برخی از بوردهای Arduino سریال حاوی یک مدار شیفت سطح برای تبدیل بین سیگنال های سطح منطق RS-232 و سیگنال سطح TTL هستند. بوردهای Arduino فعلی از طریق USB با استفاده از تراشه های آداپتور USB به سریال برنامه ریزی می شوند. برخی از بوردها، مانند بوردهای مدل Uno مدل بعدی، تراشه FTDI را با یک تراشه AVR جداگانه حاوی سیستم عامل USB به سریال جایگزین می کنند، که از طریق هدر خود ICSP قابل برنامه ریزی است. انواع دیگر، مانند Arduino Mini و غیر رسمی Boarduino، از یک بورد آداپتور USB به سریال جدا شده یا کابل، بلوتوث یا روش های دیگر استفاده می کنند. هنگام استفاده از ابزارهای سنتی میکروکنترلر، به جای Arduino IDE، از برنامه نویسی استاندارد AVR درون سیستم (ISP) استفاده می شود.

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

شیلدهای آردوینو (Arduino)

بوردهای سازگار با آردوینو و آردوینو، از بوردهای توسعه مدار چاپی به نام شیلد استفاده می کنند که به هدرهای پین آردوینو که به طور عادی عرضه می شود، وصل می شوند. شیلدها می توانند کنترل های حرکتی را برای چاپ سه بعدی و سایر برنامه ها، سیستم موقعیت یابی جهانی (GPS)، Ethernet، صفحه نمایش کریستال مایع (LCD) یا تخته سنگ (نمونه سازی اولیه) ارائه دهند. برای چندین شیلد را می توانید این کار را خودتان انجام دهید (DIY).

شیلد آردوینو

Multiple shields می تواند جمع شود. در این مثال شیلد بالا یک بورد بدون نیاز به لحیم کاری است.

شیلد آردوینو

Dragino Lora Shield به کاربر امکان ارسال داده و دستیابی به محدوده های بسیار طولانی با نرخ پایین داده را می دهد.

شیلد آردوینو

Screw-terminal breakout shield با قالب wing-type

شیلد آردوینو

Adafruit Motor Shield با پایانه های پیچ برای اتصال به موتورها

آردوینو شیلد

Adafruit Datalogging Shield با حافظه کارت دیجیتال (SD) و تراشه ساعت واقعی (RTC)

نرم افزار آردوینو (Arduino)

برنامه ای برای سخت افزار Arduino ممکن است به هر زبان برنامه نویسی با کامپایلرهایی تولید شود که کد ماشین باینری را برای پردازنده هدف تولید می کنند. Atmel یک محیط توسعه برای میکروکنترلرهای مبتنی بر 8 بیتی AVR و 32 بیتی ARM Cortex-M خود فراهم می کند: AVR Studio (قدیمی تر) و Atmel Studio (جدیدتر).

محیط توسعه یکپارچه Arduino (IDE) یک برنامه cross-platform (برای ویندوز، macOS، لینوکس) است که به زبان برنامه نویسی جاوا نوشته شده است. این زبان از IDE برای زبان های پردازش و سیم کشی تهیه شده است. این برنامه شامل ویرایشگر کد با ویژگی هایی از قبیل برش و چسباندن متن، جستجو و جایگزینی متن، تنظیم خودکار توربینی، تطبیق بریس و برجسته سازی نحو است و مکانیزم های ساده با یک کلیک را برای کامپایل و بارگذاری برنامه ها در صفحه آردوینو فراهم می کند. همچنین حاوی یک منطقه پیام، یک کنسول متن، یک نوار ابزار با دکمه هایی برای عملکردهای مشترک و یک سلسله مراتب از منوهای عملکرد است. کد منبع IDE تحت مجوز عمومی GNU، نسخه 2 منتشر می شود.

Arduino IDE با استفاده از قوانین ویژه در ساخت کد از زبانهای C و سی پلاس پلاس پشتیبانی می کند. Arduino IDE کتابخانه نرم افزاری را از پروژه Wiring تهیه می کند، که بسیاری از روش های متداول ورودی و خروجی را ارائه می دهد. کد نوشته شده توسط کاربر فقط به دو کارکرد اصلی نیاز دارد، برای شروع طرح و حلقه اصلی برنامه، که با یک ()program stub main وارد یک برنامه اجرایی سیکل اجرا با مجموعه ابزار GNU می شود، همچنین با توزیع IDE همراه است. Arduino IDE از برنامه avrdude برای تبدیل کد اجرایی به یک فایل متنی در رمزگذاری هگزادسیمال که توسط یک برنامه لودر در سیستم عامل هیئت مدیره در برد آردوینو بارگذاری می شود، استفاده می کند.

کتابخانه های آردوینو (Arduino)

ماهیت اوپن سورس پروژه آردوینو، انتشار بسیاری از کتابخانه های نرم افزار رایگان را که سایر توسعه دهندگان برای تقویت پروژه های خود استفاده می کنند، تسهیل کرده است. محیط آردوینو دقیقاً مانند اکثر سیستم های برنامه نویسی، با استفاده از کتابخانه ها قابل گسترش است. کتابخانه ها عملکرد اضافی را برای استفاده در Sketch ارائه می دهند، به عنوان مثال، کار با سخت افزار یا دستکاری داده ها. برای استفاده از یک کتابخانه در یک Sketch، آن را از میان کتابخانه های موجود از مسیر Sketch> Import Library انتخاب کنید. تعدادی از کتابخانه ها با IDE نصب شده اند، اما می توانید خود نیز دانلود یا ایجاد کنید.

برخی از این کتابخانه ها عبارتد از:

  • EEPROM: خواندن و نوشتن در حافظه به صورت "دائمی"
  • Ethernet: برای اتصال به اینترنت با استفاده از Arduino Ethernet Shield ،Arduino Ethernet Shield 2 و Arduino Leonardo ETH
  • Firmata: برای برقراری ارتباط با برنامه های رایانه ای با استفاده از پروتکل سریال استاندارد.
  • GSM: برای اتصال به یک شبکه GSM / GRPS با شیلد GSM.
  • LiquidCrystal: برای کنترل نمایشگرهای کریستال مایع (LCD)
  • SD: برای خواندن و نوشتن کارتهای SD
  • Servo: برای کنترل موتورهای Servo
  • SPI: برای برقراری ارتباط با دستگاههای با استفاده از گذرگاه Serial Peripheral Interface (SPI)
  • SoftwareSerial: برای ارتباط سریال روی هر پین دیجیتال. نسخه 1.0 و بعد از Arduino کتابخانه NewSoftSerial از میکال هارت را به عنوان SoftwareSerial گنجانیده است.
  • Stepper: برای کنترل موتورهای Stepper
  • TFT: برای ترسیم متن، تصاویر و اشکال در صفحه Arduino TFT
  • WiFi: برای اتصال به اینترنت با استفاده از شیلد WiFi Arduino
  • Wire: دو رابط سیم (TWI / I2C) برای ارسال و دریافت داده ها از طریق شبکه یا دستگاه های حسگر.
  • کتابخانه های Matrix و Sprite دیگر بخشی از توزیع اصلی نیستند.

برنامه نویسی آردوینو (Arduino)

محیط یکپارچه توسعه Arduino اصلی ترین برنامه ویرایش متن است که برای برنامه نویسی Arduino استفاده می شود. اینجاست که می توانید قبل از بارگذاری آن در صفحه مورد نظر برای برنامه، کد خود را وارد کنید. کد آردوینو به عنوان Sketches گفته می شود. توجه داشته باشید که استفاده از جدیدترین نسخه Arduino IDE بسیار مهم است. زبان برنامه نویسی Arduino را می توان به سه بخش اصلی تقسیم کرد: توابع، مقادیر (متغیرها و ثابت) و ساختار. نرم افزار Arduino (IDE) به شما امکان می دهد برنامه ها را بنویسید و آنها را در صفحه خود بارگذاری کنید. در صفحه نرم افزار Arduino دو گزینه پیدا خواهید کرد:

  1. اگر یک اتصال اینترنتی معتبر دارید، باید از IDE آنلاین (Arduino Web Editor) استفاده کنید. این امکان را به شما می دهد تا طرح های خود را در ابر ذخیره کنید، در صورت داشتن آنها از هر وسیله و پشتیبان تهیه کنید. شما همیشه بدون نیاز به نصب به روزرسانی یا کتابخانه های تولید شده توسط انجمن ، به روزترین نسخه IDE را خواهید داشت.
  2. اگر ترجیح می دهید به صورت آفلاین کار کنید، باید از آخرین نسخه IDE دسکتاپ استفاده کنید.

مثال های آردوینو (Arduino)

این مثال ساده ترین کاری را که می توانید با Arduino یا Genuino انجام دهید برای خروجی بدنی نشان می دهد: در این مثال چراغ LED روی آن بصورت چشمک زن می شود.

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever void loop() { digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second }

مقایسه آردوینو با رزبری پای

دو دستگاه بر دنیای الکترونیک سرگرمی حاکم است: Arduino و Raspberry Pi. هر دو را می توان در کارگاه های سراسر جهان یافت. برای افراد نا آشنا، به نظر می رسد آنها مشابه هستند: هر دو صفحه مدار با مقاومت، خازن و ICU لحیم کاری شده به بالا، و اتصالات از طرفین جوانه می زنند. با این حال، نگاه دقیقتر نشان می دهد که آردوینو و رسپری پای هم از نظر معماری و هم از نظر هدف با یکدیگر تفاوت دارند. ما این راهنما را برای روشن کردن این تفاوت ها نوشته ایم و به شما کمک می کنیم تصمیم بگیرید که متناسب با اهداف شما خواهد بود.

اولین نسل از Raspberry Pi در سال 2012 به بازار آمد و به عنوان ابزاری آموزشی ابداع شد که می تواند به کودکان در آموزش کد نویسی کمک کند. مخترعان آماتور در سراسر جهان RPi را در طیف گسترده ای از پروژه ها قرار می دهند. آخرین نسخه +Raspberry Pi 3 ،Model B، از پردازنده چهار هسته ای 1.4 گیگاهرتز و شبکه بی سیم دو باند به همراه خروجی HDMI برخوردار است که می توانید مانیتور یا تلویزیون خود را وصل کنید و ورودی های USB مختلفی را که موس، صفحه کلید و شارژر تلفن همراه خود را قبول خواهید کرد.

اولین چیزی که ممکن است در شما به وجود بیاید اینست که Raspberry Pi's Broadcom BCM2837 با سرعت 1.4 گیگاهرتز ساعت در حالی است که میکروکنترلر آردوینو Atmel با سرعت 16 مگاهرتز است. برخی از محاسبات ساده باید به شما بگویند که یکی تقریباً صد برابر سریعتر از دیگری است. اختلافات مشابهی را در مناطق دیگر مشاهده خواهید کرد. Raspberry Pi دارای 1 گیگابایت رم است، در حالی که آردوینو تنها چند کیلوبایت را ارائه می دهد. یک Arduino دارای یک درگاه USB واحد است، در حالی که Raspberry Pi دارای چندین عدد به همراه HDMI، یک اتصال دهنده RJ45 و اتصال بی سیم داخلی است.

همانطور که اشاره کردیم، در مرکز هر آردوینو یک واحد آی سی سیاه به نام میکروکنترلر قرار دارد. چه این یک بسته DIP (پین دوتایی درون خطی) قدیمی تر یا یک SMD مدرن (دستگاه نصب شده بر روی سطح) قدیمی تر باشد، این تراشه کوچک همه چیز را برای محاسبه وسایل مورد نیاز دارد: یک ریزپردازنده، یک تایمر، حافظه، و درگاه های I / O که MCU از طریق آن ارتباط برقرار می کند با جهان خارج. این مؤلفه است که در واقع کار Arduino را انجام می دهد. بقیه برد و نرم افزار Arduino برای کمک به شما در برقراری ارتباط با آن وجود دارد.

Raspberry Pi بسیار متفاوت عمل می کند و مشترکاً با رایانه رومیزی مشترک است. در هسته آن یک پردازنده Broadcom وجود دارد که به حافظه رم، حافظه خارجی و درگاه های دیگر در بورد متصل شده است. این سیستم عامل را اجرا می کند که وظایف اصلی کامپیوتر را بر عهده دارد، برنامه ها را اجرا می کند، پورت های HDMI ،USB و RJ45 را کنترل می کند و یک رابط گرافیکی برای نمایش به کاربر ارائه می دهد.

این معماری به Raspberry Pi اجازه می دهد تا کارهایی را انجام دهد که Arduino و میکروکنترلر آن هرگز نتوانستند انجام دهند. اما برای برخی از برنامه ها، یک کامپیوتر تمام عیار از این دست دشوار و غیر ضروری است. مدار را در صفحه کلید رایانه خود در نظر بگیرید. این امکان وجود دارد که مجموعه ای از کلیدهای فعالیت را رصد کند و رویدادهای ضربه زدن به کلید را به رایانه گزارش دهد تعداد دستگاه های اطراف خانه را خواهید دید که حاوی واحدهای میکروکنترلر ریز هستند که با ویژگی های گرسنه از منابع مانند سیستم عامل ها یا رابط کاربری گرافیکی (یا حتی بوت لودرها) مجهز نیستند، می توانند کارهای ارزان و کارآمد خود را انجام دهند.

آیا این نوشته را دوست داشتید؟