صفحه 1 از 24 12311 ... آخرینآخرین
نمایش نتایج: از 1 به 10 از 238
Like Tree63 لایک

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

  1. #1
    Junior Member
    تاریخ عضویت
    Jul 2013
    نوشته ها
    13

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

    ماژول فرستنده و گيرنده راديويي +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

    مثال آردوینو:
    کد:
    /*
     # 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="";
    }
    جهت سفارش این کالا، به این بخش در فروشگاه آفتاب رایانه مراجعه نمایید.
    تصاویر کوچک شده (Thumbnails) پیوست شده تصاویر کوچک شده (Thumbnails) پیوست شده nrf24l01.jpg  
    فایل های پیوست شده فایل های پیوست شده
    ویرایش توسط max : 10-31-2013 در ساعت 02:12 PM

  2. #2
    Senior Member
    تاریخ عضویت
    Mar 2013
    محل سکونت
    Iran
    نوشته ها
    138
    سلام اگه ممکنه یه توضیحی راجع به نمونه مثالی که گذاشتین بدین!؟

  3. #3
    مدیر اصلی
    تاریخ عضویت
    Aug 2012
    محل سکونت
    ایران
    نوشته ها
    440
    سلام
    این کد برای یک جفت +nrf24l01 تولید شده است ، فرض بر این هست که هر کدام از ماژول ها به یک برد آردوینو متصل هست ،کافی هست فقط این دو خط رو تغییر بدید و بعد روی هر برد جداگانه آپلود کنید.
    کد:
    String Receive_Address = "clie1";
    String Send_Address = "clie2";
    .

    به صورت پیش فرض یکی از بردها به نام clie1 و برد دیگر clie2 نامگذاری شده ، پس توجه داشته باشد در زمان آپلود کد بر روی برد دوم حتما جای اسامی رو به این ترتیب تغییر بدید:


    کد:
    String Receive_Address = "clie2"; 
    String Send_Address = "clie1";
    .

    بعد از اجرای کد در صورتی که از کنسول سریال مونیتور آردوینو استفاده کنید باید به راحتی بتونید پیام ها رو به صورت متنی برای برد دوم ارسال و دریافت کنید.

  4. #4
    Junior Member
    تاریخ عضویت
    Sep 2013
    نوشته ها
    2
    سلام

    برای میکرو که پایه های 11 12 13 نداره چی ؟
    لایک کردن

  5. #5
    مدیر اصلی
    تاریخ عضویت
    Aug 2012
    محل سکونت
    ایران
    نوشته ها
    440
    سلام
    این 11 12 13 پایه های برد آردوینو هست ، باید معادلش رو روی میکرو مورد نظر خودتون پیدا کنید.


    * MISO -> 12 * MOSI -> 11 * SCK -> 13 * * Configurable: * CE -> 8 * CSN -> 7 */
    لایک کردن

  6. #6
    Junior Member
    تاریخ عضویت
    Sep 2013
    نوشته ها
    2
    نقل قول نوشته اصلی توسط spark نمایش پست ها
    سلام
    این 11 12 13 پایه های برد آردوینو هست ، باید معادلش رو روی میکرو مورد نظر خودتون پیدا کنید.


    * MISO -> 12 * MOSI -> 11 * SCK -> 13 * * Configurable: * CE -> 8 * CSN -> 7 */
    اردوینو پرو میکرو منظورمه

  7. #7
    Junior Member
    تاریخ عضویت
    Aug 2013
    نوشته ها
    7
    نقل قول نوشته اصلی توسط golabi نمایش پست ها
    اردوینو پرو میکرو منظورمه
    با سلام من آردوینو مگا رو با آردوینو پرو مینی را با این ماژول بیسیم به هم وصل کردم

    فقط یادتون باشه شما با استفاده از کتابخانههای بالا نمیتونید پایه هارو خودتون عوض کنید پس بل اجبار باید از دیتا شیت آردیونو خودتون پایهای فوق ( * MISO -> 12 * MOSI -> 11 * SCK -> 13 * * Configurable: * CE -> 8 * CSN -> 7 */) را پیدا کنید
    لایک کردن

  8. #8
    مدیر اصلی
    تاریخ عضویت
    Aug 2012
    محل سکونت
    ایران
    نوشته ها
    440
    نقل قول نوشته اصلی توسط balal_art نمایش پست ها
    با سلام من آردوینو مگا رو با آردوینو پرو مینی را با این ماژول بیسیم به هم وصل کردم

    فقط یادتون باشه شما با استفاده از کتابخانههای بالا نمیتونید پایه هارو خودتون عوض کنید پس بل اجبار باید از دیتا شیت آردیونو خودتون پایهای فوق ( * miso -> 12 * mosi -> 11 * sck -> 13 * * configurable: * ce -> 8 * csn -> 7 */) را پیدا کنید
    سلام
    دقیقا همین طور هست ، برد های آردوینو پین مپ های متفاوتی دارند، کدهای ما بیشتر برای برد uno هست ، اما با تغییر پین ها به راحتی می تونید روی بردهای دیگه هم استفاده کنید، فقط باید پین های مشابه رو روی بردتون پیدا کنید و تغییرات رو اعمال کنید
    لایک کردن

  9. #9
    Junior Member
    تاریخ عضویت
    Oct 2013
    نوشته ها
    12
    سلام

    مطمئن هستید سیم بندی ذکر شده درست است؟؟ من با Mega و Uno و همچنین با Mega و ProMini تست کردم اما پیام "Wireless did not initialize!" میدهد.

  10. #10
    max
    max آنلاین نیست.
    Member
    تاریخ عضویت
    Jul 2013
    محل سکونت
    iran-shiraz
    نوشته ها
    70
    با سلام - سيم بندي نشان داده شده در كد صحيح ميباشد. شماتيك هم تصحيح شد . اين سيم بندي و كد براي arduino uno هست.براي بردهاي ديگر كافي است پين هاي miso,mosi,sck را پيدا كنيد.- موفق باشيد.
    ویرایش توسط max : 10-31-2013 در ساعت 02:17 PM
    لایک کردن

صفحه 1 از 24 12311 ... آخرینآخرین

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

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

SEO by vBSEO