اطلاعیه

Collapse
No announcement yet.

راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو)

Collapse
این موضوع برجسته شده است.
X
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    پاسخ : راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو)

    سلام.ماژول با ولتاژ 5 هم کارمیکنه.ولی کسی جواب نداده که چجوری میشه هم بصورت گیرنده هم فرستنده ازماژول استفاده کرد

    دیدگاه


      پاسخ : راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو)

      سلام
      من یه برنامه نوشتم که قراره با فشار هر کلید یه حرف بفرسته.اما همیشه حرف c رو میفرسته و فقط کلید های مربوط به حرف a,b عمل میکنه یعنی وقتی کلیدهای مربوط به a,b زده میشه فرستاده میشن ولی کلید های d,e,c رو که میزنی نمیفرسته.
      کلا همیشه بدون اینکه شرط if مربوط به c درست بشه میاد مقدار payload[1[ برابر c قرار میده
      ممنون میشم کمک کنید...

      اینم برنامه فرستنده
      کد:
      [/
      #include <mega16a.h>
      #include <delay.h>
      #include <nrf.h>
      #include <alcd.h>
      
      void main(void)
      {
      PORTC=0x1f;
      DDRC=0x00;
       nrf_config(0);
        lcd_init(16);
        lcd_gotoxy(0,0);
        lcd_putsf("robo g4... ");
        delay_ms(500);
          while (1)
        { 
      
         if(PINC.0==0){
          payload[0]=1; 
          payload[1]='a';
           sent();} 
           
         else if(PINC.1==0){
          payload[0]=1;
          payload[1]='b';
           sent();}
           
         else if(PINC.2==0){
          payload[0]=1; 
          payload[1]='c';
           sent();} 
           else if(PINC.3==0){
          payload[0]=1;
          payload[1]='d';
           sent();}
           else if(PINC.4==0){
          payload[0]=1;
          payload[1]='e';
           sent();}
           
       
          if(nrf_state!=0)
          {
            if(nrf_state==2)
            {         
              lcd_clear();
              lcd_putsf("OK2");
            }
            sent_actived=1;
            nrf_state=0; 
          }  
        }
      }]
      اینم برنامه گیرنده
      کد:
      [#include <mega16a.h>
      #include <delay.h>
      #include <nrf.h>
      #include <alcd.h>
      unsigned char d;
      
      void main(void)
      { 
        lcd_init(16);
        lcd_putsf("robo g...");
        delay_ms(1000);
        lcd_clear();
        nrf_config(1);
        while (1)
        {
          if(nrf_state==1)
          {
            d=payload[1]; 
            nrf_state=0;
          } 
          lcd_gotoxy(0,0);
          lcd_putchar(d);
        }
      }]

      اضافه شده در تاریخ :
      نوشته اصلی توسط mirmossayeb
      سلام.ماژول با ولتاژ 5 هم کارمیکنه.ولی کسی جواب نداده که چجوری میشه هم بصورت گیرنده هم فرستنده ازماژول استفاده کرد
      سلام باید هرجایی از برنامه که میخوای جای فرستنده و گیرنده رو عوض کنی باید مقدار nrf_config رو عوض کنی
      (0)nrf_config نقش فرستنده
      (1)nrf_config نقش گیرنده]

      دیدگاه


        پاسخ : راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو)

        سلام
        کسی با این ماژول ارتباط دوطرفه صوتی گرفته؟
        اصلا به درد این کار میخوره؟

        دیدگاه


          پاسخ : راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو)

          توی محیط شهری تست کردم 100 متر بیشتر برد مسافت بهم نداد لعنتی

          دیدگاه


            پاسخ : راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو)

            سلام
            میشه لطفا اون pdf و هدری که که تو پست اول بهش اشاره کردین رو واسه دانلود بزارید
            ممنون :nerd:

            دیدگاه


              پاسخ : راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو)

              نوشته اصلی توسط chakavak_1989
              سلام
              میشه لطفا اون pdf و هدری که که تو پست اول بهش اشاره کردین رو واسه دانلود بزارید
              ممنون :nerd:
              به این پست سر بزنید،
              http://www.eca.ir/forum2/index.php?topic=93732.0

              دیدگاه


                پاسخ : راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو)

                نوشته اصلی توسط hamedf_hamedf
                به این پست سر بزنید،
                http://www.eca.ir/forum2/index.php?topic=93732.0
                خیلی ممنون
                تو پست اول گفتن مراحل انجام کارو تو یه pdf توضیح دادن
                من اون pdf می خوام شما ندارینش؟

                دیدگاه


                  پاسخ : راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو)

                  سلام به همه دوستان
                  من برای انجام پروژم نیاز به راه اندازی ماژول وایرلس دارم
                  ممنون میشم اگر کسی فایل های راه اندازی و توضیحات مورد نیازش رو داره برام ارسال کنه
                  mheydarzaded@yahoo.com

                  دیدگاه


                    پاسخ : راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو)

                    نوشته اصلی توسط hamedf_hamedf
                    سلام
                    استفاده از دو چیپ تقویت کننده به همین راحتی نیست. نیاز به مدار Combiner هست گه توان را جمع کن و سپس به خروجی بده. خود این مدار ملاحظات خاص خودش را داره.
                    راه دیگه استفاده از چیپهایی با تقویت بیشتر هست. شما مگه ماژول ایرانی که چیپ تقویت کننده RFX2401C را داره یا تایوانی را که تقویت کننده MCP01 را داره تست زدین و بردش براتون کم هست؟
                    اگه واقعا برد براتون کم هست و نیاز به برد بیشتر دارین کمپانی RFaxis چیپهای تقویت کننده دیگری هم داره. اما خب اگه تخصص ندارین توی طراحی مدار مخابراتی یکم سخت میشه براتون. اگه خودتون نتونستین بهم پی ام بدین.
                    سلام دوست عزیز با فرض مدار کامباینر برای اتصال دو چیپ تقویت کننده RFX2401C ایا توان خروجی دو برابر میشه مثلا اگه با یک چیپ تقویت کننده هست 22dBM با دو تا تقویت کننده میشه 44dBM یا چیزی غیر از اینه؟

                    دیدگاه


                      پاسخ : راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو)

                      نوشته اصلی توسط samfisher
                      سلام دوست عزیز با فرض مدار کامباینر برای اتصال دو چیپ تقویت کننده RFX2401C ایا توان خروجی دو برابر میشه مثلا اگه با یک چیپ تقویت کننده هست 22dBM با دو تا تقویت کننده میشه 44dBM یا چیزی غیر از اینه؟
                      سلام خود مدار کامباینر هم کمی تلفات داره. اما توان جمع میشود و دوتا جمع شود حدود 3db بیشتر میشود یعنی میشود 25dbm. اما چیپ با توان بیشتر هم هست. شما چی نیاز دارین؟ چه توانی؟ و کاربردتون؟

                      دیدگاه


                        پاسخ : راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو)

                        نوشته اصلی توسط hamedf_hamedf
                        سلام خود مدار کامباینر هم کمی تلفات داره تقریبا فرض بگیرید 40dbm. اما چیپ با توان بیشتر هم هست. شما چی نیاز دارین؟ چه توانی؟ و کاربردتون؟
                        اگه نیاز شد بهم زنگ بزنید 09124020877 تا کمکتون کنم
                        سلام در رابطه با مسافت من با این فرمول به نتیجه ی عجیبی رسیدم http://www.moxa.com/newsletter/connection/2008/03/Figure_out_transmission_distance_from_wireless_dev ice_specs.htm با محاسبه ی من با توان 40 دی بی یه چی حدود 19 km برد میده!!! :eek:

                        دیدگاه


                          پاسخ : راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو)

                          ماژول DRF ای که دوستمون معرفی کردن من می خوام بخرمش فک کنم فرکانسش 433 مگاهرتز هست پس بوردش باید خیلی بیشتر از nrf باشه نه ؟ این نمونه اش :
                          http://iran-micro.com/%D9%85%D8%A7%D...13-p-2088.html

                          به طور کلی نفهمیدم nrf بخرم یا drf تو این تاپیک بعضی دوستان nrf رو راه انداختن ولی رو بوردش می نالن و فقط یک نفر توصیه کرده DRF بخریم و خیلی هم تعریف کرده ازش از آخر چه کار کنم ؟ و یک سوال دیگه تو رو خدا مسخره نکنید برای ارسال تصویر nrf خوبه و راحت تره و یا sim908 ?
                          !!!! ممنون

                          اضافه شده در تاریخ :
                          چی شد دوستان ! این هم بگم من هر 35 صفحه این تاپیک رو خوندم !؟
                          اول توکل
                          دوم پشتکار
                          سوم مشورت
                          چهارم عمل
                          -----------------------------------------------------------------------------------------------------------------
                          نرم افزار برای دانلود نامحدود از rapideshare: http://k12student.persiangig.com/other ------- تشکر یادتون نره. موفق باشید.

                          دیدگاه


                            پاسخ : راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو)


                            سلام دوستان . راستش خیلی وقت گذاشتم ولی متاسفانه نشد این ماژول رو راه بندازم. برای همین مزاحم اوقات دوستان شدم.

                            راستش من هم یک برد درایور usb این ماژول NRF24L01+ بهمراه خود ماژول خریدم . هدر برنامم هم کدیه که در زیر گذاشتم. میشه کمک کنید و این دستور کانفبگش رو بفرمایید (AT+SET=05060001030700). راستش هر چی زدم نشد .

                            خیلی گیرم بخدا . ممنون میشم کمک کنید . الان با توجه به کد زیر من باید دستور بالا رو چی بزنم



                            کد:
                              #ifndef __nRF24L01+_H
                              #define __nRF24L01+_H
                            
                              #include <mega32.h>
                              #include <nRF24L01+.h>
                              #include <stdio.h>
                              #include <delay.h>
                              // SPI functions
                              #include <spi.h>
                            
                            
                              #define CE PORTB.3
                              #define CSN PORTB.4
                            
                              /* Instruction Mnemonics */
                              #define R_REGISTER 0x00
                              #define W_REGISTER 0x20
                              #define REGISTER_MASK 0x1F
                              #define ACTIVATE 0x50
                              #define R_RX_PL_WID 0x60
                              #define R_RX_PAYLOAD 0x61
                              #define W_TX_PAYLOAD 0xA0
                              #define W_ACK_PAYLOAD 0xA8
                              #define FLUSH_TX 0xE1
                              #define FLUSH_RX 0xE2
                              #define REUSE_TX_PL 0xE3
                              #define NOP 0xFF
                            
                            
                              /* Memory Map */
                              #define CONFIG 0x00
                              #define EN_AA 0x01
                              #define EN_RXADDR 0x02
                              #define SETUP_AW 0x03
                              #define SETUP_RETR 0x04
                              #define RF_CH 0x05
                              #define RF_SETUP 0x06
                              #define STATUS 0x07
                              #define OBSERVE_TX 0x08
                              #define CD 0x09
                              #define RX_ADDR_P0 0x0A
                              #define RX_ADDR_P1 0x0B
                              #define RX_ADDR_P2 0x0C
                              #define RX_ADDR_P3 0x0D
                              #define RX_ADDR_P4 0x0E
                              #define RX_ADDR_P5 0x0F
                              #define TX_ADDR 0x10
                              #define RX_PW_P0 0x11
                              #define RX_PW_P1 0x12
                              #define RX_PW_P2 0x13
                              #define RX_PW_P3 0x14
                              #define RX_PW_P4 0x15
                              #define RX_PW_P5 0x16
                              #define FIFO_STATUS 0x17
                              #define DYNPD 0x1C
                              #define FEATURE 0x1D
                            
                            
                            
                            
                              #pragma used+
                              /* library function prototypes */
                            
                              flash unsigned char Base_Addrs[5]={0x00,0x01,0x03,0x07,0x00};
                              unsigned char Temp_Addrs[5]={0x00,0x01,0x03,0x07,0x00};
                              unsigned char payload[33];
                              unsigned char Command_Reg = 0,Status_Reg = 0,State = 0;
                              char Opr_Mode;
                              bit send_actived = 0;
                            
                            
                              void Set_Reg(unsigned char ins)
                              {
                              int i;
                              CSN = 0;
                              Status_Reg=spi(ins);
                              switch(ins & 0xE0)
                              {
                              case 0x00:
                              {
                              if((ins & 0x1F)==0x0A || (ins & 0x1F)==0x0B || (ins & 0x1F)==0x10)
                              {
                              for(i=4;i>=0;i--)
                              {
                              Temp_Addrs[i]=spi(NOP);
                              }
                              }
                              else
                              {
                              Command_Reg=spi(NOP);
                              }
                              break;
                              }
                              case W_REGISTER:
                              {
                              if((ins & 0x1F)==0x0A || (ins & 0x1F)==0x0B || (ins & 0x1F)==0x10)
                              {
                              for(i=4;i>=0;i--)
                              {
                              spi(Base_Addrs[i]);
                              }
                              }
                              else
                              {
                              spi(Command_Reg);
                              }
                              break;
                              }
                              case R_RX_PL_WID:
                              {
                              if((ins & 0x01)==1)
                              {
                              i=payload[0];
                              while(i!=0)
                              {
                              payload[i]=spi(NOP);
                              i--;
                              }
                              }
                              else
                              {
                              Command_Reg=spi(NOP);
                              }
                              break;
                              }
                              case W_TX_PAYLOAD:
                              {
                              i=payload[0];
                              while(i!=0)
                              {
                              spi(payload[i]);
                              i--;
                              }
                              break;
                              }
                            
                              }
                              CSN=1;
                              delay_us(10);
                              }
                            
                            
                            
                            
                              // External Interrupt 2 service routine
                              interrupt [EXT_INT2] void ext_int2_isr(void)
                              {
                              // Place your code here
                              if(Opr_Mode==0)
                              {
                              Set_Reg(NOP);
                              if(Status_Reg & W_REGISTER)
                              {
                              State = 2;
                              Set_Reg(FIFO_STATUS);
                              if((Command_Reg & 0x01)==0)
                              {
                              Set_Reg(R_RX_PL_WID);
                              if(Command_Reg<=32)
                              {
                              payload[0]=Command_Reg;
                              Set_Reg(R_RX_PAYLOAD);
                              State = 3;
                              }
                              else
                              Set_Reg(FLUSH_RX);
                              }
                              }
                              else
                              {
                              State = 4;
                              }
                              }
                              else
                              {
                              Set_Reg(R_RX_PL_WID);
                              if(Command_Reg>32)
                              {
                              Set_Reg(FLUSH_RX);
                              }
                              else
                              {
                              payload[0]=Command_Reg;
                              Set_Reg(R_RX_PAYLOAD);
                              State = 1;
                              }
                              }
                              Command_Reg = 0x7E;
                              Set_Reg(0x27);
                              Set_Reg(FLUSH_TX);
                              }
                            
                            
                            
                            
                            
                              void Send_Data(char num , char *data)
                              {
                              int counter = 0;
                            
                              payload[0] = num;
                            
                              for(counter=0;counter<num;counter++)
                              payload[counter+1] = *(data+counter);
                            
                              if(send_actived)
                              {
                              send_actived = 0;
                              if((Temp_Addrs[4]==Base_Addrs[4]) && (Temp_Addrs[3]==Base_Addrs[3]) && (Temp_Addrs[2]==Base_Addrs[2]) && (Temp_Addrs[1]==Base_Addrs[1]) && (Temp_Addrs[0]==Base_Addrs[0]))
                              {
                              Set_Reg(FLUSH_TX);
                              Set_Reg(W_TX_PAYLOAD);
                              delay_ms(10);
                              CE = 1;
                              delay_us(20);
                              CE = 0;
                              delay_ms(10);
                              }
                              else
                              State = 5;
                              }
                            
                              if(State!=0)
                              {
                              send_actived=1; //faal sazi ersal mojadad
                              State=0;
                              }
                              }
                            
                            
                            
                              void nRF_Config(char mode)
                              {
                              // Port B initialization
                              // Func7=Out Func6=In Func5=Out Func4=Out Func3=In Func2=In Func1=In Func0=In
                              // State7=0 State6=T State5=0 State4=0 State3=T State2=T State1=T State0=T
                              PORTB=0x00;
                              DDRB=0xB0;
                            
                              CSN = 1;
                              CE = 0;
                            
                            
                              // External Interrupt(s) initialization
                              // INT0: Off
                              // INT1: Off
                              // INT2: On
                              // INT2 Mode: Falling Edge
                              GICR|=0x20;
                              MCUCR=0x00;
                              MCUCSR=0x00;
                              GIFR=0x20;
                            
                            
                              // SPI initialization
                              // SPI Type: Master
                              // SPI Clock Rate: 2000.000 kHz
                              // SPI Clock Phase: Cycle Start
                              // SPI Clock Polarity: Low
                              // SPI Data Order: MSB First
                              SPCR=0x50;
                              SPSR=0x00;
                            
                            
                              #asm("sei")
                            
                              delay_ms(110);
                            
                              Opr_Mode = mode;
                            
                              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);
                            
                              if(mode==0)
                              {
                              Command_Reg = 0x4E;
                              Set_Reg(W_REGISTER);
                              delay_ms(100);
                              send_actived = 1;
                              }
                              else
                              {
                              Command_Reg = 0x3F;
                              Set_Reg(W_REGISTER);
                              delay_ms(5);
                              CE = 1;
                              }
                              }
                            
                            
                              #pragma used-
                            
                            
                              //#pragma library nRF24L01+.lib
                            
                            
                              #endif

                            دیدگاه


                              پاسخ : راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو)

                              نوشته اصلی توسط silicosis


                              سلام
                              اگه ممکنه داکیومنت قدیمی رو واسه من بفرستید.
                              kafi.farhad@gmail.com
                              سلام من هم می خوام ممنون میشم برام بفرستید
                              hd.uni.pro@gmail.com
                              اول توکل
                              دوم پشتکار
                              سوم مشورت
                              چهارم عمل
                              -----------------------------------------------------------------------------------------------------------------
                              نرم افزار برای دانلود نامحدود از rapideshare: http://k12student.persiangig.com/other ------- تشکر یادتون نره. موفق باشید.

                              دیدگاه


                                پاسخ : راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو)

                                نوشته اصلی توسط hd_uni_pro
                                سلام من هم می خوام ممنون میشم برام بفرستید
                                hd.uni.pro@gmail.com
                                یکسری کد نمونه براتون ارسال شد

                                دیدگاه

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