总结基地班项目——传感器端

传感器端不是我负责的,我大概了解的是使用的是联发科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);*/
}  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值