نویسنده موضوع: نحوه راه اندازی ماژول nrf(اموزش و طرح سوال)  (دفعات بازدید: 3953 بار)

0 کاربر و 1 مهمان درحال دیدن موضوع.

آفلاین mz64

  • کاربر جدید
  • *
  • تشکر
  • -اهدایی: 6
  • -دریافتی: 2
  • ارسال: 7
    • ديدن مشخصات
سلام
مهندس با اجازتون این.تاپیک رو ایجاد میکنم .من توی سایت های مختلف راجع به این ماژول nrfمطالعه کردم اما هیچ کحا یک آموزش جامع و پله پله ندیدم که بشه ازش چیز کاملی یاد گرفت همه جا به صورت کلی توضیح داده شده.
میخواستم ازتون خواهش کنم که اگه واستون مقدوره نحوه راه اندازی این ماژول رو.از صفر توضیح بدید و هم بنده هم دوستان دیگه در طول آموزش اگه سوالی واسشون پیش اومد مطرح کنن و انشالا جواب بگیرن
خدا خیرتون بده :) ;)

آفلاین admin

  • مدیر سایت
  • *****
  • تشکر
  • -اهدایی: 102
  • -دریافتی: 29
  • ارسال: 161
    • ديدن مشخصات
پاسخ : نحوه راه اندازی ماژول nrf(اموزش و طرح سوال)
« پاسخ #1 : سپتامبر 05, 2016, 10:19:50 pm »
البته برای ساخت تاپیک که اجازه ای که نیاز نداره

اما اینکه بخوام مطلب آموزشی داخل انجمن قرار بدم باید بگم هدف ساخت این قسمت بیشتر پرسش و پاسخ بوده و مطالب آموزشی هم بصورت پرسش و پاسخ ارائه می شن و اینکه بنده بخوام مطلب آموزشیی رو قرار بدم به علت مشکلاتی نمی تونم خیلی وقت بذارم اما برای اینکه حرف شما زمین نمونه سعی می کنم یه آشنایی کلی راجب nrf قرار بدم اما فقط یک آشنایی کلی
لطفا از امکانات انجمن نهایت استفاده رو ببرید
قرار دادن عکس پرفایل (http://http://www.roboyar.ir/forum/index.php/topic,13.0.html)- قرار دادن امضا
برای هر چه تسریع روند کارها امکان آپلود به انجمن اضافه شده

آفلاین mz64

  • کاربر جدید
  • *
  • تشکر
  • -اهدایی: 6
  • -دریافتی: 2
  • ارسال: 7
    • ديدن مشخصات
پاسخ : نحوه راه اندازی ماژول nrf(اموزش و طرح سوال)
« پاسخ #2 : سپتامبر 05, 2016, 10:40:18 pm »
ممنون مهندس جان.
شما آموزش رو.قرار بدید ما سوالاتمون رو همینجا مطرح میکنیم که زحمت جواب دادنش با شما باشه  :)

آفلاین admin

  • مدیر سایت
  • *****
  • تشکر
  • -اهدایی: 102
  • -دریافتی: 29
  • ارسال: 161
    • ديدن مشخصات
پاسخ : نحوه راه اندازی ماژول nrf(اموزش و طرح سوال)
« پاسخ #3 : سپتامبر 05, 2016, 10:46:48 pm »
خلاصه تجربیاتم از nrf

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

این ماژول به طور کلی دارای دو مدل با تقویت کننده و بدون تقویت کننده در بازار موجود می باشد و قیمتی بسیار ارزان دارد.


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

تغذیه ی این ماژول 3.3 ولت می باشد و حتما روی تغذیه ی این ماژول از خازن های مناسبی استفاده کنید چون در انتقال صحیح دیتا خیلی تأثیر دارد.



در شکل بالا هم پین های این ماژول رو مشاهده می کنید.

در اینترنت لایبری های زیادی برای این ماژول وجود دارد و هیمنطور داخل همین سایت وجود دارد.

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

