IoT用クラウドサービス「Ambient」と心拍センサーを使った心拍モニターです。心拍センサー「Pulse Sensor Amped」の値をmbed「Simple IoT Board」で読み、「Ambient」に送信してモニターします。 https://ambidata.io
Dependencies: AmbientLib SimpleIoTBoardLib mbed
main.cpp@4:ec1aa2beefce, 2016-06-13 (annotated)
- Committer:
- AmbientData
- Date:
- Mon Jun 13 12:08:40 2016 +0000
- Revision:
- 4:ec1aa2beefce
- Parent:
- 2:dd2248c73ad5
AmbientLib updated
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
AmbientData | 0:16d0c9ce5afb | 1 | /* |
AmbientData | 0:16d0c9ce5afb | 2 | * Every 5 seconds, send the BPM value to Ambient. |
AmbientData | 0:16d0c9ce5afb | 3 | * Turn on and off the LED. |
AmbientData | 0:16d0c9ce5afb | 4 | */ |
AmbientData | 0:16d0c9ce5afb | 5 | #include "mbed.h" |
AmbientData | 0:16d0c9ce5afb | 6 | #include "math.h" |
AmbientData | 0:16d0c9ce5afb | 7 | #include "ESP8266Interface.h" |
AmbientData | 0:16d0c9ce5afb | 8 | #include "TCPSocketConnection.h" |
AmbientData | 0:16d0c9ce5afb | 9 | #include "SoftSerialSendOnry.h" |
AmbientData | 0:16d0c9ce5afb | 10 | #include "Ambient.h" |
AmbientData | 0:16d0c9ce5afb | 11 | |
AmbientData | 0:16d0c9ce5afb | 12 | ESP8266Interface wifi(dp16,dp15,dp4,"ssid","password",115200); // TX,RX,Reset,SSID,Password,Baud |
AmbientData | 0:16d0c9ce5afb | 13 | |
AmbientData | 0:16d0c9ce5afb | 14 | SoftSerialSendOnry pc(dp10); |
AmbientData | 0:16d0c9ce5afb | 15 | |
AmbientData | 0:16d0c9ce5afb | 16 | unsigned int channelId = 100; |
AmbientData | 0:16d0c9ce5afb | 17 | const char* writeKey = "ライトキー"; |
AmbientData | 2:dd2248c73ad5 | 18 | Ambient ambient; |
AmbientData | 0:16d0c9ce5afb | 19 | |
AmbientData | 0:16d0c9ce5afb | 20 | extern void interruptSetup(); |
AmbientData | 0:16d0c9ce5afb | 21 | |
AmbientData | 0:16d0c9ce5afb | 22 | // Volatile Variables, used in the interrupt service routine! |
AmbientData | 0:16d0c9ce5afb | 23 | extern volatile bool QS; // becomes true when Arduoino finds a beat. |
AmbientData | 0:16d0c9ce5afb | 24 | extern volatile int BPM; // int that holds raw Analog in 0. updated every 2mS |
AmbientData | 0:16d0c9ce5afb | 25 | |
AmbientData | 0:16d0c9ce5afb | 26 | int main() { |
AmbientData | 0:16d0c9ce5afb | 27 | TCPSocketConnection socket; |
AmbientData | 0:16d0c9ce5afb | 28 | |
AmbientData | 0:16d0c9ce5afb | 29 | pc.baud(9600); |
AmbientData | 0:16d0c9ce5afb | 30 | |
AmbientData | 0:16d0c9ce5afb | 31 | wifi.init(); //Reset |
AmbientData | 0:16d0c9ce5afb | 32 | wifi.connect(); //Use DHCP |
AmbientData | 0:16d0c9ce5afb | 33 | pc.printf("IP Address is %s\r\n", wifi.getIPAddress()); |
AmbientData | 0:16d0c9ce5afb | 34 | ambient.init(channelId, writeKey, &socket); |
AmbientData | 0:16d0c9ce5afb | 35 | |
AmbientData | 0:16d0c9ce5afb | 36 | interruptSetup(); |
AmbientData | 0:16d0c9ce5afb | 37 | |
AmbientData | 0:16d0c9ce5afb | 38 | while (true) { |
AmbientData | 0:16d0c9ce5afb | 39 | char bpmbuf[12]; |
AmbientData | 0:16d0c9ce5afb | 40 | |
AmbientData | 0:16d0c9ce5afb | 41 | if (QS == true){ // A Heartbeat Was Found |
AmbientData | 0:16d0c9ce5afb | 42 | // BPM and IBI have been Determined |
AmbientData | 0:16d0c9ce5afb | 43 | // Quantified Self "QS" true when mbed finds a heartbeat |
AmbientData | 0:16d0c9ce5afb | 44 | sprintf(bpmbuf, "%3d", BPM); |
AmbientData | 0:16d0c9ce5afb | 45 | pc.printf("BPM:%s\r\n", bpmbuf); |
AmbientData | 0:16d0c9ce5afb | 46 | ambient.set(1, bpmbuf); |
AmbientData | 0:16d0c9ce5afb | 47 | ambient.send(); |
AmbientData | 0:16d0c9ce5afb | 48 | |
AmbientData | 0:16d0c9ce5afb | 49 | QS = false; // reset the Quantified Self flag for next time |
AmbientData | 0:16d0c9ce5afb | 50 | } |
AmbientData | 0:16d0c9ce5afb | 51 | wait(5); // take a break |
AmbientData | 0:16d0c9ce5afb | 52 | } |
AmbientData | 0:16d0c9ce5afb | 53 | } |