传感器端不是我负责的,我大概了解的是使用的是联发科linkit one开发板,使用arduino软件开发。通过外接压力传感器,实现一段时间将计算的脉搏跳动次数通过wifi传到服务器上。
#include <LWiFiServer.h>
#include <LWiFiUdp.h>
#include<LTask.h>
#include <LWiFi.h>
#include <LWiFiClient.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define WIFI_AP "note 3"
#define WIFI_PASSWORD "66666666"
#define WIFI_AUTH LWIFI_WPA // choose from LWIFI_OPEN, LWIFI_WPA, or LWIFI_WEP.
#define SITE_URL "api.k780.com" //北京时间API
#define SITE_URL2 "192.168.43.24" //sever address, post sensor data to sever
unsigned long relative_time; //获取相对时间
int state=HIGH; //初始状态为高
unsigned int rate_value=0; //最新的心率值
LWiFiClient c;
void setup()
{
//实现wifi的连接
LWiFi.begin();
Serial.begin(115200);
// keep retrying until connected to AP
Serial.println("Connecting to AP");
while (0 == LWiFi.connect(WIFI_AP, LWiFiLoginInfo(WIFI_AUTH, WIFI_PASSWORD)))
{
delay(1000);
}
relative_time=millis(); //relative_time为机器运行时间
attachInterrupt(0,statechange,FALLING); //中断函数,下降沿触发
}
void statechange() //中断函数
{
delay(10);
state=digitalRead(2);
if(state==0)
rate_value = rate_value+1;
}
void loop()
{
if(millis()-relative_time<10000)return; //检查两次loop程序运行间隔是否到达指定时间,如一分钟
relative_time=millis();
//以下为People的Name,格式为"Name=XXX"
char data1[50]={"Name=guchi"};
//以下为时间获取部分的代码,数据格式举例"|Time=2017-7-10-10:54:55"
int i=1,j=0;
//通过连接时间API获取实时北京时间
Serial.println("Connecting to WebSite");
while (0 == c.connect(SITE_URL, 88))
{
Serial.println("Re-Connecting to WebSite");
delay(1000);
}
// send HTTP request, ends with 2 CR/LF
Serial.println("send HTTP GET request");
c.println("GET /?app=life.time&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json/1.1");
c.println("Host: " SITE_URL);
c.println("Connection: close");
c.println();
while (!c.available())
{
delay(10);
}
//处理获得的时间,整合成相应的数据格式,如"|Time=2017-7-10-10:54:55"
char time1[30]={",Time="};
int k=6;
boolean disconnectedMsg = false;
while (c)
{
char v = c.read();
if (v != -1)
{
if(i>64&&i<84)
{
time1[k]=v;
k=k+1;
}
i=i+1;
}
else
{
Serial.println("no more content, disconnect");
c.stop();
}
}
time1[16]='-';
time1[25]=',';
if (!disconnectedMsg)
{
Serial.println("disconnected by WebSite");
Serial.println("");
disconnectedMsg = true;
}
//以下为心率数值读取部分,数据格式为"|Rate=80"
char rate1[10]={",Rate="}; //整合成相应的数据格式
char rate2[5]={""};
itoa(rate_value,rate2,10);
rate_value=0;
strcat(rate1,rate2);
strcat(data1,rate1);
strcat(data1,time1);
//String buildJson()
String PostData = data1;
// data+="}";
//return data;
// String PostData = buildJson ();
//将数据data在串口打印出来
Serial.print(PostData);
Serial.println("");
//将数据post到sever
Serial.println("Connecting to Server");
while (0 == c.connect(SITE_URL2, 8000))
{
Serial.println("Re-Connecting to Server");
delay(10000);
}
Serial.println("send HTTP POST request");
c.println("POST /data_upload/ HTTP/1.1");
c.println("Host: " SITE_URL2);
c.println("User-Agent: Arduino/1.0");
c.println("Connection: close");
c.print("Content-Length: ");
c.println(PostData.length());
c.println();
c.println(PostData);
/*
// waiting for server response
Serial.println("waiting HTTP response:");
while (!c.available())
{
delay(100);
}
// Make sure we are connected, and dump the response content to Serial
disconnectedMsg = false;
while (c)
{
int v = c.read();
if (v != -1)
{
Serial.print((char)v);
}
else
{
Serial.println("no more content, disconnect");
c.stop();
while (1)
{
delay(1);
}
}
}
if (!disconnectedMsg)
{
Serial.println("disconnected by server");
disconnectedMsg = true;
}
delay(500);*/
}