This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Using nRF52840-Dongle as receiver (client) for OnSet thermometer

Background/Motivation

I am currently communicating with a Onset InTemp thermometer CX402 via BLE from Windows 10 Pro.  To do this I'm using the Windows.Devices.Bluetooth namespace and classes such as BluetoothLEAdvertisementWatcher and GattCharacteristic and methods such as WriteClientCharacteristicConfigurationDescriptorAsync.

It actually works pretty well except sometimes things just "freeze".  It appears either the BLE drivers on Windows or perhaps the Windows BLE libraries (called "host layer" I believe?) have some sort of problem.  I'm still trying to diagnose if this is computer specific (seems to work great on my Acer Predator development machine :)) or perhaps bluetooth dongle specific, or is a problem on all Windows machines.  It could also be something to do with my code, although I will say when it gets in this state separate BLE programs seems to not be able to communicate with the CX402 even though separate computers can (so the CX402 is off the hook!).  A reboot of the computer fixes the problem.

Questions

It has been suggested to me that Windows implementation of BLE is less than stellar and I'd be better off using the nRF52840 dongle (or another part?) to communicate with the CX402.  In this way the BLE drivers (and host layer) would be on a device (the nRF52840) that has been tried and tested.  Furthermore, differences in Windows machines and windows BLE drivers would be irrelevant.   Questions:

1. Does this make sense?  Sound plausible? Do you need more details?

2. How do I get started?  Are there libraries for Windows to communicate with the nRF52840 and handle things like advertisements, characteristics, connecting and authenticating, etc.?  I'm just now getting into this and most of the stuff I see seems to revolve around making my own BLE device (such as a thermometer, or heart rate monitor) with the nRF52840.  I currently have no interest in this.  I'm just looking to have more robust communications with an existing device (the CX402). 

Can somebody help me get started?  Beside a background (self taught and recent) using the Windows BLE implementation, I used Nordic ANT+ devices eons ago.

Thanks you!

Andrew

Parents
  • It has been suggested to me that Windows implementation of BLE is less than stellar and I'd be better off using the nRF52840 dongle (or another part?) to communicate with the CX402.

     I'm afraid this is too true. I bet it's due to all the different BT modules that are used with computers, and many of them behave differently with regards to what behaviors the windows driver needs. 

     

    Does this make sense?  Sound plausible? Do you need more details?

     It's a known issue, we have a solution.

     

    How do I get started?

    pc-ble-driver provides C/C++ libraries for Bluetooth Low Energy nRF5 SoftDevice serialization. 

    pc-ble-driver-py is a serialization library over serial port that provides Python bindings for the pc-ble-driver library.

    pc-ble-driver-js is a High-level Node.js API for Bluetooth Low Energy (BLE) using nRF51 and nRF52 hardware. Similar to the python library, but has a greater feature set. Use this library over the python one. 

  • Thank you for your response.  Do you have libraries for C#?  I'm developing in C# (Visual Studio 2019) on a Windows 64 bit platform.  I briefly looked at your first link (pc-ble-driver) but in addition to being in C++, I did not see any solution or project files for Visual Studio/C#.  Thanks.

Reply Children
Related