使用RT

简介

项目名称:温湿度传感报警系统

设计思路:项目使用RT-Thread系统和PSOC6开发板,实现一个温湿度报警系统。该系统通过wifi连接将数据上传至OneNET云,后经过前端开发,可以使数据清晰的展示。并且在温湿度高于或低于某一数值时,蜂鸣器就会报警。

项目的优势:利用简单的构建实现了对温湿度的实时监控,操作简单,成本较低。

流程图

硬件部分

软件部分

软件包配置

.onenet_upload_entry代码

static void onenet_upload_entry(void *parameter)

{

rt_pin_mode(deep, PIN_MODE_OUTPUT);

float t_l=10,t_h=40;//温度下限10上限40

float hu_l=20,hu_h=65;//湿度下限20上限65

float hum,temp;

aht10_device_t dev;

const char *i2c_bus_name=”i2c3″;

rt_thread_mdelay(2000);

dev=aht10_init(i2c_bus_name);

if(dev==RT_NULL)

{

rt_kprintf(“The sensor initializes failure”);

}

rt_pin_write(deep, PIN_HIGH);

temp=aht10_read_temperature(dev);

hum=aht10_read_humidity(dev);

rt_thread_mdelay(1000);

while (1)

{

hum=aht10_read_humidity(dev);

rt_kprintf(“humidity : %d.%d %%n”,(int)hum,(int)(hum*10)%10);

temp=aht10_read_temperature(dev);

rt_kprintf(“temperature: %d.%d C nn”,(int)temp,(int)(temp*10)%10);

rt_thread_mdelay(1000);

/*蜂鸣器报警*/

if((int)tempt_h)

{

beep2();

}

else if ((int)humhu_h)

{

beep2();

}

/*上传数据*/

onenet_mqtt_upload_digit(“temperature”, temp);

rt_thread_mdelay(1000);

onenet_mqtt_upload_digit(“humidity”, hum);

if (onenet_mqtt_upload_digit(“temperature”, temp) ||onenet_mqtt_upload_digit(“humidity”, hum) < 0)

{

LOG_E(“upload has an error, stop uploading”);

break;

}

else

{

LOG_D(“buffer : {“temperature”:%f C},{“humidity”:%f%%}”, temp,hum);

}

rt_thread_delay(rt_tick_from_millisecond(5 * 1000));

}

}

前端开发

定时器代码

setInterval(

//设置定时器,7s更新一次

function () {

if (!getData())

return;

updateTemperature();

updateHumidity();

updateTH();

},

7000

);

定时器主要完成四个功能:

getData():获取最新数据,并加入到数据数组中

updateTemperature():更新温度刻度盘

updateHumidity():更新湿度刻度盘

updateTH():更新温湿度面积堆叠图

updateTemperature()、updateHumidity()、updateTH()代码

function updateHumidity() {

option = {

tooltip: {

formatter: “{a}

{b} : {c}℃”,

},

toolbox: {

feature: {

restore: {},

saveAsImage: {},

},

},

series: [

{

name: “当前湿度”,

type: “gauge”,

min: 0,

max: 100,

detail: { formatter: “{value}%” },

data: [{ value: ydata_hum[ydata_hum.length – 1], name: “湿度” }],

axisLine: {

lineStyle: {

color: [

[0.5, “#ff6b6b”],

[0.65, “#ffa94d”],

[0.8, “#69db7c”],

[1, “#4dabf7”],

],

},

},

},

],

};

mCharts2.setOption(option);

}

获取最新温湿度数据

function getData() {

var xmlhttp = new XMLHttpRequest();

xmlhttp.onreadystatechange = function () {

if (this.readyState == 4 && this.status == 200) {

console.log(this.responseText);

}

};

xmlhttp.open(“GET”, “http://api.heclouds.com/devices/product_id/datastreams”, true);

xmlhttp.setRequestHeader(“api-key”, “your API Key”);

xmlhttp.send();

}

项目功能

数据页面展示

该项目实现了对温湿度的实时监控,通过ATH10获取温湿度数据,利用rw007将数据上传到onenet云端,通过前端开发将数据可视化。可以设定温湿度上下限,当温湿度不在范围内时,蜂鸣器工作,进行报警。

发表评论