A demo on NXP KL25Z of the telemetry library to publish some sensor data that can be read/plotted on the computer using pytelemetrycli (https://github.com/Overdrivr/pytelemetrycli) Published data: "touch" -> capacitive slider output value "acc:x" -> x channel of the accelerometer "acc:y" -> y channel "acc:z" -> z channel

Dependencies:   BufferedSerial MMA8451Q mbed telemetry tsi_sensor

Committer:
Overdrivr
Date:
Wed Mar 09 15:50:16 2016 +0000
Revision:
2:9bf273ead1b0
Parent:
1:b63db8e76533
update include headers

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Overdrivr 0:d38b884af46a 1 #include "mbed.h"
Overdrivr 2:9bf273ead1b0 2 #include "Telemetry.hpp"
Overdrivr 0:d38b884af46a 3 #include "tsi_sensor.h"
Overdrivr 0:d38b884af46a 4 #include "MMA8451Q.h"
Overdrivr 0:d38b884af46a 5
Overdrivr 0:d38b884af46a 6 #define MMA8451_I2C_ADDRESS (0x1d<<1)
Overdrivr 0:d38b884af46a 7
Overdrivr 1:b63db8e76533 8 /*
Overdrivr 1:b63db8e76533 9 Example of the 'Telemetry' library, a portable communication library for embedded devices.
Overdrivr 1:b63db8e76533 10
Overdrivr 1:b63db8e76533 11 This code fetches all the data from the KL25Z bord and publishes it on different topics :
Overdrivr 1:b63db8e76533 12
Overdrivr 1:b63db8e76533 13 The available data is the following :
Overdrivr 1:b63db8e76533 14 * Accelerometer X
Overdrivr 1:b63db8e76533 15 * Accelerometer Y
Overdrivr 1:b63db8e76533 16 * Accelerometer Z
Overdrivr 1:b63db8e76533 17 * Capacitive slider
Overdrivr 1:b63db8e76533 18
Overdrivr 1:b63db8e76533 19 You can use the Pytelemetry Command Line Interface to open plots, visualize the received data,
Overdrivr 1:b63db8e76533 20 and communicate with the car.
Overdrivr 1:b63db8e76533 21 See https://github.com/Overdrivr/pytelemetrycli
Overdrivr 1:b63db8e76533 22 */
Overdrivr 0:d38b884af46a 23
Overdrivr 0:d38b884af46a 24
Overdrivr 1:b63db8e76533 25 DigitalOut led(LED1);
Overdrivr 0:d38b884af46a 26
Overdrivr 0:d38b884af46a 27 int main()
Overdrivr 0:d38b884af46a 28 {
Overdrivr 1:b63db8e76533 29 Telemetry TM(115200);
Overdrivr 1:b63db8e76533 30
Overdrivr 0:d38b884af46a 31 // Some sensors to read
Overdrivr 0:d38b884af46a 32 TSIAnalogSlider tsi(PTB16,PTB17,40);
Overdrivr 0:d38b884af46a 33 MMA8451Q acc(PTE25, PTE24);
Overdrivr 0:d38b884af46a 34
Overdrivr 0:d38b884af46a 35 led = 1;
Overdrivr 0:d38b884af46a 36
Overdrivr 1:b63db8e76533 37 // Some timers
Overdrivr 0:d38b884af46a 38 Timer tm_timer;
Overdrivr 0:d38b884af46a 39 Timer print_timer;
Overdrivr 0:d38b884af46a 40 Timer led_timer;
Overdrivr 0:d38b884af46a 41
Overdrivr 0:d38b884af46a 42 tm_timer.start();
Overdrivr 0:d38b884af46a 43 print_timer.start();
Overdrivr 1:b63db8e76533 44 led_timer.start();
Overdrivr 1:b63db8e76533 45
Overdrivr 1:b63db8e76533 46 // To store accelerometer values
Overdrivr 1:b63db8e76533 47 int16_t axis[3];
Overdrivr 0:d38b884af46a 48
Overdrivr 0:d38b884af46a 49 for(;;)
Overdrivr 0:d38b884af46a 50 {
Overdrivr 0:d38b884af46a 51 // update telemetry
Overdrivr 0:d38b884af46a 52 if(tm_timer.read_ms() > 50)
Overdrivr 0:d38b884af46a 53 {
Overdrivr 0:d38b884af46a 54 tm_timer.reset();
Overdrivr 0:d38b884af46a 55 TM.update();
Overdrivr 0:d38b884af46a 56 }
Overdrivr 0:d38b884af46a 57
Overdrivr 0:d38b884af46a 58
Overdrivr 0:d38b884af46a 59 // publish accelerometer data
Overdrivr 0:d38b884af46a 60 if(print_timer.read_ms() > 50)
Overdrivr 0:d38b884af46a 61 {
Overdrivr 0:d38b884af46a 62 print_timer.reset();
Overdrivr 0:d38b884af46a 63 TM.pub_f32("touch",tsi.readPercentage());
Overdrivr 0:d38b884af46a 64
Overdrivr 0:d38b884af46a 65 acc.getAccAllAxis(axis);
Overdrivr 0:d38b884af46a 66
Overdrivr 1:b63db8e76533 67 TM.pub_i16("acc/x",axis[0]);
Overdrivr 1:b63db8e76533 68 TM.pub_i16("acc/y",axis[1]);
Overdrivr 1:b63db8e76533 69 TM.pub_i16("acc/z",axis[2]);
Overdrivr 0:d38b884af46a 70 }
Overdrivr 0:d38b884af46a 71
Overdrivr 0:d38b884af46a 72 if(led_timer.read_ms() > 500)
Overdrivr 0:d38b884af46a 73 {
Overdrivr 0:d38b884af46a 74 led_timer.reset();
Overdrivr 0:d38b884af46a 75 led = (led == 0) ? 1 : 0;
Overdrivr 0:d38b884af46a 76 }
Overdrivr 0:d38b884af46a 77 }
Overdrivr 0:d38b884af46a 78 }