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. Hardware
  3. Step-by-step procedure to connect the NRF24L01+ to the GPIO pins and use the Raspberry as a Serial Gateway (MySensors 1.x)

Step-by-step procedure to connect the NRF24L01+ to the GPIO pins and use the Raspberry as a Serial Gateway (MySensors 1.x)

Scheduled Pinned Locked Moved Hardware
nrf24raspberry piraspberryraspberry nrf24l01 gpiogateway
168 Posts 47 Posters 175.7k Views 36 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.
  • A Offline
    A Offline
    Atman
    wrote on last edited by
    #123

    I have been struggeling with this for some time now. It seems my compiler is not the standard for raspberry pi? (I have a pi 2). I have used the domoticz sdcard as ground for my system and it works (a bit sketchy with random freezes and I cannot access the domotics webserver from chrome) but still. Anyway, I get stuck on making the RF24 package. Any ideas?

    pi@raspberrypi ~/RF24 $ make all && sudo make install
    arm-linux-gnueabihf-g++ -fPIC -march=armv7-a -mtune=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -Ofast -Wall -pthread  -c RF24.cpp
    cc1plus: error: bad value (cortex-a7) for -mtune switch
    Makefile:40: recipe for target 'RF24.o' failed
    make: *** [RF24.o] Error 1
    
    1 Reply Last reply
    0
    • alexsh1A Offline
      alexsh1A Offline
      alexsh1
      wrote on last edited by
      #124

      Did anyone setup rfm69 successfully on the raspberry pi

      1 Reply Last reply
      0
      • GertSandersG Offline
        GertSandersG Offline
        GertSanders
        Hardware Contributor
        wrote on last edited by
        #125

        Has anyone used the Raspberry GW software in combination with nodes that run the new 2.0.0 MySensors code ?

        1 Reply Last reply
        0
        • tbowmoT Offline
          tbowmoT Offline
          tbowmo
          Admin
          wrote on last edited by
          #126

          @GertSanders

          It's not supported, 2.0.0 nodes require a 2.0.0 GW. And the raspberry pi port is not updated to 2.0.0 (and unfortunately there is currently no one in the core group that uses the rpi gw.. We all use serial / ethernet gw's of some sort)

          GertSandersG W 2 Replies Last reply
          0
          • tbowmoT tbowmo

            @GertSanders

            It's not supported, 2.0.0 nodes require a 2.0.0 GW. And the raspberry pi port is not updated to 2.0.0 (and unfortunately there is currently no one in the core group that uses the rpi gw.. We all use serial / ethernet gw's of some sort)

            GertSandersG Offline
            GertSandersG Offline
            GertSanders
            Hardware Contributor
            wrote on last edited by
            #127

            @tbowmo
            I was afraid of that. In my enthusiasm I updated to 2.0.0, but now my new nodes play dead.
            At least I know why.
            Time to make that old ethernet gateway functional again.
            Since Breda meetup is this weekend, I will have no more time to figure this out (if I could ever, this is UNIX). Maybe after I can try something.

            GertSandersG 1 Reply Last reply
            0
            • tbowmoT tbowmo

              @GertSanders

              It's not supported, 2.0.0 nodes require a 2.0.0 GW. And the raspberry pi port is not updated to 2.0.0 (and unfortunately there is currently no one in the core group that uses the rpi gw.. We all use serial / ethernet gw's of some sort)

              W Offline
              W Offline
              wergeld
              wrote on last edited by
              #128

              @tbowmo

              What would be required to get the RPi gateway up and running? Having single controller/gateway is great.

              GertSandersG 1 Reply Last reply
              0
              • GertSandersG Offline
                GertSandersG Offline
                GertSanders
                Hardware Contributor
                wrote on last edited by
                #129

                @tbowmo
                Is a 2.0.0 based gateway backward compatible with nodes in an older version ?

                1 Reply Last reply
                0
                • W wergeld

                  @tbowmo

                  What would be required to get the RPi gateway up and running? Having single controller/gateway is great.

                  GertSandersG Offline
                  GertSandersG Offline
                  GertSanders
                  Hardware Contributor
                  wrote on last edited by
                  #130

                  @wergeld
                  Probably porting the Arduino lib to Raspberry and compiling again ?

                  W 1 Reply Last reply
                  0
                  • GertSandersG GertSanders

                    @tbowmo
                    I was afraid of that. In my enthusiasm I updated to 2.0.0, but now my new nodes play dead.
                    At least I know why.
                    Time to make that old ethernet gateway functional again.
                    Since Breda meetup is this weekend, I will have no more time to figure this out (if I could ever, this is UNIX). Maybe after I can try something.

                    GertSandersG Offline
                    GertSandersG Offline
                    GertSanders
                    Hardware Contributor
                    wrote on last edited by
                    #131

                    @tbowmo
                    Is the last 2.0.0-dev version (before the new 2.0.0 official release) still available somewhere ?
                    That DEV version seemed to still work with my Raspi GW.

                    1 Reply Last reply
                    0
                    • GertSandersG GertSanders

                      @wergeld
                      Probably porting the Arduino lib to Raspberry and compiling again ?

                      W Offline
                      W Offline
                      wergeld
                      wrote on last edited by
                      #132

                      @GertSanders

                      Time to start reading up on converting the lib! Might have a go at it in week or so. Work is holding me hostage at the moment.

                      1 Reply Last reply
                      0
                      • GertSandersG Offline
                        GertSandersG Offline
                        GertSanders
                        Hardware Contributor
                        wrote on last edited by
                        #133

                        Praise Apple for making TimeMachine. I was able to set back the last version of MySensors lib I know was working with my gateway in a bout 1 minute.

                        Back in business now. Upgrading the gateway and nodes to full 2.0.0 is for later.

                        1 Reply Last reply
                        1
                        • tbowmoT Offline
                          tbowmoT Offline
                          tbowmo
                          Admin
                          wrote on last edited by tbowmo
                          #134

                          @wergeld

                          you need to port the mysensors core library.. It is however filled with arduino specifics at the moment (we have had some talks about removing arduino dependencies, but it's not made yet).

                          Ideally someone should make a raspberry pi port, that we can merge into the main repository, so the same codebase can be build for both raspberryPi and arduino based hardware.

                          @GertSanders

                          A 2.0.0 GW should be compatible with 1.5.x nodes, but 2.0.0 nodes require a 2.0.0 GW.. (I can't remember the specifics in what the changes are, @tekka is the brain behind that stuff). That said, we do recommend that both nodes and GW will be updated to same mysensors versions, as to avoid any problems.

                          mfalkviddM 1 Reply Last reply
                          0
                          • tbowmoT tbowmo

                            @wergeld

                            you need to port the mysensors core library.. It is however filled with arduino specifics at the moment (we have had some talks about removing arduino dependencies, but it's not made yet).

                            Ideally someone should make a raspberry pi port, that we can merge into the main repository, so the same codebase can be build for both raspberryPi and arduino based hardware.

                            @GertSanders

                            A 2.0.0 GW should be compatible with 1.5.x nodes, but 2.0.0 nodes require a 2.0.0 GW.. (I can't remember the specifics in what the changes are, @tekka is the brain behind that stuff). That said, we do recommend that both nodes and GW will be updated to same mysensors versions, as to avoid any problems.

                            mfalkviddM Offline
                            mfalkviddM Offline
                            mfalkvidd
                            Mod
                            wrote on last edited by mfalkvidd
                            #135

                            @tbowmo @wergeld @GertSanders a port is already available, see https://forum.mysensors.org/topic/2759/mysensors-raspberry-port-suggestions/11 (and github)

                            It would be awesome if someone could merge that great work with the MySensors repo.

                            1 Reply Last reply
                            0
                            • tbowmoT Offline
                              tbowmoT Offline
                              tbowmo
                              Admin
                              wrote on last edited by
                              #136

                              @mfalkvidd

                              Ok, didn't know that it was updated to 2.0.0 "final", thanks for the hint :+1:

                              1 Reply Last reply
                              0
                              • Sander TeunissenS Offline
                                Sander TeunissenS Offline
                                Sander Teunissen
                                wrote on last edited by
                                #137

                                Would it be safe to say a RPI gateway 2.0 is not available yet for beginners ? (like the instructions @mfalkvidd made are not usable for this ?)

                                GertSandersG 1 Reply Last reply
                                0
                                • Sander TeunissenS Sander Teunissen

                                  Would it be safe to say a RPI gateway 2.0 is not available yet for beginners ? (like the instructions @mfalkvidd made are not usable for this ?)

                                  GertSandersG Offline
                                  GertSandersG Offline
                                  GertSanders
                                  Hardware Contributor
                                  wrote on last edited by
                                  #138

                                  @Sander-Teunissen
                                  At the moment I would advise beginners to use a separate GW for the official 2.0.0 (ethernet or serial based). I found the ethernet based gateway the easiest to use in various setups, espcially since Domoticz (my controller of choice) supported this.

                                  Sander TeunissenS 1 Reply Last reply
                                  1
                                  • GertSandersG GertSanders

                                    @Sander-Teunissen
                                    At the moment I would advise beginners to use a separate GW for the official 2.0.0 (ethernet or serial based). I found the ethernet based gateway the easiest to use in various setups, espcially since Domoticz (my controller of choice) supported this.

                                    Sander TeunissenS Offline
                                    Sander TeunissenS Offline
                                    Sander Teunissen
                                    wrote on last edited by Sander Teunissen
                                    #139

                                    @GertSanders Thanks Gert !
                                    I did a quick build of the serial gateway using an arduino which I connect to my RPI. Pretty easy. I'll be watching this when I can switch back to the RPI built gateway...

                                    1 Reply Last reply
                                    1
                                    • mfalkviddM mfalkvidd

                                      Note: This guide is only applicable to MySensors 1.x. For MySensors 2, use this guide.

                                      I noticed that a step-by-step procedure to connect the NRF24L01 to the GPIO pins and use the Raspberry as a Serial Gateway was listed in the document for MySensors 1.6.

                                      Since I have three gateways configured this way, and I need to set up 3 more for covering different offices around the world, and I had already written the instructions in Swedish for Datormagazin, I thought I'd help out.

                                      This is the first draft. Any feedback is welcome.


                                      INTRODUCTION
                                      The radio module NRF24L01+ is cheap and power efficient, but it is unable to communicate with regular wifi. The bridge between NRF24L01+ nodes and the "computer world" is called a Gateway. You can use other types of gateways, but connecting the NRF24L01+ module directly to the Raspberry Pi is a simple and cheap alternative.

                                      Wiring Things Up
                                      Connect the NRF20L01+ radio module to the Raspberry Pi like this:
                                      raspi_mysensors[1].png

                                      Raspberry Pi NRF24L01+ Color
                                      6 / GND GND Black
                                      1 / 3.3V DC VCC Red
                                      22 / GPIO25 CE Orange
                                      24 / GPIO 8 CSN/CS Yellow
                                      23 / GPIO11 / SPI_CLK SCK Green
                                      19 / GPIO10 / SPI_MOSI MOSI Blue
                                      21 / GPIO9 / SPI_MISO MISO Violet

                                      The IRQ pin on NRF24L01 is not currently used.

                                      For a comprehensive view of the Raspberry Pi pins, see http://pinout.xyz/

                                      You should also connect a decoupling capacitor to the radio. See this guide.

                                      COMPILING THE GATEWAY
                                      Login to your Raspberry Pi (using SSH or open a terminal on the graphical console) and run these commands:

                                      git clone https://github.com/TMRh20/RF24.git
                                      cd RF24
                                      make all && sudo make install
                                      cd ..
                                      
                                      git clone https://github.com/mysensors/Raspberry.git
                                      cd Raspberry
                                      make all && sudo make install
                                      

                                      If you get the following error:

                                      pi@raspberrypi ~/RF24 $ make all && sudo make install
                                      g++ -Wall -fPIC -Ofast -mfpu=vfp -mfloat-abi=hard -mtune=arm1176jzf-s -march=armv7-a -D BCM2835_PERI_BASE=0x -c RF24.cpp
                                      gcc -Wall -fPIC -Ofast -mfpu=vfp -mfloat-abi=hard -mtune=arm1176jzf-s -march=armv7-a -D BCM2835_PERI_BASE=0x -c bcm2835.c
                                      bcm2835.c: In function ‘bcm2835_init’:
                                      bcm2835.c:1207:28: error: invalid suffix "x" on integer constant
                                      
                                      

                                      You've probably run into the problem discussed in this thread. People have had luck with different solutions. The simplest is to make the following change to ~/Raspberry/librf24-bcm/Makefile

                                      #IOBASE := $(shell cat /proc/iomem | grep bcm2708_vcio | cut -f 1 -d "-")
                                      IOBASE := 3F000000
                                      

                                      VERIFY THE GATEWAY
                                      Run sudo /usr/local/sbin/PiGatewaySerial. The output should look like this:

                                      pi@raspberrypi ~/Raspberry $ sudo /usr/local/sbin/PiGatewaySerial
                                      Starting PiGatewaySerial...
                                      Protocol version - 1.4
                                      Created PTY '/dev/pts/1'
                                      Gateway tty: /dev/ttyMySensorsGateway
                                      ================ SPI Configuration ================
                                      CSN Pin          = CE0 (PI Hardware Driven)
                                      CE Pin           = Custom GPIO25
                                      Clock Speed      = 8 Mhz
                                      ================ NRF Configuration ================
                                      STATUS           = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
                                      RX_ADDR_P0-1     = 0xe7e7e7e7e7 0xc2c2c2c2c2
                                      RX_ADDR_P2-5     = 0xff 0xc4 0xc5 0xc6
                                      TX_ADDR          = 0xe7e7e7e7e7
                                      RX_PW_P0-6       = 0x00 0x00 0x20 0x00 0x00 0x00
                                      EN_AA            = 0x3b
                                      EN_RXADDR        = 0x07
                                      RF_CH            = 0x4c
                                      RF_SETUP         = 0x23
                                      CONFIG           = 0x0e
                                      DYNPD/FEATURE    = 0x3f 0x06
                                      Data Rate        = 250KBPS
                                      Model            = nRF24L01+
                                      CRC Length       = 16 bits
                                      PA Power         = PA_LOW
                                      

                                      If the NRF24L01+ isn't correctly wired, the following error will be shown

                                      pi@raspberrypi ~ $ sudo /usr/local/sbin/PiGatewaySerial
                                      Starting PiGatewaySerial...
                                      Protocol version - 1.4
                                      Created PTY '/dev/pts/2'
                                      Gateway tty: /dev/ttyMySensorsGateway
                                      check wires
                                      

                                      If this happens, double-check your wiring and correct any problems. Press Ctrl+Z and type

                                      sudo killall PiGatewaySerial
                                      

                                      to get rid of the non-functioning Gateway. Then run sudo /usr/local/sbin/PiGatewaySerial again

                                      If all is well, exit PiGatewaySerial by pressing Ctrl+C. Then run

                                      sudo /etc/init.d/PiGatewaySerial start
                                      

                                      to start the gateway as a background process. Verify that it started correctly by running

                                      sudo cat /dev/ttyMySensorsGateway
                                      

                                      You should see the message "Gateway startup complete". Exit by typing Ctrl+C.

                                      MAKE THE GATEWAY AUTOSTART
                                      To make sure the Gateway is started when your Raspberry Pi boots up, run the following command:

                                      sudo make enable-gwserial
                                      

                                      Enable the gateway for use with Domoticz
                                      Domoticz (and maybe other home automation systems) has trouble reading from the default path created by PiGatewaySerial. You might need to run the following command:

                                      sudo ln -s /dev/ttyMySensorsGateway /dev/ttyUSB20
                                      

                                      And change /etc/rc.local from this

                                      exit 0
                                      
                                      

                                      to this

                                      ln -s /dev/ttyMySensorsGateway /dev/ttyUSB20
                                      exit 0
                                      
                                      

                                      OTHER NOTES

                                      • The 3.3V power on the Raspberry Pi is rated for a maximum of 50mA. A regular NRF24L01+ only needs 15mA, but if you are using a power amplified version you might exceed what the Raspberry Pi can output. In that case, an external power supply might be required. If you use an external power source gnd must be connected to the Raspberry Pi's gnd.

                                      • Connecting the NRF24L01+ directly to your Raspberry Pi will prevent you from using the Raspberry Pi's gpio ports for other things, like a Z-wave board.

                                      • A user experienced slow data transfer compared to USB-to-Serial(ttl)<-->MySensors Gateway connection, especially on OTA firmware update. If you think this will cause a problem for you, an ethernet gateway might be a better alternative.

                                      As always, I stand on the shoulders of giants. Related posts:

                                      • http://forum.mysensors.org/topic/1151/tutorial-raspberry-pi-nrf24l01-direct-connection
                                      • http://forum.mysensors.org/topic/1974/domoticz-as-controller-and-a-gateway-for-mysensor-nodes-running-on-a-raspberry-pi-2

                                      TROUBLESHOOTING
                                      If you get this error

                                      pi@Domoticz3:~/Raspberry$ sudo /etc/init.d/PiGatewaySerial start
                                      [....] Starting PiGatewaySerial (via systemctl): PiGatewaySerial.serviceFailed to start PiGatewaySerial.service: Unit PiGatewaySerial.service failed to load: No such file or directory.
                                       failed!
                                      

                                      or this error

                                      pi@raspberrypi ~ $ sudo /usr/local/sbin/PiGatewaySerial
                                      sudo: /usr/local/sbin/PiGatewaySerial: command not found
                                      

                                      you have probably forgotten to run sudo make install. Read the instructions again, and follow them this time :-) User @sineverba reported that a reboot of the Pi after running make install helped.

                                      F Offline
                                      F Offline
                                      flopp
                                      wrote on last edited by
                                      #140

                                      @mfalkvidd said:

                                      OTHER NOTES

                                      • The 3.3V power on the Raspberry Pi is rated for a maximum of 50mA. A regular NRF24L01+ only needs 15mA, but if you are using a power amplified version you might exceed what the Raspberry Pi can output. In that case, an external power supply might be required.

                                      Nice guide thanks.
                                      when using external power supply i think it is best to connect Ground from Rpi and ext power supply. Maybe write that in the guide?

                                      alexsh1A 1 Reply Last reply
                                      0
                                      • F flopp

                                        @mfalkvidd said:

                                        OTHER NOTES

                                        • The 3.3V power on the Raspberry Pi is rated for a maximum of 50mA. A regular NRF24L01+ only needs 15mA, but if you are using a power amplified version you might exceed what the Raspberry Pi can output. In that case, an external power supply might be required.

                                        Nice guide thanks.
                                        when using external power supply i think it is best to connect Ground from Rpi and ext power supply. Maybe write that in the guide?

                                        alexsh1A Offline
                                        alexsh1A Offline
                                        alexsh1
                                        wrote on last edited by
                                        #141

                                        @flopp the best would be to use Raspberry's 5V rail and reduce it to 3.3V via the LDO like @GertSanders did in his board.

                                        There is one member using 3.3V rail for powering PA+LNA Tranceiver without any issues - check out the latest open hardware. I have not tried it personally

                                        mfalkviddM 1 Reply Last reply
                                        0
                                        • alexsh1A alexsh1

                                          @flopp the best would be to use Raspberry's 5V rail and reduce it to 3.3V via the LDO like @GertSanders did in his board.

                                          There is one member using 3.3V rail for powering PA+LNA Tranceiver without any issues - check out the latest open hardware. I have not tried it personally

                                          mfalkviddM Offline
                                          mfalkviddM Offline
                                          mfalkvidd
                                          Mod
                                          wrote on last edited by
                                          #142

                                          @alexsh1 I wouldn't want a guide to recommend a solution that is way outside the specifications even if users might not experience problems. Strange problems usually happen outside specs, they are a pain to troubleshoot and in this case might lead to frying someone's Raspberry Pi.

                                          @flopp thanks for your suggestion, I've amended to guide.

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


                                          14

                                          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