DFRobot Bluno Boards
The DFRobot Bluno Boards are a series of Arduino-compatible development boards (e.g., Bluno Uno, Bluno Nano) developed by DFRobot that integrate a Bluetooth 4.0 (BLE or Bluetooth Low Energy) module (specifically, a TI CC2540 chip). This integration allows developers to add wireless communication, smartphone control (via associated apps for iOS and Android), and even wireless programming capabilities to their Arduino projects with ease. The boards are fully compatible with Arduino Nano, Arduino UNO, Arduino Mega 1280, and Arduino Mega 2560.
The boards can easily be used with Android and iOS applications because DFRobot provides a mobile SDK for those platforms. However, the boards cannot be used with Windows applications that use the standard Microsoft Bluetooth LE API. You can connect to the board, read and write attributes, but you cannot receive any characteristic change notifications. The problem is that the board's firmware has a critical bug: its notifiable characteristic does not have a client configuration descriptor. But the Windows WinRT GATT API requires that!
With the Bluetooth Framework, you can solve this problem and use the boards without any issues, and your application will receive characteristic change notifications as it should. Should you have any questions, please do not hesitate to contact us.
How It Works
To test this feature, you can use the GattClient sample application from the Bluetooth Framework package. Start the sample application and click the Discover button. When BLE device discovery is completed, select the board in the found devices list. Now, set the Force indications checkbox. Click the Connect button. The board will be paired during connection. The sample application uses the default PIN, which is "0000". If your board uses a different PIN, change it in the OnPinRequest event handler in the sample application.
When the connection is established (you can track this in the log listbox at the bottom of the application - the Connected event's Error parameter will have a value of 0x00000000), you can start working with your board. After reading the services and characteristics, select the notifiable one and simply click the Subscribe button. Now the application will start receiving characteristic change notifications.
In your code
To work with the Bluno boards, use the wclGattClient class. The class has the ForceNotifications property, which must be set to true to enable receiving the characteristic change notifications from the Bluno boards (or from any other GATT-enabled device that does not have the client configuration descriptor). The board will be paired during connection establishing, so your application must handle the OnPinRequest event of the wclBluetoothManager class. The default PIN is "0000".
When the connection is established, your application can start receiving notifications by simply calling the Subscribe method of the wclGattClient class. Your application must not call the WriteClientConfiguration in this case because the boards do not have the client configuration descriptor configured for the characteristic.
For more details, please refer to the GattClient sample application source code.