A library for easier setup and prototyping of IoT devices (pucks), by collecting everything that is common for all pucks in one place.
Dependencies: BLE_API nRF51822
Dependents: ir-puck display-puck ir-puck2 BLE_ScoringDevice ... more
Introduction
Raspberry Pi took the maker community by storm when it launched in 2012. With its internet access it allowed small projects to be internet-of-things enabled. We have created a platform to take this one step further.
Our platform, called the Puck platform, is an internet of things platform for mbed. mbed makes it easy to program embedded hardware for people new to embedded systems. Our platform is built upon the first mbed chip with Bluetooth, the nRF51822 created by Nordic Semiconductor. We hope to create a community around these BLE devices where people contribute to the project, and share their designs with each other. Everything is open-source, of course, with lots of supporting materials.
We make it easy to rapidly prototype and develop Bluetooth LE enabled devices - get up and running in under 10 lines of code.
Tutorials and in-depth documentation is available at the project's GitHub page
Pucks
We've developed a handful of awesome examples to demonstrate the platform. These examples are named 'Pucks'. By talking to the internet through your smartphone, the barrier to creating your own Internet of Things device is lower than ever.
- The Location Puck (All Pucks use the Location Puck as a starting point)
- The IR Puck
- The Cube Puck
- The Display Puck
Revision 0:718051934fdb, committed 2014-07-15
- Comitter:
- stiaje
- Date:
- Tue Jul 15 14:33:09 2014 +0000
- Child:
- 1:29b2cca0d529
- Commit message:
- Initial commit
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/BLE_API.lib Tue Jul 15 14:33:09 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/teams/Bluetooth-Low-Energy/code/BLE_API/#8890715aaf55
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Puck.cpp Tue Jul 15 14:33:09 2014 +0000 @@ -0,0 +1,46 @@ +#include "mbed.h" +#include "Puck.hpp" + +Puck::Puck(bool connectable, uint16_t minor) : _connectable(connectable) { + /* + * The Beacon payload (encapsulated within the MSD advertising data structure) + * has the following composition: + * 128-Bit UUID = E2 0A 39 F4 73 F5 4B C4 A1 2F 17 D1 AD 07 A9 61 + * Major/Minor = 1337 / XXXX + * Tx Power = C8 + */ + uint8_t beaconPayloadTemplate[] = { + 0x00, 0x00, // Company identifier code (0x004C == Apple) + 0x02, // ID + 0x15, // length of the remaining payload + 0xE2, 0x0A, 0x39, 0xF4, 0x73, 0xF5, 0x4B, 0xC4, // UUID + 0xA1, 0x2F, 0x17, 0xD1, 0xAD, 0x07, 0xA9, 0x61, + 0x13, 0x37, // the major value to differenciate a location (Our app requires 1337 as major number) + 0x00, 0x00, // the minor value to differenciate a location (Change this to differentiate location pucks) + 0xC8 // 2's complement of the Tx power (-56dB) + }; + beaconPayloadTemplate[22] = minor >> 8; + beaconPayloadTemplate[23] = minor & 255; + + for (int i=0; i < 25; i++) { + _beaconPayload[i] = beaconPayloadTemplate[i]; + } +} + +void Puck::init(void) { + _ble.init(); + + _ble.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED); + _ble.accumulateAdvertisingPayload(GapAdvertisingData::MANUFACTURER_SPECIFIC_DATA, + _beaconPayload, sizeof(_beaconPayload)); + + if (_connectable) { + _ble.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED); + } else { + _ble.setAdvertisingType(GapAdvertisingParams::ADV_NON_CONNECTABLE_UNDIRECTED); + } + + _ble.setAdvertisingInterval(160); /* 100ms; in multiples of 0.625ms. */ + + _ble.startAdvertising(); +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Puck.hpp Tue Jul 15 14:33:09 2014 +0000 @@ -0,0 +1,30 @@ + #ifndef __PUCK_HPP__ + #define __PUCK_HPP__ + + #include "BLEDevice.h" + +class Puck { + private: + + BLEDevice _ble; + + uint8_t _beaconPayload[25]; + + bool _connectable; + + public: + /** Initialize the Puck library + */ + Puck(bool connectable, uint16_t minor); + + /** The BLE Device + * @return ble device + */ + BLEDevice ble() { return _ble; } + + /** Initialize the BLE Device and start advertising + */ + void init(); +}; + + #endif // __PUCK_HPP__ \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nRF51822.lib Tue Jul 15 14:33:09 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/teams/Nordic-Semiconductor/code/nRF51822/#bd0186ce644a