radio init fail on sensor, RF24 init OK



  • Hi,

    I've a problem initializing the radio module on a sensor. I created a sensor sketch using humidity sensor sketch. I've removed everything DHT related to leave only a fixed value sent every time the loop method runs (just testing the mysensors part, I don't have a DHT right now).

    I'm using MySensors 1.5 and nothing more than a bare Arduino Uno and a nRF24L01+ wired according the "connect the radio" guide. When I run the program, I see a "radio init fail" message. I tried several nRF24 modules (all the same model, bought at the same time) and on an Arduino Mega, I triple checked my wires and wiring (also used a multimeter). The nRF24 module I'm using right now has no problem initializing on another Arduino running an ethernet gateway.

    I downloaded the RF24 library from https://github.com/maniacbug/RF24 and the radio module seems to work with the library. Here's what I get in the serial console for the scanner sketch :

    
    RF24/examples/scanner/
    
    00000000000000001111111111111111222222222222222233333333333333334444444444444444555555555555555566666666666666667777777777777777
    0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
    00000002222200000000000000000000100000000000000000000000000206253300000000000000000000000000000000000000000000000000000000000000
    00000002222200000000000000000000200000000000000000000000000201123300000000000000000000000000000000000000000000000000000000000000
    00000002222300110000000000000001200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
    00000001120100111000000000000002100000000000000000000000000100001110000000000000000000000000000000000000000000000000000000000000
    00000002222222211110000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
    

    Using the GettingStarted sketch, I get the details for the radio module and it's a + model :

    RF24/examples/GettingStarted/
    
    ROLE: Pong back
    
    *** PRESS 'T' to begin transmitting to the other node
    
    STATUS		 = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
    RX_ADDR_P0-1	= 0xf0f0f0f0d2 0xf0f0f0f0d2
    RX_ADDR_P2-5	= 0xc3 0xc4 0xc5 0xc6
    TX_ADDR		 = 0xf0f0f0f0d2
    RX_PW_P0-6	= 0x20 0x20 0x00 0x00 0x00 0x00
    EN_AA		 = 0x00
    EN_RXADDR	= 0x03
    RF_CH		 = 0x4c
    RF_SETUP	= 0x07
    CONFIG		 = 0x0f
    DYNPD/FEATURE	= 0x00 0x00
    Data Rate	 = 1MBPS
    Model		 = nRF24L01+
    CRC Length	 = 16 bits
    PA Power	 = PA_HIGH
    

    I also tried the 1.4.2 MySensors library, but I get a "check wires" error.

    Any idea what might be the cause of this problem ?

    Thx

    Just in case, here's the sketch :

     
    #include <SPI.h>
    #include <MySensor.h>  
    //#include <DHT.h>  
    
    #define CHILD_ID_HUM 0
    #define CHILD_ID_TEMP 1
    #define HUMIDITY_SENSOR_DIGITAL_PIN 3
    unsigned long SLEEP_TIME = 30000; // Sleep time between reads (in milliseconds)
    
    MySensor gw;
    //DHT dht;
    float lastTemp;
    float lastHum;
    boolean metric = true; 
    MyMessage msgHum(CHILD_ID_HUM, V_HUM);
    MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP);
    
    
    void setup()  
    { 
      gw.begin();
      //dht.setup(HUMIDITY_SENSOR_DIGITAL_PIN); 
    
      // Send the Sketch Version Information to the Gateway
      gw.sendSketchInfo("Humidity", "1.0");
    
      // Register all sensors to gw (they will be created as child devices)
      gw.present(CHILD_ID_HUM, S_HUM);
      gw.present(CHILD_ID_TEMP, S_TEMP);
      
      metric = gw.getConfig().isMetric;
    }
    
    void loop()      
    {  
     /*delay(dht.getMinimumSamplingPeriod());
    
      float temperature = dht.getTemperature();
      if (isnan(temperature)) {
          Serial.println("Failed reading temperature from DHT");
      } else if (temperature != lastTemp) {
        lastTemp = temperature;
        if (!metric) {
          temperature = dht.toFahrenheit(temperature);
        }
        gw.send(msgTemp.set(temperature, 1));
        Serial.print("T: ");
        Serial.println(temperature);
      }
      
      float humidity = dht.getHumidity();
      if (isnan(humidity)) {
          Serial.println("Failed reading humidity from DHT");
      } else if (humidity != lastHum) {
          lastHum = humidity;
          gw.send(msgHum.set(humidity, 1));
          Serial.print("H: ");
          Serial.println(humidity);
      }
    */
      gw.send(msgTemp.set(23.1, 1));
      gw.send(msgHum.set(57.5, 1));
      gw.sleep(SLEEP_TIME); //sleep a bit
    }
    


  • the "check wires" error shows when the radio is not wired up correctly. Are you certain that everything is wired up correctly?

    But i also have the same "radio init fail" in a relay sensor which worked befor flawless.
    I just tried this tip:
    http://forum.mysensors.org/topic/728/radio-setup-give-check-wires/30
    out of this thread:
    http://forum.mysensors.org/topic/1728/uno-ethernet-shield-radio-init-fail-solved
    This did not do change anything. Did you already try this?


  • Hero Member

    Another thing to try is to initialize at 1Mbps. MySensors will by default initialize at 250kbps whereas the other libraries you tried look like they initialized at 1Mbps.

    Cheers
    Al



  • that was tip out of my post 😃
    Did not help with the "radio init fail" 😞
    Any other area to look at?


  • Hero Member

    @jeti I guess I should have clicked on those links 😄

    Maybe try the low power mode. Perhaps the power supply is no longer supplying enough power to allow the radio to function. Also try supplying the radio with a separate power supply.

    Cheers
    Al


Log in to reply
 

Suggested Topics

1
Online

11.2k
Users

11.1k
Topics

112.5k
Posts