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 Valentin Tanasa

Committer:
tanasaro10
Date:
Tue Apr 26 20:15:41 2016 +0000
Revision:
10:c7d53e4e0602
Parent:
9:303d3628986a
Child:
12:27e9c3db28b9
small updates added; new functionalities for push button; some bug fixes;

Who changed what in which revision?

UserRevisionLine numberNew 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 10:c7d53e4e0602 64 * button push => closes the connection/advertising and turn off the led. If push again reset the previous conditions;
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/)