#define HOST_NAME "api.heclouds.com" //定义域名,定义云端硬件编码。对于不同的硬件端,这里的DEVICEID不同
#define DEVICEID "23343719"
#define PROJECTID "102517"
#define HOST_PORT (80)
String apiKey="EvldL=Gho20lXXcXT0r=dCRxznk=";
char buf[20];
sensor_tem = SHT2x.readT() ; //读取温度
sensor_hum = SHT2x.readRH();//读取相对湿度
sensor_voi = analogRead(A0);//读取声音
float temp= sensor_voi;
sensor_voi=map(sensor_voi,0,1023,0,5);
db = (20*log(10)) * (sensor_voi/1.0);//此处是想将声音传感器的信号转化为分贝,但是由于声音传感器敏感度较低,真正实现的时候并没有用这个数据
sensor_voi=temp;//重新使用声音传感器的原始数据
sensor_pir=digitalRead(PIR_PIN);
dtostrf(sensor_tem, 2, 1, sensor_tem_c);
dtostrf(sensor_hum, 2, 1, sensor_hum_c);
dtostrf(sensor_voi, 3, 1, sensor_voi_c);
dtostrf(db,3,1,db_c);
dtostrf( sensor_pir, 2, 1, sensor_pir_c);//将数据转化为字符串,便于上传
//
var length = app.globalData.voice.datapoints.length;
//获得长度,以进行下一步处理
const voice_i=0.3;
const PIR_i = 0.7;//声音和红外传感器的比例系数
const voice_rate =2;
const PIR_rate = 100;//声音和红外传感器的放大系数,使数值判断更易
const judge_L=58;//超过这个值,显示现场人流较为拥挤
const judge_M = 40;//超过这个值,显示现场人流正常
var judge=0;
for (var i = 0; i < length; i++) {
voice=voice+parseFloat(app.globalData.voice.datapoints[i].value);
PIR = PIR + parseFloat(app.globalData.PIR.datapoints[i].value);
Humidity = Humidity + parseFloat(app.globalData.Humidity.datapoints[i].value);
Temperature = Temperature + parseFloat(app.globalData.Temperature.datapoints[i].value);
}//获得各个数据之和
voice =voice/length;
PIR = PIR / length;
Humidity = Humidity/length;
app.globalData.Humidity =Humidity;
Temperature = Temperature/length;
app.globalData.in_temp = Temperature;
app.globalData.in_humi = Humidity;//计算平均数,给全局变量赋值
judge = PIR * PIR_rate * PIR_i +voice*voice_rate*voice_i;
//对红外线感应器和声音感应器的数据进行加权计算,获得判断依据
1. 人流检测
编程语言: C/C++(Arduino)
软件工具:Arduino IDE 1.6.9
创建时间:2018/03/14
作者: | 黄昱衡,宋岩熠,王振宁,汪博成 |
立即注册