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

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

Hybrid View

  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
مشاهده: 2908
حجم: 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="";
    }
    جهت سفارش این کالا، به این بخش در فروشگاه آفتاب رایانه مراجعه نمایید.
    تصاویر کوچک شده (Thumbnails) پیوست شده تصاویر کوچک شده (Thumbnails) پیوست شده nrf24l01.jpg  
    فایل های پیوست شده فایل های پیوست شده
    ویرایش توسط max : 10-31-2013 در ساعت 01: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
    Member
    تاریخ عضویت
    Aug 2015
    نوشته ها
    57
    ببخشید من کامل متوجه نشدم کد های String Receive_Address = "clie1";
    String Send_Address = "clie2"; تو یه برد همینو کمپایل میکنیم و تو برد دیگه جاشون عوض میکنیم کامپایل میکنیم؟

  6. #6
    مدیر ویژه
    تاریخ عضویت
    May 2014
    نوشته ها
    259
    نقل قول نوشته اصلی توسط farzintey نمایش پست ها
    ببخشید من کامل متوجه نشدم کد های String Receive_Address = "clie1";
    String Send_Address = "clie2"; تو یه برد همینو کمپایل میکنیم و تو برد دیگه جاشون عوض میکنیم کامپایل میکنیم؟
    سلام
    به لینک زیر مراجعه کن
    http://forum.arduino.ir/8/21/144.html

  7. #7
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط farzintey نمایش پست ها
    ببخشید من کامل متوجه نشدم کد های String Receive_Address = "clie1";
    String Send_Address = "clie2"; تو یه برد همینو کمپایل میکنیم و تو برد دیگه جاشون عوض میکنیم کامپایل میکنیم؟
    فقط ترتیب شماره 1 و 2 رو

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

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


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

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

  9. #9
    مدیر ویژه
    تاریخ عضویت
    May 2014
    نوشته ها
    259
    نقل قول نوشته اصلی توسط farzintey نمایش پست ها
    با سلام میشه این قسمت بیشتر توضیح بدین که بعد که مدار فرستنده و گیرنده با اردینو و ماژول+nRF24L01 بستیم و کد هم بارگذاری کردیم تبادل اطلاعات فقط از کنسول سریال مونیتور آردوینو قابل انتقال هست ایا ورودی و خروجی تو پایه های اردینو نمیشه تعریف کرد یا ایجاد کرد برای انتقال دیتا؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
    سلام ..اگر از سریال بخوای استفاده کنی..

    کد PHP:
    #include <SoftwareSerial.h>


    SoftwareSerial  box(5); // 4 = RX  ... 5 = TX

    void setup() {
      
    // put your setup code here, to run once:
      
    Serial.begin(9600);   /// to pc serial
      
    box.begin(9600); // New serial software pin
    }

    void loop() {
      
    // put your main code here, to run repeatedly:
      
    Serial.print (" Connecting to Serial PC");
      
    box.print ("Connecting to new Serial Software");


  10. #10
    Member
    تاریخ عضویت
    Aug 2015
    نوشته ها
    57
    نقل قول نوشته اصلی توسط meysamam نمایش پست ها
    سلام ..اگر از سریال بخوای استفاده کنی..

    کد PHP:
    #include <SoftwareSerial.h>


    SoftwareSerial  box(5); // 4 = RX  ... 5 = TX

    void setup() {
      
    // put your setup code here, to run once:
      
    Serial.begin(9600);   /// to pc serial
      
    box.begin(9600); // New serial software pin
    }

    void loop() {
      
    // put your main code here, to run repeatedly:
      
    Serial.print (" Connecting to Serial PC");
      
    box.print ("Connecting to new Serial Software");

    ممنون از راهنماییتان فقط ببخشیدا من خیلی زیاد تو امر کد نویسی وارد نیستم میخاستم راهنمایی کنید این کد که برام زحمتشو کشیدید میشه تو ادامه همون کد صفحه اول که برای راه اندازی ماژول nrf24l01 و اردینو قرار داد؟و دوم اینکه پایه 4 و 5 که برای دریافت و خروج تعریف کردید برای هر دو برد یکسانه و یا باید برای برد دیگه جای این دو شماره عوض کنیم تو تعریف کد ؟ و سوم اینکه منظور شما از سریال اینه که میتونم دیتای که از ماژول معادن قرمز درمیاد وارد این پایه ها کنم و در فاصله دورتر همین دیتا دریافت و به ماژول فرستنده معادون قرمز انتقال بدم؟ واقعا ممنون که راهنمایی میکنید

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

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

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

SEO by vBSEO