نمایش نتایج: از 1 به 10 از 238
Like Tree63 لایک

موضوع: ماژول انتقال بیسیم اطلاعات +nrf24l01 ( فرکانس 2.4g ) + آنتن

Threaded View

  1. #16
    Member
    تاریخ عضویت
    Aug 2015
    نوشته ها
    57
    نقل قول نوشته اصلی توسط e.rasekh نمایش پست ها
    ماژول فرستنده و گيرنده راديويي +nrf24l01 از جديدترين فرستنده و گيرنده 2.4 گيگاهرتزي شركت nordic semiconductor يعني چيپ +nrf24l01 استفاده مي كند. فركانس اين آي سي براي دريافت و ارسال راديويي اطلاعات باند 2.4 گيگاهرتز بوده و مشخصات بسيار جديدي دارد. اين آي سي تمامي مشخصات و مزاياي آي سي سري قبل خود يعني nrf24l01a را داراست. بعلاوه pipeline و بافرهاي اضافي، و همچنين ارسال مجدد اتوماتيك، از قابليتهاي اضافه شده در اين سري از آي سي هاي rf است.

    توجه: در سري پلاس «+» از اين آي سي ها يعني +nrf24l01 شركت nordic مشخصاتي مانند برد، حساسيت و نرخ تبادل اطلاعات را نسبت به محصول سري قبل يعني nrf24l01 ارتقاء داده است. با اين حال دستورات كنترلي يا command های اين سري با سري قبل يكي بوده و تغييري نداشته است.

    مشخصات:

    • آنتن 2.4 گيگاهرتز روي بورد
    • برد 100 متر
    • نرخ تبادل اطلاعات قابل تنظيم از 250 كيلوبيت تا 2 مگابيت بر ثانيه
    • auto acknowledge
    • re-transmit auto
    • multiceiver با 6 ديتاپايپ
    • داراي 32 بايت fifo بصورت مجزا براي tx و rx
    • پايه هاي ورودي با تحمل ولتاژ 5 ولت
    • قابليت تنظيم كانال ارتباطي از 2400 مگاهرتز تا 2525 مگاهرتز (125كانال قابل انتخاب)
    • حداقل نياز به قطعات جانبي جهت راه اندازي
    • ترتيب پايه ها :vcc ، ce ، csn ، sck ، mosi ، miso ، irq


    شماتیک مدار:
    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: NRF24L01_SCH.jpg
