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. RFM69 433Mhz ISM band

RFM69 433Mhz ISM band

Scheduled Pinned Locked Moved Development
12 Posts 5 Posters 4.1k Views 3 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.
  • F Offline
    F Offline
    freynder
    wrote on last edited by
    #1

    Hi,

    I recently started experimenting with MySensors which works great so far.

    While checking the code for the RFM69 driver, I noticed that when frequency setting MY_RFM69_FREQUENCY is set to RF69_433MHZ, the driver will initialize the frequency register (RegFrf) to 0x6C4000 which corresponds to exactly 433.00 Mhz (according to the formula in the datasheet).

    However, the 433 ISM band is defined as (https://en.wikipedia.org/wiki/ISM_band) 433.05 MHz - 434.79 MHz with 433.92 MHz center frequency. So it looks like the driver sets a frequency just outside of the band. Would it not be better to initialize with the center frequency?

    I would appreciate any feedback as I want to make sure to comply with regulations.

    mfalkviddM 1 Reply Last reply
    2
    • F freynder

      Hi,

      I recently started experimenting with MySensors which works great so far.

      While checking the code for the RFM69 driver, I noticed that when frequency setting MY_RFM69_FREQUENCY is set to RF69_433MHZ, the driver will initialize the frequency register (RegFrf) to 0x6C4000 which corresponds to exactly 433.00 Mhz (according to the formula in the datasheet).

      However, the 433 ISM band is defined as (https://en.wikipedia.org/wiki/ISM_band) 433.05 MHz - 434.79 MHz with 433.92 MHz center frequency. So it looks like the driver sets a frequency just outside of the band. Would it not be better to initialize with the center frequency?

      I would appreciate any feedback as I want to make sure to comply with regulations.

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

      @freynder great observation. The MySensors library should definitely help people stay within regulations.

      Since changing frequency would break compatibility, i suggest changing it in MySensors 3.0. What do people like @tekka and @hek think?

      1 Reply Last reply
      0
      • C Offline
        C Offline
        Chester
        wrote on last edited by
        #3

        Isn't that what the network ID is for though? I thought the network ID was the channel number within the band....or is it more analogous to the SSID in a WiFi type network?

        mfalkviddM 1 Reply Last reply
        0
        • C Chester

          Isn't that what the network ID is for though? I thought the network ID was the channel number within the band....or is it more analogous to the SSID in a WiFi type network?

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

          @Chester network id is part of the preamble/sync. It does not affect frequency.

          1 Reply Last reply
          1
          • scalzS Offline
            scalzS Offline
            scalz
            Hardware Contributor
            wrote on last edited by scalz
            #5

            Hi.

            sure that's better to comply regulations.

            It's like this because Mysensors still use Lowpowerlab rfm69 lib, but in future Mysensors rfm69 driver that will be available.

            For the moment, you can maybe try something like this in your code :
            _radio.setFrequency(your_freq);

            https://github.com/mysensors/MySensors/blob/development/drivers/RFM69/RFM69.h#L135

            @Chester you can have multiple separated networks (with different id of course) for the same frequency. but sure, changing a little bit the freq is nice alternative too

            F 1 Reply Last reply
            3
            • scalzS scalz

              Hi.

              sure that's better to comply regulations.

              It's like this because Mysensors still use Lowpowerlab rfm69 lib, but in future Mysensors rfm69 driver that will be available.

              For the moment, you can maybe try something like this in your code :
              _radio.setFrequency(your_freq);

              https://github.com/mysensors/MySensors/blob/development/drivers/RFM69/RFM69.h#L135

              @Chester you can have multiple separated networks (with different id of course) for the same frequency. but sure, changing a little bit the freq is nice alternative too

              F Offline
              F Offline
              freynder
              wrote on last edited by
              #6

              Thanks for your feedback.

              @scalz: I tried adding

              #define RF69_EXACT_FREQ 433920ul

              radio.setFrequency(RF69_EXACT_FREQ);

              to the gateway and 2 nodes, but it did not seem to work. The nodes could not connect to the gateway. I reverted back for the moment and will do some other tests when I have a better dev environment.

              mfalkviddM 1 Reply Last reply
              0
              • F freynder

                Thanks for your feedback.

                @scalz: I tried adding

                #define RF69_EXACT_FREQ 433920ul

                radio.setFrequency(RF69_EXACT_FREQ);

                to the gateway and 2 nodes, but it did not seem to work. The nodes could not connect to the gateway. I reverted back for the moment and will do some other tests when I have a better dev environment.

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

                @freynder try 433920000ul

                F 1 Reply Last reply
                0
                • mfalkviddM mfalkvidd

                  @freynder try 433920000ul

                  F Offline
                  F Offline
                  freynder
                  wrote on last edited by
                  #8

                  @mfalkvidd Thank you, I misread the comment as kHz. Still not working though. I suppose setup is called only after mysensors initialization so nodes fail to connect since they are not set to the correct frequency.

                  mfalkviddM tekkaT 2 Replies Last reply
                  0
                  • F freynder

                    @mfalkvidd Thank you, I misread the comment as kHz. Still not working though. I suppose setup is called only after mysensors initialization so nodes fail to connect since they are not set to the correct frequency.

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

                    @freynder I am not sure what order things are executed, but see if it helps putting radio.setFrequency in either preHwInit(), before() or presentation().

                    Reference:
                    https://github.com/mysensors/MySensors/blob/61a415c42281090d2a4eb0808ce9065674e96022/core/MySensorsCore.h#L404

                    1 Reply Last reply
                    1
                    • scalzS Offline
                      scalzS Offline
                      scalz
                      Hardware Contributor
                      wrote on last edited by scalz
                      #10

                      @freynder
                      oki. i didn't check the code.

                      The radio frequency is initalized between Before() and Setup()
                      https://github.com/mysensors/MySensors/blob/development/core/MySensorsCore.cpp#L129

                      But changing it like this in the sketch, i'm not sure how it would interact with the state machine, and if it may need to reinit the radio (have no time to test this for the moment).

                      Also, you can't use transportInitialise for overriding your settings.. because it's hard written in the rfm69 driver:
                      https://github.com/mysensors/MySensors/blob/development/drivers/RFM69/RFM69.cpp#L58

                      So if you want to experiment, easier to change the 3 lines above in rfm69 driver.
                      But then, that will be overwritten when new Mysensors release will happen, as there will be a new driver.

                      So you can experiment if you're in hurry to comply regulations, or you can wait and play with the settings as they are ;)

                      1 Reply Last reply
                      2
                      • F freynder

                        @mfalkvidd Thank you, I misread the comment as kHz. Still not working though. I suppose setup is called only after mysensors initialization so nodes fail to connect since they are not set to the correct frequency.

                        tekkaT Offline
                        tekkaT Offline
                        tekka
                        Admin
                        wrote on last edited by tekka
                        #11

                        @freynder The best solution (for the moment) is to change these defines:

                        https://github.com/mysensors/MySensors/blob/development/drivers/RFM69/RFM69registers.h#L305-L307

                        to

                        #define RF_FRFMSB_433             0x6C
                        #define RF_FRFMID_433             0x7A
                        #define RF_FRFLSB_433             0xE1
                        

                        for 433.92 Mhz

                        As @scalz pointed out, the state machine will re-initialize the radio to the original values if using setFrequency() anywhere in the code. And of course, these changes will be overridden with a new release of MySensors.

                        1 Reply Last reply
                        4
                        • F Offline
                          F Offline
                          freynder
                          wrote on last edited by
                          #12

                          Thank you all. I changed the register values directly in the RFM69 driver and it all seems to work.

                          Hopefully a new release will soon include this (as well as the ATC feature). Also, local legislation specifies maximum transmission power as 10mW for the 433 band, so I included the code below in my sketch. It would be good to be able to configure this in the future as well.

                          #ifdef MY_IS_RFM69HW
                            _radio.setPowerLevel(16); // 10dBm for RFM69HW
                          #else
                            _radio.setPowerLevel(28); // 10dBm for RFM69W
                          #endif
                          
                          1 Reply Last reply
                          1
                          Reply
                          • Reply as topic
                          Log in to reply
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes


                          10

                          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