心拍センサーをサンプリングして、Ambientに送り、心拍波形を描くサンプルプログラムです。 https://ambidata.io

Dependencies:   AmbientLib SimpleIoTBoardLib mbed

Committer:
AmbientData
Date:
Mon Jun 13 13:41:59 2016 +0000
Revision:
0:5e73ce0d93af
Initial submission.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AmbientData 0:5e73ce0d93af 1 /*
AmbientData 0:5e73ce0d93af 2 * while (true) {
AmbientData 0:5e73ce0d93af 3 * clear data.
AmbientData 0:5e73ce0d93af 4 * sample heart pulse every 25m seconds, 28 times.
AmbientData 0:5e73ce0d93af 5 * send data to Ambient.
AmbientData 0:5e73ce0d93af 6 * wait 2 seconds.
AmbientData 0:5e73ce0d93af 7 */
AmbientData 0:5e73ce0d93af 8 #include "mbed.h"
AmbientData 0:5e73ce0d93af 9 #include "math.h"
AmbientData 0:5e73ce0d93af 10 #include "ESP8266Interface.h"
AmbientData 0:5e73ce0d93af 11 #include "TCPSocketConnection.h"
AmbientData 0:5e73ce0d93af 12 #include "SoftSerialSendOnry.h"
AmbientData 0:5e73ce0d93af 13 #include "Ambient.h"
AmbientData 0:5e73ce0d93af 14
AmbientData 0:5e73ce0d93af 15 #define SAMPLING 25 // Sampling period in milliseconds
AmbientData 0:5e73ce0d93af 16 // When BPM is 100, IBI is 600msec and we have 30 samples.
AmbientData 0:5e73ce0d93af 17 #define NSAMPLES 35 // Number of Samples
AmbientData 0:5e73ce0d93af 18 #define BUFSIZE 1050
AmbientData 0:5e73ce0d93af 19
AmbientData 0:5e73ce0d93af 20 ESP8266Interface wifi(dp16,dp15,dp4,"ssid","password",115200); // TX,RX,Reset,SSID,Password,Baud
AmbientData 0:5e73ce0d93af 21
AmbientData 0:5e73ce0d93af 22 SoftSerialSendOnry pc(dp10);
AmbientData 0:5e73ce0d93af 23 DigitalOut led(dp6);
AmbientData 0:5e73ce0d93af 24
AmbientData 0:5e73ce0d93af 25 unsigned int channelId = 100;
AmbientData 0:5e73ce0d93af 26 const char* userKey = "ユーザーキー";
AmbientData 0:5e73ce0d93af 27 const char* writeKey = "ライトキー";
AmbientData 0:5e73ce0d93af 28 Ambient ambient;
AmbientData 0:5e73ce0d93af 29
AmbientData 0:5e73ce0d93af 30 AnalogIn pulsePin(dp13);
AmbientData 0:5e73ce0d93af 31 Ticker t2;
AmbientData 0:5e73ce0d93af 32 volatile int done = false;
AmbientData 0:5e73ce0d93af 33 unsigned short signal[NSAMPLES];
AmbientData 0:5e73ce0d93af 34 char buffer[BUFSIZE];
AmbientData 0:5e73ce0d93af 35 volatile int sampleIndex = 0;
AmbientData 0:5e73ce0d93af 36
AmbientData 0:5e73ce0d93af 37 void sampling() {
AmbientData 0:5e73ce0d93af 38 led = 1;
AmbientData 0:5e73ce0d93af 39 signal[sampleIndex++] = pulsePin.read_u16();
AmbientData 0:5e73ce0d93af 40 if (sampleIndex >= NSAMPLES) {
AmbientData 0:5e73ce0d93af 41 done = true;
AmbientData 0:5e73ce0d93af 42 }
AmbientData 0:5e73ce0d93af 43 }
AmbientData 0:5e73ce0d93af 44
AmbientData 0:5e73ce0d93af 45 int main() {
AmbientData 0:5e73ce0d93af 46 TCPSocketConnection socket;
AmbientData 0:5e73ce0d93af 47
AmbientData 0:5e73ce0d93af 48 pc.baud(9600);
AmbientData 0:5e73ce0d93af 49 pc.printf("start\r\n");
AmbientData 0:5e73ce0d93af 50 wifi.init(); //Reset
AmbientData 0:5e73ce0d93af 51 wifi.connect(); //Use DHCP
AmbientData 0:5e73ce0d93af 52 pc.printf("IP Address is %s\r\n", wifi.getIPAddress());
AmbientData 0:5e73ce0d93af 53 ambient.init(channelId, writeKey, &socket);
AmbientData 0:5e73ce0d93af 54 led = 0;
AmbientData 0:5e73ce0d93af 55
AmbientData 0:5e73ce0d93af 56 while (true) {
AmbientData 0:5e73ce0d93af 57 pc.printf("sampling start...");
AmbientData 0:5e73ce0d93af 58 done = false;
AmbientData 0:5e73ce0d93af 59 sampleIndex = 0;
AmbientData 0:5e73ce0d93af 60 t2.attach_us(&sampling, SAMPLING * 1000.0f);
AmbientData 0:5e73ce0d93af 61 while (!done) {
AmbientData 0:5e73ce0d93af 62 ;
AmbientData 0:5e73ce0d93af 63 }
AmbientData 0:5e73ce0d93af 64 t2.detach();
AmbientData 0:5e73ce0d93af 65 pc.printf("done\r\n");
AmbientData 0:5e73ce0d93af 66 led = 0;
AmbientData 0:5e73ce0d93af 67
AmbientData 0:5e73ce0d93af 68 sprintf(buffer, "{\"writeKey\":\"%s\",\"data\":[", writeKey);
AmbientData 0:5e73ce0d93af 69 for (int i = 0; i < NSAMPLES; i++) {
AmbientData 0:5e73ce0d93af 70 sprintf(&buffer[strlen(buffer)], "{\"created\":%d,\"d%d\":%d},", SAMPLING * i, 2, signal[i]);
AmbientData 0:5e73ce0d93af 71 }
AmbientData 0:5e73ce0d93af 72 buffer[strlen(buffer)-1] = '\0';
AmbientData 0:5e73ce0d93af 73 sprintf(&buffer[strlen(buffer)], "]}\r\n");
AmbientData 0:5e73ce0d93af 74
AmbientData 0:5e73ce0d93af 75 ambient.delete_data(userKey);
AmbientData 0:5e73ce0d93af 76
AmbientData 0:5e73ce0d93af 77 int sent = ambient.bulk_send(buffer);
AmbientData 0:5e73ce0d93af 78 pc.printf("%d bytes sent\r\n", sent);
AmbientData 0:5e73ce0d93af 79
AmbientData 0:5e73ce0d93af 80 wait(5);
AmbientData 0:5e73ce0d93af 81 }
AmbientData 0:5e73ce0d93af 82 }