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. My Project
  3. nRF5 action!

nRF5 action!

Scheduled Pinned Locked Moved My Project
1.9k Posts 49 Posters 631.4k Views 44 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.
  • NeverDieN NeverDie

    Where is the sleep(...) function defined for the nrf5? I've looked, but I can't seem to find which library it is in. Anyone know?

    d00616D Offline
    d00616D Offline
    d00616
    Contest Winner
    wrote on last edited by
    #683

    @NeverDie said in nRF5 Bluetooth action!:

    Where is the sleep(...) function defined for the nrf5? I've looked, but I can't seem to find which library it is in. Anyone know?

    It's defined in "hal/architecture/MyHwNRF5.cpp"

    1 Reply Last reply
    1
    • T Offline
      T Offline
      Toyman
      wrote on last edited by
      #684

      If anybody need cheap NRF52 DK, Arrow has them for ca. $30 with free courier shipping!

      Nca78N 1 Reply Last reply
      1
      • T Toyman

        If anybody need cheap NRF52 DK, Arrow has them for ca. $30 with free courier shipping!

        Nca78N Offline
        Nca78N Offline
        Nca78
        Hardware Contributor
        wrote on last edited by
        #685

        @Toyman said in nRF5 Bluetooth action!:

        If anybody need cheap NRF52 DK, Arrow has them for ca. $30 with free courier shipping!

        10% discount at the moment so 29.48$. Given the price per unit of a nrf52 if you buy in small numbers, it's worth buying it just for the extra chips provided :D

        1 Reply Last reply
        0
        • NeverDieN Offline
          NeverDieN Offline
          NeverDie
          Hero Member
          wrote on last edited by NeverDie
          #686

          Speaking as a noob myself, I think the DK's are great for noobs, especially when first getting started. I don't have as big a need for them now, but they definitely helped in the beginning. They pretty much "just work" without a lot of fuss.

          1 Reply Last reply
          0
          • NeverDieN Offline
            NeverDieN Offline
            NeverDie
            Hero Member
            wrote on last edited by NeverDie
            #687

            I'm presently playing around with the radioHead library. I can:

            1. Send and receive backets between two nRF5 modules.
              or
            2. Send and receive packets between two nRF24L01 modules.

            However, at present, I can't send or receive packets successfully between an nRF24 and an nRF5 module, even though it appears they share the same network ID, the same datarate, and the same channel.

            I'm guessing there exists some kind of compatability mode (?) that would bridge this gap, but I haven't found it. :(

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

              @NeverDie
              d00616 added the support of NRF5 + ESB to MySensors.
              Radiohead lib doesn't handle this mode (explained in the description of his NRF51class).

              NeverDieN 1 Reply Last reply
              0
              • scalzS scalz

                @NeverDie
                d00616 added the support of NRF5 + ESB to MySensors.
                Radiohead lib doesn't handle this mode (explained in the description of his NRF51class).

                NeverDieN Offline
                NeverDieN Offline
                NeverDie
                Hero Member
                wrote on last edited by NeverDie
                #689

                Yeah, MySensors can definitely do it. Nice work @d00616 !

                It turns out that with RadioHead, I am almost able to send packets from an nRF24L01 to an nRF5 module: it's just that the packets arrive as garbage. So, the packet and/or frame formatting must be different, but indeed the network ID's are matching or else I wouldn't be receiving anything at all.

                d00616D 1 Reply Last reply
                0
                • NeverDieN Offline
                  NeverDieN Offline
                  NeverDie
                  Hero Member
                  wrote on last edited by NeverDie
                  #690

                  I found the smoking gun in the radiohead documentation. Turns out RadioHead does indeed use a different packet format for the nRF5 that is "NOT compatible with the one used by RH_NRF24 and the nRF24L01 product specification, mainly because the nRF24 only supports 6 bits of message length." :(

                  Well, that stinks.

                  TerrenceT 1 Reply Last reply
                  0
                  • NeverDieN NeverDie

                    I found the smoking gun in the radiohead documentation. Turns out RadioHead does indeed use a different packet format for the nRF5 that is "NOT compatible with the one used by RH_NRF24 and the nRF24L01 product specification, mainly because the nRF24 only supports 6 bits of message length." :(

                    Well, that stinks.

                    TerrenceT Offline
                    TerrenceT Offline
                    Terrence
                    wrote on last edited by
                    #691

                    @NeverDie Ya, that really sucks. It would have been great to mix and match.

                    1 Reply Last reply
                    0
                    • NeverDieN NeverDie

                      Yeah, MySensors can definitely do it. Nice work @d00616 !

                      It turns out that with RadioHead, I am almost able to send packets from an nRF24L01 to an nRF5 module: it's just that the packets arrive as garbage. So, the packet and/or frame formatting must be different, but indeed the network ID's are matching or else I wouldn't be receiving anything at all.

                      d00616D Offline
                      d00616D Offline
                      d00616
                      Contest Winner
                      wrote on last edited by
                      #692

                      @NeverDie said in nRF5 Bluetooth action!:

                      Yeah, MySensors can definitely do it. Nice work @d00616 !
                      Thanks.

                      It turns out that with RadioHead, I am almost able to send packets from an nRF24L01 to an nRF5 module: it's just that the packets arrive as garbage. So, the packet and/or frame formatting must be different, but indeed the network ID's are matching or else I wouldn't be receiving anything at all.

                      The ID's are reversed between nRF5 and nRF24. Look into the code how to reverse the ID's.

                      @NeverDie said in nRF5 Bluetooth action!:

                      I found the smoking gun in the radiohead documentation. Turns out RadioHead does indeed use a different packet format for the nRF5 that is "NOT compatible with the one used by RH_NRF24 and the nRF24L01 product specification, mainly because the nRF24 only supports 6 bits of message length."

                      You have to choose the correct number of bits for length, S0 and S1. I have played a while to find out the correct configuration. When ACK is enabled you have to do a lot of timing work.

                      @Terrence said in nRF5 Bluetooth action!:

                      @NeverDie Ya, that really sucks. It would have been great to mix and match.

                      At the moment I have no opinion to the "GPL or commercial" license of Readiohead. So I have no plans to port my Code .

                      The Nordic SDK has an ESB library supporting the nRF24 mode. IMHO Starting with SDK 13 the license is more Open Source friendly.

                      1 Reply Last reply
                      1
                      • NeverDieN Offline
                        NeverDieN Offline
                        NeverDie
                        Hero Member
                        wrote on last edited by NeverDie
                        #693

                        I'm realizing I can live with it. It just means I need to add a separate nRF24 gateway if I want to use nRF24's. I'm already adding separate gateways to support RFM69's and LoRa's, so, actually, it's no big deal.

                        Meanwhile, I've found that the RadioHead and the MySensors libraries are at least minimally compatible. So, presently I'm using RadioHead for my low power transmissions, but I'm using the sleep(...) function from MySensors to sleep the nRF52 and wake it up. :)

                        The only weirdness I'm noticing is that immediately after sending the very first packet in this configuration, there's a mysterious several second delay that occurs before the code continues. However, after the initial hiccup, everything appears to run exactly as fast as it should. I have no clue as to what is causing that initial delay though. It doesn't happen if I don't #include the MySensors.h file.

                        1 Reply Last reply
                        0
                        • rmtuckerR Offline
                          rmtuckerR Offline
                          rmtucker
                          wrote on last edited by rmtucker
                          #694

                          I was playing with sleep tonight and found the following problem.
                          when using sleep as below it always returns a figure 252 ms bigger than the sleep figure.
                          ie sleep 10000 always returns 10251
                          ie sleep 3000 always returns 3251.
                          I know the nrf51822 has a 32khz rtc so why is this?

                            oldmillis = hwMillis();
                            hwSleep(10000);
                            newmillis = hwMillis();
                            Serial.println(newmillis - oldmillis);
                          
                          1 Reply Last reply
                          0
                          • rmtuckerR Offline
                            rmtuckerR Offline
                            rmtucker
                            wrote on last edited by
                            #695

                            Seems it may have something to do with this in the code.

                            // Calculate sleep time
                            		// 8 Hz -> max 582.542 hours sleep.
                            		MY_HW_RTC->PRESCALER = 4095;
                            		// Set compare register to 1/125ms + 2 to garantee event triggering
                            		MY_HW_RTC->CC[0] = (ms / 125) + 2;```
                            1 Reply Last reply
                            0
                            • rmtuckerR Offline
                              rmtuckerR Offline
                              rmtucker
                              wrote on last edited by
                              #696

                              MY_HW_RTC->CC[0] = (ms / 125) + 2;

                              It seems the +2 above is adding 250ms.
                              Why is it done like this???

                              d00616D 1 Reply Last reply
                              1
                              • NeverDieN Offline
                                NeverDieN Offline
                                NeverDie
                                Hero Member
                                wrote on last edited by NeverDie
                                #697

                                What more can be done to reduce current consumption on an nRF52832 when the MySensors "sleep" function is being used with RTC wakeup. I've measured a 300mv drop on a 10F capacitor over a 12 hour time period. Of that 300mv, perhaps 20mv was lost due to self-discharge of the supercap. So, that still leaves 280mv of loss due to the nRF52832 . That is too high a rate of loss.

                                rmtuckerR d00616D 2 Replies Last reply
                                0
                                • NeverDieN NeverDie

                                  What more can be done to reduce current consumption on an nRF52832 when the MySensors "sleep" function is being used with RTC wakeup. I've measured a 300mv drop on a 10F capacitor over a 12 hour time period. Of that 300mv, perhaps 20mv was lost due to self-discharge of the supercap. So, that still leaves 280mv of loss due to the nRF52832 . That is too high a rate of loss.

                                  rmtuckerR Offline
                                  rmtuckerR Offline
                                  rmtucker
                                  wrote on last edited by
                                  #698

                                  @NeverDie
                                  Seeing Your sketch would help?

                                  NeverDieN 1 Reply Last reply
                                  1
                                  • rmtuckerR rmtucker

                                    MY_HW_RTC->CC[0] = (ms / 125) + 2;

                                    It seems the +2 above is adding 250ms.
                                    Why is it done like this???

                                    d00616D Offline
                                    d00616D Offline
                                    d00616
                                    Contest Winner
                                    wrote on last edited by
                                    #699

                                    @rmtucker said in nRF5 Bluetooth action!:

                                    MY_HW_RTC->CC[0] = (ms / 125) + 2;

                                    It seems the +2 above is adding 250ms.
                                    Why is it done like this???

                                    A minimum of two ticks are required to be sure the CC[0] is triggered.

                                    What accuracy is your requirement? I can add more code here to dynamical change the pre scaler plus a check if ms/125>=2

                                    rmtuckerR 1 Reply Last reply
                                    0
                                    • d00616D d00616

                                      @rmtucker said in nRF5 Bluetooth action!:

                                      MY_HW_RTC->CC[0] = (ms / 125) + 2;

                                      It seems the +2 above is adding 250ms.
                                      Why is it done like this???

                                      A minimum of two ticks are required to be sure the CC[0] is triggered.

                                      What accuracy is your requirement? I can add more code here to dynamical change the pre scaler plus a check if ms/125>=2

                                      rmtuckerR Offline
                                      rmtuckerR Offline
                                      rmtucker
                                      wrote on last edited by
                                      #700

                                      @d00616
                                      My initial thoughts were how the nrf51822 could be used for energy meters (counting pulses and the gap between them),But unlike the arduino's which can not run timers when in sleep mode,The nrf5 can of course do this.
                                      So the nrf5 would be able to report watts and usage while still using sleep mode.
                                      But seeing the inaccuracy of the timer has put the brakes on that.
                                      Yes being able to change the prescaler dynamically would help a great deal as 125ms / 582.542 hours is not really useful for most applications with a 250ms overrun.

                                      d00616D 2 Replies Last reply
                                      0
                                      • rmtuckerR Offline
                                        rmtuckerR Offline
                                        rmtucker
                                        wrote on last edited by
                                        #701

                                        Just wondering what the prescaler etc would have to be set to for ms accuracy and how long before overflow.(aint got my maths head on today):blush:

                                        1 Reply Last reply
                                        0
                                        • NeverDieN NeverDie

                                          What more can be done to reduce current consumption on an nRF52832 when the MySensors "sleep" function is being used with RTC wakeup. I've measured a 300mv drop on a 10F capacitor over a 12 hour time period. Of that 300mv, perhaps 20mv was lost due to self-discharge of the supercap. So, that still leaves 280mv of loss due to the nRF52832 . That is too high a rate of loss.

                                          d00616D Offline
                                          d00616D Offline
                                          d00616
                                          Contest Winner
                                          wrote on last edited by d00616
                                          #702

                                          @NeverDie said in nRF5 Bluetooth action!:

                                          What more can be done to reduce current consumption on an nRF52832 when the MySensors "sleep" function is being used with RTC wakeup. I've measured a 300mv drop on a 10F capacitor over a 12 hour time period. Of that 300mv, perhaps 20mv was lost due to self-discharge of the supercap. So, that still leaves 280mv of loss due to the nRF52832 . That is too high a rate of loss.

                                          Wh = 0.5 * 10F * 280mV = 0.392 Wh = 0.0326667 W
                                          I=0.0326667/2.56V = 12.76mA

                                          Looks like the node is most time fully active.

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


                                          16

                                          Online

                                          11.7k

                                          Users

                                          11.2k

                                          Topics

                                          113.0k

                                          Posts


                                          Copyright 2019 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