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

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

  1. #91
    Junior Member
    تاریخ عضویت
    May 2015
    نوشته ها
    9
    من یک جفت از این ماژول ها رو راه اندازی کردم ولی مشکل این جاست که ارتباط یک طرفه است. یعنی مثلا برای من فقط میتونم روی com6 بنویسم و روی com8 بخونم ولی وقتی روی com8 مینویسم چیزی رو com6 نشون نمیده.
    کسی نظری یا راه حلی سراغ داره؟؟/
    لایک کردن

  2. #92
    Member
    تاریخ عضویت
    Feb 2015
    نوشته ها
    42
    سلام دوستان
    من میخوام با ماژول NRF یک فرستنده گیرنده راه بندازم که هنگامی که در برد اول پایه ی 14 یک شد در برد دوم این پایه یک بشه
    من از دو تا آردوینو 2560 و دو تاماژول NRF24L01 استفاده کردم
    برنامه برد اول که فرستنده است رو این طور نوشتم:
    #include <SPI.h>
    #include <Mirf.h>
    #include <NRF24L01.h>
    #include <MirfHardwarespiDriver.h>
    int led = 14;
    int i;
    void setup() {
    pinMode(led, INPUT);
    Serial.begin(9600);
    Mirf.spi=&MirfHardwareSpi;
    Mirf.init();
    Mirf.setRADDR((byte*)"clie2");
    Mirf.setTADDR((byte*)"clie1");
    Mirf.payload=sizeof(unsigned long);
    Mirf.config();
    byte rf_setup=0;
    Mirf.readRegister(RF_SETUP , &rf_setup,sizeof(rf_setup));
    if(rf_setup!=0)
    Serial.println("beginning");
    else
    {Serial.println("no signal");
    while(rf_setup=0);}
    delay(1000);
    }

    void loop() {
    pinMode(led, INPUT);
    if(digitalRead(led)==HIGH)
    {
    i=0;
    Mirf.send((byte*)&i);
    }
    }
    برنامه برد دوم که گیرنده هست رو این طور نوشتم:
    #include <SPI.h>
    #include <Mirf.h>
    #include <NRF24L01.h>
    #include <MirfHardwarespiDriver.h>
    int led = 14;
    int i;
    void setup() {
    pinMode(led, OUTPUT);
    Serial.begin(9600);
    Mirf.spi=&MirfHardwareSpi;
    Mirf.init();
    Mirf.setRADDR((byte*)"clie1");
    Mirf.setTADDR((byte*)"clie2");
    Mirf.payload=sizeof(unsigned long);
    Mirf.config();
    byte rf_setup=0;
    Mirf.readRegister(RF_SETUP , &rf_setup,sizeof(rf_setup));
    if(rf_setup!=0)
    Serial.println("beginning");
    else
    {Serial.println("no signal");
    while(rf_setup=0);}
    delay(1000);
    }
    void loop() {
    while(!Mirf.dataReady())
    {
    Mirf.getData((byte *) &i);
    digitalWrite(led, HIGH);
    }
    }
    اما هیچ جوابی نمیگیرم . به محض اتصال برد دوم به تغذیه LED متصل به پایه 14 برد دوم روشن میشه و روشن میمونه
    اگه کسی در این مورد میدونه لطفا بگه من چه کار کنم؟؟؟؟؟؟؟؟؟؟

  3. #93
    Junior Member
    تاریخ عضویت
    May 2015
    نوشته ها
    7
    دوستان من هم به مشکلی شبیه به دوستمون برخودم که اطلاعات چهار بایتی دریافت میشن
    با توجه به اینکه طول داده را در هر دو برد 16 تعریف کردم ولی در سمت گیرنده اطلاعات به اندازه ه چها بایت اول داده ارسالی دریافت و به اندازه ی طول داده ی ارسالی؛اون چهار بایت اول کپی میشن در ارایه ی دریافتی
    مثلا اگه ارسال کنم: "mohammad"
    این دریافت میشه: "mohamoha"

  4. #94
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    دوست من شما هم به فروم nrf سر بزنید و از اون کداستفاده کنید

  5. #95
    Junior Member
    تاریخ عضویت
    May 2015
    نوشته ها
    9
    من عینا از کد اول فروم استفاده کردم ولی

  6. #96
    Junior Member
    تاریخ عضویت
    Jul 2015
    نوشته ها
    28
    وظیفه هر پایه ماژول چیه و باید به کجا ول بشه؟

  7. #97
    Junior Member
    تاریخ عضویت
    Jul 2015
    نوشته ها
    28
    نقل قول نوشته اصلی توسط 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


    شماتیک مدار:
    فایل پیوست 442

    مثال آردوینو:
    کد:
    /*
     # 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="";
    }
    جهت سفارش این کالا، به این بخش در فروشگاه آفتاب رایانه مراجعه نمایید.
    وظیفه هر پایه چیه وباید به کجا وصل بشه؟

  8. #98
    Member
    تاریخ عضویت
    Feb 2015
    نوشته ها
    33

    سلام مهندس این خطا چرا

    نقل قول نوشته اصلی توسط d3lphi نمایش پست ها
    من از یک Arduino Pro Mini که به یک سنسور دما و رطوبت DHT 22 متصل است استفاده کردم. طرف دیگه یک آردینو Uno بود که مقادیر رو دریافت می کنه و روی یک Liquid Crystal نمایش میده. با همه ماژول های NRF که 8 پایه هستند تست کردم و با همشون به خوبی کار میکنه.

    کد ارسال:
    کد:
    /* YourDuinoStarter Example: nRF24L01 Transmit Joystick values
     - WHAT IT DOES: Reads Analog values on A0, A1 and transmits
       them over a nRF24L01 Radio Link to another transceiver.
     - SEE the comments after "//" on each line below
     - CONNECTIONS: nRF24L01 Modules See:
     http://arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HowTo
       1 - GND
       2 - VCC 3.3V !!! NOT 5V
       3 - CE to Arduino pin 9
       4 - CSN to Arduino pin 10
       5 - SCK to Arduino pin 13
       6 - MOSI to Arduino pin 11
       7 - MISO to Arduino pin 12
       8 - UNUSED
       - 
       Analog Joystick or two 10K potentiometers:
       GND to Arduino GND
       VCC to Arduino +5V
       X Pot to Arduino A0
       Y Pot to Arduino A1
       
     - V1.00 11/26/13
       Based on examples at http://www.bajdi.com/
       Questions: terry@yourduino.com */
    
    /*-----( Import needed libraries )-----*/
    #include "DHT.h"
    #include <SPI.h>
    #include <nRF24L01.h>
    #include <RF24.h>
    
    
    /*-----( Declare Constants and Pin Numbers )-----*/
    #define CE_PIN   9
    #define CSN_PIN 10
    //#define JOYSTICK_X A0
    //#define JOYSTICK_Y A1
    #define DHTPIN 2     // what pin we're connected to
    #define DHTTYPE DHT22   // DHT 22  (AM2302)
    
    // NOTE: the "LL" at the end of the constant is "LongLong" type
    const uint64_t pipe = 0xE8E8F0F0E1LL; // Define the transmit pipe
    
    
    /*-----( Declare objects )-----*/
    RF24 radio(CE_PIN, CSN_PIN); // Create a Radio
    /*-----( Declare Variables )-----*/
    int data[3];  // 2 element array holding Joystick readings
    
    DHT dht(DHTPIN, DHTTYPE);
    void setup()   /****** SETUP: RUNS ONCE ******/
    {
      Serial.begin(9600);
      radio.begin();
      radio.openWritingPipe(pipe);
      dht.begin();
       
      
    }//--(end setup )---
    
    
    void loop()   /****** LOOP: RUNS CONSTANTLY ******/
    {
      //joystick[0] = analogRead(JOYSTICK_X);
      //joystick[1] = analogRead(JOYSTICK_Y);
    
      float h = dht.readHumidity();
      float t = dht.readTemperature();
      data[0] = 1;
      data[1] = 100;//h;
      data[2] = 200;//t;
      
      radio.write( data, sizeof(data) );
      //delay(1000);
    }//--(end main loop )---
    
    /*-----( Declare User-written Functions )-----*/
    
    //NONE
    //*********( THE END )***********
    کد دریافت
    کد:
    /* YourDuinoStarter Example: nRF24L01 Receive Joystick values
    
     - WHAT IT DOES: Receives data from another transceiver with
       2 Analog values from a Joystick or 2 Potentiometers
       Displays received values on Serial Monitor
     - SEE the comments after "//" on each line below
     - CONNECTIONS: nRF24L01 Modules See:
     http://arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HowTo
       1 - GND
       2 - VCC 3.3V !!! NOT 5V
       3 - CE to Arduino pin 9
       4 - CSN to Arduino pin 10
       5 - SCK to Arduino pin 13
       6 - MOSI to Arduino pin 11
       7 - MISO to Arduino pin 12
       8 - UNUSED
       
     - V1.00 11/26/13
       Based on examples at http://www.bajdi.com/
       Questions: terry@yourduino.com */
    
    /*-----( Import needed libraries )-----*/
    #include <SPI.h>
    #include <nRF24L01.h>
    #include <RF24.h>
    
    #include <Wire.h> 
    #include <LiquidCrystal_I2C.h>
    
    LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display
    
    
    /*-----( Declare Constants and Pin Numbers )-----*/
    #define CE_PIN   9
    #define CSN_PIN 10
    
    // NOTE: the "LL" at the end of the constant is "LongLong" type
    const uint64_t pipe = 0xE8E8F0F0E1LL; // Define the transmit pipe
    
    
    /*-----( Declare objects )-----*/
    RF24 radio(CE_PIN, CSN_PIN); // Create a Radio
    /*-----( Declare Variables )-----*/
    int data[3];  // 2 element array holding Joystick readings
    
    void setup()   /****** SETUP: RUNS ONCE ******/
    {
      Serial.begin(9600);
      delay(1000);
      Serial.println("Nrf24L01 Receiver Starting");
      radio.begin();
      radio.openReadingPipe(1,pipe);
      radio.startListening();;
      
      lcd.init();                      // initialize the lcd 
      lcd.backlight();
    }//--(end setup )---
    
    
    void loop()   /****** LOOP: RUNS CONSTANTLY ******/
    {
      if ( radio.available() )
      {
        // Read the data payload until we've received everything
        bool done = false;
        while (!done)
        {
          // Fetch the data payload
          done = radio.read( data, sizeof(data) );
          //Serial.print("H = ");
          //Serial.print(data[1]);
          //Serial.print(" T = ");      
          //Serial.println(data[2]);
          lcd.clear();
    
          lcd.setCursor(0,0);
          lcd.print("Channel: ");
          lcd.print(data[0]);
          
          lcd.setCursor(0,1);
          
          lcd.print("H: ");
          lcd.print(data[1]);
          lcd.print(" T: ");
          lcd.print(data[2]);
    
          delay(500);
        }
      }
      else
      {    
          //Serial.println("No radio available");
          lcd.clear();
          lcd.print("No radio available");
          delay(500);
      }
    
    }//--(end main loop )---
    
    /*-----( Declare User-written Functions )-----*/
    
    //NONE
    //*********( THE END )***********
    من از دوتا mini proاستفاده میکنم نمیشه نمیدونم

  9. #99
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    دوسن من این ماژول ها 3.3 هستند شما که به 5 وصل نکردید انشاءالله
    لایک کردن

  10. #100
    Member
    تاریخ عضویت
    Feb 2015
    نوشته ها
    33
    سلام دوستان
    من میخام از دوتا برد pro mini و دوتا گیرنده فرستنده nrfاستفاده کنم
    میشه کمک کنید پایه های ce ,csn به کدوم پین بردم باید وصل کنم
    خیلی احتیاجمه لطفا کمک کنید مرسی

صفحه 10 از 24 نخستنخست ... 8910111220 ... آخرینآخرین

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

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

SEO by vBSEO