Σελίδα 5 από 5 ΠρώτηΠρώτη ... 3 4 5
Εμφάνιση αποτελεσμάτων : 41 έως 47 από 47

Θέμα: Arduino. Αδυναμία επικοινωνίας πομποδεκτών nRF24L01+

  1. #41
    Μέλος Το avatar του χρήστη her
    Όνομα
    Ηρακλής
    Εγγραφή
    Jun 2007
    Περιοχή
    Αργυρούπολη
    Μηνύματα
    1.123

    Προεπιλογή

    Αν έχω το πρώτο πομπό και ο δεύτερος έκτος, λαμβάνω:
    Temp 1 : 111
    Temp 2 111
    Αν έχω το δεύτερο πομπό και ο πρώτος έκτος λαμβάνω:
    Temp 1 : 222
    Temp 2 222

    Μόνο με ένα πομπό δεν μου βγάζει ποτέ το no radio....

    0 Not allowed! Not allowed!

  2. #42
    Μέλος Το avatar του χρήστη her
    Όνομα
    Ηρακλής
    Εγγραφή
    Jun 2007
    Περιοχή
    Αργυρούπολη
    Μηνύματα
    1.123

    Προεπιλογή

    Μετά από ψάξιμο διαμόρφωσα ένα πρόγραμμα και μου δουλεύει πολύ καλά. Το παραθέτω αν κάποιος το χρειαστεί. Σας ευχαριστώ για την βοήθεια.


    reciever:
    Spoiler: 
    #include <SPI.h>
    #include <nRF24L01.h>
    #include <RF24.h>
    #include "printf.h"

    RF24 radio (6, 7);//yours


    #define PLOAD_WIDTH 32 // 32 unsigned chars TX payload
    byte pip;
    byte pload_width_now;
    byte newdata;
    unsigned char rx_buf[PLOAD_WIDTH]= {0};
    struct dataStruct1{
    float p1;
    float t1;
    float s1;
    }transmitter1_data;

    struct dataStruct2{
    float p1;
    float t1;
    float s1;
    }transmitter2_data;

    struct dataStruct3{
    float p1;
    float t1;
    float s1;
    }transmitter3_data;

    unsigned char ADDRESS2[1]= {0xb2};
    unsigned char ADDRESS3[1]= {0xb3};
    unsigned char ADDRESS4[1]= {0xb4};
    unsigned char ADDRESS5[1]= {0xb5};


    unsigned char ADDRESS1[5] =
    {
    0xb1,0x43,0x88,0x99,0x45
    }; // Define a static TX address

    unsigned char ADDRESS0[5] =
    {
    0xb0,0x43,0x88,0x99,0x45
    }; // Define a static TX address

    void setup()
    {

    radio.begin();
    printf_begin();
    Serial.begin(115200);
    radio.setDataRate(RF24_250KBPS);
    radio.enableDynamicPayloads();
    radio.setChannel(110);
    radio.setPALevel(RF24_PA_MAX);
    radio.openWritingPipe(ADDRESS0);
    radio.openReadingPipe(0,ADDRESS0);
    radio.openReadingPipe(1,ADDRESS1);
    radio.openReadingPipe(2,ADDRESS2);
    radio.openReadingPipe(3,ADDRESS3);
    radio.openReadingPipe(4,ADDRESS4);
    radio.openReadingPipe(5,ADDRESS5);
    radio.startListening();
    //radio.printDetails();
    delay(100);
    }

    void loop()
    {
    if ( radio.available(&pip) )
    {
    // Fetch the payload, and see if this was the last one.
    pload_width_now = radio.getDynamicPayloadSize();
    radio.read( rx_buf, pload_width_now );
    newdata=1;
    }



    if(newdata==1)
    {
    newdata=0;


    if(pip==1&&pload_width_now==sizeof(transmitter1_da ta))
    {
    memcpy(&transmitter1_data, rx_buf, sizeof(transmitter1_data));
    Serial.print ("Device: ");
    Serial.print (pip);
    Serial.print(" P: ");
    Serial.print(transmitter1_data.p1);
    Serial.print(" T: ");
    Serial.print(transmitter1_data.t1);
    Serial.print(" S: ");
    Serial.println(transmitter1_data.s1);
    }

    if(pip==2&&pload_width_now==sizeof(transmitter2_da ta))
    {
    memcpy(&transmitter2_data, rx_buf, sizeof(transmitter2_data));
    Serial.print ("Device: ");
    Serial.print (pip);
    Serial.print(" P: ");
    Serial.print(transmitter2_data.p1);
    Serial.print(" T: ");
    Serial.print(transmitter2_data.t1);
    Serial.print(" S: ");
    Serial.println(transmitter2_data.s1);
    }

    if(pip==3&&pload_width_now==sizeof(transmitter3_da ta))
    {
    memcpy(&transmitter3_data, rx_buf, sizeof(transmitter3_data));

    Serial.print ("Device: ");
    Serial.print (pip);
    Serial.print(" P: ");
    Serial.print(transmitter3_data.p1);
    Serial.print(" T: ");
    Serial.print(transmitter3_data.t1);
    Serial.print(" S: ");
    Serial.println(transmitter3_data.s1);

    }


    }

    delay(10);

    }




    sender 1:
    Spoiler: 

    #include <SPI.h>
    #include <nRF24L01.h>
    #include <RF24.h>
    #include "printf.h"

    int address = 0x28; // 28 is the address
    byte byte1, byte2, byte3, byte4;

    RF24 radio (6, 7); //yours
    struct dataStruct{
    float p1;
    float t1;
    float s1;
    }transmitter1_data;

    unsigned char ADDRESS0[5] =
    {
    0xb1,0x43,0x88,0x99,0x45
    }; // Define a static TX address
    //just change b1 to b2 or b3 to send to other pip on resciever

    void setup()
    {


    pinMode(13, OUTPUT);

    radio.begin();
    Serial.begin(115200);
    printf_begin();
    radio.setRetries(15,15);
    radio.enableDynamicPayloads();
    radio.setDataRate(RF24_250KBPS);
    radio.setChannel(110);
    radio.setPALevel(RF24_PA_MAX);
    radio.openWritingPipe(ADDRESS0);
    radio.openReadingPipe(0,ADDRESS0);
    radio.stopListening();

    }

    void loop()
    {

    transmitter1_data.p1=11;
    transmitter1_data.t1=111.1;
    transmitter1_data.s1=11111.1;

    bool ok=radio.write(&transmitter1_data, sizeof(transmitter1_data));


    if(ok)
    {
    digitalWrite(13, LOW);
    Serial.println("Pipe 1");
    Serial.println(transmitter1_data.p1);
    Serial.println(transmitter1_data.t1);
    Serial.println(transmitter1_data.s1);

    }
    else
    {
    Serial.println("it failed to send");
    digitalWrite(13, HIGH);
    }
    delay(100);


    }



    sender 2:
    Spoiler: 


    #include <SPI.h>
    #include <nRF24L01.h>
    #include <RF24.h>
    #include "printf.h"

    int address = 0x28; // 28 is the address
    byte byte1, byte2, byte3, byte4;

    RF24 radio (6, 7); //yours

    struct dataStruct{
    float p1;
    float t1;
    float s1;
    }transmitter2_data;

    unsigned char ADDRESS0[5] =
    {
    0xb2,0x43,0x88,0x99,0x45
    }; // Define a static TX address
    //just change b1 to b2 or b3 to send to other pip on resciever

    void setup()
    {

    pinMode(13, OUTPUT);

    radio.begin();
    Serial.begin(115200);
    printf_begin();
    radio.setRetries(15,15);
    radio.enableDynamicPayloads();
    radio.setDataRate(RF24_250KBPS);
    radio.setChannel(110);
    radio.setPALevel(RF24_PA_MAX);
    radio.openWritingPipe(ADDRESS0);
    radio.openReadingPipe(0,ADDRESS0);
    radio.stopListening();

    }

    void loop()
    {

    transmitter2_data.p1=22;
    transmitter2_data.t1=222.2;
    transmitter2_data.s1=22222.2;

    bool ok=radio.write(&transmitter2_data, sizeof(transmitter2_data));


    if(ok)
    {
    digitalWrite(13, LOW);
    Serial.println("Pipe 2");
    Serial.println(transmitter2_data.p1);
    Serial.println(transmitter2_data.t1);
    Serial.println(transmitter2_data.s1);

    }
    else
    {
    Serial.println("it failed to send");
    digitalWrite(13, HIGH);
    }
    delay(100);

    }

    1 Not allowed! Not allowed!

  3. Ένα μέλος ευχαρίστησε τον her για αυτό το χρήσιμο μήνυμα:

    ezizu (30-01-17)

  4. #43
    Μέλος Το avatar του χρήστη sotron1
    Όνομα
    Σωτήρης
    Εγγραφή
    Aug 2007
    Περιοχή
    Αθήνα, Περιστέρι.
    Μηνύματα
    950

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από her Εμφάνιση μηνυμάτων
    Μετά από ψάξιμο διαμόρφωσα ένα πρόγραμμα και μου δουλεύει πολύ καλά. Το παραθέτω αν κάποιος το χρειαστεί. Σας ευχαριστώ για την βοήθεια.


    reciever:
    Spoiler: 
    #include <SPI.h>
    #include <nRF24L01.h>
    #include <RF24.h>
    #include "printf.h"

    RF24 radio (6, 7);//yours


    #define PLOAD_WIDTH 32 // 32 unsigned chars TX payload
    byte pip;
    byte pload_width_now;
    byte newdata;
    unsigned char rx_buf[PLOAD_WIDTH]= {0};
    struct dataStruct1{
    float p1;
    float t1;
    float s1;
    }transmitter1_data;

    struct dataStruct2{
    float p1;
    float t1;
    float s1;
    }transmitter2_data;

    struct dataStruct3{
    float p1;
    float t1;
    float s1;
    }transmitter3_data;

    unsigned char ADDRESS2[1]= {0xb2};
    unsigned char ADDRESS3[1]= {0xb3};
    unsigned char ADDRESS4[1]= {0xb4};
    unsigned char ADDRESS5[1]= {0xb5};


    unsigned char ADDRESS1[5] =
    {
    0xb1,0x43,0x88,0x99,0x45
    }; // Define a static TX address

    unsigned char ADDRESS0[5] =
    {
    0xb0,0x43,0x88,0x99,0x45
    }; // Define a static TX address

    void setup()
    {

    radio.begin();
    printf_begin();
    Serial.begin(115200);
    radio.setDataRate(RF24_250KBPS);
    radio.enableDynamicPayloads();
    radio.setChannel(110);
    radio.setPALevel(RF24_PA_MAX);
    radio.openWritingPipe(ADDRESS0);
    radio.openReadingPipe(0,ADDRESS0);
    radio.openReadingPipe(1,ADDRESS1);
    radio.openReadingPipe(2,ADDRESS2);
    radio.openReadingPipe(3,ADDRESS3);
    radio.openReadingPipe(4,ADDRESS4);
    radio.openReadingPipe(5,ADDRESS5);
    radio.startListening();
    //radio.printDetails();
    delay(100);
    }

    void loop()
    {
    if ( radio.available(&pip) )
    {
    // Fetch the payload, and see if this was the last one.
    pload_width_now = radio.getDynamicPayloadSize();
    radio.read( rx_buf, pload_width_now );
    newdata=1;
    }



    if(newdata==1)
    {
    newdata=0;


    if(pip==1&&pload_width_now==sizeof(transmitter1_da ta))
    {
    memcpy(&transmitter1_data, rx_buf, sizeof(transmitter1_data));
    Serial.print ("Device: ");
    Serial.print (pip);
    Serial.print(" P: ");
    Serial.print(transmitter1_data.p1);
    Serial.print(" T: ");
    Serial.print(transmitter1_data.t1);
    Serial.print(" S: ");
    Serial.println(transmitter1_data.s1);
    }

    if(pip==2&&pload_width_now==sizeof(transmitter2_da ta))
    {
    memcpy(&transmitter2_data, rx_buf, sizeof(transmitter2_data));
    Serial.print ("Device: ");
    Serial.print (pip);
    Serial.print(" P: ");
    Serial.print(transmitter2_data.p1);
    Serial.print(" T: ");
    Serial.print(transmitter2_data.t1);
    Serial.print(" S: ");
    Serial.println(transmitter2_data.s1);
    }

    if(pip==3&&pload_width_now==sizeof(transmitter3_da ta))
    {
    memcpy(&transmitter3_data, rx_buf, sizeof(transmitter3_data));

    Serial.print ("Device: ");
    Serial.print (pip);
    Serial.print(" P: ");
    Serial.print(transmitter3_data.p1);
    Serial.print(" T: ");
    Serial.print(transmitter3_data.t1);
    Serial.print(" S: ");
    Serial.println(transmitter3_data.s1);

    }


    }

    delay(10);

    }




    sender 1:
    Spoiler: 

    #include <SPI.h>
    #include <nRF24L01.h>
    #include <RF24.h>
    #include "printf.h"

    int address = 0x28; // 28 is the address
    byte byte1, byte2, byte3, byte4;

    RF24 radio (6, 7); //yours
    struct dataStruct{
    float p1;
    float t1;
    float s1;
    }transmitter1_data;

    unsigned char ADDRESS0[5] =
    {
    0xb1,0x43,0x88,0x99,0x45
    }; // Define a static TX address
    //just change b1 to b2 or b3 to send to other pip on resciever

    void setup()
    {


    pinMode(13, OUTPUT);

    radio.begin();
    Serial.begin(115200);
    printf_begin();
    radio.setRetries(15,15);
    radio.enableDynamicPayloads();
    radio.setDataRate(RF24_250KBPS);
    radio.setChannel(110);
    radio.setPALevel(RF24_PA_MAX);
    radio.openWritingPipe(ADDRESS0);
    radio.openReadingPipe(0,ADDRESS0);
    radio.stopListening();

    }

    void loop()
    {

    transmitter1_data.p1=11;
    transmitter1_data.t1=111.1;
    transmitter1_data.s1=11111.1;

    bool ok=radio.write(&transmitter1_data, sizeof(transmitter1_data));


    if(ok)
    {
    digitalWrite(13, LOW);
    Serial.println("Pipe 1");
    Serial.println(transmitter1_data.p1);
    Serial.println(transmitter1_data.t1);
    Serial.println(transmitter1_data.s1);

    }
    else
    {
    Serial.println("it failed to send");
    digitalWrite(13, HIGH);
    }
    delay(100);


    }



    sender 2:
    Spoiler: 


    #include <SPI.h>
    #include <nRF24L01.h>
    #include <RF24.h>
    #include "printf.h"

    int address = 0x28; // 28 is the address
    byte byte1, byte2, byte3, byte4;

    RF24 radio (6, 7); //yours

    struct dataStruct{
    float p1;
    float t1;
    float s1;
    }transmitter2_data;

    unsigned char ADDRESS0[5] =
    {
    0xb2,0x43,0x88,0x99,0x45
    }; // Define a static TX address
    //just change b1 to b2 or b3 to send to other pip on resciever

    void setup()
    {

    pinMode(13, OUTPUT);

    radio.begin();
    Serial.begin(115200);
    printf_begin();
    radio.setRetries(15,15);
    radio.enableDynamicPayloads();
    radio.setDataRate(RF24_250KBPS);
    radio.setChannel(110);
    radio.setPALevel(RF24_PA_MAX);
    radio.openWritingPipe(ADDRESS0);
    radio.openReadingPipe(0,ADDRESS0);
    radio.stopListening();

    }

    void loop()
    {

    transmitter2_data.p1=22;
    transmitter2_data.t1=222.2;
    transmitter2_data.s1=22222.2;

    bool ok=radio.write(&transmitter2_data, sizeof(transmitter2_data));


    if(ok)
    {
    digitalWrite(13, LOW);
    Serial.println("Pipe 2");
    Serial.println(transmitter2_data.p1);
    Serial.println(transmitter2_data.t1);
    Serial.println(transmitter2_data.s1);

    }
    else
    {
    Serial.println("it failed to send");
    digitalWrite(13, HIGH);
    }
    delay(100);

    }
    Τι κάνει;

    0 Not allowed! Not allowed!

  5. #44
    Μέλος Το avatar του χρήστη her
    Όνομα
    Ηρακλής
    Εγγραφή
    Jun 2007
    Περιοχή
    Αργυρούπολη
    Μηνύματα
    1.123

    Προεπιλογή

    Ο κάθε πομπός στέλνει στον δέκτη 3 αριθμούς. Μπορούν να συνδεθούν πολύ πομποί ταυτόχρονα. Ο δέκτης λαμβάνει τους αριθμούς αυτούς από όλους τους πομπούς ταυτόχρονα και από εκεί και πέρα διαχειρίζεσαι όπως θες αυτούς τους αριθμούς.

    0 Not allowed! Not allowed!

  6. #45
    Μέλος Το avatar του χρήστη her
    Όνομα
    Ηρακλής
    Εγγραφή
    Jun 2007
    Περιοχή
    Αργυρούπολη
    Μηνύματα
    1.123

    Προεπιλογή

    Γεια σας. Έχω τον παρακάτω κώδικα. Θέλω να μεταφέρω ασύρματα με το nRF24L01 κάποιους αριθμούς αμφίδρομα. Όπως το έχω κάνει τώρα έχω επικοινωνία αλλά όχι αμφίδρομη. Τι λάθος έχω κάνει;
    Οι αριθμοί 11,1 22,2 33,3 που στέλνω μεταφέροντα σωστά, Δεν μεταφέρεται ο αριθμός "€œdatasend"
    Σας ευχαριστώ

    1:
    Κώδικας:
    #include <SPI.h>
    #include <nRF24L01.h>
    #include <RF24.h>
    #include "printf.h"
    
    int address = 0x28; // 28 is the address
    byte byte1, byte2, byte3, byte4;
    
    RF24 radio (8, 9); //yours
    
    struct dataStruct{
      float p1;
      float t1;
      float s1;
    }
    transmitter1_data;
    
    unsigned char ADDRESS0[5]  =
    {
      0xb1,0x43,0x88,0x99,0x45
    };
    
    void setup()
    {
    
      radio.begin();
      Serial.begin(9600);
      printf_begin();
      radio.setRetries(15,15);
      radio.enableDynamicPayloads();
      radio.setDataRate(RF24_250KBPS);
      radio.setChannel(110);
      radio.setPALevel(RF24_PA_MAX);
      radio.openWritingPipe(ADDRESS0);
      radio.openReadingPipe(0,ADDRESS0);
      radio.stopListening();
    
    }
    
    void loop()
    {
      transmitter1_data.p1=11.1;
      transmitter1_data.t1=22.2;
      transmitter1_data.s1=33.3;
    
      radio.stopListening();   
      bool ok=radio.write(&transmitter1_data, sizeof(transmitter1_data));
      radio.startListening();
    
      unsigned char dataRx;
      radio.read( &dataRx, sizeof(unsigned char) );
      Serial.print("Receive: ");
      Serial.println(dataRx);
      delay(100);
    }


    2:
    Κώδικας:
    #include <SPI.h>
    #include <nRF24L01.h>
    #include <RF24.h>
    #include "printf.h"
    
    RF24 radio (8, 9);//yours
    
    #define PLOAD_WIDTH  32  // 32 unsigned chars TX payload
    byte pip;
    byte pload_width_now;
    unsigned char rx_buf[PLOAD_WIDTH]= {
      0};
    
    struct dataStruct1{
      float p1;
      float t1;
      float s1;
    }
    transmitter1_data;
    int datasend=1;
    unsigned char ADDRESS2[1]= {
      0xb2};    
    unsigned char ADDRESS3[1]= {
      0xb3};    
    unsigned char ADDRESS4[1]= {
      0xb4};    
    unsigned char ADDRESS5[1]= {
      0xb5};    
    
    unsigned char ADDRESS1[5]  =
    {
      0xb1,0x43,0x88,0x99,0x45
    }; // Define a static TX address
    
    unsigned char ADDRESS0[5]  =
    {
      0xb0,0x43,0x88,0x99,0x45
    }; // Define a static TX address
    
    void setup()
    {
      radio.begin();
      printf_begin();
      Serial.begin(9600);
      radio.setDataRate(RF24_250KBPS);
      radio.enableDynamicPayloads();
      radio.setChannel(110);
      radio.setPALevel(RF24_PA_MAX);
      radio.openWritingPipe(ADDRESS0);
      radio.openReadingPipe(0,ADDRESS0);
      radio.startListening();
      delay(100);
    }
    
    void loop()
    {
    
      if ( radio.available(&pip) )
      {
        pload_width_now = radio.getDynamicPayloadSize();
        radio.read( rx_buf, pload_width_now );
    
        if(pip==1&&pload_width_now==sizeof(transmitter1_data))
        {
          memcpy(&transmitter1_data, rx_buf, sizeof(transmitter1_data));
          Serial.print ("Device: ");
          Serial.print (pip);
          Serial.print("   P: ");
          Serial.print(transmitter1_data.p1);
          Serial.print("   T: ");
          Serial.print(transmitter1_data.t1);
          Serial.print("   S: ");
          Serial.print(transmitter1_data.s1);   
        } 
    
        radio.stopListening();
        datasend++;
        radio.write( &datasend, sizeof(char) );
        radio.startListening();
        Serial.print("         Send : ");
        Serial.println(datasend);
      }
    
    }

    0 Not allowed! Not allowed!

  7. #46
    Μέλος Το avatar του χρήστη her
    Όνομα
    Ηρακλής
    Εγγραφή
    Jun 2007
    Περιοχή
    Αργυρούπολη
    Μηνύματα
    1.123

    Προεπιλογή

    Υπάρχει κάποια άλλη λύση; Στην ουσια θελω να στέλνω αρκετά float ταυτόχρονα σε ενα arduino ( αυτο το εχω, δουλεύει) και να απαντά μόνο με ένα bit. Θα μπορούσα π.χ να βαλω 2 ζευγάρια;

    0 Not allowed! Not allowed!

  8. #47
    Μέλος
    Όνομα
    Νίκος
    Εγγραφή
    Feb 2014
    Περιοχή
    Μοσχάτο
    Μηνύματα
    607

    Προεπιλογή

    Δεν είμαι σίγουρος μιας και δεν ξέρω την βιβλιοθήκη που χρησιμοποιείς, αλλά γιατί ανοίγεις το ίδιο pipe και για το TX και για το RX ?
    Επίσης στο 1 δεν βλέπω κάν δύο pipes.

    0 Not allowed! Not allowed!
    Mastroxalastis / Μαστροχαλαστής
    https://www.youtube.com/channel/UCOWjSR-OOc-ZBCT61EX_lJg

