my first nrf5 ... NRF51/NRF52 which is better for MySensors ?



  • Hi,

    I want to start using nrf5 with mysensors. I'm looking for some easy to use nrf52832 modules that does not require much external components (if any). I found this:
    https://pl.aliexpress.com/store/product/Nordic-nRF52832-module-Bluetooth-low-energy-development-board-for-BLE-mesh/420533_32867403706.html?spm=a2g17.12010612.8148356.6.71c7caa2i1bdWy

    Is it good for use with battery powered node ? I'm not sure but it has the 32kHz oscilator and inductor for low power mode. The module exposes swdio ad swdclk pins for programming so it can be programmed with cheap st-link v2 compatible programmers ? I would like to power it directly from coincell battery. So after connecting just a battery could it already talk with other mysensors nodes ?



  • Oh, and could it be used as a gateway also ? I read somewhere that for low power nodes the low-frequency oscillator should be choosed and for normal nodes the high-frequency crystal should be should be choosed. So it seems like the hardware for low power node cannot be also used as a gateway. Is it true ?



  • Hi,

    I'm looking through datasheets and it seems like there is not so much difference between the two. Of course the nrf52832 has more peripherials, memory and is a little bit more low power but those aspects are not so important for my use case. So what would make nrf52832 better for mysensors ? The nrf52832 has -96dBm sensivity at 1Mbps data rate (and do not have 250kbps data rate) and nrf51822 also have -96dBm sensivity at 250kbps data rate. Both have +4dBm transmit power. So for me it looks like if there is no peripherials or memory limitations both chips are equally good for MySensors network.


  • Hardware Contributor

    Hello, I have merged your 2 topîcs are they are relatively similar.


  • Hardware Contributor

    @rozpruwacz said in my first nrf5:

    Oh, and could it be used as a gateway also ? I read somewhere that for low power nodes the low-frequency oscillator should be choosed and for normal nodes the high-frequency crystal should be should be choosed. So it seems like the hardware for low power node cannot be also used as a gateway. Is it true ?

    If you are using MySensors, you don't care at the LF oscillator, as it is used to keep precise timing in bluetooth mode (node sleeps and has to wake up at a very precise moment to receive messages). In MySensors it's not the same the LF clock is not used. What you need to save power is inductor so the chip can use it's internal DC-DC converter and use much less power when sending/receiving with the radio.

    Regarding the high frequency clock you always need one, opposite to the atmega chips you can't set the frequency with the NRF5 chips, NRF51 will run at 16MHz and NRF52 at 64MHz, and for that they need their high frenquency clock. You can see it on the picture of the module, metallic rectangle with a gold "frame", it's written 32MHz on it.


  • Hardware Contributor

    @rozpruwacz said in my first nrf5:

    Hi,

    I'm looking through datasheets and it seems like there is not so much difference between the two. Of course the nrf52832 has more peripherials, memory and is a little bit more low power but those aspects are not so important for my use case. So what would make nrf52832 better for mysensors ? The nrf52832 has -96dBm sensivity at 1Mbps data rate (and do not have 250kbps data rate) and nrf51822 also have -96dBm sensivity at 250kbps data rate. Both have +4dBm transmit power. So for me it looks like if there is no peripherials or memory limitations both chips are equally good for MySensors network.

    There is a lot of difference in terms of RAM (16K/64K) and in terms of processing power (64MHz M4 vs 16MHz M0). Even the flash can make a difference as with OTA update you need to split the memory in different parts, so you have at best half of the memory available for your program (for current firmware, and other half for downloading firmware). In reality it's even less than that because you need bootloader, and some part for permanent storage.

    In terms of "low power" there's a significant improvement in transmit/receive power, and if you can transmit at 1M instead of 250k for the same sensitivity budget it means you need to transmit only 1/4 of the time, big improvement... With only 50% of sleep power also, there's no comparison NRF52832 is much better.
    NRF51 also have some limitations in terms of interrupt, it's a problem for low power nodes as over one interrupt you have to make relatively complex tricks to keep very low power in deep sleep.

    Given the low price difference between the 2 chips and all the extra stuff in the NRF52, there is no reason to chose NRF51 now, except if you're really, really tight on budget.



  • @nca78 said in my first nrf5 ... NRF51/NRF52 which is better for MySensors ?:

    In terms of "low power" there's a significant improvement in transmit/receive power, and if you can transmit at 1M instead of 250k for the same sensitivity budget it means you need to transmit only 1/4 of the time, big improvement... With only 50% of sleep power also, there's no comparison NRF52832 is much better.
    NRF51 also have some limitations in terms of interrupt, it's a problem for low power nodes as over one interrupt you have to make relatively complex tricks to keep very low power in deep sleep.

    Ok, so the winner is nrf52832 🙂

    regarding the low frequency oscillator, here it is written in the "Buying guide" section that "If you plan to make a battery powered sensor, you should choose a module including the low-frequency oscillator (32,768kHz) for precise low power sleep modes". So this is not true as the LF clock is not used by MySensors ?


  • Hardware Contributor

    @rozpruwacz said in my first nrf5 ... NRF51/NRF52 which is better for MySensors ?:

    regarding the low frequency oscillator, here it is written in the "Buying guide" section that "If you plan to make a battery powered sensor, you should choose a module including the low-frequency oscillator (32,768kHz) for precise low power sleep modes". So this is not true as the LF clock is not used by MySensors ?

    Maybe I'm wrong when I say it is "not used by MySensors". But the way it is used if it's used is different than in bluetooth mode. Without it with MySensors all you will have is less precise sleeping duration because it will use the internal oscillator. In bluetooth it will use internal oscillator and wake up regularly to calibrate it, resulting in something like 10uA average current consumption, so in that case it's really a big problem. But if you're only planning to use MySensors and not planning to switch to BLE later, you will have 0 real problem without the LF clock.



  • @nca78 ok thaks, so in Your opinion does the module I linked is good for testing/prototyping nrf5 MySensors nodes ?



  • @rozpruwacz it looks pretty workable for testing purposes. For a final product my choice is something lika fanstel or ebyte module. Those are just easier to get into smaller cases etc. (Just my personal preference)


  • Hardware Contributor

    @rozpruwacz said in my first nrf5 ... NRF51/NRF52 which is better for MySensors ?:

    @nca78 ok thaks, so in Your opinion does the module I linked is good for testing/prototyping nrf5 MySensors nodes ?

    It is good enough yes, it seems complete, but be careful it also seems to use 2mm headers, so you will need either 2->2.54mm adapters or a custom PCB to use it on breadboard.
    Also, you will need a programmer. The cheapest option is making a black magic probe, check the nrf5 thread for that.

    Another solution is a NRF52 DK to have both a jlink programmer and all pins broken out to 2.54mm headers (uno format) but it's over 30$.



  • @nca78 @rozpruwacz indeed the nrf52dk will cost you a bit more, but will save you the troubleshooting. It's all ready and setup, so you only need to worry about the software side.

    I have one myself and I'm pleased I did buy one when I started this journey.



  • What about the nRF52840 ? Newer, better, bigger and back to the 250Kbps.
    And if you get the j-link edu for example you can use some nice debug tools such as the Ozone, I wasted my time enough before running after $2 st-links.



  • @wassfila do You know any cheap, prototyping friendly nRF52840 boards ?



  • @rozpruwacz I would strongly encourage you do start with nrf52832 ebyte mosule coupled with Nevrdie's breakout board. It is a) proven b) cheap c) breadboard friendly



  • I started with nRF52 a few days ago. I have the Nordic nRF52 SDK board (PCA10056) with a nRF52840 operational as a MySensors serial gateway together with Home Assistant on a RaspberryPI (with Hass.io). I am using the Arduino nRF5 and the sandeepmistry nRF5 board libraries.

    Some issues:
    - It looks like it only works in debug mode. But in debug mode, both debug messages and gateway messages appear on the usb port. Homes Assistant is not confused by the debug messages.
    - Leds are not working.
    - The programmer on the Arduino IDE is not working for me ("No J-Link" error, while there is a J-Link interface available), so I export a HEX fle form Arduino IDE and program the board with the nRFConnect tool from Nordic.

    In order to solve the issues above, I installed the Segger environment. With the board you get a free license from Nordic and you can do some fancy debugging. I also looked at Keil but that is a no-go for me. With Segger, I can upload a simple Blink example from Nordic to the board an debug it. I am now struggling with importing the MySensors library sources in Segger. If someone did this before, please let me know (!). Once this is done, I can debug the code on the hardware. May be I could fix the issues, like non blinking leds, by inspecting the code and watch for configuration issues of the ports (the addressing of the ports seems to be OK). But being able to debug would be a big plus in future development.

    Off course, once the gateway is working with blinking leds, I want to replace the development board with something cheaper from E-Bay et al. I want to give this one a try:
    https://www.aliexpress.com/item/Nordic-nRF52840-module-Bluetooth-low-energy-long-range-500-meters-bluetooth-5-0-PCB-IPX-Antenna/32953759053.html
    The plus of this board is that you can use an external 2.4 Ghz antenna. And it has the newest 52840. If you are creating a gateway, I suppose your budget will not depend on $3 price difference.

    Once all that is done, I want to turn my Nordic Thingy (https://www.nordicsemi.com/eng/Products/Nordic-Thingy-52) into a MySensors device. Seems like doable. But someone has to do it.



  • Just discovered that this thread covers about the same topic I addressed:
    https://forum.mysensors.org/topic/9717/everything-nrf52840
    Sorry.



  • @rozpruwacz yeah nRF52840 is here with reasonably priced boards. I got one from ali shop holyiot 18010 now for around 6.5 €, and as mentioned @hugob the nRF52-Dongle, which is by the way available at mouser for 9 € only. And you can follow his link for further nRF52840 discussion.
    I would not know how to help with the sw, in the projects I worked on, I simply used a similar environment to the Nordik SDK framework simply with makefiles. I do have a segger j-link debugger that allows using ozone, and I flash with the command line flashing utilities, even adding some fancy python scripts for user id based customisation.



  • @hugob said in my first nrf5 ... NRF51/NRF52 which is better for MySensors ?:

    • The programmer on the Arduino IDE is not working for me ("No J-Link" error, while there is a J-Link interface available), so I export a HEX fle form Arduino IDE and program the board with the nRFConnect tool from Nordic.

    if read sandeep's notes on Githun, you'll find you have to replace the driver with Zaddig but then Jlink will stop functioning in Keil.
    That's why I use BMP for Arduino-style programming as it has its own drivers and do not ruin jlink installation



  • how do you guys solder nrf52840 modules without reflow oven?
    they have many pads at the bottom



  • thank all for the replies. I know that the nrf52840 is the best when concidering the hardware, but according to this:
    https://www.openhardware.io/view/376/MySensors-NRF5-Platform
    it is not supported by MySensors. Is it still true ?
    I started this thread because sadly I just don't have anymore the time to do any research and hacking. What I want to do is to buy some relatively cheap boards that I don't need to solder any additional components, upload some example MySensors sketches and see how it works (mainly to compare the range to nrf24 and rfm69). So smd modules are no good for me, but if there is some "motherboard" or expansion board it may be enough.


  • Mod

    @rozpruwacz then you should probably go with Toyman's earlier recommendation.



  • @rozpruwacz said in my first nrf5 ... NRF51/NRF52 which is better for MySensors ?:

    So smd modules are no good for me

    If so, your only choice is nrf52DK. Solid investment given you get jlink programmer with it


  • Hero Member

    @rozpruwacz I think Nordic's nRF52840-DONGLE would meet your criteria. No need to solder anything else. Only $10, even through trusted Nordic resellers. I do agree with Toyman, though, that a nRF2840-DK is another good option. Or get both: one for each end of the radio link. 🙂

    Or, if you want something with sensors already on it, you could try Nordic's "thingy". I haven't tried it myself, but I'm confident it works given that Nordic makes it.



  • @neverdie said in my first nrf5 ... NRF51/NRF52 which is better for MySensors ?:

    another

    i'm confused 🙂 I asked about it but did not received an answer. Is nRF52840 supported by MySensors ?


  • Hero Member

    @rozpruwacz I think the answer may be yes, though my focus of late has been on other things (namely OTA updates) and I haven't tried it recently.

    I say that because the platformio support for the nRF52840 seems to be built on the Sandeep Mistry library. So, either the library is sufficient as is, or else platformio enhanced it to support the nRF52840. So, one way and/or the other, it should be possible.



  • I set up an NRF52840 on MySensors by programming it like it was an NRF52382: Arduino IDE, sandeep's libraries, using the MyBoardNRF52 board type. I ran a MockMySensors sketch and it worked.
    I haven't played with it beyond that. I'm not sure of that would give you any advantage over just using an NRF52. It wouldn't let you use any of the new pins or other new features of the NFR52840, at least not without some programming.



  • Ok, so nrf52840 dongle seems like the best solution.



  • I have been able to use platformio for my project quite recently and still have some problems that I haven't had time to solve yet.

    My platformio.ini for a NRF51832

    [env:nrf51_dk]
    platform = nordicnrf51
    framework = arduino
    board = rfduino
    upload_protocol = stlink
    board_build.f_cpu = 16000000L
    build_flags = -DNRF51 -DMYBOARDNRF5 -I{build.path}
    

    the only problem for my is that the flags

    -DMYBOARDNRF5 -I{build.path}
    

    dosen't work so the mynrf5board.h/c isn't read => I need to update the
    vim ~/.platformio/packages/framework-arduinonordicnrf5/variants/Generic/variant.h myself.



  • I have a small update for those who follow this thread. So I bought tje st-link v2 programmer and the only [nrf5 board](https://www.waveshare.com/wiki/Core51822. .com/wiki/Core51822) that was available in my country (Poland). This was only to get used to nordic environment. So With this setup I was able to run nrf51 sdk examples and MySensors examples without any problems. For MySensors I just followed this. And for compiling and uploading nordic sdk I used GNU MCU Eclipse. I was very suprised that this eclipse plugin works so well, no problems at all. And the latest eclipse cdt has suport also for arduino so I could compile and run MySensors code also from eclipse 🙂 As far as I used it, the Arduino support in eclipse lacks only importing example projects, "burn bootloader" and "Upload Using a Programmer" tools. Oh, and the serial monitor in eclipse does not have any settings for adding cr at the end of line, so MySensors debug log is not readable.

    Regarding nrf51822 board, it has much better range that nrf24L01+ that I used before. But it is not good for sleeping MySensors nodes due to high current consumption when waiting for gpio interrupt. It could be fixed by changing the nrf5 mysensors implementation to use gpio port event just like in nrf51 sdk examples - this applies to all nrf51822 boards. And the board I have lacks inductors required for low power dcdc setup.

    And now I'm waiting for my nrf52840 dongles 🙂



  • so I got my nrf52840 dongle 🙂 I was able to run mysensors node and serial gateway using MyBoardNRF5 nrf52832 board. So far so good 🙂 I was also able to upload the sketch using usb dfu, it required minor changes to the linker script although.
    But from the first tests it appears that the range of the nrf52840 dongle i less than the nrf51822 board I was using before 😞


Log in to reply
 

Suggested Topics

  • 87
  • 6
  • 5
  • 3
  • 7
  • 7

46
Online

11.4k
Users

11.1k
Topics

112.7k
Posts