آردوینو آردوینو Arduino Uno پروژه های آردوینو

پروژه ارتباط بی سیم دو طرفه با ماژول رادیویی NRf24l01 و برد آردوینو

NRF Training- Digispark
نوشته شده توسط علیرضا قربانی

در پست‌های قبلی روش اتصال ماژول nrf24l01 را به آردوینو و همچنین برنامه نویسی آن را که به صورت کنترل یک سروو موتور به وسیله جوی استیک بود را آموزش دادیم که می‌توانید برای دیدن آن به پست زیر مراجعه کنید.

 

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

 

سخت افزار مورد نیاز

دو عدد آردوینو Uno

دو عدد ماژول nrf24l01

دو عدد LED
دو عدد تاچ سویج

 

اتصالات ماژول NRF24L01

اتصالات در هر دو آردوینو به صورت زیر می‌باشد. پین های CE   و CSN میتوانند به هر پین دیجیتالی منصل شوند(‌ ما پین 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

همچنین یک تاچ سوییچ را به پین شماره ۳ متصل می‌کنیم و آن را به صورت PULL Down در می‌آوریم . یک عدد LED نیز به پین شماره ۲ متصل می‌کنیم.

 

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

 

اتصالات دو عدد ماژول nrf24l01 به دو عدد آردوینو

اتصالات دو عدد ماژول nrf24l01 به دو عدد آردوینو

 

 

کدنویسی ارتباط رادیویی با NRF24L01

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

دانلو د کتابخانه nrf24l01

آموزش نصب کتابخانه در آردوینو

 

کد‌های زیر را بر روی هر دو آردوینو آپلود کنید. همانطور که مشاهده می‌کنید بر روی هر آردوینو که کلید را فشار دهید ، وضعیت LED متصل به آردوینو مقابل تغییر می‌کند.

 

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

 

 

 شیوه کار برنامه ماژول NRF24L01 آردوینو

در setup برنامه تنظیمات مربوط به ماژول و LEDها و کلید‌ها را انجام‌می‌دهیم. سپس تابعی به نام chk_incoming تعریف می‌کنیم .

در این تابع چک می‌کنیم که در صورتی  که آردوینو مقابل اطلاعات را ارسال کند، آن اطلاعات را دریافت کند و متناسب با  آن‌ اطلاعات دریافت شده(این اطلاعات شامل وضعیت کلید‌های متصل  به آردوینو مقایل می‌باشد) وضعیت LED ها را تغییر دهد.

 

سپس تابعی به نام  TX_mode تعریف می‌کنیم.

در این تابع ابتدا ماژول در وضعیت  فرستنده قرار می‌گیرد سپس اطلاعات را ارسال می‌کند ، پس از ارسال اطلاعات دوباره ماژول در وضعیت گیرنده قرار می‌گیرد.

 

بعد از مراحل فوق تابعی به نام chk_outgoing ایجاد می‌کنیم.

در این تابع مرتبا وضعیت فشرده شدن کلید‌ها چک می‌شود و در صورتی که یکی از کلید‌ها فشرده شود از تابع TX_mode قرار می‌گیرد و اطلاعات مربوط به وضعیت کلید‌ها را برای آردوینو مقابل ارسال می‌کند و سریع دوباره ماژول در مد گیرنده قرار می‌گیرد.

 

 

در مرحله آخر تمام توابع نوشته شده را در loop برنامه قرار می‌هیم:

 

 


پروژه و دریافت بن ارسال رایگان


برای دریافت بن خرید از دانشجو کیت، کاربران بایستی با استفاده از وسایل این آموزش، پروژه را اجرا کرده و یا حتی مدار جدیدی تعریف کنید. سپس از اجرای کار فیلم گرفته و در شبکه‌های اجتماعی از جمله آپارات و اینستگرام، با هشتگ‌های دیجی_اسپارک   دانشجوکیت    digispark    daneshjookit منتشر کنند. سپس از طریق بخش نظرات در ادامه همین آموزش، جهت دریافت بن خرید ارسال رایگان به ارزش ۱۰۳۰۰ تومان از دانشجو کیت، لینک را زیر همین پست ارسال کنید.

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

 

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

علیرضا قربانی

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

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

۴۴ دیدگاه

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

  • ببخشید من سوالم رو توی اون یکی مثال این ماژول گذاشته بودم.
    من این مدار رو دقیقا بستم. توی سریال مانیتور failed میزنه و توی هر دو آردوینو فقط ال ای دی چشمک میزنه.

    بعدشم من یه جا خوندم که تو مثالش واسه هر کدوم یه آدرس مختلف نوشته. هر چند تستش نکردم.

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

    ممنون میشم ایمیلتونو بدین بهم
    باتشکر

  • سلام خسته نباشین.
    بنده از ماژول + استفاده میکنم و ماژول رو صحیح وصل کردم.
    هرموقع کلید رو فشار می دم تو سریال مانیتور می نویسه failed.
    چی کار می تونم بکنم؟

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

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

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

  • ن تو ی پروژه میخوام از ماژول کارت حافظه sd و nrf استفاده کنم و هر دو از پروتکل spi استفاده می کنند میشه جفتش با هم فعال باشند ؟

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

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

  • با سلام
    برای ارسال صدا بین طبقات یک ساختمان استفاده از ماژول nrf24l01 مناسب است؟
    اگر راه و روش بهتری وجود دارد لطفا راهنمایی کنید.

  • سلام
    اگه ممکنه برای ارسال صدا یا تصویر از طریق ماژول هایی مثل nrf یا esp راهنمایی کنید. یا از هر طریق دیگری بدون استفاده از سیمکارت.

  • سلام اگه ممکنه برای ارسال صدا یا تصویر از طریق ماژول هایی مثل nrf یا esp راهنمایی کنید. یا از هر طریق دیگری بدون استفاده از سیمکارت.

  • با سلام دوستان من یک پروژه رادیو کنترل نوشتم با ماژول nrf طلایی که بردش ۱۸۰۰ متره حالا بردش نهایتا پنج متره دیتاریت رو که کم میکنم ماژول ها همدیگر رو پیدا نمیکنن میشه راهنمایی کنید تشکر

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

  • سلام من nrf رو با آردوینو Dip uno راه اندازی کردم اما همون کد و شماتیک رو با آردوینو smd uno راه اندازی میکنم ولی جواب نمیگیرم میشه کمکم کنید؟

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

  • با سلام.
    من در یک طرف nodemcu استفاده کردم و در طرف دیگه atmega8.
    برنامه atmega8 رو با کدویژن نوشتم و برای nodemcu رو با آردوینو ide ولی اصلا به هم پیغام نمیدن. اصلا این کار درسته؟ و میخوام بدونم یک ماژول nrf به چند تا nrf دیگه که همه در یک کانال و یک آدرس دارن کار میکنن پیام ارسال کنه. (نیاز به ack نیست )

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

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

  • سلام من موقع راه اندازی ماژول nrf در فرستنده هر چی ارسال می کنم از اون طرف صفر دریافت می کنم فکر کنم چون خازن مناسبی در قسمت تغذیه نذاشتم درسته؟
    چون وقتی خازن ها رو دست کاری می کنم گاهی اوقات اون مقداری که می خواهم را در خروجی دریافت می کنم الان باید چی کار کنم؟
    چه خازنی مناسب است؟دوتا ۱۰ میکرو فاراد رو امتحان کردم

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

  • سلام وعرض ادب و احترام و ممنونم به خاطر آموزش خیلی زیباتون
    من موقع کامپایل کردن این ارور را می گیرم حتی لایبراری رو هم اضافه کردم ولی این خط رو ارور می ده
    همه ی include ها و توابع ای که گفتید رو قبل از setup اضافه کردم

    ‘radio’ was not declared in this scope

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

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

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

  • سلام وقت بخیر من میخوام با گوشی اندروید به ۳ یا ۴ تا میکروکنترلر که قراره استپ موتور فعال کنند به صورت هم زمان فرمان بدم به صورت بی سیم که برای هر استپ موتور ۴تا فرمان باید بدم جمعا ۱۶ تا مقدار عددی ایا با استفاده از ماژول های nrfمیتونم این کار رو انجام بدم که یک برد مستر باشه بقیه اسلو .ممنون میشم اگر راهنمایی کنید

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

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