From 13184e4479c7baa437b086bcdffe88c156f4ac7a Mon Sep 17 00:00:00 2001 From: Sam Calisch <s.calisch@gmail.com> Date: Fri, 7 Jul 2017 20:14:37 -0400 Subject: [PATCH] added ble uart example --- rf/nrf52832_ble/ble_timing.png | Bin 0 -> 44915 bytes rf/nrf52832_ble/ble_uart_ring.ino | 55 ++++++++++ rf/nrf52832_ble/ble_uart_ring.py | 52 ++++++++++ rf/nrf52832_ble/index.html | 164 ++++++++++++++++++++++++++++++ 4 files changed, 271 insertions(+) create mode 100644 rf/nrf52832_ble/ble_timing.png create mode 100644 rf/nrf52832_ble/ble_uart_ring.ino create mode 100644 rf/nrf52832_ble/ble_uart_ring.py create mode 100644 rf/nrf52832_ble/index.html diff --git a/rf/nrf52832_ble/ble_timing.png b/rf/nrf52832_ble/ble_timing.png new file mode 100644 index 0000000000000000000000000000000000000000..82edd8847862aba9eb4380f821854fc59316dda2 GIT binary patch literal 44915 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 literal 0 HcmV?d00001 diff --git a/rf/nrf52832_ble/ble_uart_ring.ino b/rf/nrf52832_ble/ble_uart_ring.ino new file mode 100644 index 0000000..04f6602 --- /dev/null +++ b/rf/nrf52832_ble/ble_uart_ring.ino @@ -0,0 +1,55 @@ +#include <bluefruit.h> + +BLEDis bledis; +BLEUart bleuart; +uint8_t ch; + +void setup() +{ + Serial.begin(115200); + Serial.println("Bluefruit52 BLEUART Example"); + + Bluefruit.begin(); + Bluefruit.setName("Bluefruit52"); + Bluefruit.setConnectCallback(connect_callback); + Bluefruit.setDisconnectCallback(disconnect_callback); + + // Configure and Start Device Information Service + bledis.setManufacturer("Adafruit Industries"); + bledis.setModel("Bluefruit Feather52"); + bledis.begin(); + + bleuart.begin(); // Configure and Start BLE Uart Service + setupAdv(); // Set up Advertising Packet + Bluefruit.Advertising.start(); // Start Advertising + + while(1){ + // echo BLEUART + if ( bleuart.available() ) + { + ch = (uint8_t) bleuart.read(); + bleuart.write(&ch,1); + } + } +} + +void setupAdv(void) +{ + Bluefruit.Advertising.addFlags(BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE); + Bluefruit.Advertising.addTxPower(); + // Include bleuart 128-bit uuid + Bluefruit.Advertising.addService(bleuart); + // There is no room for Name in Advertising packet, so use Scan response for Name + Bluefruit.ScanResponse.addName(); +} + +void loop(){} + +void connect_callback(void) {Serial.println("Connected");} +void disconnect_callback(uint8_t reason) +{ + (void) reason; + Serial.println(); + Serial.println("Disconnected"); + Serial.println("Bluefruit will start advertising again"); +} diff --git a/rf/nrf52832_ble/ble_uart_ring.py b/rf/nrf52832_ble/ble_uart_ring.py new file mode 100644 index 0000000..1541c7d --- /dev/null +++ b/rf/nrf52832_ble/ble_uart_ring.py @@ -0,0 +1,52 @@ +# Round trip timing of BLE UART Service +# Sam Calisch, 2017 +# Adapted from Tony DiCola's BLE UART example: https://github.com/adafruit/Adafruit_Python_BluefruitLE +import Adafruit_BluefruitLE +from Adafruit_BluefruitLE.services import UART +import time + +ble = Adafruit_BluefruitLE.get_provider() + +def main(): + ble.clear_cached_data() + adapter = ble.get_default_adapter() + adapter.power_on() + print('Using adapter: {0}'.format(adapter.name)) + UART.disconnect_devices() + print('Searching for UART device...') + try: + adapter.start_scan() + device = UART.find_device() + if device is None: + raise RuntimeError('Failed to find UART device!') + finally: + adapter.stop_scan() + print('Connecting to device...') + device.connect() + + try: + print('Discovering services...') + UART.discover(device) + uart = UART(device) + print "Measuring" + i = 0 + N = 100 + t0 = time.time(); + times = [] + #we run 2N trials + #the first N trials wait for a response from the ble uart + #the second N trials don't wait for a response, in order to time the host side of the loop + while(i<2*N): + uart.write('\n') #write newline to the TX characteristic. + received = uart.read(timeout_sec=10) if i<N else 10 + if received is not None: + times.append( time.time()-t0 ) + t0 = time.time() + i = i+1 + finally: + device.disconnect() #disconnect on exit. + print "Disconnected" + print times + +ble.initialize() +ble.run_mainloop_with(main) diff --git a/rf/nrf52832_ble/index.html b/rf/nrf52832_ble/index.html new file mode 100644 index 0000000..208fe51 --- /dev/null +++ b/rf/nrf52832_ble/index.html @@ -0,0 +1,164 @@ +<html> +<head> +<style> +pre code { + background-color: #eee; + border: 1px solid #999; + display: block; + padding: 20px; +} +figure{ + text-align: center +} +</style> + + +</head> +<body> + +<h1>NRF52832 BLE</h1> + +<figure> +<img src='ble_timing.png' width=50%> +<figcaption>Timing 100 packets sent from a host and echoed by an nrf52 using the BLEUart Service.</figcaption> +</figure> + +<p>This RF ring oscillator runs on the NRF52 BLE SOC using the Adafruit feather development board. The NRF52 has an ARM Cortex M4F running at 64 MHz with built in BLE radio. This example uses a BLE stack provided by Adafruit. In particular, it makes use of the BLEUART service, a wrapper for the Nordic UART Service. On a host PC, we run a python script using the Adafruit BluefruitLE library.</p> + +<p>To estimate round trip timing between two nodes with time loops of the host program where a byte is sent to the slave, and the slave sends the byte back. We also time the loop (including the sending) without waiting for the response. In this way, we can subtract the time taken by the host and estimate the time for a single RX and TX by the slave. The round trip packet time (as is consistent with other examples on this site) is then twice this estimate.</p> + +<p>An arduino sketch for the oscillator is available <a href='ble_uart_ring.ino'>here</a>, or visible below.</p> + +<pre> +<code> +#include <bluefruit.h> + +BLEDis bledis; +BLEUart bleuart; +uint8_t ch; + +void setup() +{ + Serial.begin(115200); + Serial.println("Bluefruit52 BLEUART Example"); + + Bluefruit.begin(); + Bluefruit.setName("Bluefruit52"); + Bluefruit.setConnectCallback(connect_callback); + Bluefruit.setDisconnectCallback(disconnect_callback); + + // Configure and Start Device Information Service + bledis.setManufacturer("Adafruit Industries"); + bledis.setModel("Bluefruit Feather52"); + bledis.begin(); + + bleuart.begin(); // Configure and Start BLE Uart Service + setupAdv(); // Set up Advertising Packet + Bluefruit.Advertising.start(); // Start Advertising + + while(1){ + // echo BLEUART + if ( bleuart.available() ) + { + ch = (uint8_t) bleuart.read(); + bleuart.write(&ch,1); + } + } +} + +void setupAdv(void) +{ + Bluefruit.Advertising.addFlags(BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE); + Bluefruit.Advertising.addTxPower(); + // Include bleuart 128-bit uuid + Bluefruit.Advertising.addService(bleuart); + // There is no room for Name in Advertising packet, so use Scan response for Name + Bluefruit.ScanResponse.addName(); +} + +void loop(){} + +void connect_callback(void) {Serial.println("Connected");} +void disconnect_callback(uint8_t reason) +{ + (void) reason; + Serial.println(); + Serial.println("Disconnected"); + Serial.println("Bluefruit will start advertising again"); +} + +</code> +</pre> + + + +<p>The python host script is available <a href='ble_uart_ring.py'>here</a>, or visible below.</p> + +<pre> +<code> +# Round trip timing of BLE UART Service +# Sam Calisch, 2017 +# Adapted from Tony DiCola's BLE UART example: https://github.com/adafruit/Adafruit_Python_BluefruitLE +import Adafruit_BluefruitLE +from Adafruit_BluefruitLE.services import UART +import time + +ble = Adafruit_BluefruitLE.get_provider() + +def main(): + ble.clear_cached_data() + adapter = ble.get_default_adapter() + adapter.power_on() + print('Using adapter: {0}'.format(adapter.name)) + UART.disconnect_devices() + print('Searching for UART device...') + try: + adapter.start_scan() + device = UART.find_device() + if device is None: + raise RuntimeError('Failed to find UART device!') + finally: + adapter.stop_scan() + print('Connecting to device...') + device.connect() + + try: + print('Discovering services...') + UART.discover(device) + uart = UART(device) + print "Measuring" + i = 0 + N = 100 + t0 = time.time(); + times = [] + #we run 2N trials + #the first N trials wait for a response from the ble uart + #the second N trials don't wait for a response, in order to time the host side of the loop + while(i<2*N): + uart.write("\n") #write newline to the TX characteristic. + received = uart.read(timeout_sec=10) if i<N else 10 + if received is not None: + times.append( time.time()-t0 ) + t0 = time.time() + i = i+1 + finally: + device.disconnect() #disconnect on exit. + print "Disconnected" + print times + +ble.initialize() +ble.run_mainloop_with(main) + +</code> +</pre> + + +<p>Note: This test was run on a the Adafruit Feather Dev board, which uses the Raytac MDBT42Q module, incorporating the NRF52. The module retails for $7, the development board retails $24. Other modules are available for $5 from Fanstel.</p> + + + +<p><a href='../../index.html'>Back</a></p> + +</body> + +</html> \ No newline at end of file -- GitLab