Skip to content
  • MySensors
  • OpenHardware.io
  • Categories
  • Recent
  • Tags
  • Popular
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo
  1. Home
  2. Development
  3. Newbie Problem! Get Started with NRF24L01+

Newbie Problem! Get Started with NRF24L01+

Scheduled Pinned Locked Moved Development
55 Posts 9 Posters 24.2k Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • rvendrameR Offline
    rvendrameR Offline
    rvendrame
    Hero Member
    wrote on last edited by
    #27

    Some people reported trouble with cheap fake radios. If you have spares nRF try replacing one of them or both.

    You mentioned a flotation (3.1 to 3.3) in radio VCC, this can also be a reason, as these nRF are very sensible to power variations.

    Post your sketches too, just incase...

    Home Assistant / Vera Plus UI7
    ESP8266 GW + mySensors 2.3.2
    Alexa / Google Home

    1 Reply Last reply
    0
    • F Offline
      F Offline
      fakeJake
      wrote on last edited by
      #28

      I'm using the DallasTemperatureSensor.ino on MySensors library. I just change the gw.begin(); to gw.begin(NULL, 1);

      // Example sketch showing how to send in OneWire temperature readings
      #include <MySensor.h>  
      #include <SPI.h>
      #include <DallasTemperature.h>
      #include <OneWire.h>
      
      #define ONE_WIRE_BUS 3 // Pin where dallase sensor is connected 
      #define MAX_ATTACHED_DS18B20 16
      unsigned long SLEEP_TIME = 30000; // Sleep time between reads (in milliseconds)
      OneWire oneWire(ONE_WIRE_BUS);
      DallasTemperature sensors(&oneWire);
      MySensor gw;
      float lastTemperature[MAX_ATTACHED_DS18B20];
      int numSensors=0;
      boolean receivedConfig = false;
      boolean metric = true; 
      // Initialize temperature message
      MyMessage msg(0,V_TEMP);
      
      void setup()  
      { 
        // Startup OneWire 
        sensors.begin();
      
        // Startup and initialize MySensors library. Set callback for incoming messages. 
        gw.begin(NULL,1); 
      
        // Send the sketch version information to the gateway and Controller
        gw.sendSketchInfo("Temperature Sensor", "1.0");
      
        // Fetch the number of attached temperature sensors  
        numSensors = sensors.getDeviceCount();
      
        // Present all sensors to controller
        for (int i=0; i<numSensors && i<MAX_ATTACHED_DS18B20; i++) {   
           gw.present(i, S_TEMP);
        }
      }
      
      
      void loop()     
      {     
        // Process incoming messages (like config from server)
        gw.process(); 
      
        // Fetch temperatures from Dallas sensors
        sensors.requestTemperatures(); 
      
        // Read temperatures and send them to controller 
        for (int i=0; i<numSensors && i<MAX_ATTACHED_DS18B20; i++) {
       
          // Fetch and round temperature to one decimal
          float temperature = static_cast<float>(static_cast<int>((gw.getConfig().isMetric?sensors.getTempCByIndex(i):sensors.getTempFByIndex(i)) * 10.)) / 10.;
       
          // Only send data if temperature has changed and no error
          if (lastTemperature[i] != temperature && temperature != -127.00) {
       
            // Send in the new temperature
            gw.send(msg.setSensor(i).set(temperature,1));
            lastTemperature[i]=temperature;
          }
        }
        gw.sleep(SLEEP_TIME);
      }
      
      1 Reply Last reply
      0
      • F Offline
        F Offline
        fakeJake
        wrote on last edited by
        #29

        Good news! The gateway is now working :)
        I changed the dallas temperature to relay actuator and, yes, it's now working!
        Bad news is I still don't know what went wrong with my temperature sensor.
        I'll investigate on it soon.

        This is the gateway output:

        0;0;3;0;14;Gateway startup complete.
        0;0;3;0;9;read: 2-2-0 s=255,c=0,t=18,pt=0,l=5:1.4.1
        2;255;0;0;18;1.4.1
        0;0;3;0;9;read: 2-2-0 s=255,c=3,t=6,pt=1,l=1:0
        2;255;3;0;6;0
        0;0;3;0;9;read: 2-2-0 s=255,c=3,t=11,pt=0,l=5:Relay
        2;255;3;0;11;Relay
        0;0;3;0;9;read: 2-2-0 s=255,c=3,t=12,pt=0,l=3:1.0
        2;255;3;0;12;1.0
        0;0;3;0;9;read: 2-2-0 s=1,c=0,t=3,pt=0,l=5:1.4.1
        2;1;0;0;3;1.4.1
        

        This is the relay output:

        repeater started, id 2
        send: 2-2-0-0 s=255,c=0,t=18,pt=0,l=5,st=ok:1.4.1
        send: 2-2-0-0 s=255,c=3,t=6,pt=1,l=1,st=ok:0
        send: 2-2-0-0 s=255,c=3,t=11,pt=0,l=5,st=ok:Relay
        send: 2-2-0-0 s=255,c=3,t=12,pt=0,l=3,st=ok:1.0
        send: 2-2-0-0 s=1,c=0,t=3,pt=0,l=5,st=ok:1.4.1
        

        I just need to test it.
        Since I'll be using a gsm to control the relay. Can you help me on what to send to the relay to turn it on/off?

        1 Reply Last reply
        0
        • rvendrameR Offline
          rvendrameR Offline
          rvendrame
          Hero Member
          wrote on last edited by
          #30

          @fakeJake , I' m glad it worked with relay sketch.

          Regarding the temperature, try to move the sensor to other arduino pin. Pin 2 & 3 are used by interrupts and may not play nice with gw.sleep depending on the lib used.

          To send a message to the relay , you need a controller connected to the GW, either via USB or ethernet. You can also simulate it by entering the message on the Serial monitor.

          The protocol is described here http://www.mysensors.org/download/serial_api_14

          Home Assistant / Vera Plus UI7
          ESP8266 GW + mySensors 2.3.2
          Alexa / Google Home

          1 Reply Last reply
          0
          • F Offline
            F Offline
            fakeJake
            wrote on last edited by fakeJake
            #31

            I tried entering message on the serial monitor of the gateway but still no luck.
            This is the closest thing that I did to tell the relay to turn the light on.

            Gateway output after I enter "2;0;1;1;2;1;" to the Serial monitor:

            0;0;3;0;14;Gateway startup complete.
            0;0;3;0;9;read: 2-2-0 s=255,c=0,t=17,pt=0,l=5:1.4.1
            2;255;0;0;17;1.4.1
            0;0;3;0;9;read: 2-2-0 s=255,c=3,t=6,pt=1,l=1:0
            2;255;3;0;6;0
            0;0;3;0;9;read: 2-2-0 s=255,c=3,t=11,pt=0,l=5:Relay
            2;255;3;0;11;Relay
            0;0;3;0;9;read: 2-2-0 s=255,c=3,t=12,pt=0,l=3:1.0
            2;255;3;0;12;1.0
            0;0;3;0;9;read: 2-2-0 s=1,c=0,t=3,pt=0,l=5:1.4.1
            2;1;0;0;3;1.4.1
            0;0;3;0;9;send: 0-0-2-2 s=0,c=1,t=2,pt=0,l=1,st=ok:1
            0;0;3;0;9;read: 2-2-0 s=0,c=1,t=2,pt=0,l=1:1
            2;0;1;1;2;1
            

            Relay output after "2;0;1;1;2;1;" :

            sensor started, id 2
            send: 2-2-0-0 s=255,c=0,t=17,pt=0,l=5,st=ok:1.4.1
            send: 2-2-0-0 s=255,c=3,t=6,pt=1,l=1,st=ok:0
            send: 2-2-0-0 s=255,c=3,t=11,pt=0,l=5,st=ok:Relay
            send: 2-2-0-0 s=255,c=3,t=12,pt=0,l=3,st=ok:1.0
            send: 2-2-0-0 s=1,c=0,t=3,pt=0,l=5,st=ok:1.4.1
            read: 0-0-2 s=0,c=1,t=2,pt=0,l=1:1
            send: 2-2-0-0 s=0,c=1,t=2,pt=0,l=1,st=ok:1
            Incoming change for sensor:0, New status: 1
            

            Still it doesn't turn on the light

            1 Reply Last reply
            0
            • rvendrameR Offline
              rvendrameR Offline
              rvendrame
              Hero Member
              wrote on last edited by
              #32

              Maybe you can you connect the node also in a USB port, and open a serial monitor for it? You would see if it is receiving the message correctly.

              Home Assistant / Vera Plus UI7
              ESP8266 GW + mySensors 2.3.2
              Alexa / Google Home

              F 1 Reply Last reply
              0
              • rvendrameR rvendrame

                Maybe you can you connect the node also in a USB port, and open a serial monitor for it? You would see if it is receiving the message correctly.

                F Offline
                F Offline
                fakeJake
                wrote on last edited by
                #33

                @rvendrame Sorry I forgot to include that, I edited the post

                1 Reply Last reply
                0
                • F Offline
                  F Offline
                  fakeJake
                  wrote on last edited by fakeJake
                  #34

                  It still doesn't open the light even if I change it to "2;255;1;1;2;1;"
                  I checked the relay using relay.ino from an instructable controlling ac light with relay and it's working.

                  1 Reply Last reply
                  0
                  • rvendrameR Offline
                    rvendrameR Offline
                    rvendrame
                    Hero Member
                    wrote on last edited by
                    #35

                    Can we see your sensor's sketch?

                    Home Assistant / Vera Plus UI7
                    ESP8266 GW + mySensors 2.3.2
                    Alexa / Google Home

                    1 Reply Last reply
                    0
                    • F Offline
                      F Offline
                      fakeJake
                      wrote on last edited by fakeJake
                      #36

                      I just changed the gw.begin();

                      // Example sketch showing how to control physical relays. 
                      // This example will remember relay state even after power failure.
                      
                      #include <MySensor.h>
                      #include <SPI.h>
                      
                      #define RELAY_1  3  // Arduino Digital I/O pin number for first relay (second on pin+1 etc)
                      #define NUMBER_OF_RELAYS 1 // Total number of attached relays
                      #define RELAY_ON 1  // GPIO value to write to turn on attached relay
                      #define RELAY_OFF 0 // GPIO value to write to turn off attached relay
                      
                      MySensor gw;
                      
                      void setup()  
                      {   
                        // Initialize library and add callback for incoming messages
                        gw.begin(incomingMessage, 2);
                        // Send the sketch version information to the gateway and Controller
                        gw.sendSketchInfo("Relay", "1.0");
                      
                        // Fetch relay status
                        for (int sensor=1, pin=RELAY_1; sensor<=NUMBER_OF_RELAYS;sensor++, pin++) {
                          // Register all sensors to gw (they will be created as child devices)
                          gw.present(sensor, S_LIGHT);
                          // Then set relay pins in output mode
                          pinMode(pin, OUTPUT);   
                          // Set relay to last known state (using eeprom storage) 
                          digitalWrite(pin, gw.loadState(sensor)?RELAY_ON:RELAY_OFF);
                        }
                      }
                      
                      
                      void loop() 
                      {
                        // Alway process incoming messages whenever possible
                        gw.process();
                      }
                      
                      void incomingMessage(const MyMessage &message) {
                        // We only expect one type of message from controller. But we better check anyway.
                        if (message.type==V_LIGHT) {
                           // Change relay state
                           digitalWrite(message.sensor-1+RELAY_1, message.getBool()?RELAY_ON:RELAY_OFF);
                           // Store state in eeprom
                           gw.saveState(message.sensor, message.getBool());
                           // Write some debug info
                           Serial.print("Incoming change for sensor:");
                           Serial.print(message.sensor);
                           Serial.print(", New status: ");
                           Serial.println(message.getBool());
                         } 
                      }
                      
                      1 Reply Last reply
                      0
                      • rvendrameR Offline
                        rvendrameR Offline
                        rvendrame
                        Hero Member
                        wrote on last edited by
                        #37

                        @fakeJake said:

                        > Incoming change for sensor:0
                        

                        Means your are asking to activate relay 'zero'.

                        digitalWrite(message.sensor-1+RELAY_1, message.getBool()?RELAY_ON:RELAY_OFF);
                        

                        So digital pin will be 0 - 1 + RELAY_1 = 0 - 1 + 3 = 2

                        Conclusion: Try activating relay 1 instead 0. ;-)

                        Home Assistant / Vera Plus UI7
                        ESP8266 GW + mySensors 2.3.2
                        Alexa / Google Home

                        F 1 Reply Last reply
                        1
                        • rvendrameR rvendrame

                          @fakeJake said:

                          > Incoming change for sensor:0
                          

                          Means your are asking to activate relay 'zero'.

                          digitalWrite(message.sensor-1+RELAY_1, message.getBool()?RELAY_ON:RELAY_OFF);
                          

                          So digital pin will be 0 - 1 + RELAY_1 = 0 - 1 + 3 = 2

                          Conclusion: Try activating relay 1 instead 0. ;-)

                          F Offline
                          F Offline
                          fakeJake
                          wrote on last edited by fakeJake
                          #38

                          @rvendrame The light is still not turning on :sweat:
                          I even change it to "2;257;1;1;2;1" just incase 255 is the message.sensor but it still prints "2;1;1;1;2;1" so I there's no problem there.

                          sensor started, id 2
                          send: 2-2-0-0 s=255,c=0,t=17,pt=0,l=5,st=ok:1.4.1
                          send: 2-2-0-0 s=255,c=3,t=6,pt=1,l=1,st=ok:0
                          send: 2-2-0-0 s=255,c=3,t=11,pt=0,l=5,st=ok:Relay
                          send: 2-2-0-0 s=255,c=3,t=12,pt=0,l=3,st=ok:1.0
                          send: 2-2-0-0 s=1,c=0,t=3,pt=0,l=5,st=ok:1.4.1
                          read: 0-0-2 s=1,c=1,t=2,pt=0,l=1:1
                          send: 2-2-0-0 s=1,c=1,t=2,pt=0,l=1,st=ok:1
                          Incoming change for sensor:1, New status: 1
                          
                          1 Reply Last reply
                          0
                          • rvendrameR Offline
                            rvendrameR Offline
                            rvendrame
                            Hero Member
                            wrote on last edited by
                            #39

                            how the relay is connected to arduino pin 3? Is there a transistor in between?

                            Home Assistant / Vera Plus UI7
                            ESP8266 GW + mySensors 2.3.2
                            Alexa / Google Home

                            F 1 Reply Last reply
                            0
                            • rvendrameR rvendrame

                              how the relay is connected to arduino pin 3? Is there a transistor in between?

                              F Offline
                              F Offline
                              fakeJake
                              wrote on last edited by fakeJake
                              #40

                              @rvendrame No transistor. I just followed MySensors: Build Relay Actuator. I directly connected the 5v, gnd and signal to the arduino.

                              1 Reply Last reply
                              0
                              • rvendrameR Offline
                                rvendrameR Offline
                                rvendrame
                                Hero Member
                                wrote on last edited by
                                #41

                                Do you have a standalone relay, or a arduino relay board, like this picture?
                                http://www.mysensors.org/relay/relayModule.png

                                The board contains a transistor. Some boards also have a 'hi-low' switch, if yours have it, you may try to play with it.

                                The arduino output is max of 40ma and will eventually burn or not operate correctly if connected directly to a relay. You must have a transistor in between.

                                Make sure you relay board contains at least this circuit: http://www.electroschematics.com/8975/arduino-control-relay/

                                Home Assistant / Vera Plus UI7
                                ESP8266 GW + mySensors 2.3.2
                                Alexa / Google Home

                                F 2 Replies Last reply
                                0
                                • rvendrameR rvendrame

                                  Do you have a standalone relay, or a arduino relay board, like this picture?
                                  http://www.mysensors.org/relay/relayModule.png

                                  The board contains a transistor. Some boards also have a 'hi-low' switch, if yours have it, you may try to play with it.

                                  The arduino output is max of 40ma and will eventually burn or not operate correctly if connected directly to a relay. You must have a transistor in between.

                                  Make sure you relay board contains at least this circuit: http://www.electroschematics.com/8975/arduino-control-relay/

                                  F Offline
                                  F Offline
                                  fakeJake
                                  wrote on last edited by
                                  #42

                                  @rvendrame My relay is more like this http://www.elecdesignworks.com/images/stories/virtuemart/product/img_62112.jpg

                                  Thank you for your reference.
                                  It has a transistor. I hope it's ok to use. I have tested it by following an instructable.

                                  1 Reply Last reply
                                  0
                                  • rvendrameR rvendrame

                                    Do you have a standalone relay, or a arduino relay board, like this picture?
                                    http://www.mysensors.org/relay/relayModule.png

                                    The board contains a transistor. Some boards also have a 'hi-low' switch, if yours have it, you may try to play with it.

                                    The arduino output is max of 40ma and will eventually burn or not operate correctly if connected directly to a relay. You must have a transistor in between.

                                    Make sure you relay board contains at least this circuit: http://www.electroschematics.com/8975/arduino-control-relay/

                                    F Offline
                                    F Offline
                                    fakeJake
                                    wrote on last edited by
                                    #43

                                    @rvendrame You know what. I'm really thankful for you help and I'm really sorry for dragging you with me. I can turn the light on now. I just have to print "2;1;1;1;2;0;" instead of "2;1;1;1;2;1".

                                    I will check if I will encounter any problem because of my relay module.
                                    Again, thank you so much for your help. And I'm really sorry.

                                    1 Reply Last reply
                                    0
                                    • rvendrameR Offline
                                      rvendrameR Offline
                                      rvendrame
                                      Hero Member
                                      wrote on last edited by
                                      #44

                                      Just swap the 0 & 1 here:

                                      #define RELAY_ON 1  // GPIO value to write to turn on attached relay
                                      #define RELAY_OFF 0 // GPIO value to write to turn off attached relay
                                      

                                      and it will obey as you expect. Some relays boards have inverted input (Zero/GND is ON and VCC is OFF) ;-)

                                      I'm glad it worked.

                                      Home Assistant / Vera Plus UI7
                                      ESP8266 GW + mySensors 2.3.2
                                      Alexa / Google Home

                                      1 Reply Last reply
                                      1
                                      • F Offline
                                        F Offline
                                        fakeJake
                                        wrote on last edited by
                                        #45
                                        This post is deleted!
                                        1 Reply Last reply
                                        0
                                        • F Offline
                                          F Offline
                                          fakeJake
                                          wrote on last edited by
                                          #46

                                          Is there a way to receive only the last state of the sensors/actuators in the serial?

                                          instead of:

                                          0;0;3;0;9;read: 2-2-0 s=1,c=1,t=2,pt=2,l=2:1
                                          0;0;3;0;9;send: 0-0-2-2 s=1,c=1,t=2,pt=2,l=2,st=ok:1
                                          2;1;1;0;2;1
                                          

                                          it only print the "2;1;1;0;2;1" on the serial

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          28

                                          Online

                                          11.7k

                                          Users

                                          11.2k

                                          Topics

                                          113.1k

                                          Posts


                                          Copyright 2025 TBD   |   Forum Guidelines   |   Privacy Policy   |   Terms of Service
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • MySensors
                                          • OpenHardware.io
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular