آموزش آردوینو پروژه های آردوینو

ساخت رادیو کنترل ۴ کانال با قابلیت میکس برای هواپیما — جلسه ی ۱

نوشته شده توسط حسین فهیمی

به نام خدا

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

nRF24L01 ماژولی برای انتقال داده به صورت بی سیم می باشد و در مواردی مانند : هدست های بی سیم ،  کنسول های بازی مانند ps3   ، اتوماسین خانگی  ، سیستم های مسیر یاب مانند GPS و …. استفاده می شود. این ماژول در نوع آنتن دار و بدون آنتن ارائه میشود که برد آنتن دار ۱۱۰۰ متر و بدون آنتن آن ۱۰۰ متر می باشد. nRF24L01 ماژول یک ماژول بسیار عالی برای ارسال و دریافت اطلاعات بدون خطا می باشد در مقایسه با ماژول های HMTR  از امکانات بسیار بیشتری برخوردار می باشند.

 

 

مشخصات ماژول NRF24L01:

  • ولتاژ کاری : ۳٫۳ ولت
  • دیتاریت ۲ مگابیت بر ثانیه در فضای باز
  • دارای رگولاتور داخلی

 

 

سخت افزار مورد نیاز برای ساخت رادیو کنترل :

 

 

در تصویر زیر نحوه ی اتصال پین ها را مشاهده می‌کنید.

آموزش راه اندازی nrf24l01 -دیجی اسپارک

پین های CE   و CSN میتوانند به هر پین دیجیتالی متصل شوند.

در برد آردوینو uno  پین های پرروتوکل spi به صورت زیر می باشند:

  • MOSI is connected to the digital pin 11
  • MISO is connected to the digital pin 12
  • SCK is connected to the digital pin 13

 

در برد آردوینو mega2560   پین های پروتکل spi  به صورت زیر می باشند:

  • MOSI is connected to the digital pin 51
  • MISO is connected to the digital pin 50
  • SCK is connected to the digital pin 52

 

ابتدا کتابخانه را از این لینک دانلود کنید و به نرم افزار اضافه کنید.

کد های فرستنده:

 

جهت دسترسی به این بخش، اشتراک اسپارکر پلاس تهیه کنید.

 

شماتیک جوی استیک ها :

New Bitmap Image

 

تا این جا فرستنده رو درست کردین و نوبت به گیرنده هست. در پست بعدی به ساخت گیرنده با آردوینو UNO می پردازیم….

 

درباره نویسنده

حسین فهیمی

تبادل نظر و رفع عیب با ثبت دیدگاه

