一、项目背景
随着全球环境问题的日益突出和对可持续发展的迫切需求,节能减排成为当务之急。智慧园区作为城市发展的重要组成部分,其能源消耗和环境影响不容忽视。为了实现园区的可持续发展,提高能源利用效率,降低碳排放,建立一套智慧园区节能减排监控系统显得尤为重要。
二、项目目标
- 深入理解物联网监控原理:透彻掌握多种物联网监控设备和云服务平台的工作机制。
- 精确监测与数据收集:准确、实时地采集和记录环境中温度、湿度、光照及 LCD 等关键指标数据。
- 熟练掌握远程操作技巧:灵活运用远程手动操作功能,对系统进行高效管理。
- 强化数据追踪与分析能力:能够持续追踪和分析城市不同区域的环境数据。
- 提升大数据图表制作水平:熟练运用大数据分析技术,生成清晰直观的环境热力图、湿度分布图等。
- 增强环境变化预测能力:通过对环境数据的分析,精准预测环境变化趋势。
- 熟练掌握 OneNET 平台操作:顺利在 OneNET 物联网开放平台上接入 NB 设备,并实现与第三方应用的数据交互。
- 灵活运用数据推送功能:熟练掌握利用数据推送功能实现自动开关灯的方法,提升节能效果。
- 提高问题解决与创新能力:在项目实施过程中,不断发现和解决问题,积极探索创新方法。
三、系统环境的搭建
3.1参数配置
3.1.1OneNET云平台创建产品设备
1、注册登录云平台,创建产品
2、在创建的产品中添加设备
3.1.2硬件搭建
1、设备通电并连接上电脑
2、本实验要用到核心板、温湿度模块、NB-IoT 模块、光照模块和 LCD 模块
3.1.3IMEI、IMSI生成及使用
1、用NB-IMEI生成器随机生成两个IMEI号并同步写入代码及生成的产品中
2、在代码中更改IMEI号和IMSI号,与产品设备IMEI号、IMSI号保持一致
代码中的 IMEI 和 IMSI 必须保持跟OneNET 平台上的一样。
3.1.4代码添加
1、在 main.c 文件中添加包含“BH1750.h”和”Lcd_Driver.h”头文件的预处理命令
添加以下代码:
#include "BH1750.h" /* 光照传感器 */
#include "Lcd_Driver.h" /*LCD屏*/
2、在 main.c 文件中增加光照和 LED 的类型结构,并声明外部变量。添加位置和代码如下图所示:
添加以下代码:
nbiot_value_t illumi; /* 光照 */
nbiot_value_t led; /* LED灯 */
extern float result_lx;/*光照*/
3、在 main.c 文件的主函数中,在“写”回调函数添加 LED 灯模拟打开、关闭的代码。
添加以下代码:
if(objid ==3311 && instid==0 && resid ==5850)/*LED灯*/
{
if( data->value.as_bool)
{
// 打开白色背光以模拟 LED 打开
Lcd_Clear(WHITE);
ledStatus.Led1Sta=1;
}
else
{
//打开黑色背光以模拟 LED 打开
Lcd_Clear(BLACK);
ledStatus.Led1Sta=0;
}
}
4、在 main.c 文件的主函数中,在“读”回调函数添加光照和 LED 灯的控制代码,当从平台接收到控制写入命令时,响应控制。
添加以下代码:
else if (objid == 3301 && instid == 0 && resid == 5700) { /* 光 照 */
BH1750_test();
illumi.value.as_float = result_lx;
} else if (objid == 3311 && instid == 0 && resid == 5850) { /* LED */
led.value.as_bool = ledStatus.Led1Sta;
5、在 main.c 文件里增加光照值、LED 数值的读取更新
添加以下代码:
/* 更新光照数值 */
illumi.flag |= NBIOT_UPDATED;
BH1750_test();
illumi.value.as_float = result_lx;
/* 更新 LED 数值*/
led.flag |= NBIOT_UPDATED;
led.value.as_bool = ledStatus.Led1Sta;
} else if (cur_time == 0 && last_time == 0) {
cur_time = nbiot_time();
last_time = cur_time;
} else {
cur_time = nbiot_time();
}
6、在 main.c 文件里增加光照、LED 资源
添加以下代码:
// 添加光照资源
illumi.type = NBIOT_FLOAT;
illumi.flag = NBIOT_READABLE;
ret = nbiot_resource_add(dev, 3301, 0, 5700, &illumi);
if (ret)
{
nbiot_device_destroy(dev);
printf("device add resource(illumi) failed, code = %d.
", ret);
}
// 添加 LED 灯资源
led.type = NBIOT_BOOLEAN;
led.flag = NBIOT_READABLE | NBIOT_WRITABLE;
ret = nbiot_resource_add(dev, 3311, 0, 5850, &led);
if (ret)
{
nbiot_device_destroy(dev);
printf("device add resource(led) failed, code = %d.
", ret);
}
3.2接入OneNET平台
3.2.1、烧写代码,打开串口调试助手,查看数据
3.2.2、OneNET 云平台设备上线
3.2.3、在资源列表界面,可以看到温度、湿度、光照、LED 灯,还可以查看属性值等。
3.2.4、在设备资源列表中可查看到光照传感器和光照控制的代码
3.3 周期上报数据
3.3.1温度数据
3.3.2湿度数据
3.3.3光照数据
3.3.4LCD数据
3.4实验效果
1、在 Light Control 对象的详情页面中,可以观察到终端上报平台的状态以及上报时间。通过简单点击操作界面上的【写】按钮,可以控制 LED 灯的开关状态。
点击“写”操作按钮后,在弹出的对话框中输入“true”点击确定,就可以打开开发板上的 LED白色背光
输入“false”点击确定,可以关闭 LED,显示黑色背光
3.5使用数据推送功能自动开关led灯
3.5.1在OneNET云平台配置参数
1、在OneNET云平台开发者中心,找到数据流转→数据推送中对产品进行设置,添加url和token协议,消息加密方式为明文方式
2、打开产品的生态状态
3.5.2第三方应用的配置参数
1、打开灯光推送运用用户门户,以OneNET注册用户的 用户id 和用户AcessKey 登陆。
具体的id,AcessKey信息在OneNET官网(用户中心-访问权限页面)
注意:第一次登陆用户id无使用记录要进行二次登录,用户id和用户密钥必须要和OneNET云平台的id和AcessKey一致。
2、绑定NB-IoT设备的IMEI号(绑定的IMEI号为项目三设备的IMEI号)
3.5.3数据推送
观察LCD的显示变化,在确保设备在线的状态下,无论NB-IoT设备是上线、下线还是上报新数据,服务器都能实时接收到这些数据。程序将解析新数据其中的光照值,根据预设的阈值来自动控制LCD灯的开关。
1、监控光照传感器的数值,一旦低于预设的最小阈值,系统将自动调用API来开启LED灯。为了测试这一功能,可以使用物体遮挡光照传感器模块大约30秒,此时LCD模块应该显示为“开启”状态,并且LED灯亮起。
2、当光照传感器的值达到预设的最大阈值时,系统将自动触发API来关闭LED灯。在室内照明环境中,LCD模块应当显示为“关闭”状态,并且LED灯熄灭。
四、总结与收获
1、项目总结:
在本次智慧园区节能减排监控系统实训中,我们成功构建了一个全面而有效的监控体系。通过运用先进的技术和平台,我们实现了对园区内能源消耗和环境状况的精确监测与管理。
在实践过程中,我们克服了诸多技术难题,确保了系统的稳定运行和数据的准确采集。同时,我们与实际园区环境紧密结合,深入了解了智慧园区节能减排的实际需求和运作模式。
2、项目收获:
- 技术熟练度提升:熟练掌握了运用特定云平台进行节能减排监控的各项技术。
- 实际操作能力增强:通过亲身实践,能够熟练操作和调试监控系统,应对各种实际情况。
- 对标准的深入理解:对相关标准有了更深入的认识,能够准确应用并遵守标准进行操作。