Working with the nRF52840 and BLE 5.0 2M PHY? Need confirmation on hardware abilities

Hey there! I'm very new to BLE, so I wanted to reach out in this forum to confirm hardware capabilities before I purchase any devices. I'm currently looking at the nRF52840 Dongle, and I've never used the Nordic SDK before. Many devices I've tried to use (Such as the raspberry pi) say that they offer "BLE 5.0", yet, they are lacking the most important features I need, 2MHz transfer speeds and the long distance abilities. I wanted to confirm whether or not this chip can use 2M PHY, and also ask about it's use case.

I'm hoping to program the dongle via my Windows Laptop, and then transfer it to a Raspberry Pi to run as a USB serial device. The goal is to get it talking with another nRF52840 chip, specifically the nRF52 Adafruit Feather. The Feather board will be recording data from sensors, and sending this data via a high-speed (2M PHY) BLE Connection. I then need the USB dongle (plugged into the Pi) to dump it's received data into a serial terminal or directly into a text file. I may also need to setup a Python program on the Pi that could talk with this device. Is this possible to do? I have seen how to use the Nordic rfConnect software to setup specific devices, but I have no idea how to do File I/O in that environment. It seems like it's just setting up BLE characteristics and isn't an entire programming environment (like MPLab or Arduino IDE).  

Please let me know if there are any specific details that I have left out. I'm most curious whether or not this setup is possible and practical, or if I need to try a different approach. BLE is still fairly black magic to me and I keep buying devices that don't have the physical capabilities I need.

Thank you for your time and expertise!

Parents
  • Hi,

    You can find an overview of the capabilities of the various nRF52 variants on the nRF52 Series page in our Infocenter. For nRF52840, we support both 2 Mbps and Long range for Bluetooth 5 PHYs. For testing the throughput of the chip, you can either use the ATT_MTU Throughput Example from the SDK between two nRF52 boards, or have a look at the nrf52-ble-image-transfer-demo between a nRF52 board and a mobile phone.

    The nRF52840 Dongle is not intended as a development board, as it does not contain debugging capabilities. It is primarily intended for use with our ready-made development tools, like nRF Connect applications, Thread boarde routers, etc. Due to the debugging capabilities, the SDK have limited examples which implements support for the Dongle out of the box. The nRF52840 DK would be a better option if you intend to build your own application.

    For general data transmission over BLE, you can use the Nordic UART Service (NUS), demonstrated in UART/Serial Port Emulation over BLE. For the Dongle, this is supported in Peripheral mode in USBD BLE UART Example. As far as I know, we do not have any NUS central examples with support for the nRF52840 Dongle.

    Regarding Python support, you could simply use Pyserial or similar, if you are using the NUS examples. This will not give you any possibilities to modify BLE parameters from the application, but these might be static in your case anyways? The other alternative is to use pc-ble-driver-py, which gives you access to the Softdevice (BLE stack) API directly from the Python application.

    I would recommend you to have a look at the Software development Getting Started Guides, to get familiar with the Software offerings from Nordic and how to get started with your development.

    Best regards,
    Jørgen

  • Geoff McIntyre said:
    I could use two nRF devices and then connect one via UART, but that would limit my data-rate to USB transfer speeds, something like 115200 bps.

    The USB port of nRF52840 supports USB Full Speed (up to 12 Mbps), and the UART support baudrates up to 1 Mbaud. Both these interfaces should be able to transfer 16MB of data in 2 minutes, given that you use the EasyDMA to transfer large blocks of data received over BLE, to avoid being blocked by the Softdevice (BLE stack) to provide new data for transfer. SPI is also an option, with support for up to 32 MHz on one instance.

    We do not have any examples showing exactly what you are asking, but if you decide on the transport you want to use, I can try to give you some pointers. If you plan to use the nRF52840 Dongle for this task, I would highly recommend that you get a nRF5x DK and solder debug headers to the dongles, to enable debugging of the applications. Without this, it is almost impossible to develop applications successfully.

Reply
  • Geoff McIntyre said:
    I could use two nRF devices and then connect one via UART, but that would limit my data-rate to USB transfer speeds, something like 115200 bps.

    The USB port of nRF52840 supports USB Full Speed (up to 12 Mbps), and the UART support baudrates up to 1 Mbaud. Both these interfaces should be able to transfer 16MB of data in 2 minutes, given that you use the EasyDMA to transfer large blocks of data received over BLE, to avoid being blocked by the Softdevice (BLE stack) to provide new data for transfer. SPI is also an option, with support for up to 32 MHz on one instance.

    We do not have any examples showing exactly what you are asking, but if you decide on the transport you want to use, I can try to give you some pointers. If you plan to use the nRF52840 Dongle for this task, I would highly recommend that you get a nRF5x DK and solder debug headers to the dongles, to enable debugging of the applications. Without this, it is almost impossible to develop applications successfully.

Children
No Data
Related