(البته این ماژول رو بنده خیلی وقت پیش راه اندازی کردم برای همین خیلی نتونستم بصورت مفصل درموردش بنویسم.پوزش

اما تو تاپیک بلی که انتقال صوت رو پیگیری می کردید لازم هست بگم اگرهنوز دیتایی نتوستید انتقال بدید که فعلا سراغ صوت نرید چون سر در گم می شید

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

ممنون از اینکه پیگری می کنید و موضوعات رو دونبال می کنید.

لطفا از امکانات انجمن نهایت استفاده رو ببرید
قرار دادن عکس پرفایل (http://http://www.roboyar.ir/forum/index.php/topic,13.0.html)- قرار دادن امضا
برای هر چه تسریع روند کارها امکان آپلود به انجمن اضافه شده

آفلاین mz64

  • کاربر جدید
  • *
  • تشکر
  • -اهدایی: 6
  • -دریافتی: 2
  • ارسال: 7
    • ديدن مشخصات
پاسخ : نحوه راه اندازی ماژول nrf(اموزش و طرح سوال)
« پاسخ #4 : سپتامبر 05, 2016, 11:57:55 pm »
خلاصه تجربیاتم از nrf

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

این ماژول به طور کلی دارای دو مدل با تقویت کننده و بدون تقویت کننده در بازار موجود می باشد و قیمتی بسیار ارزان دارد.


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

تغذیه ی این ماژول 3.3 ولت می باشد و حتما روی تغذیه ی این ماژول از خازن های مناسبی استفاده کنید چون در انتقال صحیح دیتا خیلی تأثیر دارد.



در شکل بالا هم پین های این ماژول رو مشاهده می کنید.

در اینترنت لایبری های زیادی برای این ماژول وجود دارد و هیمنطور داخل همین سایت وجود دارد.

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

(البته این ماژول رو بنده خیلی وقت پیش راه اندازی کردم برای همین خیلی نتونستم بصورت مفصل درموردش بنویسم.پوزش

اما تو تاپیک بلی که انتقال صوت رو پیگیری می کردید لازم هست بگم اگرهنوز دیتایی نتوستید انتقال بدید که فعلا سراغ صوت نرید چون سر در گم می شید

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

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

آفلاین admin

  • مدیر سایت
  • *****
  • تشکر
  • -اهدایی: 102
  • -دریافتی: 29
  • ارسال: 161
    • ديدن مشخصات
پاسخ : نحوه راه اندازی ماژول nrf(اموزش و طرح سوال)
« پاسخ #5 : سپتامبر 07, 2016, 12:26:16 pm »
پیشنهاد می کنم اگر دوست داشتید قدم قدم می بردیم جلو
لطفا از امکانات انجمن نهایت استفاده رو ببرید
قرار دادن عکس پرفایل (http://http://www.roboyar.ir/forum/index.php/topic,13.0.html)- قرار دادن امضا
برای هر چه تسریع روند کارها امکان آپلود به انجمن اضافه شده

آفلاین mz64

  • کاربر جدید
  • *
  • تشکر
  • -اهدایی: 6
  • -دریافتی: 2
  • ارسال: 7
    • ديدن مشخصات
پاسخ : نحوه راه اندازی ماژول nrf(اموزش و طرح سوال)
« پاسخ #6 : سپتامبر 14, 2016, 11:00:33 pm »
سلام مهندس موافقم.متاسفانه چند روزه دسترسیم به اینترنت با مشکل مواجه شده

آفلاین admin

  • مدیر سایت
  • *****
  • تشکر
  • -اهدایی: 102
  • -دریافتی: 29
  • ارسال: 161
    • ديدن مشخصات
پاسخ : نحوه راه اندازی ماژول nrf(اموزش و طرح سوال)
« پاسخ #7 : سپتامبر 16, 2016, 03:37:19 pm »
سلام مهندس موافقم.متاسفانه چند روزه دسترسیم به اینترنت با مشکل مواجه شده
امیدوارم که هر چه سریع تر این بحث شروع بشه
لطفا از امکانات انجمن نهایت استفاده رو ببرید
قرار دادن عکس پرفایل (http://http://www.roboyar.ir/forum/index.php/topic,13.0.html)- قرار دادن امضا
برای هر چه تسریع روند کارها امکان آپلود به انجمن اضافه شده

آفلاین sina086

  • مدیر بخش میکروکنترلرها
  • *
  • تشکر
  • -اهدایی: 2
  • -دریافتی: 10
  • ارسال: 38
    • ديدن مشخصات
پاسخ : نحوه راه اندازی ماژول nrf(اموزش و طرح سوال)
« پاسخ #8 : سپتامبر 17, 2017, 09:15:36 am »
سلام
مهندس.... من سوال برام پیش اومد اگه من دو تا آی سی  atmega 8  مهم نیست آی سی  مثال گفتم به صورت  spi  ارتباط بدهم آیا این کد  میتونه برای ماژول  nrf  هم استفاده بشه ؟ یعنی امکان شبیه سازی  ارتباط ماژول هست داخل پروتیوس ممنون میشم جواب بدید

آفلاین admin

  • مدیر سایت
  • *****
  • تشکر
  • -اهدایی: 102
  • -دریافتی: 29
  • ارسال: 161
    • ديدن مشخصات
پاسخ : نحوه راه اندازی ماژول nrf(اموزش و طرح سوال)
« پاسخ #9 : سپتامبر 17, 2017, 09:49:51 am »
سلام
مهندس.... من سوال برام پیش اومد اگه من دو تا آی سی  atmega 8  مهم نیست آی سی  مثال گفتم به صورت  spi  ارتباط بدهم آیا این کد  میتونه برای ماژول  nrf  هم استفاده بشه ؟ یعنی امکان شبیه سازی  ارتباط ماژول هست داخل پروتیوس ممنون میشم جواب بدید

والا اطلاعات خاصی در مورد پروتئوس ندارم.
لطفا از امکانات انجمن نهایت استفاده رو ببرید
قرار دادن عکس پرفایل (http://http://www.roboyar.ir/forum/index.php/topic,13.0.html)- قرار دادن امضا
برای هر چه تسریع روند کارها امکان آپلود به انجمن اضافه شده

آفلاین sina086

  • مدیر بخش میکروکنترلرها
  • *
  • تشکر
  • -اهدایی: 2
  • -دریافتی: 10
  • ارسال: 38
    • ديدن مشخصات
پاسخ : نحوه راه اندازی ماژول nrf(اموزش و طرح سوال)
« پاسخ #10 : سپتامبر 28, 2017, 03:52:17 pm »
سلام...ی سوال داشتم در مود ماژول  nrf24l01  من الان هم زمان 4 تا ماژول را اندازی کنم 2 به 2 به هم وصل باشن... حالا برای جلوگیری از  تداخل غیر از این که کانال  این مازول عوض کنیم  آیا را حل دیگه هم هست...
روش اول : آیا امکانات خاصی دارد این ماژول ها ، که باهم ست بشن؟
روش دوم : ما 32 بایت میفرستیم دو بایت  اول بزاریم کد اگر این دو کد اول با گیرندش یکی بود ما بقی اطلاعاتو بگیری؟ اینجوری دوتا فرستنده داخل یک کانال تداخل ایجاد نمیشه؟ یا اینکه مشکل حل میشه
آیا شما پیشنهادی دارید برای این مشکل فرض که 4 تا دستگاه  2 ب 2 به هم وصل هستن برای جللوگیری از تداخل  راهی پیشنهاد کنید غیر از تغییر کانال؟
سوال بعدی من کتابخانه  nrf24l01  را اندازی کردم وفتی برنامه فرستنده عوض میکنم حتما باید یبار خاموش روشن کنم تا با هم کانکت بشن ؟ ایا داخل کتابخانه این قابلیت اضافه شده یا ماژول خودش این قابلیتو داره ولی با بسکام اینجوری نبود
« آخرين ويرايش: سپتامبر 28, 2017, 03:55:30 pm توسط sina086 »

آفلاین admin

  • مدیر سایت
  • *****
  • تشکر
  • -اهدایی: 102
  • -دریافتی: 29
  • ارسال: 161
    • ديدن مشخصات
پاسخ : نحوه راه اندازی ماژول nrf(اموزش و طرح سوال)
« پاسخ #11 : سپتامبر 28, 2017, 04:53:21 pm »
سلام...ی سوال داشتم در مود ماژول  nrf24l01  من الان هم زمان 4 تا ماژول را اندازی کنم 2 به 2 به هم وصل باشن... حالا برای جلوگیری از  تداخل غیر از این که کانال  این مازول عوض کنیم  آیا را حل دیگه هم هست...
روش اول : آیا امکانات خاصی دارد این ماژول ها ، که باهم ست بشن؟
روش دوم : ما 32 بایت میفرستیم دو بایت  اول بزاریم کد اگر این دو کد اول با گیرندش یکی بود ما بقی اطلاعاتو بگیری؟ اینجوری دوتا فرستنده داخل یک کانال تداخل ایجاد نمیشه؟ یا اینکه مشکل حل میشه
آیا شما پیشنهادی دارید برای این مشکل فرض که 4 تا دستگاه  2 ب 2 به هم وصل هستن برای جللوگیری از تداخل  راهی پیشنهاد کنید غیر از تغییر کانال؟
سوال بعدی من کتابخانه  nrf24l01  را اندازی کردم وفتی برنامه فرستنده عوض میکنم حتما باید یبار خاموش روشن کنم تا با هم کانکت بشن ؟ ایا داخل کتابخانه این قابلیت اضافه شده یا ماژول خودش این قابلیتو داره ولی با بسکام اینجوری نبود

برای اینکه تداخل ماژول ها کم بشه آدرس ماژول رو که گفتید مثلا با فصله 5-10 تا بدید مشکل تداخل تقریبا کامل حل می شه
راجب ارسال کدها خود ماژول دقیق هست خیلی نیاز نیست روی کدگزاری وقت بذارید مثلا برای انتقال صدا اصلا نیازی به این کار نیست بهتره همه ی 32 بایت برای انتقال فقط صدا باشه نه کار دیگه ای
لطفا از امکانات انجمن نهایت استفاده رو ببرید
قرار دادن عکس پرفایل (http://http://www.roboyar.ir/forum/index.php/topic,13.0.html)- قرار دادن امضا
برای هر چه تسریع روند کارها امکان آپلود به انجمن اضافه شده

آفلاین sina086

  • مدیر بخش میکروکنترلرها
  • *
  • تشکر
  • -اهدایی: 2
  • -دریافتی: 10
  • ارسال: 38
    • ديدن مشخصات
پاسخ : نحوه راه اندازی ماژول nrf(اموزش و طرح سوال)
« پاسخ #12 : سپتامبر 28, 2017, 06:00:46 pm »
اگر بخوام حالت ست شدن داشته باشه  مثلا الان فرستنده روشن میخوام با یک گیرنده ستش کنم اگه اینجوری بخوام باید روی کد کار کنم یا خود ماژول این قابلیت داره؟
مثل لرن کد ریموت ها هرکدومشون یک سریال مجزا دارن   

آفلاین admin

  • مدیر سایت
  • *****
  • تشکر
  • -اهدایی: 102
  • -دریافتی: 29
  • ارسال: 161
    • ديدن مشخصات
پاسخ : نحوه راه اندازی ماژول nrf(اموزش و طرح سوال)
« پاسخ #13 : سپتامبر 29, 2017, 12:39:21 pm »
اگر بخوام حالت ست شدن داشته باشه  مثلا الان فرستنده روشن میخوام با یک گیرنده ستش کنم اگه اینجوری بخوام باید روی کد کار کنم یا خود ماژول این قابلیت داره؟
مثل لرن کد ریموت ها هرکدومشون یک سریال مجزا دارن
هر کدوم یه سریال مجزا دارن دیتاشیتش رو نگاه کن فکر کنم تا 64 تا بشه درست کرد
لطفا از امکانات انجمن نهایت استفاده رو ببرید
قرار دادن عکس پرفایل (http://http://www.roboyar.ir/forum/index.php/topic,13.0.html)- قرار دادن امضا
برای هر چه تسریع روند کارها امکان آپلود به انجمن اضافه شده

آفلاین sina086

  • مدیر بخش میکروکنترلرها
  • *
  • تشکر
  • -اهدایی: 2
  • -دریافتی: 10
  • ارسال: 38
    • ديدن مشخصات
با سلام... جناب مهندس...
من  تا اینجا تونستنم 32 بایت ارسال کنم... داخل دیتا شیت مطالعه کردم نوشته میشه 3 الی 5 بایت به آدرس دستگاه نسبت داد خواستم بدونم این پنج بایت جزو اون 32 بایت یا اینکه ما 32 بایت دیتا ارسال میشه و 5 بایت ادرس البته این آدرس داخل پروتکل  Isp  فک کنم پایه  sck  انجام میده؟
درکل خواستم بدونم 5 بایت ادرس جدا از این 32 بایت دیتا؟
سوال بعدی من اینه که  در کتابخانه این ماژول  این خط

flash unsigned char base_address[5]={0x00,0x01,0x03,0x07,0x00};
خودش نوشته ادرس ... که این باید داخل فرستنده و گیرنده یکی باشه... ولی دقیقا داخل کتابخانه متوجه نشدم کجا اینو با هم چک میکنه

/* Name: nrf24l01p.h
 * Coded by: Sayed Hassan Mortazavi
 * Creation Date:  2013-05-15
*/

#ifndef __nrf24l01p_h_included__
#define __nrf24l01p_h_included__

#define IRQ PORTB.2
#define DD_IRQ DDRB.2

#define CE PORTB.3
#define DD_CE DDRB.3

#define CSN PORTB.4
#define DD_CSN DDRB.4 

#define MOSI PORTB.5
#define DD_MOSI DDRB.5

#define MISO PORTB.6
#define DD_MISO DDRB.6

#define CLK PORTB.7
#define DD_CLK DDRB.7
 
flash unsigned char base_address[5]={0x00,0x01,0x03,0x07,0x00};
unsigned char temp_address[5]={0x00,0x01,0x03,0x07,0x00};
unsigned char payload[33];
unsigned char command_buff=0,status_buff=0,nrf_state=0;
char nrf_mode;
bit sent_actived=0;
unsigned char spi(unsigned char data)
{
    SPDR=data;
    while(!(SPSR & 0x80));
    data=SPSR;
    return SPDR;
}
void nrf_inst(unsigned char ins)
{
    int i;                             
    CSN=0;   
    status_buff=spi(ins);       
    switch(ins & 0xE0)
    {
        case 0x00:
        {                         
            if((ins & 0x1F)==0x0A || (ins & 0x1F)==0x0B || (ins & 0x1F)==0x10)
            {
                for(i=4;i>=0;i--)
                {
                    temp_address[i]=spi(0xFF);
                }
            }
            else
            {
                command_buff=spi(0xFF);   
            }
            break;
        }
        case 0x20: 
        {                         
            if((ins & 0x1F)==0x0A || (ins & 0x1F)==0x0B || (ins & 0x1F)==0x10)
            {
                for(i=4;i>=0;i--)
                {
                    spi(base_address[i]);
                }
            }
            else
            { 
                spi(command_buff);
            }
            break;
        }         
        case 0x60:
        {
            if((ins & 0x01)==1)
            {
                i=payload[0];
                while(i!=0)
                {
                    payload[i]=spi(0xFF);
                    i--;
                }   
            }
            else
            {
                command_buff=spi(0xFF);   
            }
            break;
        }
        case 0xA0:
        {   
            i=payload[0];
            while(i!=0)
            {
                spi(payload[i]);
                i--;
            }
            break;
        }
       
    }   
    CSN=1; 
    delay_us(10);
}

interrupt [EXT_INT2] void ext2_isr()
{
    if(nrf_mode==0)
    {
        nrf_inst(0xFF);
        if(status_buff & 0x20) 
        {
            nrf_state=2;
            nrf_inst(0x17);       
            if((command_buff & 0x01)==0)
            {
                nrf_inst(0x60); 
                if(command_buff<=32)
                {
                    payload[0]=command_buff;
                    nrf_inst(0x61);   
                    nrf_state=3;
                }
                else
                    nrf_inst(0xE2);
            }         
        }
        else
        {
            nrf_state=4;
        }
    }                                                     
    else
    {
        nrf_inst(0x60);
        if(command_buff>32)
        {
            nrf_inst(0xE2);
        }
        else
        {
            payload[0]=command_buff;
            nrf_inst(0x61);
            nrf_state=1;
        }
    }     
    command_buff=0x7E;
    nrf_inst(0x27);   
    nrf_inst(0xE1);                                                 
}
void sent()
{
    if(sent_actived)
    {
        sent_actived=0; 
        if((temp_address[4]==base_address[4]) && (temp_address[3]==base_address[3]) && (temp_address[2]==base_address[2]) && (temp_address[1]==base_address[1]) && (temp_address[0]==base_address[0]))
        {
            nrf_inst(0xE1);
            nrf_inst(0xA0);           
            delay_ms(10);
            CE=1;
            delay_us(20);
            CE=0;
            delay_ms(10);
        }
        else
            nrf_state=5;
    }                                     
}

void nrf_config(char mode)
{
    IRQ=1;
    CSN=1;
    DD_CSN=1;
    CLK=0;
    DD_CLK=1;
    CE=0;
    DD_CE=1;
    DD_MOSI=1;
    DD_MISO=0; 
    GIFR=0x20;
    GICR|=0x20;         
    #asm("sei")
    SPCR=0x50;       
    delay_ms(110);
   
    nrf_mode=mode;   
   
    command_buff=0x01;
    nrf_inst(0x21);   
   
    command_buff=0x01;
    nrf_inst(0x22);   
     
    command_buff=0x03;
    nrf_inst(0x23);   
   
    command_buff=0x0F;
    nrf_inst(0x24);   
                       
    command_buff=0x01;   
    nrf_inst(0x25);     
   
    command_buff=0x0E;   
    nrf_inst(0x26);     
   
    nrf_inst(0x2A);     
   
    nrf_inst(0x30);     
   
    command_buff=0x01;   
    nrf_inst(0x3C);     
       
    command_buff=0x07;   
    nrf_inst(0x3D);         
   
    if(mode==0)
    {
        command_buff=0x4E;
        nrf_inst(0x20);   
        delay_ms(100);
        sent_actived=1;
    }
    else
    {
        command_buff=0x3F;
        nrf_inst(0x20);   
        delay_ms(5);
        CE=1;
    }
}
#endif