This program is given as a sample exercise. It has all the functionality to be used on a BLE Nano device and to connect to SimpleChat application for Android/ iOS from RebBearLab. The aim of the exercise is to read a voltage and then to convert as good as possible the appropriate temperature in Celsius degrees. AI5 pin is considered for reading the voltage for the termistor. The ADC of AI5 is called every second. The function to be updated : update_measurements() from main.cpp file.

Dependencies:   BLE_API mbed nRF51822

Fork of nRF51822_DataLogger_with_Chat by Valentin Tanasa

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?

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 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/)