Σελίδα 5 από 5 ΠρώτηΠρώτη ... 3 4 5

Παρόμοια Θέματα

  1. Βοήθεια: Πτυχιακή Arduino με nrf24l01 και Raspberry
    By QRTSIDAKIS in forum Μικροελεγκτές
    Απαντήσεις: 7
    Τελευταίο Μήνυμα: 09-02-17, 19:20
  2. Επικοινωνία Arduino με NRF24L01+ (Πτυχιακή)
    By QRTSIDAKIS in forum Μικροελεγκτές
    Απαντήσεις: 3
    Τελευταίο Μήνυμα: 25-03-16, 09:26
  3. Απαντήσεις: 19
    Τελευταίο Μήνυμα: 08-06-15, 01:39
  4. Απαντήσεις: 14
    Τελευταίο Μήνυμα: 09-01-13, 17:54
  5. STK500: Αδυναμία επικοινωνίας με το PC
    By FILMAN in forum Μικροελεγκτές
    Απαντήσεις: 23
    Τελευταίο Μήνυμα: 03-03-11, 15:37

Δικαιώματα - Επιλογές

  • Δημιουργία θεμάτων: Όχι
  • Υποβολή μηνυμάτων: Όχι
  • Σύναψη αρχείων: Όχι
  • Επεξεργασία μηνυμάτων: Όχι
  •  
  • BB code: σε λειτουργία
  • Smilies: σε λειτουργία
  • [IMG]: σε λειτουργία
  • [VIDEO] code is σε λειτουργία
  • HTML: εκτός λειτουργίας