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 &ltbluefruit.h&gt
+
+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&ltN 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