App for BLE Nano to monitor the power consumption for a specific location, by intercepting the led flashes of a standard power meter. It counts and log the flashes for each second. It works with RedBear App for smart phone (Simple Chat App).
Dependencies: BLE_API lib_mma8451q mbed nRF51822
Fork of nRF51822_DataLogger_with_Chat by
read_me.md@9:303d3628986a, 2016-04-25 (annotated)
- Committer:
- tanasaro10
- Date:
- Mon Apr 25 19:34:39 2016 +0000
- Revision:
- 9:303d3628986a
- Child:
- 10:c7d53e4e0602
Major rework on the code and extended functionality added. Detailed explanations are given in read_me.md file.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
tanasaro10 | 9:303d3628986a | 1 | # nRF51822_SimpleChat Extended With Data Measurements & Logger |
tanasaro10 | 9:303d3628986a | 2 | This repo is derived from the initial SimpleChat Application and is build for BLE Nano Device, used in peripheral mode. |
tanasaro10 | 9:303d3628986a | 3 | This Application scan and measures some inputs and save them in flash with timestamp. A RTC has been implemented. |
tanasaro10 | 9:303d3628986a | 4 | Using chat application (available for smart phones) some commands can be send to BLE Nano in order to perform some tasks. |
tanasaro10 | 9:303d3628986a | 5 | Other types of commands can be send via serial interface from a PC, especially data extraction from flash. |
tanasaro10 | 9:303d3628986a | 6 | |
tanasaro10 | 9:303d3628986a | 7 | #Usage/Description: |
tanasaro10 | 9:303d3628986a | 8 | After flashing or power on, the ble device will start to advertise and also its local time counter starts. While initializing, application |
tanasaro10 | 9:303d3628986a | 9 | will search through all flash pages, last data previosly written. From this pages will retrieve the last data and time available. |
tanasaro10 | 9:303d3628986a | 10 | A Timer Tick (period set to 1 second) is used for updating RTC and for data measurements. When the application starts the data will not be saved |
tanasaro10 | 9:303d3628986a | 11 | in flash until a command is given to start (xf2). When started, it is recommended after connecting to ble device to set the time and date; |
tanasaro10 | 9:303d3628986a | 12 | After the date and time updated, activate measurement logging (xf2). |
tanasaro10 | 9:303d3628986a | 13 | |
tanasaro10 | 9:303d3628986a | 14 | Please be aware that for 5-6 seconds, each 100 seconds the connection is stopped by the application. This is due to fact that |
tanasaro10 | 9:303d3628986a | 15 | writing to flash is safe when radio connection is off. When g_MyDataIdx is between 95..100, connection should remain closed. |
tanasaro10 | 9:303d3628986a | 16 | |
tanasaro10 | 9:303d3628986a | 17 | The Application can use somewhere around 100 flash pages (100K). This means, if data is sampled each second, the pages will start |
tanasaro10 | 9:303d3628986a | 18 | to overwrite after 100*100 seconds = 2.7 hours. Anyway the data is inserted into logger when it is different compared to previous |
tanasaro10 | 9:303d3628986a | 19 | measurement. Therefore the time the flash memory can log is bigger than 2.7 hours. |
tanasaro10 | 9:303d3628986a | 20 | |
tanasaro10 | 9:303d3628986a | 21 | When retrieving the data log via serial, the format is as follows: |
tanasaro10 | 9:303d3628986a | 22 | -> page starts with: |
tanasaro10 | 9:303d3628986a | 23 | 2016_ 4_22 H: 7 => year, month, day, and hour |
tanasaro10 | 9:303d3628986a | 24 | 26:51;363; 1; 15 => minutes: seconds; A3,A4,A5 (no info about digital inputs) |
tanasaro10 | 9:303d3628986a | 25 | -> following rows up to the next page: |
tanasaro10 | 9:303d3628986a | 26 | 0: 5;364; 1; 15 => minutes: seconds - time delta (time elapsed since last measurement); A3, A4, A5; |
tanasaro10 | 9:303d3628986a | 27 | |
tanasaro10 | 9:303d3628986a | 28 | #Hardware Connections |
tanasaro10 | 9:303d3628986a | 29 | The BLE Nano Device is connected to some peripheral components as follows: |
tanasaro10 | 9:303d3628986a | 30 | * Light Sensor ( A3 input) |
tanasaro10 | 9:303d3628986a | 31 | * Temperature Sensor (A4 input) |
tanasaro10 | 9:303d3628986a | 32 | * Gnd Voltage (or anything else) (A5 input) |
tanasaro10 | 9:303d3628986a | 33 | * Buzzer (D6 output) |
tanasaro10 | 9:303d3628986a | 34 | * Push Button (D5 input) |
tanasaro10 | 9:303d3628986a | 35 | [*] Optional: MKUSB 20 Board (for Voltage Supply and for Serial Communication with a PC) |
tanasaro10 | 9:303d3628986a | 36 | |
tanasaro10 | 9:303d3628986a | 37 | # Supported Commands |
tanasaro10 | 9:303d3628986a | 38 | From RedBear Chat Application following messages are valid: |
tanasaro10 | 9:303d3628986a | 39 | * Any message that not start with 'x' is echoed with 'R:' as prefix, and also is send via Serial Interface to PC |
tanasaro10 | 9:303d3628986a | 40 | * Any message that start with 'x' is interpreted as command: |
tanasaro10 | 9:303d3628986a | 41 | * xi0 / xi* except {1,2,3,4} => prints the analog inputs and one digital input (the led status) as uint16 values |
tanasaro10 | 9:303d3628986a | 42 | * xi1 /xi2 / xi3 / xi4 =>prints the uint16 value for light, temp, gndV, led status |
tanasaro10 | 9:303d3628986a | 43 | * xl => toggle led status |
tanasaro10 | 9:303d3628986a | 44 | * xs[0-9][0-9] => buzzer; depending on digits, a digital pwm signal is send to buzzer; to deactivate: xs00 |
tanasaro10 | 9:303d3628986a | 45 | * xtg => returns the current time |
tanasaro10 | 9:303d3628986a | 46 | * xti[0-9]{6} => insert time - exp: xti181004 means: 18H10M and 4 seconds |
tanasaro10 | 9:303d3628986a | 47 | * xdg => returns the current date |
tanasaro10 | 9:303d3628986a | 48 | * xdi[0-9]{6} => insert date - exp: xti160424 means: 2016 Y, 04 Month, 24 Day |
tanasaro10 | 9:303d3628986a | 49 | * xf1 => prints the value of g_MyDataIdx (a value now between 0..99) representing the steps until a new page will be written |
tanasaro10 | 9:303d3628986a | 50 | in flash with new data; It also print the current flash page that will be written (between 155 and 255) |
tanasaro10 | 9:303d3628986a | 51 | * xf2 => activate measurements logging |
tanasaro10 | 9:303d3628986a | 52 | * xf3 => deactivate measurements logging |
tanasaro10 | 9:303d3628986a | 53 | * x* => for invalid syntax a sound for 3 seconds is activated, with a message error |
tanasaro10 | 9:303d3628986a | 54 | From PC serial interface (with MKUSB 20 Board), following commands apply: |
tanasaro10 | 9:303d3628986a | 55 | * xf[0-9] => request printing on serial of a specific flash page ( 0 - current page; 1 - previous page, etc) |
tanasaro10 | 9:303d3628986a | 56 | * xd => request dump of all recorded logs (starting with current page) |
tanasaro10 | 9:303d3628986a | 57 | * xg => prints the value of g_MyDataIdx (a value now between 0..99) representing the steps until a new page will be written |
tanasaro10 | 9:303d3628986a | 58 | in flash with new data; |
tanasaro10 | 9:303d3628986a | 59 | * xca => open Radio Advertising (should be used when the Advertising is Off) |
tanasaro10 | 9:303d3628986a | 60 | * xcc => Close Radio connection (should be used when Connection is in Connected state) |
tanasaro10 | 9:303d3628986a | 61 | * xcs => Stop Radio Advertising (should be used when Advertising is active) |
tanasaro10 | 9:303d3628986a | 62 | |
tanasaro10 | 9:303d3628986a | 63 | Other Commands: |
tanasaro10 | 9:303d3628986a | 64 | * button push => print a message on ble connection : "B:ON" |
tanasaro10 | 9:303d3628986a | 65 | |
tanasaro10 | 9:303d3628986a | 66 | # References |
tanasaro10 | 9:303d3628986a | 67 | The mbed BLE API is meant to be used in projects on developer.mbed.org. Please see examples and sample project files there. |
tanasaro10 | 9:303d3628986a | 68 | A good starting point are these pages: |
tanasaro10 | 9:303d3628986a | 69 | * [mbed BLE Homepage](http://developer.mbed.org/teams/Bluetooth-Low-Energy/) for all things BLE |
tanasaro10 | 9:303d3628986a | 70 | * [mbed BLE Getting Started Guide](http://developer.mbed.org/forum/team-63-Bluetooth-Low-Energy-community/topic/5262/) a wonderful primer on using BLE with mbed |
tanasaro10 | 9:303d3628986a | 71 | * [mbed BLE API page](http://developer.mbed.org/teams/Bluetooth-Low-Energy/code/BLE_API/docs/tip/) for the API in generated by doxygen |
tanasaro10 | 9:303d3628986a | 72 | |
tanasaro10 | 9:303d3628986a | 73 | For this Application: |
tanasaro10 | 9:303d3628986a | 74 | * [redBEar Ble Nano] (http://redbearlab.com/blenano/) |
tanasaro10 | 9:303d3628986a | 75 | * [Project Blog - to be updated](http://tanasaro10.blogspot.ro/) |