مشاهده: 3081
حجم: 86.0 کیلو بایت

    مثال آردوینو:
    کد:
    /*
     # be name khoda!
     # a mirf example to test the latency between two ardunio.
    
     # company    : Aftabrayaneh
     # website    : Http://shop.aftabrayaneh.com
     # developers : Reza najafi, elham rasekh
     # date       : 09.09.2013
     # version    : 3.0
     
     * pins:
     * hardware spi:
     * miso -> 12
     * mosi -> 11
     * sck -> 13
     *
     * configurable:
     * ce -> 8
     * csn -> 7
     */
    
    #include <spi.h>
    #include <mirf.h>
    #include <nrf24l01.h>
    #include <mirfhardwarespidriver.h>
    
    const int max_buffer_len = 16;
    string receive_address = "clie1"; //a name that is dedicated to this station; max is 5 char.
    String send_address = "clie2";    //a name that is dedicated to another station; max is 5 char. 
    
    String strmirfbuffer="";
    byte transfer_lock=0;
    
    void setup()
    {  
      serial.begin(9600); 
      setup_mirf(); // initializing overall needed...  
      Senddata("talk"); 
    }
    
    void loop()
    {
      if (!mirf.issending())
         check_mirfbuffer();  
      read_serialbuffer();
    } 
    
    //this function checks mirf data availability. If data is available, put it in the buffer and generates an event.
    Void check_mirfbuffer()
    {
      if (mirf.dataready())
      { 
        while(mirf.dataready())
        {
          int  tmp_index=0;
          byte tmp_buffer[4]={0};
          mirf.getdata(tmp_buffer);  
          while(tmp_buffer[tmp_index] && tmp_index<4 )
          {
            strmirfbuffer = strmirfbuffer + char(tmp_buffer[tmp_index]);
            tmp_index++;
          }
          if (strmirfbuffer.length() >= max_buffer_len ) 
            buffer_ready();     
         
          if (!mirf.dataready())
            delay(2);     
        }
      }
      else if (strmirfbuffer.length()>0 )   
        buffer_ready();   
    }
    
    //this function sends a 4 byte packet
    void sendpacket(char packet[5])
    {   
      mirf.send((byte *)packet);
      while(mirf.issending());
    }
    
    //this function sends data 
    void senddata(string strdata)
    {
      int strlen=0;
      string tmp_str="";
      serial.print("sending data: ");
      serial.print(strdata);
      transfer_lock=1;
      strlen=strdata.length();
      serial.print(" : ");
      serial.println(strlen);
      
      //parsing the data to 4 character packets (byte *)packet
      while (strlen>0)
      {
        char tmp_char[5]={0};
        if(strlen>4)
        {
          tmp_str=strdata.substring(0,4);
          strdata=strdata.substring(4);
        }
        else
        {
          tmp_str=strdata;
          strdata="";
        }
        tmp_str.tochararray(tmp_char, 5);;
        sendpacket(tmp_char); 
        strlen=strdata.length();    
      }  
      transfer_lock=0;
    }
    
    //this function parses received commands from another nrfs.
    Void buffer_ready()
    {  
      if (strmirfbuffer == "talk")
      {
        senddata("hurray !");
        serial.println("talking...");  
      }   
      //and parse other commands so on ...
      Else 
      {
        serial.print("<");
        serial.print(strmirfbuffer);
        serial.println(">");
      }
      clear_buffer(); 
    }
    
    //this function forms a buffer of serial data and send it
    void read_serialbuffer()
    {
      if(serial.available())
      {
        char chardata;
        string strserialbuffer=""; 
        
        while (serial.available() && strserialbuffer.length() < max_buffer_len ) 
        {      
          chardata=serial.read();
          strserialbuffer=strserialbuffer + chardata;   
          if (!serial.available())
             delay(1);       
        }      
         while (transfer_lock); //wait for transfer process     
          
         senddata(strserialbuffer);    
      }
    }
    
    //this function initializes overall needed for wireless communication
    void setup_mirf() 
    {
      char receive_adr_char[6];
      char send_adr_char[6];
      receive_address.tochararray(receive_adr_char, 6); 
      send_address.tochararray(send_adr_char, 6); 
    
      mirf.spi = &mirfhardwarespi;
      mirf.init();
      mirf.setraddr((byte *)receive_adr_char);
      mirf.settaddr((byte *)send_adr_char);
      mirf.payload = sizeof(unsigned long);
      mirf.config();
    
      //reg - start  
      byte rf_setup = 0;
      mirf.readregister( rf_setup, &rf_setup, sizeof(rf_setup) );
    
      if (rf_setup != 0)   
        serial.println("beginning ... "); 
      else
      {
        serial.println( "wireless did not initialize!" );
        while (rf_setup==0);       
      }
      delay(100);
    }
    
    //this function clears the buffer
    void clear_buffer ()
    {
      strmirfbuffer="";
    }
    جهت سفارش این کالا، به این بخش در فروشگاه آفتاب رایانه مراجعه نمایید.





    ممنون میشم راهنمایی کنید که من میخام با خرید دو برد اردینو و دو ماژول nrf24l01+pa+lna و دو ماژول فرستنده و گیرنده معادون قرمز در واقع ,سیگنال معادون قرمز مثلا کنترل رسیور از یه نقطه به نقطه دیگر (در حد برد ماژول) انتقال بدم فقط تو کد موندم اقا میثم تا حدودی برام کمک کرد ولی انچییزی که میخام هنوز نشده ممنون میشم بهم راهنمایی کنید کد برنامه رو مچکرم
    ویرایش توسط farzintey : 01-01-2017 در ساعت 09:01 PM

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  

SEO by vBSEO