怎样去开发一种基于NK-980IOT板的边缘计算网关呢

项目描述
基于nuvoton的nk-980iot开发板,开发的边缘计算网关。网关通过引出的引脚与温度、湿度、光照传感器模组连接,使用rtt提供的软件包驱动传感器模组。使用rtt提供的软件包连接阿里云物联网平台,通过阿里云物联网平台下发边缘计算的规则。边缘网关按照规则对传感器模组进行周期性得采集与上报。传感器数据可通过阿里云物联网平台进行查看。边缘计算规则支持配置每个传感器的采集周期、支持定时上报数据与变化上报数据模式。
diy过程
第一步:
先按照nk-980iot 上手指南跑通系统。我用的源码版本是v4.0.5,因为尝试过v4.1.0,第一次编译没通过(可能有的地方没配置好),用v4.0.5的一次性编译通过。
第二步:
安装env工具环境,参考env 用户手册。
第三步:
在上一步跑通的代码的基础上增加ali-iotkit、dht11、bh1750软件包。
menuconfig配置:
① 选上sensor drivers选项,因为我们用到的传感器数据采集依赖于rtt的sensor组件。
② 选上dht11与bh1750。
③ 选上ali-iotkit,注意ali-iotkit里边的选项不要选sample,否则编译会出错,后续我们会参考sample自己添加文件。
④ 保存,退出menuconfig。
⑤ 更新软件包。
pkgs --update
⑥ 生成keil工程
scons --target=mdk5
第四步:
① 修改dht11代码,以适配我们的板子与传感器。参考源码放在文章的最后。
文件:dht11_sample.c。修改数据引脚,这里我们用pb1。
/* 获取板子pb1的引脚号 */
#define dht11_data_pin nu_get_pinindex(nu_pb,1)
将实例代码中的线程创建与线程入口函数删掉,读取传感器数据的实现我们自己写。
② 修改bh1750代码,以适配我们的板子与传感器。参考源码放在文章的最后。
文件:sensor_rohm_bh1750.c。将i2c设备改为i2c2,我们用板子上的i2c2连接传感器。
int bh1750_port(void)
{
struct rt_sensor_config cfg;
cfg.intf.dev_name =i2c2;
cfg.intf.user_data =(void*)bh1750_addr;
cfg.irq_pin.pin = rt_pin_none;
rt_hw_bh1750_init(bh1750,&cfg);
return0;
}
init_component_export(bh1750_port);
文件:bh1750.c,bh1750_set_measure_mode的最后一个参数改为200,太小的话会采集失败。
float bh1750_read_light(bh1750_device_t hdev)
{
rt_uint8_t temp[2];
float current_light =0;
rt_assert(hdev);
bh1750_set_measure_mode(hdev, bh1750_con_h_res_mode,200);
bh1750_read_regs(hdev->bus,2, temp);
current_light =((float)((temp[0]<<8)+ temp[1])/1.2);
return current_light;
}
第五步:
硬件连接,按照下图将传感器用杜邦线连接至板子上。
第六步:
在阿里云物联网平台创建产品与设备,参考公共实例快速入门 (aliyun.com)。 我在创建了一个名为“边缘网关”的产品,基于产品添加了一个名为“gateway1”的设备,在产品上添加了三个属性:
第七步:
增加edge.c文件,主要功能是连接阿里云物联网平台、解析云端下发的边缘计算规则并存储、采集数据并上报至阿里云物联网平台。将以下参数替换为我们在阿里云物联网平台增加的产品与设备的真实参数。参考源码放在文章的最后。
#define pkg_using_ali_iotkit_product_key a1lepymkptp
#define pkg_using_ali_iotkit_product_secret xobshbabkxzxmgym
#define pkg_using_ali_iotkit_device_name gateway1
#define pkg_using_ali_iotkit_device_secret 857b78c5a8fc79aa2703379ef9666eb2
第八步:
① 编译工程,将固件下载至板子上运行。 ② 在阿里云物联网平台通过/productkey/devicename/user/get主题下发边缘计算规则,网关就可以按照规则周期性采集数据与上报数据了。 其中“productkey”与“devicename”要替换为阿里云提供的真实的参数。
边缘计算规则
{
sensors:[
{
name:temperature,//传感器名称
collect_cycle:1,//采集周期,秒
up_type:1,//1:定时上报,2:变化上报
up_cycle:5//上报周期,秒,up_type为1时有效
}
]
}
本项目中用的规则为:
{
sensors:[
{
name:temperature,
collect_cycle:5,
up_type:1,
up_cycle:30
},
{
name:humidity,
collect_cycle:5,
up_type:1,
up_cycle:30
},
{
name:lightlux,
collect_cycle:1,
up_type:2
}
]
}
心得体会
rtt为我们提供了丰富的设备驱动、组件、软件包,使用rtt进行工程的创建、项目的开发是比较快速方便的,但同时有很多组件或者软件包还不是特别的完善,例如本项目中用到的dht11与bh1750软件包,则需要修改其中的一些关键参数。


一文搞懂加速电容工作原理、如何选型及应用
大数据智能营销笔记本有什么功能?效果怎么样?
年底大动作:炫酷小米6还是小米6mix,林心如教你搞机情
无锡外贸进出口首破800亿美元,集成电路同比增35.1%
80C51单片机对压力测量控制系统的设计
怎样去开发一种基于NK-980IOT板的边缘计算网关呢
单片机教程一:8051单片机引脚功能介绍
贸泽电子内容中心推出机器人专题 一站提供各类丰富资源及前沿产品
农药残留检测仪主要通途及效果介绍
石头扫地机器人T6成为了一台体验极佳的扫地机器人产品
利用汽车开发标准避免与错误软件相关风险
板材测量系统与机械设备通过激光器并开发应用程序来进行补偿
WiFi视频遥控履带底盘实现移动功能
激光位移传感器的工作原理及优缺点解析
如何用语言模型(LM)实现建模能力
高速路上ETC系统的实现
如何延长投影机灯泡使用时间
魅蓝e3评测 同价位难寻低手但货源稀缺不好买
主动降噪无线蓝牙耳机哪个好?听音乐最好的高音质耳机推荐
虹科技术 | 用于气体密度和粘度传感器应用的压电 MEMS 悬臂梁的设计、模拟、制作和表征