فهرست
1. پس زمینه
2. راه اندازی محیط توسعه آردوینو
3. مدیریت انرژی آردوینو
3.1 روشن کردن برد آردوینو
3.2 توان خروجی آردوینو
4. نشانگرها و سوئیچ ها
4.1 LED
4.1.1 کار با LED داخلی
4.1.2 اتصال و کنترل LED خارجی
4.3 Buzer
4.2 سوئیچ ها
5. آردوینو با نمایشگر
6.Artuino با سنسورها
6.1 اصول سنسور
6.2 مبدل A/D
6.3 سنسور دما
6.4 سنسور فلزی
6.5 سنسور اولتراسونیک با Arduino 7. PWM
7.1 اصول اولیه
PWM 7.2 PWM Arduino را
کنترل می کند 7.3 کنترل شدت LED را از طریق PWM 8. کار با PWM 8. رله
8.1 اصول رله
8.2 آردوینو با رله
8.2.1 کنترل رله با استفاده از ترانزیستور
8.2.2 کنترل رله با استفاده از اپتوکوپلر
9. کار با موتورها
9.1 کنترل موتور DC با استفاده از ترانزیستورها
9.2 کنترل موتورها از طریق رله 10.
بی سیم با سنسور IR
1. پس زمینه
آردوینو یک پلت فرم جاسازی شده عالی برای نمونه سازی پروژه های سرگرمی شما است. یادگیری آن واقعا آسان، ساده و در عین حال کارآمد و قدرتمند است. بردهای آردوینو توسط میکروکنترلرهای خانواده Atmel تغذیه می شوند. این برد به عنوان چندین ویژگی بسیار حیاتی برای بسیاری از برنامه های سخت افزاری است که شامل پین های دیجیتال، توانایی درایو موتورهای کم توان، PWM، قابلیت اتصال به دستگاه های دیگر با استفاده از ارتباط سریال، مبدل A/D onbard که می تواند به طور مستقیم مقادیر سنسور را بخواند و بسیاری بیشتر. با وجود اینکه ادعا میشود این پلتفرم فقط برای نمونهسازی است، من شخصاً از برد برای بسیاری از پروژههای تولیدی استفاده کردهام و در آن کارها نیز به خوبی کار میکند. در عصر اینترنت اشیا که تمرکز اصلی توسعه در سیستم های جاسازی شده به طور کامل به سمت توسعه خدمات برای دستگاه ها معطوف شده است. با این حال درک و یادگیری توانایی های سخت افزاری این دستگاه ها، روش های کنترل نمایشگر، نشانگرها، زنگ ها، محرک ها، کار با سنسورها نیز نقش مهمی ایفا می کند. این به ایجاد یک چارچوب مفهومی از قابلیتهای چنین دستگاههایی کمک میکند که ادغام چنین بردهایی را در اینترنت اشیا آسان میکند.
اگرچه آردوینو مدتی است که در دسترس بوده و تغییرات زیادی را پشت سر گذاشته است، اما ویژگیهای اصلی یکسان باقی میمانند. وبلاگها و مقالات زیادی در اطراف وجود دارد که عملکرد آردوینو را با سختافزارهای مختلف توضیح میدهد، من حتی یک ورودی وب پیدا نکردم که بینشی از ویژگیهای سختافزاری کلی پلتفرم ارائه دهد. بنابراین برای یک توسعهدهنده غیر تعبیهشده (توسعهدهنده غیر الکترونیکی)، یادگیری بخش سختافزار به یک منحنی یادگیری واقعی تبدیل میشود. در این آموزش سعی می کنم بینشی از قابلیت های کلی سخت افزار آردوینو با رایج ترین سخت افزارهای مورد نیاز برای توسعه پروژه های بلادرنگ با این پلتفرم ارائه دهم. این آموزش برای توسعه دهندگانی است که به خوبی با برنامه نویسی آشنا هستند اما سعی می کنند با پلتفرم تعبیه شده به طور کلی و آردوینو به طور خاص شروع کنند. انتخاب آردوینو به دلیل سادگی آن واضح است که یادگیری آردوینو را بسیار ساده می کند. برای اکثر اتصالات، من ترجیح دادهام سختافزار را با کانکتورهای پین و تختههای نان وصل کنم تا کسانی که با لحیم کاری و PCB راحت نیستند بتوانند به راحتی آن را دنبال کنند.
2. راه اندازی Arduino Development Environment
ابتدا آخرین IDE آردوینو را از سایت دانلود نرم افزار رسمی آردوینی دانلود کنید . کاربر ویندوز قادر به دانلود یک Installer خواهد بود. نصب کننده دارای یک درایور USB FTDI به همراه خود IDE است. ترجیحاً درایور USB را نصب کنید. این ضروری است. بدون درایور USB IDE شما نمی تواند با دستگاه آردوینو ارتباط برقرار کند.
شرح پین دستگاهی که من از آن استفاده می کنم در زیر آمده است.
پس از نصب نرم افزار، کابل USB آردوینو را به لپ تاپ خود وصل کنید. یک اعلان در سینی "نصب درایور" خواهید دید. هنگامی که نصب درایور با موفقیت انجام شد، Device manager را باز کنید (شروع->روی نماد کامپیوتر->Properties->Device manager کلیک راست کنید).
در قسمت Ports(Com and LPT) پورت سریال USB را مشاهده می کنید. در مورد Arduino Uno R3، نشانگر Arduino Uno را در امتداد پورت خواهید دید. وقتی کابل را وصل می کنید، دیگر پورت را پیدا نمی کنید. بنابراین این پورتی است که دستگاه آردوینو شما به آن متصل است.
اگر برای اولین بار دستگاه خود را متصل کرده اید، همچنین متوجه خواهید شد که LED نزدیک پین دیجیتال 13 چشمک می زند.
اکثر بردهای آردوینو با یک برنامه چشمک زن از قبل بارگذاری شده اند که LED متصل به پین 13 را چشمک می زند .
IDE را باز کنید. همانطور که در شکل زیر نشان داده شده است، Tools->Boards بردی را که به آن متصل می کنید انتخاب کنید.
هنگامی که برد انتخاب شد، باید پورت سریال صحیح را همانطور که از شکل 2.2 فهمیدید تنظیم کنید
قبل از اینکه به برنامه نویسی بردها بپردازیم، برخی از اصول ساده برنامه نویسی Arduino C را یاد خواهیم گرفت.
2.2 مبانی برنامه Arduino C
در زیر ساختار اصلی برنامه آردوینو آورده شده است. یک برنامه آردوینو C به عنوان اسکچ نیز شناخته می شود.
void setup() { // put your setup code here, to run once: } void loop() { // put your main code here, to run repeatedly: }
setup()
یک بار اجرا می شود (هنگامی که دستگاه را بازنشانی می کنید، یا دستگاه را مجدداً راه اندازی می کنید، یا کابل USB را وصل می کنید). loop()
به طور مداوم اجرا می شود منطق اصلی باید در داخل حلقه پیاده سازی شود.
برد Arduino Duemilanova/Diecimilia/Uno R3 (از اینجا به بعد به سادگی Arduino نامیده می شود) دارای 14 پین IP دیجیتال است. هر پین می تواند به طور جداگانه برنامه ریزی شود. یک پین میتواند در حالت OUTPUT یا حالت ورودی باشد که باید با استفاده از راهاندازی مشخص شود
pinMode(PIN_NO,OUTPUT)
یا pinMode(PIN_NO,INPUT);
وقتی سوئیچ را به پین وصل میکنید و میخواهید پین وضعیت را بخواند، از حالت ورودی استفاده میشود. این پینهای دیجیتال در حالت ورودی فقط میتوانند ورودیهای سطح منطقی مانند 0 و 1 را تشخیص دهند.
شما می توانید خروجی منطقی را در یک پین در حالت OUTPUT بنویسید یا می توانید مقدار را در پین (1 یا 0) با استفاده از digitalWrite(PIN_NO,HIGH)/digitalWrite(PIN_NO,LOW)
و int n=digitalRead(PIN_NO)
به ترتیب بخوانید.
تعداد کمی از پین ها در پورت های دیجیتال به عنوان PWM مشخص شده اند (مانند 10 و 11 در شکل). آنها می توانند برای تولید پالس گیت با چرخه کاری مختلف استفاده شوند. پین PWm را می توان برای تولید پالس گیت مربعی کامل از چرخه های وظیفه خاص با استفاده از analogWrite(PIN_NO,byteValue)
Where byteValue بین 0 تا 255 برنامه ریزی کرد که در آن 255 بالاترین یا 100٪ چرخه وظیفه را نشان می دهد. پینهای PWM را میتوان برای کنترل دقیق سرعت موتورهای DC یا کنترل شدت لامپهای الکتریکی از طریق MOSFET/IGBT و غیره استفاده کرد.
آردوینو دارای 6 پین خواندن آنالوگ (0 تا 5) در مقابل درگاه های دیجیتال است. اینها پایه های ورودی هستند که به ADC 10 بیتی متصل می شوند. سنسورها را می توان مستقیماً به این پین ها متصل کرد. آردوینو میتواند ولتاژ پین را با int بخواند value=analogRead(ANALOG_PIN_NO)
این نرمافزار دارای یک کتابخانه سریال است که از طریق آن سایر برنامهها میتوانند با استفاده از ارتباط سریال با آردوینو ارتباط برقرار کنند. Arduino IDE همچنین دارای یک نمایشگر سریال است که از طریق آن می توان ارتباط سریال را آزمایش کرد. برای مقداردهی اولیه ارتباط سریال، در تابع setup
باید شیء ارتباطی سریال را با Serial.begin(BAUD_RATE)
Baud Rate در مضرب های 96200 مقداردهی کرد. هر برنامه خارجی که بتواند از طریق پورت سریال با دستگاه ارتباط برقرار کند. برای خواندن اطلاعات از پورت سریال نوشته شده توسط برنامه های دیگر در پورت سریال استفاده می شود. برای اینکه دستور بعدی برای مدت زمانی تاخیر در میلی که بر حسب میلی ثانیه مشخص شده است منتظر بماند استفاده می شود. بیشتر ورودی و خروجی سخت افزار اصلی را می توان با استفاده از دستورات بالا انجام داد. از شما میخواهم که اطلاعات بیشتر در مورد برنامهنویسی Arduino C و مبانی ارتباط سریال را از طریق My Arduino Getting Tutorial مشاهده کنید.Serial.print("msg")
Serial.println("msg")
Serial.write(someVariable)
int v=Serial.read()
delay(delayInMilli);
3. Arduino Power Management
3.1 روشن کردن برد آردوینو
یک سیستم تعبیه شده ممکن است نیاز به به حرکت درآوردن چندین بار مانند موتورها، رلههای ماشه، تامین قدرت سنسورها و غیره داشته باشد. بنابراین درک اینکه دستگاه چقدر برق می کشد و چه مقدار توان می تواند برای سایر واحدهای سخت افزاری جانبی ارائه کند، جنبه بسیار مهمی از سیستم تعبیه شده است. در این بخش با مدیریت انرژی آردوینو آشنا می شویم.
ولتاژ کاری آردوینو مانند اکثر دستگاه ها و بردهای سیستم تعبیه شده 5 ولت است. می توان آن را از طریق USB یا از طریق یک منبع برق خارجی تغذیه کرد . برد آردوینو دارای یک رگولاتور ولتاژ است که می تواند منبع تغذیه 5 ولتی را به برد تولید کند. ولتاژ منبع تغذیه خارجی از این طریق تنظیم می شود. مانند هر تنظیم کننده ولتاژ، واحد برای تولید خروجی 5 ولت به ورودی ولتاژ بالاتری نیاز دارد. بنابراین وقتی آردوینو قرار است از منبع ولتاژ خارجی مانند باتری تغذیه شود، باید منبع تغذیه 9 ولت باشد. شکل 3.1 راه های مختلف برای روشن کردن برد آردوینو را نشان می دهد.
شما می توانید از یک آداپتور 9 ولت برای تبدیل مستقیم AC به 9 ولت DC و دادن ورودی به آردوینو از طریق جک برق آن استفاده کنید. اگر میخواهید دستگاه کاملاً باتریدار باشد، میتوانید از یک رابط برای باتری 9 ولت استفاده کنید و آن را در پورت برق قرار دهید. آردوینو همچنین دو پین را با برچسب Vin و Gnd ارائه می دهد که قبل از پورت های آنالوگ قرار دارند. با استفاده از این دو پین می توانید باتری 9 ولت خود را با آردوینو و به کمک سیم های اتصال باتری متصل کنید.
با این حال شما یک Jumper در برد نزدیک به دوشاخه USB دارید که اگر از USB برای روشن کردن آردوینو استفاده می کنید یا اگر از برق خارجی استفاده می کنید باید روی USB تنظیم شود. جامپر در شکل 3.2 نشان داده شده است.
3.2 قدرت خروجی آردوینو
همانطور که در شکل 3.1 به طور مستقیم به برد آردوینو نگاه می کنید، می توانید مجموعه ای از پین ها را در کنار هم مشاهده کنید که RST، 3V، 5V، GND، GND، Vin هستند. من پین ها را با هم به عنوان پورت برق صدا می کنم. پین های 5 ولت و 3 ولت گاهی اوقات به عنوان پین های VCC نیز شناخته می شوند زیرا منبع دستگاه های دیگر هستند. به عنوان مثال، اگر می خواهید یک سنسور را با آردوینو وصل کنید (به عنوان مثال LM 35)، برای کار کردن به 5 ولت نیاز دارد. این ولتاژ توسط پین 5 ولت تامین می شود. دستگاه هایی مانند ZigBee با ولتاژ 3 ولت کار می کنند. چنین دستگاه هایی می توانند توسط پین 3 ولت VCC تغذیه شوند. قابلیت کشش فعلی پین های Vcc 200 میلی آمپر است. آردوینو همچنین دارای 14 پین دیجیتال IO است. وقتی این پین ها با سطح منطقی HIGH ارائه می شوند، خروجی 5 ولت تولید می کنند. با این حال، قابلیت ترسیم فعلی پین های IO دیجیتال به 40 میلی آمپر می رسد . به دلیل قابلیت کشیدن جریان بسیار کم، این پین ها نمی توانند باری را هدایت کنند. حتی رانندگی با LED با این جریان دشوار است. از این رو، پینهای دیجیتال را میتوان برای کنترل دستگاههای دیگر تنها از طریق یک دستگاه الکترونیکی سوئیچینگ مانند Optocoupler (MCT2E) یا ترانزیستور استفاده کرد (تغییر دیجیتال دستگاهها بعدا توضیح داده خواهد شد).
توجه به این نکته مهم است که پین های دیجیتال مانند دستگاه های کنترل کننده ولتاژ خواندن را پشتیبانی می کنند. هنگامی که یک سوئیچ دیجیتال به پین های ورودی/خروجی دیجیتالی که سطح منطقی آنها باید توسط پین ها خوانده شود وصل می شود، گفته می شود که پین مانند یک سینک عمل می کند. باید دقت شود که مجموع جریانی که از طریق تمام پین های ورودی/خروجی به دستگاه وارد می شود نباید از 100 میلی آمپر تجاوز کند. بنابراین همیشه توصیه می شود که یک خروجی سوئیچ را با مقاومت محدود کننده جریان به پین دیجیتال وصل کنید.
حداکثر جریانی که می توان به هر پایه ای داد حدود 40 میلی آمپر است. بنابراین اگر یک منبع تغذیه 5 ولت آمپر را به هر یک از پایه های آنالوگ وصل کنید، حتی اگر ولتاژ در محدوده باشد، جریان بیش از حد میکروکنترلر شما را به معنای واقعی کلمه سرخ می کند. بنابراین زمانی که با آردوینو کار میکنید، باید دقت کافی برای درک مشخصات ولتاژ و جریان دستگاهها داشته باشید و هر زمان که از هر پین (آنالوگ/دیجیتال) به عنوان Sink استفاده میکنید، با اتصال منبع از طریق مقاومت محدودکننده جریان مناسب، جریان ورودی را محدود کنید.
از بحث بالا ما نکات مهم زیر را استخراج می کنیم:
1) پین های آردوینو 5 ولت، 3 ولت Vcc را می توان مستقیماً برای هدایت بارهای جریان کم (مانند LED، LCD، موتورهای 5 ولت DC، سنسورها) استفاده کرد.
2) پین های دیجیتال آردوینو برای رانندگی حتی کافی نیستند. بارهای جریان کم
3) از پین های دیجیتال آردوینو می توان برای تامین ولتاژ سوئیچینگ 5 ولت به سوئیچ های دیجیتال استفاده کرد. دستگاه های درجه بندی جریان بالاتر را می توان توسط آردوینو با استفاده از یک کوپلر مانند Optocoupler یا Transistor سوئیچ کرد.
4) پین های آردوینو به عنوان سینک دارای مشخصات جریان بسیار پایین هستند. بنابراین منبع جریان بالا نباید به هیچ یک از پین های پیکربندی شده به عنوان سینک متصل شود. از مقاومت محدود کننده جریان با پین ها به عنوان سینک استفاده کنید.
با این دانش ما به معنای واقعی کلمه آماده هستیم تا با توسعه آردوینو خود پیش برویم.
4. نشانگرها و سوئیچ ها
اغلب در پروژه های DIY خود به شاخص ها نیاز دارید. مثلاً وقتی یک سیستم اعلام حریق میسازید، حسگر شما ممکن است شدت گرما و نور را کنترل کند و زمانی که مقدار از مقدار آستانه فراتر رفت، میخواهید زنگ هشدار را راهاندازی کند.
همچنین ممکن است بخواهید نشان دهید که یک دستگاه خاص از طریق یک LED فعال است. LED ها و Buzzers رایج ترین نشانگرهایی هستند که بخشی از تقریباً تمام پروژه های DIY هستند. به دلیل سهولت استفاده، مقرون به صرفه بودن، توسعه دهندگان سخت افزار این دو جزء را دوست دارند.
سوئیچ ها نقش مهمی در راه اندازی یک رویداد خارجی برای دستگاه دارند. به عنوان مثال می خواهید یک موتور روشن شود: یک سوئیچ را فشار دهید، به برد اجازه دهید رویداد را بخواند و موتور را روشن کنید. می خواهید با فشار دادن یک سوئیچ چراغ را روشن کنید: از کلیدهای ساده استفاده کنید.
بنابراین نشانگرها و سوئیچها اساسیترین، رایجترین و پرکاربردترین اجزا در هر پروژه سختافزاری هستند. آنها ارزان هستند، کارآمد هستند و موثر هستند. از این رو در این بخش در مورد استفاده از LED و سوئیچ با آردوینو صحبت خواهیم کرد.
4.1 LED
4.1.1 کار با LED داخلی
دیودهای ساطع نور یا LEDها رایج ترین نشانگرها برای هر دستگاه الکترونیکی از آداپتور گرفته تا لپ تاپ هستند. این باعث می شود که برای کاربر قابل مشاهده باشد که بخش خاصی از سیستم به خوبی کار می کند. LED ها در رنگ های مختلف و مشخصات فعلی موجود هستند. مشخصات فعلی LED ها از 30 میلی آمپر تا چندین آمپر متغیر است. از آنجا که LED ها جریان را می کشند، به عنوان بار جریان نیز در نظر گرفته می شود. LED ها بسته به مشخصات آن می توانند بین 1.2 ولت تا حدود 24 ولت کار کنند.
برد آردوینو دارای یک LED داخلی است که با پایه 13 پین دیجیتال قابل کنترل است. برای کنترل هر دستگاهی از طریق پینهای دیجیتال آردوینو، باید پین را بهعنوان پین OUTPUT پیکربندی کنیم و با استفاده از digitalWrite(13,HIGH).
طرح ساده برای چشمک زدن، آن را بالا ببریم. برای تداوم بحث، من به سادگی کد را در اینجا ریخته ام.
پنهان کردن کد کپی
int led = 13; // the setup routine runs once when you press reset: void setup() { // initialize the digital pin as an output. pinMode(led, OUTPUT); } // the loop routine runs over and over again forever: void loop() { digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(led, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second }
این باعث می شود LED شما با پین 13 به نوبت در هر 1 ثانیه روشن و خاموش شود. وضعیت روشن LED در شکل 4.1 قابل مشاهده است.
شکل 4.1: LED متصل به پین 13
1.2 اتصال و کنترل LED خارجی
LED Onboard خوب است، نیازی به اتصالات مدار ندارد. اما در مورد اتصال یک LED خارجی و کنترل آن با پین های دیجیتال چطور؟ از آنجایی که پین های دیجیتال ممکن است جریان کافی برای LED را تامین نکنند، ما نیاز داریم که LED جریان را از منبعی بگیرد که بتواند منبع کافی را تامین کند. بنابراین آند LED (پای بلندتر) را با Vcc 5v آردوینو وصل می کنیم. اما اگر کاتد (پای کوچکتر) را مستقیماً به زمین وصل کنیم، اولاً نمی توانیم LED را کنترل کنیم زیرا نمی توانیم پین Vcc را کنترل کنیم. بنابراین ما کاتد LED را به Emittor یک ترانزیستور NPN متصل می کنیم (من از BC 548 استفاده کرده ام، شما می توانید از هر ترانزیستور دیگری از نوع NPN استفاده کنید). کلکتور ترانزیستور به زمین متصل است. اگرچه هیچ مقاومتی با LED در 4.2 a وجود ندارد، اما من به شما توصیه می کنم LED را با BC548 با مقاومت 100 اهم وصل کنید. جریان را محدود می کند و از سرخ شدن LED جلوگیری می کند.
پایه ترانزیستور از طریق یک مقاومت پایه R2 (100/470 اهم) به هر یک از پین های دیجیتال i/o آردوینو (مثلا پایه 12) متصل می شود. هنگامی که پایه بالا باشد، ترانزیستور ولتاژ پایه دریافت می کند که مدار ترانزیستور را کامل می کند و LED از طریق ترانزیستور به زمین متصل می شود. هنگامی که پایه LOW است، ترانزیستور ولتاژ پایه را دریافت نمی کند بنابراین خاموش می شود. بنابراین پین زمین LED به LED متصل نیست. از این رو خاموش است.
در واقع می توانید یک کانکتور 3 پین بگیرید، ترانزیستور را در آن قرار دهید و با سیم های آن وصل کنید. همچنین در صورت تمایل می توانید اتصال را در برد برد ایجاد کنید!
اکنون می توانید از لیست کد 4.1 برای انجام آزمایش استفاده کنید. فقط پایه 13 را به پایه 12 تغییر دهید. همچنین می توانید پایه 12 را به عنوان پایه خروجی دیجیتال اضافه کنید و LED خارجی را با LED روی برد کنترل کنید. 4.2 ب) درخشندگی LED را نشان می دهد.
4.2 زنگ
درست مانند LED، Buzzer نیز یک جزء خروجی است. انواع مختلفی از آژیر وجود دارد که از بین آنها زنگ های برقی Pizeo رایج ترین هستند. اما برخلاف ال ای دی ها، نیاز فعلی آژیر بسیار کم است. این می تواند در جریان کمتر از 10 میلی آمپر کار کند. بنابراین میتوانیم زنگ را مستقیماً با پین دیجیتال و زمین آردوینو وصل کنیم.
می توانید زنگ را با پین 8 وصل کنید ( سعی کنید از پینی که به عنوان PWM مشخص شده است خودداری کنید) و تمام شد. از فهرست کد 4.1 برای روشن و خاموش کردن زنگ در چند ثانیه دیگر استفاده کنید. فراموش نکنید که شماره پین را به پین زنگی که زنگ را با آن وصل کرده اید تغییر دهید.
Buzzer یا با دو سیم یا دو پین عرضه می شود. اگر زنگ دارای دو پایه باشد، پایه بلندتر آند است و باید به پایه دیجیتال وصل شود و پایه کوتاهتر کاتد است که باید به زمین متصل شود.
اگر آژیر دارای سیم باشد (مانند شکل 4.4)، سیم قرمز مثبت و سیم آبی/سیاه زمین است. شکل 4.4 اتصال Buzzer با آردوینو را نشان می دهد.