User Tools

Site Tools


doc:crazyflie:ble:index

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
Next revision Both sides next revision
doc:crazyflie:ble:index [2014-12-16 09:35]
arnaud created
doc:crazyflie:ble:index [2017-08-02 10:26]
arnaud [Crazyflie 2.0 BLE Protocol]
Line 1: Line 1:
 +====== Crazyflie 2.0 BLE Protocol ======
  
 +The current implementation of Bluetooth Low Energy (BLE) in Crazyflie 2.0 is basically a CRTP bridge. It allows to send and receive CRTP packets to and from the Crazyflie 2.0 main CPU, the STM32F4. This means that to control the Crazyflie and send/receive information the classical CRTP ports are used (ie. Commander, Log, Param).
 +BLE services are implemented in the NRF51, therefore it is possible to implement more services.
 +===== Crazyflie service =====
 +
 +The crazyflie service has the UUID 00000201-1C7F-4F9E-947B-43B7C00A9A08
 +
 +==== Characteristics ====
 +
 +=== CRTP ===
 +  * **UUID**: 00000202-1C7F-4F9E-947B-43B7C00A9A08
 +  * **Length**: 32
 +  * **Properties**: read, write, notify
 +
 +This characteristics allows to directly send and received complete CRTP packets. Though it is limited to 20 bytes only due to BLE stack implementation limitation.
 +
 +=== CRTPUP ===
 +  * **UUID**: 00000203-1C7F-4F9E-947B-43B7C00A9A08
 +  * **Length**: 20
 +  * **Properties**: write, write_no_response
 +
 +Allows to send CRTP packet to Crazyflie. The data format is designed to deal with the BLE 20Byte packets limitation VS the classical CRTP 32Bytes packets size. The first byte is a control byte and the rest is raw data. The first byte format is:
 +| **Bit** | **Function** |
 +|    7    | Start        |
 +|   5-6   | PID          |
 +|   0-4   | Length       |
 +
 +//PID// is incremented for every CRTP packet. It permits to make sure no corrupted packet will be generated in case of packet loss.
 +
 +When sending a CRTP packet //Start// is 1 and //Length// is the packet length-1 (ie. no point in sending empty packets). If the packet length is higher than 19 the characteristic is written a second time with //start// at 0, //Length// at 0, but //PID// unchanged and the rest of the data.
 +
 +<code>
 +For example to send the CRTP packet: ff 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20
 +
 +The CRTPUP characteristics is written two times with the values (assuming PID=0):
 +First write:  95 ff 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18
 +Second write: 00 19 20
 +</code>
 +
 +=== CRTPDOWN ===
 +  * **UUID**: 00000204-1C7F-4F9E-947B-43B7C00A9A08
 +  * **Length**: 20
 +  * **Properties**: read, notify
 +
 +Allows to receive packets from the copter. The data format is identical to CRTPUP.
doc/crazyflie/ble/index.txt · Last modified: 2020-05-12 14:15 by kimberly