UNPKG

3.17 kBMarkdownView Raw
1#Bluetooth Low Energy
2
3##Under Development
4
5The BLE Library is still under heavy development and most functionality isn't available but the functions outlined below work. __You will need to update your firmware to our [January 3 release](https://github.com/tessel/firmware/releases/tag/2014-01-03) (or later) in order to use this library__. That's because this is a relatively bulky code package and our old USB driver code didn't allocate enough memory.
6
7You can add more functionality if you want to look at the [BlueGiga BLE113 Datasheet](http://www.bluegiga.com/en-US/products/bluetooth-4.0-modules/ble113-bluetooth--smart-module/documentation/). You'll have to make an account on their website.
8
9###Installation
10```
11npm install ble-ble113
12```
13
14If you are using Tessel V1 (should say TM-00-00 on the back), you should wire the module to the GPIO port because UART isn't routed to the module ports in that hardware revision. GPIO 3, 2, and 1 on GPIO port goes to GPIO 3, 2, and 1 on module, respectively.
15
16If you have Tessel V2, you can use module port a, b, or d.
17
18###Example
19```
20var tessel = require('tessel');
21
22// Pick one of the two lines based on which version Tessel you have:
23// Tessel V1 (should say TM-00-00 on back) must use GPIO port
24var hardware = tessel.port('gpio');
25
26// Tessel V2 (should say TM-00-02 on back) can use any port but C
27var hardware = tessel.port('a')
28
29var ble = require('../');
30
31var bleController = ble.connect(hardware, function(err) {
32 if (err) return console.log(err);
33
34 // Use the device as a peripheral
35 // bleController.startAdvertising();
36
37 // Use the device as a master
38 // bleController.scanForPeripherals()
39});
40
41bleController.on('discoveredPeripheral', function(peripheral) {
42 console.log("Discovered a Peripheral!");
43 console.log("RSSI: ", peripheral.rssi);
44 console.log("Sender: ", peripheral.sender);
45});
46```
47
48##Events
49
50* "discoveredPeripheral"
51* "connectedPeripheral"
52* "disconnectedPeripheral"
53* "connectionStatus" for when you connect to a peripheral or a master connects to you
54* "completedProcedure" should be called after searching for peripheral handles
55* "readValue" should be called after reading the value of a handle
56* "foundInformation" called when information about characteristics is found
57* "booted"
58
59##API
60```
61scanForPeripherals(callback);
62stopScanning(callback);
63startAdvertising(callback);
64writeValue(value, callback); // Write the value to be read by a master (only 1 value available now, will increase to 64 soon)
65connectToPeripheral(address, address_type, conn_interval_min, conn_interval_max, timeout, latency, next);
66disconnectFromPeripheral(connection_handle, next);
67findInformation(connection_handle, start_handle, end_handle, next); // Used to find services/characteristics used by peripheral
68readRemoteHandle(connection_handle, attHandle, next); // Used to read a remote value being advertised by slave.
69```
70
71When used in Master mode, typically, you connect to a peripheral, call `findInformation` to get a list of available characteristics to read, then call `readRemoteHandle` with the handle returned from the foundInformation event.
72
73
74Email jon@technical.io with any questions/concerns