آردوینو، یک برد الکترونیکی مبتنی بر میکروکنترلر است که اندازهای بهنسبت کوچک و در حد یک کارت بانکی دارد. بهکمک پلتفرم اپنسورس Arduino میتوان پروژههای الکترونیکی مختلفی از قبیل رادیو کنترل یا RC را با هدف هدایت وسایلی مانند رباتها، ماشین کنترلی و غیره ساخت. از سوی دیگر، نرمافزار کامپیوتری Arduino را داریم که در واقع، IDE یا محیط توسعهای برای کدنویسی، تست و پروگرام کردن بردهای آردوینو است. بردهای آردوینو قابل برنامهریزی هستند و پینهای ورودی را برای دریافت داده از سنسورها در اختیار ما قرار میدهند. سپس این دادهها توسط میکروکنترلر، پردازش شده و در نتیجه آن، میتوانیم بهکمک پینهای خروجی در این برد، اقدامات خاصی را انجام دهیم. در این مطلب از مجله فرادرس سعی بر این است تا به زبانی ساده و تا حد ممکن بهطور کامل، نحوه ساخت رادیو کنترل با آردوینو را برای شما شرح دهیم.
با استفاده از پلتفرم آردوینو، میتوانیم پروژههای الکترونیکی کاربردی و جذابی مانند انواع بازیها، رباتها، وسایل اینترنت اشیا و غیره را توسعه دهیم. بهطور مثال، میتوانیم یک سنسور حریق را به ورودی آردوئینو وصل کرده و آن را بهگونهای برنامهنویسی کنیم که محیط را پایش کند. سپس، در صورتیکه این سنسور، شعله یا آتشی را حس کند، میتواند اقداماتی مانند فعال کردن سیستم پاشش آب را انجام دهد تا از این طریق، آتشسوزی رفع شود. اما پروژهای که در این نوشتار به آن پرداختهایم، «رادیو کنترل» (Radio Control) است که به اختصار RC هم خوانده میشود و مثال ساده آن دسته کنترل در ماشینهای کنترلی است که شاید در کودکی ، بازی با آن را تجربه کرده باشید. فرستندههای رادیویی که در این آموزش متنی، نحوه ساخت آن را به شما یاد میدهیم، در ترکیب با سایر پروژهها نیز قابل استفاده هستند و بهکمک آنها میتوانید دستگاههای گوناگون را بهصورت بیسیم کنترل کنید. این رادیو کنترلها را با سرهم کردن ماژولها و قطعاتی مانند دکمههای فشاری، جویاستیک، فرستنده و گیرنده رادیویی و موارد اینچنینی میتوان ساخت و برای کنترل وسیلههای گوناگون، برنامهنویسی کرد.
پروژه ساخت رادیو کنترل با آردوینو
ساخت رادیو کنترل با آردوینو بهراحتی قابل انجام است و برای این منظور میتوان از ماژولهای رادیویی مانند NRF24L01+، هم برای فرستنده و هم بهعنوان گیرنده، استفاده کرد. بدیهی است که برای ساخت دستگاه کنترلر که در اختیار کاربر قرار میگیرد و همچنین دستگاهی که قرار است کنترل شود هم نیازمند قطعات یا ماژولهایی هستید که در ادامه این مطلب به معرفی و آموزش آنها پرداختهایم. ضمن اینکه اطلاعات کاملی در مورد مدار الکترونیکی این پروژه، نحوه متصل کردن ماژول رادیویی به برد آردوینو، برنامه نویسی پروژه و غیره را در اختیار شما قرار میدهیم.
پروژهای که در این نوشتار نحوه ساخت آن را آموزش میدهیم در نهایت، به شکل تصویر زیر خواهد بود.
۲ مؤلفه اصلی در این پروژه وجود دارد.
- نخست، دسته کنترل یا رادیو کنترل، که در اختیار کاربر قرار میگیرد تا از طریق دکمهها، جویاستیک و سایر امکانات تعیبیه شده روی آن، فرمانهای مختلفی را صادر کند.
- و دستگاه کنترل شونده، که میتواند ربات یا هر نوع وسیلهای باشد که گیرندهای روی آن قرار گرفته و قصد داریم تا آن را هدایت کنیم. گیرنده تعبیه شده در دستگاه راه دور، سیگنالهای فرستنده رادیو کنترل را دریافت کرده و پس از پردازش، عمل مورد نظر کاربر را انجام میدهد.
در هر دوی این مؤلفهها ماژول «فرستنده | گیرنده» رادیویی وجود دارد که توسط میکروکنترلرهای آردوینو کنترل میشوند.
یادگیری آردوینو با فرادرس چگونه است؟
کسب دانش استفاده از بردهای آردوینو و نحوه کدنویسی و پرواگرام کردن آنها را میتوان یکی از بهترین شیوههای ورود به برنامهنویسی میکروکنترلرها و خلق پروژههای کاربردی و بسیار جذاب الکترونیکی دانست. این فرایند، پیچیدگی زیادی ندارد و افراد گوناگون با پیشزمینههای مختلف نیز میتوانند آن را بیاموزند و از مزایای آن بهرهمند شوند. فرقی نمیکند دانشآموز باشید و برای سرگرمی قصد یادگیری آردوئینو را دارید یا اینکه فردی با سن بسیار بالاتر، در هر حال اگر بخواهید مهارت جدیدی مانند استفاده از بردهای آردوینو برای برنامهنویسی الکترونیک و پیادهسازی پروژههایی نظیر اتوماسیون منازل را یاد بگیرید، روشهای گوناگون و متنوعی برای این کار پیشِ روی شما قرار دارد. بهطور مثال، میتوانید در کلاسهای حضوری شرکت کنید، یا حتی دورههای آموزشی در پلتفرمهایی نظیر یوتیوب را تماشا کنید و غیره. هر کدام از این منابع، مزایا و معایب خود را دارند. در این میان، تماشای فیلمهای آموزشی یکی از شیوههای مدرن و مؤثر در یادگیری مهارتهای جذابی مانند آردوینو بهشمار میروند و فارغ از اینکه در چه شهر و کشوری زندگی میکنید یا چه ساعاتی از روز را به یادگیری اختصاص میدهید، این فیلمهای آموزش، شما را در مسیر یادگیری مهارت مورد نظرتان همراهی میکنند. ضمن اینکه در زمان و هزینه شما نیز صرفهجویی میشود.
فرادرس بهعنوان یکی از محبوبترین پلتفرمهای آموزشی کشور، فیلمهای آموزشی گوناگونی را برای مهارتهای مختلف مرتبط با علوم کامپیوتری از جمله نحوه استفاده و برنامهنویسی بردهای آردوینو، منتشر کرده است. در ادامه، مجموعه فیلمهای آموزش «آردوینو» (Arduino)، مقدماتی تا پیشرفته از فرادرس را آوردهایم. این فیلمهای آموزشی، مباحث گوناگون و پروژهمحوری از بردهای آردوئینو را شامل میشوند که بسته به اهداف خود میتوانید مورد دلخواه را تهیه و مشاهده کنید.
شما میتوانید با فیلمهای آموزش رایگان آردوینو شروع کنید که لینک آنها را در ادامه آوردهایم.
در ادامه برخی دیگر از فیلمهای آموزش موجود در این مجموعه را معرفی کردهایم.
قطعات مورد نیاز در این پروژه
پروژه ساخت رادیو کنترل با آردوینو از ۲ فاز «رادیو کنترل» و «گیرنده» تشکیل شده است که پیشتر هم به آنها اشاره کردیم. وسایل مورد نیاز در هر یک از این بخشها را در ادامه فهرست کردهایم.
وسایل مورد نیاز برای ساخت مدار رادیو کنترل با آردوینو
برای ایجاد کنترلر به موارد زیر نیاز پیدا میکنید.
- برد آردوینو مدل نانو
- ماژول NRF24L01+ بههمراه آنتن
- یک عدد ماژول جویاستیک
- ۴ عدد دکمه فشاری یا «Push Button»
- برد بورد (Breadboard)
- به تعدادی سیم جامپر نیز برا انجام اتصالات روی برد بورد، نیاز داریم.
- همچنین، در صورتی که بخواهید اجزای مدار رادیو کنترل را بهصورت تمیزتر روی برد تثبیت کنید، میتوانید از برد سوراخدار خام یا همان Zero PCB بهجای برد برد استفاده کنید. این کار، زحمت بیشتری دارد. همچنین، به هویه و سیملحیم نیز بهمنظور لحیمکاری نیاز پیدا خواهید کرد تا پینها و پایههای قطعات را روی برد لحیم کنید.
وسایل مورد نیاز برای ساخت گیرنده یا وسیله کنترل شونده
در ادامه، فهرست قطعاتی که در پروژه ساخت رادیو کنترل با آردوینو لازم دارید را آوردهایم.
- برد آردوینو مدل نانو
- ماژول NRF24L01+ بههمراه آنتن
- ۸ عدد LED قرمزرنگ
- ۸ عدد مقاومت ۲۲۰ اهم
- برد بورد
- سیمهای جامپر به تعداد لازم برای انجام اتصالات
آشنایی با برخی مفاهیم
پیش از ادامه آموزش، لازم است تا آشنایی مختصری با برخی مفاهیم داشته باشید. این موارد را در ادامه، بیان کردهایم.
رادیو کنترل یا RC
«رادیو کنترل» (Radio Control) یا RC، وسیلهای مجهز به فرستنده یا گیرنده رادیویی است که در آن بهکمک سیگنالهای رادیویی، وسیلهای را از راه دور کنترل میکنیم. برای درک بهتر میتوانید ماشینهای کنترلی و هلیکوپترهای اسباببازی یا سایر وسایلی که از راه دور هدایت میشوند را در نظر داشته باشد. در اینجا با ۲ مؤلفه اصلی رو به رو هستیم. نخست، دستگاهی که وظیفه ارسال سیگنالهای رادیویی را بر عهده دارد و همچنین گیرنده، که درون وسیلهای که قرار است کنترل شود، تعبیه شده است. این دستگاه، سیگنالهای رادیویی ارسال شده از فرستنده را دریافت میکند. سپس کارهای لازم را انجام میدهد.
مثال رادیو کنترل
دستگاههای فرستنده را میتوانید شبیه به دستهها یا کنترلرهای بازی در نظر بگیرید که شامل دکمهها، جویاستیک و غیره هستند. با هر عملی که از طریق این دستهها انجام میدهیم، فرمان مشخصی بهصورت رادیویی ارسال میشود. در سمت گیرنده نیز سیستمی وجود دارد که میتواند فرمان دریافتی را پردازش کرده و اقدامات لازم را روی دستگاه اعمال کند.
برای مثال، سیستم ماشین اسباببازی کنترلی را تصور کنید. در دستگاه کنترلر سمت کاربر، ۴ دکمه وجود دارد که بیانگر جهتهای اصلی هستند. کاربر، دکمه «جهت بالا» را فشار میدهد. با این کار او، فرمان مربوطه که بیانگر حرکت رو به جلو است از طریق فرستنده ارسال میشود.
این فرمان توسط گیرنده دریافت شده و پس از پردازش و فهمیدن اینکه فرمان مورد نظر میبایست ماشین را به سمت جلو حرکت دهد، بهطور مثال موتورهای متصل به چرخها را فعال میکند تا به سمت جلو بچرخند. بههمین ترتیب سایر فرمانها نیز میتونند با کنترلر ارسال شوند و پس از دریافت در سمت گیرنده، پردازش شده و اقدامات لازم صورت گیرد.
ماژول ارتباط رادیویی
در این مطلب آموزشی، تمرکز ما روی بهکارگیری ماژول رادیویی NRF24L01+ است و ارتباط بین کنترلر و وسیله کنترل شونده – نظیر ماشین کنترلی – را از این طریق انجام میدهیم. این ماژول، محدوده ارتباطی وسیع و در حدود چندصد متر را تحت پوشش قرار میدهد. به همین دلیل بیشتر نیازهای ما را در مورد ساخت رادیو کنترل با آردوینو پاسخ میدهد.
انتخاب آردوینو مناسب برای ساخت رادیو کنترل
گفتیم که فرمانها از طریق ماژولهای رادیویی ارسال و در سمت دیگر، دریافت میشوند. برای اینکه بتوانیم این ماژولها را مدیریت کرده و فرمانهای لازم را با توجه به اقدامات کاربر روی کنترلر از طریق این ماژولهای ارسال کنیم به آردوینو نیاز داریم. همچنین، در سمت دستگاهی که میبایست کنترل شود نیز به آردوینو احتیاج داریم تا فرمانهای دریافتی را پردازش کرده و آنها را به اقداماتی تبدیل کند که میبایست در آن دستگاه انجام شود. بهطور مثال اگر پیام «Forward» دریافت شد، آنگاه موتورهای متصل به چرخ ماشین فعال شده و با چرخیدن در جهت رو به جلو، باعث حرکت ماشین شوند.
این مورد هم خوب است بدانید که برای ایجاد رادیو کنترل، بهجای NRF24L01+ میتوانید از ماژولهای فرستنده و گیرنده بلوتوثی مانند ماژول HC-05 نیز استفاده کنید. در اینصورت، ارسال و دریافت دادهها با فناوری بلوتوث صورت میگیرد.
یکی از نخستین گامهای انجام پروژههای مبتنی بر آردوئینو یا «آردوینو» (Arduino)، فراهم کردن یکی از مدلهای موجود از این بردها است. اگر بهدنبال تهیه برد آردوینو برای شروع به ساخت پروژه ساخت رادیو کنترل با آردوینو باشید به احتمال قوی با مدلهای متعددی رو به رو خواهید شد که انتخاب یک مورد از بین آنها شاید باعث سردرگمی شما شود. UNO، مگا، میکرو، نانو و غیره جزو مدلهای رایج بردهای آردوینو در بازار هستند که البته با کمی تحقیق، متوجه تفاوتهای بین آنها میشود. بهطور کلی، تفاوتهایی در نوع میکروکنترلر مورد استفاده روی برد، پینهای ورودی و خروجی، حافظه و موارد اینچنینی را شاهد خواهید بود.
آردوینو UNO را میتوان محبوبترین و شناخته شدهترین بردی از آردوینو دانست که برای توسعه پروژههای گوناگون مورد استفاده قرار میگیرد. قدرت پردازشی این برد با یک میکروکنترلر ATMega328P فراهم میشود و برای راهاندازی یک RC گزینه مناسبی است. ضمن اینکه با توجه به امکانات، نسبت به سایر بردها قیمت مناسبتری دارد. آردوینو Nano نیز، نسخهای سبکتر از مدل اونو محسوب میشود. این مدل از آردوینو دارای پینهایی است که استفاده از آن را روی برد بورد آسانتر میکنند. بههمین دلیل شلوغی مدار که بهدنبال استفاده از سیمهای جامپر متعدد بهوجود میآید را برطرف میکند. ما در این پروژه از آردوینو NANO استفاده کردهایم که تصویر آن را در ادامه مشاهده میکنید.
با ما همراه باشید تا در ادامه، نحوه ساخت رادیو کنترل با آردوینو را با هم مرور کنیم.
ساخت رادیو کنترل با آردوینو
اکنون، با دانستن اینکه رادیو کنترل چیست و چه کاری انجام میدهد، بهسراغ پیادهسازی عملی پروژه ساخت رادیو کنترل با آردوینو میرویم.
تصویری که در ادامه آوردهایم، نمایی از ریموتکنترل یا رادیو کنترلی را نشان میدهد که قرار است در این مطلب آموزشی نحوه ساخت آن را آموزش دهیم. در این تصویر، از بورد Zero PCB برای ساخت مدار استفاده شده و اتصالات پینها در زیر برد لحیمکاری شده است. شما میتوانید از برد بورد استفاده کنید تا از زحمت لحیمکاری خلاص شوید. هر چند که با انجام این کار، مدار شما به دلیل استفاده از سیمهای جامپر کمی شلوغتر خواهد شد.
همانطور که در این عکس مشاهده میکنید، رادیو کنترل دستساز ما، علاوه بر برد آردوینو، دارای ۴ دکمه، یک جویاستیک، ۲ عدد LED و یک فرستنده رادیویی بههمراه آنتن است. فرستندهای که در این شیوه ساخت رادیو کنترل با آردوینو استفاده کردهایم، ماژول NRF24L01+ است که پس از متصل یا به اصطلاح «Pair» شدن با گیرنده نصب شده روی ربات – یا هر دستگاهی که قصد کنترل آن را داریم – وظایف مربوط به ارتباط بیسیم و از راه دور را بر عهده دارد. با هر فرمانی که از طریق این رادیو کنترل صادر میشود، یعنی با هر مرتبه که جویاستیک را حرکت میدهید یا دکمهای فشار داده میشود، دادهای از طریق فرستنده به سمت گیرنده ارسال میشود.
تصویر مدار فرستنده رادیو کنترل
تصویری که در ادامه آوردهایم، یک نمای کلی از اتصالات موجود و به بیان دیگر، نمودار مدار فرستنده در ساخت رادیو کنترل با آردوینو را نشان میدهد.
برای متصل کردن دکمهها، جویاستیک و ماژول رادیویی به برد آردوینو نانو میتوانید از برد بورد استفاده کنید. بهطور کلی، GND این ماژولها و قطعات را با GND برد آردوینو بهصورت مشترک بههم وصل میکنیم. پینهای مربوط به محورهای افقی و عمودی جویاستیک را نیز به پینهای A1 و A0 آردوینو وصل میکنیم. همانطور که مشاهده میشود، دکمههای فشاری نیز به پینهای ورودی دیجیتال آردوینو وصل شدهاند. برای اتصال ماژول رادیویی NRF24L01 نیز پینهای SPI، مورد استفاده قرار گرفتهاند. این اتصالات را در ادامه بهطور دقیقتر توضیح میدهیم.
نحوه اتصال ماژول ها و قطعات به آردوینو
در قسمت قبل با نمودار کلی و مدار پروژه ساخت رادیو کنترل با آردوینو آشنا شدیم. در این قسمت، ضمن معرفی هر یک از قطعات یا ماژولهای بهکار رفته، نحوه اتصال آنها به آردوینو را نیز به زبان ساده بیان میکنیم. توجه داشته باشید که برای انجام اتصالات میبایست از برد بورد استفاده کنید.
نحوه اتصال GND آردوینو به برد بورد
فرض را بر این میگذاریم که از برد بورد برای پیادهسازی مدار این پروژه استفاده میکنید. اکنون برای شروع لازم است تا با استفاده از سیم جامپر، پین GND آردوینو را به یکی از سوراخهای موجود در لاین بالا یا پایین برد بورد که برچسب منفی کنار آن درج شده و بهطور معمول، آبی یا مشکی رنگ است، متصل کنیم. لاین منفی در تصویر زیر با فلش مشکیرنگ مشخص شده است. با توجه به اینکه تمامی سوراخهای موجود در این لاین از داخل به هم مرتبط هستند بنابراین میتوانید تمامی GND های موجود در مدار را به سوراخهای موجود در همین لاین متصل کنید.
حالا به سراغ سر هم کردن قطعات میرویم.
نحوه اتصال پایه های دکمه فشاری
«دکمه فشاری» (شستی | پوشباتِن | Push Button)، قطعه الکترونیکی رایجی است که در مدارهای الکترونیکی استفاده میشود. این دکمهها عملکرد سادهای دارند و با فشار دادن آنها، مسیر برای عبور جریان الکتریکی محیا میشود. با رها کردن آنها نیز جریان الکتریکی قطع میشود. ما با همین قضیه میتوانیم کارهای مختلفی انجام دهیم. روزانه، نمونههای زیادی از این نوع دکمهها را در وسایل مختلف مانند ماشینحساب، دکمههای آسانسور و غیره میبینیم.
تصویر زیر، اتصالات داخلی بین پایههای دکمه فشاری و همچنین نصب آن روی برد بورد را نشان میدهد.
در این نوع دکمهها که ۴ عدد پایه وجود دارد، پایهها، دو به دو از داخل به هم وصل هستند. طبق تصویر بالا، پایههای ۱ و ۲ به هم و پایههای ۳ و ۴ نیز از داخل به هم مرتبط هستند. هنگامیکه دکمه را فشار میدهید، اتصالی بین پایههای جدا از هم، یعنی پایههای ۱ و ۳ و از طرف دیگر، ۲ و ۴ برقرار میشود. بهطور خلاصه، ۲ پایهای که در یک سمت از دکمهها در کنار هم قرار دارند، تنها در حالتی بههم متصل میشوند که دکمه را فشار دهیم. با دانستن نحوه عملکرد این دکمهها، اکنون میدانید که به چهصورتی از آنها در مدار پروژه ساخت رادیو کنترل با آردوینو استفاده کنید.
در پروژه ساخت رادیو کنترل با آردوینو، ۴ عدد از این دکمهها داریم که لازم است از طریق برد بورد، اتصالات لازم بین آنها و برد آردوینو را برقرار کنیم. ما از ۲ پایه موجود در یک سمت از دکمه استفاده میکنیم. بهطور مثال پایههای شماره ۲ و ۴ دکمه را بهکار میبریم.
- یکی از ۲ پایه مورد استفاده در دکمه را با سیم جامپر به لاین GND برد بورد که پیش از این ایجاد کردیم، متصل میکنیم.
- حال برای اتصال پایه بعدی دکمهها بهصورت زیر عمل میکنیم.
پایه دیگر دکمه فشاری | پین آردوینو نانو |
دکمه اول | پین شماره ۲ |
دکمه دوم | پین شماره ۳ |
دکمه سوم | پین شماره ۴ |
دکمه چهارم | پین شماره ۵ |
این کار را برای هر ۴ دکمه انجام دهید. تصویر زیر این مورد را بهخوبی نشان میدهد.
نحوه اتصال پینهای ماژول جویاستیک
جویاستیکها را به احتمال قوی در جاهای گوناگون از جمله دستههای بازی پلیاستیشن دیدهاید. این قطعه الکترونیکی در واقع، اهرمی است که میتوانید آن را با دست در جهات مختلف بچرخانید. به بیان دیگر، جویاستیک میتواند به عنوان یک سنسور، حرکت اهرم در محورهای عمودی و افقی را اندازه گرفته و آن را به آردوئینو منتقل کند. سپس شما میتوانید از دادههای ارسالی استفاده کرده و ربات یا وسایل الکترونیک خود را کنترل کنید.
بهکارگیری جویاستیک روی کنترلرهای کنسول بازی و رادیو کنترلها بسیار رایج است. شما میتوانید از این قطعه و در ترکیب با آردوئینو استفاده کنید و با دریافت جهت و یا زاویه چرخش آن، وسایل خود را کنترل کنید.
تصویری که در ادامه آوردهیم، پینهای ماژول جویاستیک را نشان میدهد که میتوانید از آنها برای ارتباط این قطعه به آردوینو استفاده کنید.
این ماژول بهطور معمول دارای پینهایی است که در ادامه بیان کردهایم.
- پین GND: این پین را میبایست به GND مدار یا همان لاین منفی روی برد بورد وصل کنیم.
- پین Vcc یا 5v: این پین را به مثبت آردوینو یا همان پین 5v+ متصل میکنیم.
درون ماژول جویاستیک در واقع، ۲ پتانسیومتر در راستای محورهای افقی و عمودی وجود دارد که برای سنجش میزان حرکت، مورد استفاده قرار میگیرند. پینهای گفته شده در زیر، به همین پتانسیومترها مربوط هستند.
- پین VRx : این پین مقدار آنالوگ مربوط به موقعیت افقی یا همان مختصات X جویاستیک است و میبایست به پین A0
آردوینو وصل شود.
- پین VRy: موقعیت عمودی یا Y اهرم نیز از طریق این پین سنجیده میشود. این پین را به پین A1
آردیونو متصل میکنیم.
در زیر اهرم جویاستیک یک سوییچ یا دکمه فشاری هم قرار دارد که با فشار دادن اهرم میتوان به مقدار آن از طریق پین گفته شده در زیر، دسترسی داشت.
- پین SW: از این پین برای تشخیص فشرده شدن دکمه جویاستیک استفاده میکنیم. همچنین بهیاد داشته باشید که برای خواندن مقدار این دکمه میبایست از مقاوت پول آپ استفاده شود.
جدول زیر، نحوه اتصال پینهای این ماژول به آردوینو را بهصورت خلاصه نشان میدهد.
پین ماژول جویاستیک | پین آردوینو نانو |
Vcc یا 5v | پین 5v+ |
GND | لاین GND برد بورد |
VRx | پین A0 |
VRy | پین A1 |
نحوه اتصال پین های ماژول NRF24L01+
تصویری که در ادامه آوردهایم، نمایی از یک ماژول ارتباط رادیویی مدل NRF24L01+ را نشان میدهد که یکی از مؤلفههای اصلی در پروژه ساخت رادیو کنترل با آردوینو محسوب میشود که وظیفه اتصال بیسیم بین رادیو کنترل و دستگاه کنترل شونده را بر عهده دارد.
یکی از خصوصیات بارز این ماژول، مقدار انرژی مصرفی بسیار کم آن است. بهطوریکه در زمان انتقال داده، ۱۰ میلیآمپر مصرف انرژی دارد که این مقدار حتی کمتر از انرژی مورد نیاز یک LED است. مورد دیگری که خوب است راجع به این ماژول NRF بدانید، حساسیت و آسیبپذیری آن در میزان انرژی دریافتی است. بهطوریکه اگر ولتاژی بیش از ۳٫۳ ولت به آن بدهید، احتمال خرابی و سوختن آن محتمل است. این ماژول همچنین، فاقد LED یا نشانگری است که عملکرد، خاموش یا روشن بودن آن را نشان بدهد. دلیل اینکه از ماژول NRF24L01+ در پروژه ساخت رادیو کنترل با آردوینو استفاده میکنیم، مصرف انرژی پایین و برقراری بهتر ارتباطات است.
تصویری که در ادامه آورده شده، راهنمای پینهای ماژول NRF24L01+ را نشان میدهد. این ماژول از طریق پینهای SPI به آردوینو متصل شده و با آن ارتباط برقرار میکند. یعنی میبایست پینهای MOSI
, MISO
, SCK
, CE
, CSN
را به پینهای متناظرشان در آردوینو وصل کنیم.
ماژولهای رادیویی nRF انواع مختلفی دارند که در ادامه، فهرست کردهایم.
- NRF24L01: این ماژول دارای آنتن آنبرد و بهطور کلی، جمع و جورتر است. همچنین، برد کمتر و در حدود ۱۰۰ متر دارد.
- NRF24L01+PA+LNA: نوعی است که ما در این پروژه استفاده میکنیم. این مدل دارای آنتن خارجی است که به کانکتور تعبیه شده روی ماژول وصل میشود. بنابراین، برد بیشتر و در حدود ۱۰۰۰ متر دارد. این نوع ماژول nRF همچنین دارای «تقویت کننده قدرت و سیگنال» (PA) و «تقویتکننده کمنویز» (LNA) است.
با توجه به مشابهت چینش پینها در هر ۲ مدل NRF24L01 و NRF24L01+PA+LNA، برای انجام اتصال آنها در مدار، به یک شکل عمل میکنیم.
پین NRF24L01 | پین آردوینو نانو |
CE | پین شماره D7 |
CSE | پین شماره D8 |
MOSI | پین شماره D11 |
MISO | پین شماره D12 |
SCK | پین شماره D13 |
GND | لاین GND برد بورد |
VCC | +3v3 |
برنامه نویسی فرستنده رادیو کنترل
اکنون که مدار رادیو کنترل خود را ساختیم، نوبت به آن رسیده تا کدنویسی برد آردوینو را انجام دهیم. برای پروگرام و انتقال کدها به آردوینو لازم است تا IDE آردوینو را روی کامپیوتر خود نصب کنید.
نصب و راه اندازی محیط کدنویسی آردوینو
برای برنامهنویسی روی بردهای آردوینو لازم است تا نرمافزار کدنویسی یا همان IDE مخصوص آردوینو را از سایت رسمی آن دانلود کرده و روی کامپیوتر خود نصب کنید.
- صفحه دانلود IDE آردوینو: «+»
با مراجعه به این صفحه میتوانید فایل نصبی مناسب برای سیستم عامل خود را دانلود کنید. این IDE برای پلتفرمهای ویندوز، لینوکی و مک قابل دانلود است. پس از تکمیل دانلود& میتوانید آن را بهسادگی نصب کنید. در نهایت پس از باز کردن این نرمافزار با تصویری مشابه آنچه در ادامه آوردهایم رو به رو خواهید شد.
پس از ورود به این نرمافزار، میتوانید کابل USB متصل به آردوینو را به سیستم خود نیز وصل کنید. سپس از منوی Tools این نرمافزار روی گزینه Board کلیک کرده و از لیست باز شده مدل بورد آردوینو خود را انتخاب کنید. اکنون همه چیز آماده است تا کدهای خود را به روی آردوینو منتقل کنید.
کدهای رادیو کنترل
کدهای لازم برای عملکرد رادیو کنترل که در واقع بخش فرستنده این پروژه است را در ادامه آوردهایم. این کدهای را میبایست به قسمت کد ادیتور آردوینو منتقل کنید.
1#include <SPI.h>
2#include <nRF24L01.h>
3#include <RF24.h>
4
5RF24 radio(7, 8); // CE, CSN
6const byte address[6] = "00001";
7
8void setup() {
9 Serial.begin(9600);
10 radio.begin();
11 radio.openWritingPipe(address);
12 radio.setPALevel(RF24_PA_MIN);
13 radio.stopListening();
14 pinMode(2, INPUT_PULLUP);
15 pinMode(3, INPUT_PULLUP);
16 pinMode(4, INPUT_PULLUP);
17 pinMode(5, INPUT_PULLUP);
18 pinMode(A0, INPUT_PULLUP);
19 pinMode(A1, INPUT_PULLUP);
20}
21
22void loop() {
23 int m = digitalRead(2);
24 int n = digitalRead(3);
25 int o= digitalRead(4);
26 int p = digitalRead(5);
27 int q = analogRead(A0);
28 int r = analogRead(A1);
29 Serial.print(m);
30 Serial.print(" ");
31 Serial.print(n);
32 Serial.print(" ");
33 Serial.print(o);
34 Serial.print(" ");
35 Serial.print(p);
36 Serial.print(" ");
37 Serial.print(q);
38 Serial.print(" ");
39 Serial.println(r);
40
41 if(m==0){
42 const char text[] = "A";
43 radio.write(&text, sizeof(text));
44 delay(100);
45 }
46 else if(n==0){
47 const char text[] = "B";
48 radio.write(&text, sizeof(text));
49 delay(100);
50 }
51 else if(o==0){
52 const char text[] = "C";
53 radio.write(&text, sizeof(text));
54 delay(100);
55 }
56 else if(p==0){
57 const char text[] = "D";
58 radio.write(&text, sizeof(text));
59 delay(100);
60 }
61 else if(q>=1000){
62 const char text[] = "E";
63 radio.write(&text, sizeof(text));
64 delay(100);
65 }
66 else if(q<20)
67 {
68 const char text[] = "F";
69 radio.write(&text, sizeof(text));
70 delay(100);
71 }
72
73 else if(r<20){
74 const char text[] = "G";
75 radio.write(&text, sizeof(text));
76 delay(100);
77 }
78
79 else if(r>1000){
80 const char text[] = "H";
81 radio.write(&text, sizeof(text));
82 delay(100);
83 }
84 else{
85 const char text[] = "nothing";
86 radio.write(&text, sizeof(text));
87 delay(100);
88 }
89}
برای دانلود کتابخانههای مورد استفاده نیز میتوانید از لینکی استفاده کنید که در ادامه آوردهایم.
- لینک دانلود کتابخانههای nRF24L01 از گیت هاب: «+»
اکنون میتوانید از آیکنهای بالای نرمافزار آردوینو، روی «فلش به سمت راست» کلیک کرده و تا تکمیل فرایند کامپایل و پروگرام شدن برد آردوینو صبر کنید. این کدها را در ادامه توضیح دادهایم.
کدهای رادیو کنترل را در ادمه، توضیح دادهایم.
- خطوط شماره ۱ تا ۳: در این خطوط، کتابخانههای SPI.h
، nRF24L01.h
و همچنین RF24.h
را وارد برنامه کردهایم. در ادامه کدها، از قابلیتها و توابع موجود در این کتابخانه استفاده میکنیم. کتابخانه SPI.h
، یکی از کتابخانههای درونی آردوینو است که به کمک آن میتوانید از آردوینو به دستگاههای SPI متصل شده و با آنها تعامل داشته باشید. ۲ کتابخانه دیگر نیز به ماژول رادیویی nRF24L01 مربوط میشوند و توابعی را در این رابطه در اختیارمان قرار میدهند. همچنین خوب است بدانید که پینهای پیشفرض SPI برای آردوینو نانو، به صورت زیر است.
- COPI: پین شماره ۱۱
- CIPO: پین شماره ۱۲
- SCK: پین شماره ۱۳
- خط شماره ۵: در این خط، آبجکتی از RF24 ساخته شده و پینهای مربوط به CE و CSN را با پاس دادن شماره پینها به عنوان آرگومان آن، مشخص کردهایم که بهترتیب برابر با ۷ و ۸ هستند.
- خط شماره ۷: در این خط نیز آدرس ماژول nrf تعریف شده است. این آدرس از نوع byte
و با طول ۶ کاراکتر است. این آدرس در هر ۲ ماژول فرستنده و گیرنده میبایست دارای مقداری مشابه باشد.
- خطوط شماره ۱۰ تا ۱۴: در این خطوط، ابتدا ارتباط سریال با نرخ ۹۶۰۰ شروع میشود. این مورد باعث میشود تا دادهها را در سریالمانیتور آردوینو مشاهده کنیم. سپس با openWritingPipe
آدرس را تنظیم میکنیم. دستور setPALevel
نیز برای تعیین میزان توان تقویتکننده بهکار میرود که در اینجا مقدار کمینه را برای آن در نظر گرفتهایم. نوشتن دستور stopListening()
باعث میشود تا ماژول رادیویی بهصورت فرستنده تنظیم شود.
- خطوط شماره ۱۴ تا ۱۹: در این خطوط، پینهای ورودی مربوط به دکمههای فشاری و جویاستیک موجود در رادیو کنترل، تعریف میشوند.
- خطوط شماره ۲۳ تا ۲۸: در این خطوط، با دستور digitalRead
مقدار پینهای دیجیتال 2، 3، 4، 5 و با دستور analogRead
، پینهای آنالوگ A0
و A1
، خوانده شده و در مجموعهای از متغیرها قرار میگیرند. این پینها، وضعیت ۴ دکمه فشاری و همچنین مقایر جویاستیک را نشان میدهند. بهطور مثال متغیر m
در خط شماره ۱۹، بیانگر این است که دکمه اول فشار داده شده است یا خیر و میتواند شامل مقدار HIGH
یا LOW
باشد که در واقع، وضعیت آن را نشان میدهد.
- خطوط شماره ۲۹ تا ۳۹: در این خطوط، عملیات چاپ برخی مقادیر در سریالمانیتور انجام میشود. به این صورت که مقدار دکمه اول چاپ میشود، تعداد کاراکتر خالی یا Space چاپ میشود، وضعیت فشرده شدن دکمه دوم چاپ میشود و الی آخر.
- خطوط شماره ۴۱ تا ۴۵: شرطهایی مانند آنچه در این خطوط مشاهده میشود، بیانگر این هستند که بهطور مثال اگر دکمه مشخصی فشرده شد، چه فرمانی میبایست به گیرنده ارسال شود. این شرطها برای هر ۶ عملکرد دکمهها و جویاستیک نوشته میشوند.
- خطوط شماره ۴۳: در این خط، کاراکتری را بهکمک دستور radio.write
به گیرنده ارسال میکنیم. در بدنه سایر شرطهای if
هم کاراکترهای متفاوتی در پاسخ به فشرده شدن یک دکمه یا حرکت جویاستیک به گیرنده ارسال میشود. همچنین در صورتی که هیچکدام از این شرطها برقرار نباشد مقدار nothing
ارسال میشود.
آردوینو را بهطور معمول با زبانی شبیه به C++ برنامهنویسی میکنیم. اما خوب است بدانید که زبان مبتنی بر بلوک mBlock را نیز برای این منظور میتوان استفاده کرد. فیلم آموزش برنامهنویسی آردوینو با mBlock از فرادرس که لینک آن در ادامه آورده شده، این مورد را به شما یاد میدهد.
ساخت دستگاه یا ربات کنترل شونده
تا این قسمت از مطلب آموزش ساخت رادیو کنترل با آردوینو توانستیم رادیو کنترلی را پیادهسازی کنیم که توانایی ارسال فرمانهای مختلفی را دارد. به بیان سادهتر، با فشردن کلیدها یا حرکت جویاستیک، این کنترلر میتواند فرمانهایی را به گیرنده منتقل کند.
اکنون وقت آن رسیده تا به ایجاد مدار گیرندهای بپردازیم که روی ربات یا دستگاه مورد نظر نصب میشود. دستگاه گیرندهای که قصد داریم تا با رادیو کنترل هدایت شود میتواند هر سیستمی از یک ماشین اسباببازی کنترلی گرفته تا حتی سیستمهای پیشرفتهتر و رباتها را شامل شود.
- در یکی مطالب پیشین مجله فرادرس نحوه ساخت بازی با آردوینو را از صفر تا صد و برای ۲ بازی مبتنی بر این پلتفرم الکترونیکی آموزش دادیم. شما میتوانید با اعمال برخی تغییرات در مدار اینبازیها، از رادیو کنترلهای دستساز خود برای انجام این بازیها استفاده کنید.
نمایی از مدار گیرنده دستگاه کنترل شونده
تصویری که در ادامه آورده شده، نمایی از مدار و اتصال بین آردوینو و سایر قطعات موجود در دستگاه گیرنده را نشان میدهد. همانطور که پیشتر هم بیان شد، این رادیو کنترل را میتوان به نحوی طراحی و پیادهسازی کرد که برای هر نوع دستگاهی قابل استفاده باشد. اما برای اینکه بتوانیم رادیو کنترل را آزمایش کنیم، سیستم سادهای متشکل از ۸ عدد LED داریم که قرار است با فرمانهای مختلفی که از رادیو کنترل صادر میشود آن را کنترل کنیم.
برای انجام اتصالات این بخش هم از برد بورد استفاده میکنیم. پس برای شروع مانند بخش قبل، با استفاده از یک سیم جامپر، پین GND آردوینو را به لاین منفی برد بورد که با برچسب «-» مشخص شده، متصل میکنیم. با انجام این کار، تمامی سوراخهای این ردیف از برد بورد، منفی یا GND مدار ما محسوب میشوند. حال میتوانیم بهسراغ سرهم کردن سایر قطعات مدار گیرنده برویم.
نحوه اتصال LED ها به آردوینو
هر هشت LED را شبیه به آنچه که در تصویر زیر مشاهده آورده شده، روی برد بورد قرار میدهیم.
هر LED دارای ۲ پایه مثبت و منفی است.
- پایه منفی تمامی LDE-ها را به لاین GND روی برد بورد وصل میکنیم.
- پایه مثبت LDE-ها که اندازه بلندتری هم دارند، به پینهای مختلفی از آردوینو وصل میشوند که شماره این پینها را در جدول زیر آوردهایم.
شماره LED | پین آردوینو |
۱ | A7 |
۲ | A6 |
۳ | A5 |
۴ | A4 |
۵ | 5 |
۶ | 4 |
۷ | 3 |
۸ | 2 |
توصیه میشود که بین اتصال پایه مثبت LED به پینهای گفته شده روی آردوینو، از مقاومتهای ۲۲۰ اُهمی استفاده کنید.
نحوه اتصال پین های ماژول NRF24L01+
همانطور که بیان کردیم، برد آردوینو نانو و همچنین ماژول NRF24L01+ بهدلیل پایههایی که دارند، بهخوبی روی برد بورد نصب میشوند. پس، ابتدا لازم است تا آنها را روی برد بورد قرار دهید. سپس با کمک گرفتن از جدول زیر، پینهای این ماژول را با استفاده از سیم جامپر به آردوینو متصل کنید.
پین آردوینو | پین ماژول NRF24L01+ |
پین 13 | پین SCK |
پین 12 | پین MISO |
پین 11 | پین MOSI |
پین 8 | پین CSE |
پین 7 | پین CE |
لاین GND برد بورد | پین GND |
پین +3v3 | پین Vcc یا 5v |
تا این قسمت از مطلب ساخت رادیو کنترل با آردوینو، توانستیم دستگاه کنترل شونده را نیز برای آزمایش رادیو کنترل خود بسازیم. اکنون به سرغ برنامهنویسی این دستگاه میرویم.
برنامه نویسی دستگاه گیرنده
اکنون مداری شامل ۸ عدد LED داریم که قرار است آنها را از راه دور و با استفاده از ماژول رادیویی کنترل کنیم. بنابراین در سمت گیرنده هم میبایست برنامهای را روی آردوینو آپلود کنیم که توانایی دریافت داده را به دستگاه ما بدهد. همچنین پس از پردازش فرمانهای ورودی، عمل مورد نظر را انجام دهد.
پس مجدد وارد نرمافزار آردوینو شده و کدهای زیر را به آن منتقل کنید.
1#include <SPI.h>
2#include <nRF24L01.h>
3#include <RF24.h>
4
5RF24 radio(7, 8); // CE, CSN
6
7const byte address[6] = "00001";
8
9void setup() {
10 Serial.begin(9600);
11 radio.begin();
12 radio.openReadingPipe(0, address);
13 radio.setPALevel(RF24_PA_MIN);
14 radio.startListening();
15 pinMode(2, OUTPUT);
16 pinMode(3, OUTPUT);
17 pinMode(4, OUTPUT);
18 pinMode(5, OUTPUT);
19 pinMode(A3, OUTPUT);
20 pinMode(A2, OUTPUT);
21 pinMode(A5, OUTPUT);
22 pinMode(A4, OUTPUT);
23}
24
25void loop() {
26
27 if (radio.available()) {
28 char text[32] = "";
29 radio.read(&text, sizeof(text));
30 Serial.println(text);
31 if(strcmp(text,"E")==0)
32 {
33 digitalWrite(2, HIGH);
34 digitalWrite(3, LOW);
35 digitalWrite(4, HIGH);
36 digitalWrite(5, LOW);
37 }
38 else if(strcmp(text,"F")==0)
39 {
40 digitalWrite(2, LOW);
41 digitalWrite(3, HIGH);
42 digitalWrite(4, LOW);
43 digitalWrite(5, HIGH);
44 }
45 else if(strcmp(text,"H")==0)
46 {
47 digitalWrite(2, LOW);
48 digitalWrite(3, HIGH);
49 digitalWrite(4, HIGH);
50 digitalWrite(5, LOW);
51 }
52 else if(strcmp(text,"G")==0)
53 {
54 digitalWrite(2, HIGH);
55 digitalWrite(3, LOW);
56 digitalWrite(4, LOW);
57 digitalWrite(5, HIGH);
58 }
59 else
60 {
61 digitalWrite(2, LOW);
62 digitalWrite(3, LOW);
63 digitalWrite(4, LOW);
64 digitalWrite(5, LOW);
65 }
66 }
67}
توضیح مربوط به این کدها را در ادامه آوردهایم.
- در این برنامه نیز ابتدا، کتابخانههای لازم را وارد برنامه کردهایم.
- خط شماره ۲۷: در این خط، با شرط if
و دستور radio.available()
بررسی میکنیم که آیا فرمانی از سمت فرستنده ارسال شده که قابل دریافت باشد یا خیر. در صورتی که دادهای موجود باشد، شرطهای دیگری نیز بررسی میشوند.
- خط شماره ۳۱: در این خط بررسی میکنیم که آیا فرمان دریافتی، کاراکتر E
- یعنی بهدلیل حرکت جویاستیک – بوده است یا خیر. اگر واقعا همین فرمان ارسال شده باشد، عمل گفته شده در ادامه، انجام میشود.
- خطوط شماره ۳۳ تا ۳۶: ۴ عدد از LED-ها را بهصورت یکی در میان روشن میکند.
باقی شرطها نیز منطق مشابهی دارند. مهمترین نکتهای که در اینجا وجود دارد این است که توانستیم فرمانهایی را به گیرنده منتقل کنیم. با انجام موفقیتآمیز این کار میتوان هر عملی که امکانش وجود داشته باشد را در دستگاه گیرنده انجام داد. بهعنوان مثال اگر دستگاه گیرنده ما یک ربات ماشین باشد، آنگاه بهطور مثال با دریافت پیام E میتوانستیم موتورهای متصل به چرخهای آن را روشن کنیم و بیشمار کار دیگر که بسته به خلاقیت خود و امکانات دستگاه میتوانید انجام دهید.
ادامه یادگیری آردوینو با فرادرس
اکنون که با نحوه طراحی و ساخت رادیو کنترل با آردوینو آشنا شدید، وقت آن رسیده تا مهارتهای خود را در مورد بردهای آردوینو تقویت کنید. برای این منظور، به شما پیشنهاد میکنیم تا فیلمهای آموزشی زیر از فرادرس را نیز تماشا کنید.
جمعبندی
در این مطلب از مجله فرادرس، توضیح دادیم که نحوه ساخت رادیو کنترل با آردوینو چگونه است. ضمن اینکه وسیلهای که قرار است کنترل شود را نیز ساختیم.
در برخی از پروژههای آردوینو، به دستگاه رادیو کنترل یا همان RC نیاز پیدا میکنیم. «ساخت رادیو کنترل» موضوع اصلی این نوشتار را تشکیل میدهد. فرض کنید رباتی را با آردوینو ساختهایم که قرار است تا با هدایت در مسیرهای دشوار، بهجای انسان به اکتشاف بپردازد. مانند رباتهایی که در زیر آوار ناشی از زلزله، به دنبال یافتن مجروحین با هدف نجات آنها هستند. در این حالت وجود یک دستگاه کنترل رادیویی برای ربات جستجوگر، به کاربر آن اجازه میدهد تا ربات را به مناطق دلخواه هدایت کند. در این آموزش متنی به شما گفتیم که برای ساخت رادیو کنترل با آردوینو به چه وسایلی نیاز داریم و پس از آن، نحوه اسمبل کردن این قطعات، برنامهنویسی پروژه و همچنین تست آن را انجام دادیم. شما میتوانید، با کمی خلاقیت، این پروژه را بهشیوههای مختلف گسترش دهید. بهطور مثال، میتوانید اگر از برد بورد برای ساخت مدار استفاده شده است، اکنون میتوانید قطعات را روی برد سوراخدار خام، لحیم کنید تا محکم و جمع و جورتر شود. همچنین میتوانید با وسایل معمولی یک قاب برای آن بسازید و بسیاری کارهای دیگر که میتوان در راستای توسعه این رادیو کنترل انجام داد.
source