۱۰۶ دیدگاه

  • سلام ماله من کار نکرد هر جوری کردم کار نکرد یه سوال اگه کتاب خونه نصب نباشه رنگ متنش تو آردوینو مشکی میوفته ؟

    • میتونید پست آقای قربانی در مورد راه اندازی NRF با آردوینو رو مطالعه کنید….
      در IDE آردوینو اگه کتابخانه ی ماژول نصب نباشه و شما از اون توابع استفاده کنید یا کتابخانه رو معرفی کنید ، در قسمت توضیحات –پایین IDE– ارور ناشناس و نصب نبودن کتابخانه رو میده

    • سلام حاجی میشه بجای استفاده از uno و mega دوتاشو از آردوینو نانو یا پرومیکرو استفاده کرد؟ اگه میشه میدونم بابد توی برنامه اسمشو تغییر داد ابا جای پین ها چه تغییری میکنه استاد عزیز لطفا راهنمایی کنید؟!؟

    • سلام. میتونید پست آقای قربانی —با موضوع راه اندازی nrf— رو مطالعه کنید. ماژولتون رو که تست کردید بعد یکسری کد ها رو اضافه کنید. نمونه کدها فرقی ندارن. خازن رو هم وسط تغزیه ی ماژول نصب کنید. از درست بودن ماژولتون حتما خبردار شین…

  • سلام.میشه به جای ۲۵۶۰ از همون اردوینو unoبرای فرستنده هم استفاده کرد؟؟ اگه میشه چ تغییراتی باید انجام داد.پیشاپیش ممنونم

    • با سلام
      ضمن تشکر از توجه شما، بله میتوانید استفاده کنید. فقط کافیست نوع برد را در تنظیمات تغییر دهید. پین‌های آنالوگ به کار رفته شده یکسان است.

  • با سلام ببخشید کتابخونه رو توی لینکی که گزاشتید نداره میشه یه لینک دانلود برای دانلود کتابخونه ها لطف کنید

    • با سلام
      برای دانلود کتابخانه پس از ورود به لینک مربوطه، روی تب دانلود کلیک کنید. فایل‌های مربوطه در همان جا هستند.

    • با سلام
      کاربر گرامی شماتیک به صورت تصویری در آموزش قرار دارد. لطفا جهت راهنمایی کامل اشکالات فنی را دقیق‌تر بیان کنید.

  • چرا کد ناقص هستش؟پس ادامش کجاست؟من هم کامپایل میکنم ارور میده لطفا کمک کنید مبخوام با ۲تا جوی استیک ۲تا سروو رو کنترل کنم ماژول هم nrf24l01+

    • با سلام
      ضمن تشکر از توجه شما، کدها بررسی شده‌اند. لطفا ارور دریافتی را جهت بررسی و راهنمایی از همین طریق ارسال کنید.

  • سلام ببخشید از این رادیو کنترلی که ساختید میشه برای پروژه ساخت کواد کوپتر با اردینو هم اسفاده کرد

    • با سلام
      ضمن تشکر از توجه شما، بله میتوانید استفاده کنید. دقیقا برای همین منظور این آموزش را تولید و منتشر کردیم.

    • با سلام
      لطفا ارورهای دریافتی موقع کامپایل کردن را اعلام کنید تا بررسی شود. این کدها تماما قبل از انتشار تست شده است.

    • با سلام
      ضمن تشکر از توجه شما، لطفا هرجایی را متوجه نشدید دقیق بیان کنید تا راهنمایی کامل صورت گیرد.

  • سلام دوباره.
    ۱-ایا در (فرستنده) دو برد اردینو استفاده شده است؟
    -اگر از دو برد استفاده شده لطفا لطفا و لطفا یک شماتیک کلی قرار دهید.یا ب ایمیل ارسال کنید. ممنون میشوم
    ۲- اگر از دو برد استفاده شده.ایا کد فرستنده رو باید به اردینو uno اپلود کنم؟

    ببخشید از سوالات ابتدایی استفاده کردم.(تازه کار هستم)

    • با سلام
      در فرستنده فقط از یک برد استفاده شده است. چون آردوینو است نیازی به شماتیک مدار نیست. تمامی اتصال پین‌ها در متن آموزش توضیح داده شده است که از ماژول به کدام پین آردوینو باید متصل شود. به عنوان مثال پایه MOSI در ماژول به پایه ۱۱ برد آردوینو متصل میشود.

  • سلام و خسته نباشید . مطلبتون عالی و مفید هست ولی خیلی بهتر می شه روش تست کردن و عکس یا فیلم از اتمام پروژه می زاشتین عالی می شد . پروژه بسیار کلی هستش.ممنون می شیم کاملش کنین.با تشکرات فراوان.

    • با سلام
      ضمن تشکر از توجه شما، فرموده شما صحیح است، این آموزش کلی است و نیاز به بخش بندی زیر مجموعه ها دارد. همانطور که میدانید آموزش زیاد است و تقاضای کاربران هم بیشتر، در صورت امکان آموزش مورد نظر شما را تولید و منتشر خواهیم کرد.

  • سلام ببخشید از این رادیوکنترل میشه برای کوادکوپتر هم استفاده کرد ؟؟ ممنون میشم پاسخ بدید

    • با سلام
      بله این رادیو براى این کار مناسب است. البته باید با توجه به نیازهاى کواد تعداد کانال رادیو را مشخص کنید.

    • با سلام
      بله میتوانید استفاده کنید. پین‌ها و کتابخانه این ماژول با ماژول به کار رفته در آموزش یکسان است.

  • سلام
    ببخشید میشه به جای مگا در دسته کنترلر از آدوینو نانو استفاده کرد؟ آخه ابعاد مگا خیلی بزرگه قیمتشم بالاتره.
    اگه از نانو استفاده کنیم، تفاوتی در کدها یا نحوه اتصال پین‌ها بوجود میاد یا نه؟
    سایتتون تکه. اغراق نمیکنما واقعا میگم.

    • با سلام
      ضمن تشکر از توجه شما، در درجه اول کدهای آردوینو قابل تبدیل به بردهای مختلف آردوینو هستند. بحث بعدی پایه‌های به کاربرده شده است، با توجه به اینکه در این آموزش از پایه‌های آنالوگ استفاده شده است، شما میتوانید بجای آردوینو Mega2560 از آردوینو Nano هم استفاده کنید.

  • سلام و خسته نباشد به همه دست اندرکاران این سایت عالی پین های CE و CSN میتوانند به هر پین دیجیتالی متصل شوند.مگه میشه به هر پین وصل بشه مگه داخل برنامه واسش پین مشخص نشده؟

    • با سلام
      ضمن تشکر از توجه شما، بله میتوانند به هر کدام از پین‌های دیجیتال متصل شوند. البته بعد از اتصال باید در برنامه پین‌ها را آدرس دهی کنید.

  • سلام وقتتون بخیر
    در مورد پین های ce وcsn گفته شده که به هر پین دیجیتالی میتوان متصل کرد؛ اما در کامنت بالا گفتید بعد از اتصال باید پین ها را در برنامه آدرس دهی کرد؛ لطفا نحوه آدرس دهی این پین ها را میشه توضیح بدید. برای آدرس دهی دقیقا به کجای برنامه و چه دستوری رو باید اضافه کنم؟
    من تازه کار با آردوینو را آغاز کردم و مبتدی هستم! مدار این رادیوکنترل را بستم ، کُد ها بدون هیچ اروری کامپایل شدند . اما از مدار جواب نگرفتم!

    • با سلام
      ضمن تشکر از توجه و دقت شما، برای این موضوع کافیست پین‌های نامبرده را به پایه‌های ۷ و ۸ آردوینو Uno متصل کنید.

  • باسلام وتشکر از آموزش عالی و توضیح کاملتون
    میشه از سطر ۲۰ تا اخر(۶-۷ سطر آخر) رو یکبار توضیح بدید؟ مثلا چرا تو قسمت map اول به عنوان محدوده اول از ۵۱۲ تا ۱۰۲۳ استفاده کردیم ونه از صفر یا چرا میانگین ۲ و۳ رو تو ۴ ریختیم؟ چون خودم رو پروژه مشابه کار می کنم و خوشحال میشم اگه یکم توضیحش بدین

    • با سلام
      ضمن تشکر از توجه شما، تابع map بازه اى از اعداد را به عنوان ورودى میگیرد و اعداد دریافتى را به بازه مورد نظر ما تبدیل میکند.

  • سلام، برای چجوری بفهمیم ماژول nrf24l01 سالمه و نسوخته ؟؟
    چون من یکرادیو کنترل تک کاناله باهاش درست کردم کار میکرد ولی الان اصلا کار نمیکنه !!

    • با سلام
      ضمن تشکر از توجه شما، روش خاصی برای تشخیص سالم بودن ماژول وجود ندارد. کدهایی را که اولین بار تست کرده‌اید و جواب گرفتید را امتحان کنید.

  • سلام خسته نباشین
    تصویری که به عنوان شماتیک جوی استیک ها گذاشتین ارور میده و باز نمیشه لطفا درستش کنید.

  • باسلام و تشکر
    ۲ تا سوال داشتم
    ۱٫ توی کد ، CE و CSN ترتیبشون چجوریه ؟ کدوم یکی CE هست و کدومCSN ؟ ۸ یا ۵۳
    ۲٫ چرا از دستور sizeof استفاده کردیم ؟ و در این صورت مقدار دقیق متغیر ها هم ارسال می شود؟

  • باسلام و تشکر
    ۲ تا سوال داشتم
    ۱٫ توی کد ، CE و CSN ترتیبشون چجوریه ؟ کدوم یکی CE هست و کدومCSN ؟ ۸ یا ۵۳
    ۲٫ چرا از دستور sizeof استفاده کردیم ؟ و در این صورت مقدار دقیق متغیر ها هم ارسال می شود؟

    • با سلام
      ضمن تشکر از توجه شما، در مورد سوال ۱ باید به دیتاشیت NRF24L01 مراجعه کنید. همچنین از دیگر کاربران که در این زمینه تخصص کافی دارند، تقاضا دارم تا در این بحث شرکت کنند.
      ۲- این تابع مقادیر ورودی را به مقادیر قابل شمارش تبدیل می‌کند.

    • با سلام
      بنده این برنامه را ننوشته‌ام که بتوانم دقیق راهنمایی کنم، ولی این مربوط به مقادیر جوی استیک است که برای تحلیل دقیق‌تر باید به کتابخانه مراجعه کنید.

  • سلام ببخشید چند تا سوال دارم . میشه به جای اردینو ۲۵۶۰atmeg از uno استفاده کنم .و اگه هم بشه ماژول فرستنده به جای pin51,pin50,pin52 به کجا باید وصل کرد ?

    • باسلام
      به نظر مشکلی نخواهد داشت، کافیست پین‌ها را به پین‌های دیجیتال آدرس دهی کنید.

  • با عرض سلام و خسته نباشید
    متاسفانه کتابخانه را نمیشه دانلود کرد.
    لطفا در صورت امکان بررسی شود.
    با تشکر

  • با سلام و خسته نباشید
    تبریک میگم بابت سایت پر محتوا و آموزنده شما
    یه سوالی برام پیش اومده. میشه از آردوینو نانو هم در فرستنده و هم گیرنده استفاده کرد؟ اگر امکان استفاده است با همین کدهایی که گذاشتید میشه کار کرد؟ با تشکر

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

  • ببخشید منظور شما مشخص کردن کدها هنگام آپلود یعنی انتخاب نوع ادرونیو در نرم افزار هستش یا نه باید توی برنامه نویسی تغییرات بدیم؟
    باتشکر

  • میشه این رادیو کنترل رو روی خوده پهباد نصب کرد و بهش جی پی اس وصل کرد تا خوده پهباد طبق مقصدی که بهش داده میشه یک مسیر رو پیدا کنه و بره برسه به مقصد؟

    • با سلام
      ضمن تشکر از توجه شما، این کار منطقی نیست. شما میتوانید روی پهپاد یک GPS قرار دهید و با استفاده از آن موقعیت پهپاد را مسیریابی کنید. این موضوع کاملا از رادیو کنترل مجزاست.

      • بله اما رادیو کنترل تنها تا یه بردی رو جواب میده اگه بخواد مسافت طولانی رو طی کنه و از برد رادیو کنترل خارج بشه دیگه از کنترل خارج میشه

        • سلام مجدد
          در این صورت نمی‌توانید فرمان از طریق پروتکل GPS ارسال کنید. بلکه می‌توانید از قبل برنامه ریزی کنید و مختصات جغرافیایی نقطه A و B را مشخص سپس از طریق ماژول GPS پهپاد موقعیت را تشخیص و ماموریت را اجرا می‌کند. دقت داشته باشید که ما درباره یک پهپاد معمولی صحبت نمی‌کنیم. چنین پهپادی بسیار پیچیده و ساخت آن نیاز به چندین تخصص دارد.

  • با سلام
    مرسی بابت مطالب مفید شما
    یه سوال دارم. چیزی درباره کدهای موتور هواپیما و نحوه نوشتن آنها چیزی ندیدم. ممنون میشم اگر راهنمایی کنید.

  • سلام خدمت شما و همه همکاران—ببخشید یه سوالی داشتم میخواستم بپرسم که میشه ماژولی که برای فرستنده استفاده میشه نوع آنتن دار باشه و برای گیرنده نوع عادی باشه؟؟ در این صورت برد اتصال ۱کیلومتر میشه؟؟با تشکر

    • با سلام
      ضمن تشکر از توجه شما، در این خصوص اگر تراشه هر دو ماژول یکی باشد، مشکلی پیش نخواهد آمد. ولی دقت داشته باشید که در این صورت برد اتصال به اندازه‌ی کمترین برد خواهد شد.

  • ببخشید یک سوال دیگه هم داشتم میخواستم بدونم که اگه بخوایم از آردوینو نانو استفاده کنیم پین های MOSIوMISOوSCKرو چگونه در برنامه آدرس دهی کنیم؟؟کدام خط آردوینو رو باید تغییر بدیم؟؟لطفا جواب سوال قبلیم رو هم بدید با تشکر

    • سلام مجدد و عذرخواهی بابت تاخیر در پاسخگویی، برای این منظور باید به پروتکل SPI برد آردوینو نانو متصل شوید. برد آردوینو نانو Nano دارای ۶ پین مجزا در انتهای برد می‌باشد که با عنوان ICSP مشخص شده است. کافیست با توجه به نقشه پین‌ها موارد SPI را متصل کنید. فکر نمی‌کنم نیازی به تغییراتی در کدها باشد. ولی شما تست کنید و اگر با مشکل مواجه شدید مطرح کنید تا بنده دقیق‌تر بررسی کنم.

  • سلام خسته نباشید
    ببخشید من میخوام از این رادیو کنترل برای هواپیما استفاده کنم . موتور الکتریکی را به کجا وصل کنم؟

  • سلام ممنون از آموزش خوبتون میخواستم بدونم جلسات دیگر این آموزش را از کجا میتونم مطالعه کنم چون هر چی میگردم فقط جلسه اول هست ما بقی جلسات نیست لطفا راهنماییم کنید

  • میشه از این رادیو در کواد گوپتر نیز استفاده کرد؟
    لطفا ساخت رادیو ۸ کانال را نیز در سایتتون بزارید مر۳۰۰۰

  • با سلام من وقتی پایه GNDماژول رو وصل میکنم ولتاژ میاد پایین و آردوینو داغ میکنه حتی چراغ های آردوینو هم خاموش میشه ماژول سوخته بنظرتون

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

  • سلام میشه تعداد کانال هاشو افزایش داد به۸یا ۱۰تا ک برای ربات های پروازی مفید باشه؟دوم اینکه فیلم کاملشو بزارید ممنون میشیم

    • با سلام و تشکر از توجه شما
      در خصوص افزایش کانال‌ها بایستی به دیتاشیت ماژول NRF مراجعه کنید. همچنین دیگر امکان ویرایش و اضافه کردن ویدیو برای این آموزش وجود ندارد و در صورت انتشار آموزش‌های بعدی حتما ویدیو هم قرار خواهیم داد.

  • با سلام
    می خواستم بدونم که آیا برد آردوینو همیشه باید به فرستنده و گیرنده وصل باشه یا اگر جداش کنیم میشه؟

    • سلام
      متاسفانه بنده اطلاعات دقیقی در این خصوص ندارم و نویسنده این پست هم در دسترس نمی‌باشند. لطفا بررسی بفرمایید و نتیجه را جهت اطلاع رسانی دیگر کاربران از همین طریق مطرح بفرمایید.

  • سلام.
    میخواستم بدونم که ایا میشه فرکانس این ماژول رو عوض کرد. منظورم اینه که ۲.۴ گیگاهرتز رو تغییر داد و از موج دیگه ای استفاده کرد

  • باسلام و احترام
    میخواستم این ماژول رو بدون برد اردینو راه اندازی کنم. یعنی با میکرو atmega. میشه راهنمایی بفرمایید؟

  • سلام ببخشید از این پروژه می تونیم برای هواپیمای مدل استفاده کنیم؟
    آیا میتونیم به جای جوی استیک از میکروسویچ استفاده کنیم و به جای سروو موتور از رله؟اگه می شه این کار رو کرد تا چند تا رله رو می تونیم باهاش خاموش روشن کنیم؟
    شعاع پوششیش یک کیلومتر یا یک کیلومتر مربع رو پوشش میده؟
    ممنون بابت سایت خوبتون

  • با سلام
    خسته نباشید،بسیار عالی بود فقط میشه به جای آردوینو mega و uno از آردوینو پرو یا نانو استفاده کرد.
    آیا در کیفیت مدار و کد ها و اتصالات تاثیر داره؟؟؟

    • با سلام
      خیر تفاوتی در عملکرد بردهای آردوینو وجود ندارد. تفاوت بردها در تعداد پایه های دیجیتال، آنالوگ و نوع پورت ها می‌باشد.

  • در برد آردوینو mega2560 پین های پروتکل spi به صورت زیر می باشند:

    MOSI is connected to the digital pin 51
    MISO is connected to the digital pin 50
    SCK is connected to the digital pin 5

  • سلام ببخشید چرا وقتی کد رو وارد میکنم این پیام رومیاره؟
    Joystick_nRF24:1:10: fatal error: nRF24L01.h: No such file or directory
    #include
    ^~~~~~~~~~~~
    compilation terminated.
    exit status 1
    nRF24L01.h: No such file or directory

  • سلام
    ممنون از زحماتتون
    ولی هر چی فکر میکنم به نظرم میاد کدش اشتباس.اندیس متغیرهای جوی استیک رو اشتباه نذاشتید؟؟
    کد پیشنهادی من:
    joyStick[0] = analogRead(A0);
    joyStick[1] = analogRead(A1);
    joyStick[2] = analogRead(A2);
    joyStick[3] = analogRead(A3);
    joyStick[0] = map(joyStick[0] , 0, 1023, 0, 180);
    joyStick[1] = map(joyStick[1] , 0, 1023, 0, 180);
    joyStick[2] = map(joyStick[2] , 0, 1023, 0, 180);
    joyStick[3] = map(joyStick[3] , 0, 1023, 0, 180);
    radio.write(joyStick, sizeof(joyStick));
    مشکل این کدی که نوشتم چیه؟ من تو این کد اطلاعات yaw , thrittle , pitch, roll رو در جوی استیک بین ۰ تا ۱۰۲۳ میخونم و روی ۰ تا ۱۸۰ مپ میکنم و میفرستم.