nrf24l01 + Nodemcu çoklu data gönderme problemi
  • Merhaba nrf24l01 ile haberleşme sağlıyorum ve veri de gönderebiliyorum. Fakat şöyle bir problemim var. Arduino uno+nrf24l01 ve Arduino Pro mini+nrf24l01 ikisi ile birlikte tam istediğim şekilde çalışıyor. Fakat aynı kodları Nodemcu+nrf24l01 ve Arduino+nrf24l01 ile çalıştırdığımda int cihazModu değişkeni gidiyor diğer değerler sıfır görünüyor.

    int cihazModu değişkenini kodlardan kaldırdığımda ise veriler tekrar düzgün gidiyor.
    Burada aynı anda int ve float tipinde data gönderimi yapamıyorum.
    Bu veriler iki arduino ile birbirine sağlıklı bir şekilde gidiyor, fakat Nodemcu ve arduino ile gitmiyor.

    struct dataStruct{
    int cihazModu=1;
    float calismaAraligi=0.30;
    float sicaklik=30.10;
    float sicaklikSet=24.00;
    }myData;


    ################ VERİCİ KODLARI (NODEMCU) #########################
    #include
    #include
    #include


    #define CE_PIN 2
    #define CSN_PIN 4
    unsigned long lastTime = 0;

    struct dataStruct{
    int cihazModu=1;
    float calismaAraligi=0.30;
    float sicaklik=30.10;
    float sicaklikSet=24.00;
    }myData;

    RF24 radio(CE_PIN, CSN_PIN);
    const byte rxAddr[6] = "00001";

    void setup() {

    Serial.begin(9600);

    radio.begin();
    radio.setChannel(108); // WiFi siqnallarindan yuksek bir kanal deyeri sech
    radio.setDataRate(RF24_250KBPS); // Data gonderme sureti RF24_250KBPS, RF24_1MBPS, RF24_2MBPS
    radio.setPALevel(RF24_PA_HIGH); // Oturme gucu: RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX
    radio.openWritingPipe(rxAddr);
    radio.stopListening();
    Serial.println("Sent Message Start");
    }

    void loop() {

    if (millis() - lastTime > 2000){

    radio.write(&myData, sizeof(myData));
    Serial.print("SEND-> Mod: ");
    Serial.print( myData.cihazModu );
    Serial.print(" - Aralık: ");
    Serial.print( myData.calismaAraligi );
    Serial.print(" - Sıcaklık: ");
    Serial.print( myData.sicaklik );
    Serial.print(" - Set: ");
    Serial.print( myData.sicaklikSet );
    Serial.println("");

    lastTime = millis();
    }
    }


    ####################### ALICI KODLARI ################################
    #include
    #include
    #include

    #define CE_PIN 9
    #define CSN_PIN 10
    #define ROLE 4

    struct dataStruct {
    int cihazModu;
    float calismaAraligi;
    float sicaklik;
    float sicaklikSet;
    }myData;

    RF24 radio(CE_PIN, CSN_PIN);
    const byte rxAddr[6] = "00001";

    void setup(){
    Serial.begin(9600);
    while(!Serial);
    Serial.println("NRF24L01P Receiver Starting...");

    autoManuelButtonSetup();
    pinMode(ROLE, OUTPUT);
    digitalWrite(ROLE, HIGH);

    radio.begin();
    radio.setChannel(108); // WiFi siqnallarindan yuksek bir kanal deyeri sech
    radio.setDataRate(RF24_250KBPS); // Data gonderme sureti RF24_250KBPS, RF24_1MBPS, RF24_2MBPS
    radio.setPALevel(RF24_PA_HIGH); // Oturme gucu: RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX
    radio.openReadingPipe(0, rxAddr);
    radio.startListening();
    }

    void loop(){

    unsigned long started_waiting_at =millis();
    bool timeout=false;

    while ( ! radio.available() ){ // While nothing is received
    if ((millis() - started_waiting_at) > 5000 ){ // If waited longer, indicate timeout and exit while loop
    timeout = true;
    break;
    }else{
    timeout=false;
    }
    }

    if ( !timeout ){

    while(radio.available() ){
    radio.read(&myData, sizeof(myData));
    Serial.print("GET-> Mod: ");
    Serial.print( myData.cihazModu );
    Serial.print(" - Aralık: ");
    Serial.print( myData.calismaAraligi );
    Serial.print(" - Sıcaklık: ");
    Serial.print( myData.sicaklik );
    Serial.print(" - Set: ");
    Serial.print( myData.sicaklikSet );
    Serial.println("");
    }
    }else{
    Serial.println("Başarısız, yanıt süresi doldu.");
    }
    }


    ############ Seri Monitor Verici #############
    SEND-> Mod: 1 - Aralık: 0.30 - Sıcaklık: 55.44 - Set: 24.00
    SEND-> Mod: 1 - Aralık: 0.30 - Sıcaklık: 55.44 - Set: 24.00
    SEND-> Mod: 1 - Aralık: 0.30 - Sıcaklık: 55.44 - Set: 24.00

    ############ Seri Monitor Alıcı #############
    GET-> Mod: 1 - Aralık: -0.00 - Sıcaklık: -71.62 - Set: 0.00
    GET-> Mod: 1 - Aralık: -0.00 - Sıcaklık: -71.62 - Set: 0.00
    GET-> Mod: 1 - Aralık: -0.00 - Sıcaklık: -71.62 - Set: 0.00


    Tekrar dan hatırlatayım iki arduino ile veriler düzgün iletiliyor, fakat Nodemcu(verici) ve Arduino ile denediğimde datalar üstteki gibi alınıyor.
  • nodemcu hıc denemedık yaaa bi boş vakıt kurcalamak lazım

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook

Tagged

Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.