اطلاعیه

Collapse
No announcement yet.

[آموزش]راه اندازی ماژول +nRF24L01

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    پاسخ : [آموزش]راه اندازی ماژول +nRF24L01

    1 همون دیتایی هست که شما میخواهید بفرستید . بله میتونید هر دیتای 8 بیتی از نوع char رو بفرستید .

    دیدگاه


      پاسخ : [آموزش]راه اندازی ماژول +nRF24L01

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

      کد:
      [LEFT](send_data(1,&i[/LEFT]
      بخوام دوتا یا بیشتر ارسال کنم چطوریه؟
      حالا تو گیرنده چی باید اونجا چطور دوتاشو دریافت کنم
      دستور
      کد:
      i=payload[1]
      در روزگاري که لبخند ادم ها بخاطر شکست توست برخيز تا بگيرند.........

      دیدگاه


        پاسخ : راه اندازی ماژول +nRF24L01

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

        دیدگاه


          پاسخ : [آموزش]راه اندازی ماژول +nRF24L01

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

          کد:
          [LEFT](send_data(1,&i[/LEFT]
          بخوام دوتا یا بیشتر ارسال کنم چطوریه؟
          حالا تو گیرنده چی باید اونجا چطور دوتاشو دریافت کنم
          دستور
          کد:
          i=payload[1]
          خیلی وقت پیش سوال شما رو دیدم منتها وقت نشد پاسخ بدم .بعدش هم که فراموش شد امیدوارم این توضیحات حداقل برای دیگران مفیدباشه
          -------------------------------------------------------------------------------------------------------------------------------------------------------------
          شیوه ارسال در کتابخانه آقای ایمانی فر به این شکل هست که شما دیتای خودتون که یک دیتای 8 بیتی از نوع CHAR هست رو توسط تابع SEND DATA وارد یک آرایه به نام PAYLOAD میکنید .(در کتابخانه بررسی کنید) با توجه به دیتاشیت شما حد اکثر 32 بایت یعنی 32 تا دیتای CHAR رو با هر پکت ارسال کنید .( پکت به مجموعه دیتای ارسالی و تعدادی بایت اضافه که هر کدوم کاربرد مشخصی دارن میگن) عضو شماره 0 آرایه PAYLOAD هم تعداد بایت های ارسالی قرار داده میشه (توسط پارمتر num در تابع SEND DATA ). اگر شما بخواهید دو بایت ارسال کنید کافیه که در برنامه اصلی تغییراتتون رو به نحوی انجام بدین که اولا" بجای عدد 1 به عنوان آرگومان در برنامه ارجینال ، عدد 2 ارسال بشه ثانیا برنامه طوری نوشته بشه که دیتای شما بصورت ترتیبی در payload[1] و payload[2] قرار بگیره . موفق باشید

          دیدگاه


            پاسخ : [آموزش]راه اندازی ماژول +nRF24L01

            سلام
            من هرچی دیتاشیت و کتابخونه رو خوندم متوجه نشدم این ماژول تو کتابخونه آقای ایمانی فر چطور پیکربندی میشه!
            کانفیگ زیر رو از کتابخونه آقای ایمانی فر اینجا قرار میدم:
            کد:
                Command_Reg = 0x01;
                Set_Reg(0x21);   
                
                Command_Reg = 0x01;
                Set_Reg(0x22);   
                  
                Command_Reg = 0x03;
                Set_Reg(0x23);   
                
                Command_Reg = 0x2f;
                Set_Reg(0x24);   
                                   
                Command_Reg = 0x01;   
                Set_Reg(0x25);      
                
                Command_Reg = 0x06;   
                Set_Reg(0x26);      
                
                Set_Reg(0x2A);      
                
                Set_Reg(0x30);      
                
                Command_Reg = 0x01;   
                Set_Reg(0x3C);      
                    
                Command_Reg = 0x07;   
                Set_Reg(0x3D);
            تو این کانفیگ تنظیمات قدرت سیگنال و نرخ ارسال رو چطور باید تغییر بدم؟

            دیدگاه


              پاسخ : [آموزش]راه اندازی ماژول +nRF24L01

              نوشته اصلی توسط M3R-E نمایش پست ها
              من هرچی دیتاشیت و کتابخونه رو خوندم متوجه نشدم این ماژول تو کتابخونه آقای ایمانی فر چطور پیکربندی میشه!
              قسمتی از کد با کامنت ها رو اینجا میذارم . امیدوارم مفهوم باشه. سوالی هم بود بپرسید توضیح میدم:


              کد:
                  Command_Reg = 0x01;           //  entekhabe auto ack baraye pipe 0
                  Set_Reg(0x21);                      //  001A AAAA  OR  0000 00001 ==> 0X21
              
                  Command_Reg = 0x01;             //  entekhabe pipe 0 be onvane pipe faal
                  Set_Reg(0x22);                          //  001A AAAA  OR  0000 00002 ==> 0X22
              
                  Command_Reg=0x03;            //   neveshtan halate 5 byte baraye toole address
                  Set_Reg(0x23);                       //  001A AAAA  OR  0000 00011 ==> 0X23    entekhabe SETUP_AW REG. jahate neveshtan
              
                 Command_Reg=0x2f;             //   neveshtan  halate 15 bar retransmit
                  Set_Reg(0x24);                         //  001A AAAA  OR  0000 0100 ==> 0X24    entekhabe SETUP_RETR jahate neveshtan
              
                  Command_Reg=0x01;             //  neveshtan  halate frequens 2401 Mhz
                  Set_Reg(0x25);                          //  001A AAAA  OR  0000 0101 ==> 0X25 entekhabe RF_CH  jahate neveshtan
              
                  Command_Reg=0x26;             //  neveshtan   datarate 250 kbps va tavan 0dbm(max)
                  Set_Reg(0x26);                        //  001A AAAA  OR  0000 0110 ==> 0X26  entekhabe RF_SETUP  jahate neveshtan
              
                  Set_Reg(0x2A);                      //  001A AAAA  OR  0000 1010 ==> 0X2A   neveshtan dar  RX_ADDR_P0  &  ERSALE  adade
                                                              //  Base_Addrs daroon an
                  Set_Reg(0x30);                         //  001A AAAA  OR  0001 0000 ==> 0X30   neveshtan dar  TX_ADDR  &    ERSALE  adade  base_address daroon an
              
                  Command_Reg=0x01;             //  neveshtan dar  dynamic payload  DPL_P0  va faalsazi an jahate DPL dar pipe 0
                  Set_Reg(0x3C);                       //  001A AAAA  OR  0001 1100  ==> 0X3C   entekhabe register DYNPD  jahate neveshtan
              
                  Command_Reg=0x07;             // neveshtan dar  EN_DPL , EN_ACK_PAY ,EN_DYN_ACK
                  Set_Reg(0x3D);                        //  001A AAAA  OR  0001 1101  ==> 0X3D entekhabe FEATURE   jahate neveshtan
              متاسفانه توی این ورژن از کدویژن که من دارم امکان فارسی نویسی نیست

              دیدگاه


                پاسخ : [آموزش]راه اندازی ماژول +nRF24L01

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

                دیدگاه


                  پاسخ : [آموزش]راه اندازی ماژول +nRF24L01

                  نوشته اصلی توسط sorena01 نمایش پست ها
                  قسمتی از کد با کامنت ها رو اینجا میذارم . امیدوارم مفهوم باشه. سوالی هم بود بپرسید توضیح میدم:


                  کد:
                      Command_Reg = 0x01;           //  entekhabe auto ack baraye pipe 0
                      Set_Reg(0x21);                      //  001A AAAA  OR  0000 00001 ==> 0X21
                  
                      Command_Reg = 0x01;             //  entekhabe pipe 0 be onvane pipe faal
                      Set_Reg(0x22);                          //  001A AAAA  OR  0000 00002 ==> 0X22
                  
                      Command_Reg=0x03;            //   neveshtan halate 5 byte baraye toole address
                      Set_Reg(0x23);                       //  001A AAAA  OR  0000 00011 ==> 0X23    entekhabe SETUP_AW REG. jahate neveshtan
                  
                     Command_Reg=0x2f;             //   neveshtan  halate 15 bar retransmit
                      Set_Reg(0x24);                         //  001A AAAA  OR  0000 0100 ==> 0X24    entekhabe SETUP_RETR jahate neveshtan
                  
                      Command_Reg=0x01;             //  neveshtan  halate frequens 2401 Mhz
                      Set_Reg(0x25);                          //  001A AAAA  OR  0000 0101 ==> 0X25 entekhabe RF_CH  jahate neveshtan
                  
                      Command_Reg=0x26;             //  neveshtan   datarate 250 kbps va tavan 0dbm(max)
                      Set_Reg(0x26);                        //  001A AAAA  OR  0000 0110 ==> 0X26  entekhabe RF_SETUP  jahate neveshtan
                  
                      Set_Reg(0x2A);                      //  001A AAAA  OR  0000 1010 ==> 0X2A   neveshtan dar  RX_ADDR_P0  &  ERSALE  adade
                                                                  //  Base_Addrs daroon an
                      Set_Reg(0x30);                         //  001A AAAA  OR  0001 0000 ==> 0X30   neveshtan dar  TX_ADDR  &    ERSALE  adade  base_address daroon an
                  
                      Command_Reg=0x01;             //  neveshtan dar  dynamic payload  DPL_P0  va faalsazi an jahate DPL dar pipe 0
                      Set_Reg(0x3C);                       //  001A AAAA  OR  0001 1100  ==> 0X3C   entekhabe register DYNPD  jahate neveshtan
                  
                      Command_Reg=0x07;             // neveshtan dar  EN_DPL , EN_ACK_PAY ,EN_DYN_ACK
                      Set_Reg(0x3D);                        //  001A AAAA  OR  0001 1101  ==> 0X3D entekhabe FEATURE   jahate neveshtan
                  متاسفانه توی این ورژن از کدویژن که من دارم امکان فارسی نویسی نیست

                  سلام
                  من تا 6 بایت تو یک پکت که دیتا ارسال میکنم تو گیرنده بدون مشکل دریافت میکنم ولی اگه از 6 بایت بیشتر بفرستم گیرنده هنگ میکنه ولی میکرو به کار خودش ادامه میده!!!
                  بین هر ارسال هم تاخیر 500 میلی ثانیه گذاشتم اما بازم این مشکل وجود داره!
                  چه کار باید بکنم؟

                  دیدگاه


                    پاسخ : [آموزش]راه اندازی ماژول +nRF24L01

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

                    دیدگاه


                      پاسخ : [آموزش]راه اندازی ماژول +nRF24L01

                      نوشته اصلی توسط sorena01 نمایش پست ها
                      اگر از کیفیت سخت افزار مطمئن هستین. و تغییری توی کتابخانه ایجاد نکردین مشکل رو باید توی برنامه سمت فرستنده یا گیرنده دنبال کنید. درصورت امکان کدهاتون رو بذارید تا بررسی بشه
                      سلام
                      از لحظا سخت افزار که مطمئن هستم چون تا 6 عدد تو یه پکت مشکلی نیست
                      گیرنده:
                      کد:
                      #include <avr/io.h>
                      #include <stdio.h>
                      #include <avr/io.h>
                      #include "library/nRF24L01+.h"
                      #include "library/uart.h"
                      #include "library/pcd8544.h"
                      
                      
                      #define UART_BAUD_RATE   9600
                      
                      char data1[5],str[33],st;
                      
                      int main(void)
                      {
                          nRF_Config(1);
                          uart_init( UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU) );
                          sei();
                           LcdInitialise();
                           LcdClear();
                          _delay_ms(2000);
                          gotoXY(0,0);
                          LcdString("hi",0);
                          _delay_ms(1000);
                          LcdClear();
                          DDRA=0XFF;
                          while (1)
                          {
                              if(State == 1)
                              {
                                  data1[0]=payload[1];
                                  data1[1]=payload[2];
                                  data1[2]=payload[3];
                                  data1[3]=payload[4];
                                  data1[4]=payload[5];
                                  data1[5]=payload[6];
                                  data1[6]=payload[7];
                                  data1[7]=payload[8];
                                  sprintf(str,"Data1 = %d",data1[1]);
                                  gotoXY(0,0);
                                  LcdString(str,0);
                                  LcdString("  ",0);
                                  sprintf(str,"Data2 = %d",data1[2]);
                                  gotoXY(0,1);
                                  LcdString(str,0);
                                  LcdString("  ",0);
                                  sprintf(str,"Data3 = %d",data1[3]);
                                  gotoXY(0,2);
                                  LcdString(str,0);
                                  LcdString("  ",0);    
                                  sprintf(str,"Data4 = %d",data1[4]);
                                  gotoXY(0,3);
                                  LcdString(str,0);
                                  LcdString("  ",0);
                                  sprintf(str,"Data5 = %d",data1[5]);
                                  gotoXY(0,4);
                                  LcdString(str,0);
                                  LcdString("  ",0);
                                  sprintf(str,"Data6 = %d",data1[6]);
                                  gotoXY(0,5);
                                  LcdString(str,0);
                                  LcdString("  ",0);                                            
                                  State = 0;    
                          }
                          _delay_ms(20);
                          }
                      }
                      فرستنده:
                      کد:
                      #include <avr/io.h>
                      #include <stdlib.h>
                      #include <util/delay.h>
                      #include "library/nRF24L01+.h"
                      #include "library/pcd8544.h"
                      
                      char data1[5],str[13],a=0,b=0,c=0;
                      
                      int main(void)
                      {
                      _delay_ms(2000);
                      LcdInitialise();
                      LcdClear();
                      nRF_Config(0);
                      _delay_ms(100);
                      sei();
                      DDRA=0XFF;
                      
                          while (1)
                          {
                              a=a+2;
                              b=b+2;
                              c=c+2;
                              itoa(a,str,10);
                              gotoXY(0,0);
                              LcdString(str,0);
                              LcdString("  ",0);
                              itoa(b,str,10);
                              gotoXY(0,1);
                              LcdString(str,0);
                              LcdString("  ",0);
                              itoa(c,str,10);
                              gotoXY(0,2);
                              LcdString(str,0);
                              LcdString("  ",0);
                              data1[0]=10;
                              data1[1]=12;
                              data1[2]=14;
                              data1[3]=16;
                              data1[4]=20;
                              data1 [5]=10;
                              data1[6]=15;
                              data1[7]=30;
                              Send_Data(7,data1);
                              _delay_ms(240);
                          }
                      }
                      6 تا دیتای اول بدون مشکل نمایش میده و بعد از اون دیتای دیگه نمایش میده و اون چیزی که من ارسال میکنم نیست!
                      کتابخونه هم هیچ تغییری ندادم!

                      دیدگاه


                        پاسخ : [آموزش]راه اندازی ماژول +nRF24L01

                        خب دویست عزیز شما ارایه data1 رو 5 عضوه معرفی کردین ولی به عضو 6 و 7 و ..... مقدار دادید. توی قسمت تعریف ارایه اعضای data1 رو بیشتر کنید

                        دیدگاه


                          پاسخ : [آموزش]راه اندازی ماژول +nRF24L01

                          اقا از من می پرسید رو این ماژول کار نکنید هدره
                          من 6 ماه روش کار کردم ادا در میاره چون همشون تقلبی هستن از ماژول های 27 تومنی تایوانی گرفته تا 57 تومانی تست کردم کلا اشفال هستن
                          تو این فروم بود یا فروم ایران میکرو یه تاپیک باز کرده بودم تشخیص nrf24l01+ اصل با تقلبی که طبق اون مقایسه کردم دیدم همشون تقلبی هستن
                          اصل خود ایسی فقط به نظرم 6 دلار یا 12 دلار بود که میشه پول یکی از ماژول های ما با تقویت کننده و غیره که این خودش تابلوست که ماژولهای تو ایران تقلبی هستن
                          این لینک تشخیص اورجینال با جعلی

                          جدیدترین ویرایش توسط pirozy; ۲۰:۳۹ ۱۳۹۵/۱۰/۱۸.

                          دیدگاه


                            پاسخ : [آموزش]راه اندازی ماژول +nRF24L01

                            نوشته اصلی توسط sorena01 نمایش پست ها
                            خب دویست عزیز شما ارایه data1 رو 5 عضوه معرفی کردین ولی به عضو 6 و 7 و ..... مقدار دادید. توی قسمت تعریف ارایه اعضای data1 رو بیشتر کنید
                            وااااااااااای
                            اصلا حواسم به این نبود!!!
                            خیلی ممنون

                            دیدگاه


                              پاسخ : [آموزش]راه اندازی ماژول +nRF24L01

                              نوشته اصلی توسط sorena01 نمایش پست ها
                              خیلی وقت پیش سوال شما رو دیدم منتها وقت نشد پاسخ بدم .بعدش هم که فراموش شد امیدوارم این توضیحات حداقل برای دیگران مفیدباشه
                              -------------------------------------------------------------------------------------------------------------------------------------------------------------
                              شیوه ارسال در کتابخانه آقای ایمانی فر به این شکل هست که شما دیتای خودتون که یک دیتای 8 بیتی از نوع CHAR هست رو توسط تابع SEND DATA وارد یک آرایه به نام PAYLOAD میکنید .(در کتابخانه بررسی کنید) با توجه به دیتاشیت شما حد اکثر 32 بایت یعنی 32 تا دیتای CHAR رو با هر پکت ارسال کنید .( پکت به مجموعه دیتای ارسالی و تعدادی بایت اضافه که هر کدوم کاربرد مشخصی دارن میگن) عضو شماره 0 آرایه PAYLOAD هم تعداد بایت های ارسالی قرار داده میشه (توسط پارمتر num در تابع SEND DATA ). اگر شما بخواهید دو بایت ارسال کنید کافیه که در برنامه اصلی تغییراتتون رو به نحوی انجام بدین که اولا" بجای عدد 1 به عنوان آرگومان در برنامه ارجینال ، عدد 2 ارسال بشه ثانیا برنامه طوری نوشته بشه که دیتای شما بصورت ترتیبی در payload[1] و payload[2] قرار بگیره . موفق باشید
                              هرچند دیر پاسخ داده شد ولی بازم ممنون
                              خودم زیاد بررسیش کردم و با کلی تست کردن راهشو پیدا کردم
                              در روزگاري که لبخند ادم ها بخاطر شکست توست برخيز تا بگيرند.........

                              دیدگاه


                                پاسخ : [آموزش]راه اندازی ماژول +nRF24L01

                                سلام دوستان.
                                من تازه وارد انجمن شدم و راستشو بخاین تازه وارد علم الکترونیک شدم و مبتدی هستم.
                                اما تو این مدت کوتاه علاقه شدیدی بهش پیدا کردم و دوست دارم اینجا از شما مطالب جدید و مفید یاد بگیرم.
                                یه سوال در مورد این ماژول داشتم. کتابخونه ماژول دستور ارسال اطلاعات رو با این فانکشن اجرا میکنه:
                                Send_Data(char num , char *data)
                                من توضیحات قبلی رو خوندم ولی هنوز متوجه نشدم که ارگومان num چه کاربردی داره و چه نیازی بهش هست.
                                در ضمن ظاهرا ماژول قابلیت ارسال با 6 پایپ رو داره. اگر راهنمایی بفرمایید که چجوری پایپ رو عوض کنم، ممنون میشم.
                                هدف کلی من شبکه کردن چند ماژول بعنوان سنسور و یه ماژول بعنوان نمایشگر هستش. منظورم شبکه ستاره ای هست و نمایشگر وسط شبکه قرار میگیره.
                                تعداد فرستنده ها بیشتر از 6 هست.
                                کاری که من کردم این بود که برای هر سنسور یه آیدی تعریف کردم و روی حالت گیرنده گذاشتم. نمایشگر رو هم طوری برنامه ریزی کردم که به ترتیب این آیدی ها رو بفرسته و منتظر جواب بمونه (گیرنده بشه) . از اونجایی که همه سنسورها گیرنده هستن، همگی اطلاعات فرستاده شده توسط نمایشگر رو میخونن و با مقایسه اون با آیدی خودشون، در صورت انطباق آیدی، مقدار سنسور رو به نمایشگر میفرستن و دوباره به حالت گیرنده میرن. نمایشگر هم اطلاعات مربوط به آیدی ارسالی رو دریافت میکنه و همین چرخه برای آیدی های بعدی تکرار میشه.
                                مشکلی که هست اینه که اطلاعات به دلایلی با هم تداخل دارن و با در نظر گرفتن فاصله زمانی برای هر چرخه باز هم مشکل حل نشد.
                                شما راه حلی براش سراغ دارید؟ یا اگر راه بهتر و اصولی تری برای شبکه کردن این تعداد سنسور و گیرنده سراغ دارید، ممنون میشم راهنمایی بفرمایید.
                                در ضمن من با میکرو کنترلر کار میکنم و دسترسی به بردهای توسعه ندارم.
                                بازم ممنون

                                دیدگاه

                                لطفا صبر کنید...
                                X