不得不再次感叹一下,ddl是第一生产力!!
历经了7天的磨练,这个小东西终于被搞定了。
其实是每天下班后,还不想加班的我,回来完成一个小任务后开始躺尸。
看着群里面的大佬们每天在讨论H5啥啥啥的高端的玩意儿,总觉得自己菜的不行……
言归正传,鹅厂这次搞得【腾讯连连IoT开发大赛】不得不说是个特别好玩的东西
其实作为一个滑坡灾害监测设备的话,一般应该是安装在户外,也就是用4G或者NB-IoT的通讯方式更好。
でもね、手头目前缺少设备- -,就用了上次从鹅厂嫖到的TOS_EVB_G0开发板作为核心。
主要设备:
接下来是个全家福
先上一个视频
首先做好硬件开发准备工作,把传感器连接到核心板上,写好驱动代码,读取传感器数值。
位移传感器是一个三线制传感器,行程1000mm,供电5-10V(实测3V3工作正常,反正是个滑动变阻器……)
传感器基本上是线性的,所以用ADC读取后,可以直接用公式进行转换
输出端口接到ADC1上,然后在软件中对ADC1进行配置
然后驱动ADC1,读取数值,将其转换成实际位移
倾斜度传感器选用的是SCA100T,这是一个SPI总线的倾斜度传感器
数字式传感器可以有效解决因为噪声导致的干扰
在驱动了板载硬件SPI后,调试未果,便采用了模拟SPI时序的方法进行驱动
以X轴加速度读取为例:
最后获得到当前的XY轴加速度,然后根据下面的公式进行换算
其中
然后进行一个计算校准
这里很奇怪的是,直接做减法后强制类型转换得到的结果值有错误……
所以用了个中间变量做转换……疑惑脸🧐
最后利用串口输出X和Y轴的角度值
因为灾害预警一般是看其变化的情况,所以在程序里面还有对差值进行计算判断
首先把当前的位移和倾斜度的值存储在一个变量中
然后把每次读到的值和上一次的值求差值计算
接下来进行差值判断,首先定义报警阈值
报警一共分为四个等级(对应报警值为模拟,实际使用时会根据现场情况进行调整)
等级 | 对应数值 |
---|---|
蓝色警报 | 位移差值>20mm 或 角度变化>3° |
黄色警报 | 位移差值>40mm 或 角度变化>4° |
橙色警报 | 位移差值>60mm 或 角度变化>5° |
红色警报 | 位移差值>80mm 或 角度变化>6° |
然后开始进行条件判断
拉动位移传感器,改变传感器的值,主控自动进行报警操作
准备好硬件以后,就开始在云平台构建物模型了
首先在腾讯云物联网开发平台中依次点击“产品开发”—“新建产品”
然后依次填写信息,因为这里我才用的鹅厂开发板板载的ESP8266,所以通信方式选择WiFi
然后点击卡片进入
接下来定义数据模板,可以选择导入json的方式,也可以一步一步自己添加
下面是我的产品所需要的属性,和其对应的json信息
那么简单来说一下吧
在我的模块中,位移和倾斜度的值,都属于浮点型数据,所以我可以新建浮点型数据属性,来读取设备上传的值
例如你的变量范围是-30°~30°的一个数据范围,就可以如上新建数据属性
这里值得注意的是,标识符一定要和数据上报的字符串中的数据一致
例如我的倾斜度X上报的数据如下:
那么我的标识符就要保持一致
因为一开始我想直接通过MCU判断当前是属于什么警报类型,直接上传到云平台,所以建立了一个如下的数据模板
上报的数据如下
通过测试,的确服务器可以收到相应的报警数据
但是腾讯连连竟然不支持字符串的显示!!!!!!!
在极度的气愤和无奈下ヾ(≧へ≦)〃
咨询了鹅厂的工程师,他们给出的建议是采用枚举类型
果然柳暗花明又一村!!
新建枚举类型数据,然后把每个报警值对应到一个数字(见1.4部分)
新建一个数据模板
这样就会获得一个值,然后云平台会根据这个值来对应报警类型。
点击交互开发按钮
在下面的属性中找到面板配置
这里就是每天看各位大佬讨论的H5开发了,对于我一个硬件开发者来说,属实有点点难度,暂且先略过
目前采用的是标准面板
这里可以把每一个值选择其显示的方式
比如浮点数的变量会自动匹配一个棒图
那么这个里面为了让当前状态更明显,所以我把报警等级放做大图标,其他的数据都作为小图标看数值即可。
其实接下来就基本大功告成了,剩下的就是配置软硬件接口部分了
首先点击设备调试,找到对应的设备,点击调试
当然,一开始你可能没有设备,那么就点击新建设备
点击设备信息,然后就可以看到你的一些关键信息
然后在硬件程序中配置你的这几个信息
在程序中订阅topic
然后定义上报数据类型
点击在线调试
就可以实时看到你的设备上报的数据了
定义一个读写数据
然后在腾讯连连小程序中,就会出现一个可以修改的数据变量
在MCU程序中编写对数据的读取解析
首先看一下平台会返回到的数据payload
然后对其进行解析
int_time_val
里面存放的是数据采集间隔时间,然后在主循环中编写相应程序
鹅厂的IoT系统中有一个数据流,挺有意思的
左侧选择 数据开发 — 新建数据流
例如我这里 新建一个 警报推送
交互数据里面有输入、处理、输出 三大部分内容
首先添加一个设备数据输入,选择相应产品,然后选择属性
这里的属性就是我们之前定义的数据属性,这里我们选择报警事件
(其实也可以用warn_num,但是这个string类型的数据不能浪费他呀)
添加一个数据过滤,然后加一个条件。
我们一共有四个条件(red、orange、yellow、blue),分别添加四个数据过滤
最下面添加一个输出—公众号推送
然后分别把他们连接起来
然后启用这个数据流
这样的话,我们就可以在腾讯连连 微信公众号中看到报警信息
最后再来一句感慨
鹅厂的IoT平台真的是好用,但是为什么string类型数据不能显示(╯▔皿▔)╯
上面的部分代码是腾讯云物联实验室给的示例代码,本来不想贴出来,但是感觉很多人还是在走弯路,所以还是贴出来大家一起参考一下
然后就是关于面板,因为做硬件开发,很少开发前端,发现H5的开发不只是js部分,还需要SDK配置,这个只能说学无止境,展望一下后续吧
腾讯云IoT Explorer平台和TencentOS-tiny简直是提供了太大的开发便利,一个产品利用腾讯IoT平台进行开发,可以大大缩短周期,能够尽快上线!
不过也有不足,这次开发是基于ESP8266进行开发的,我的设备应用场景多在户外,因此可能更需要用4G和NB-IoT来进行s据传输。这次时间仓促,手边没有相应模块,只能先用WiFi调试了,看来接下来还有的事情做~
短时间内堆起了这么一个小家伙,还是没有把预想的功能全部做完,不足之处还请各位看官多多见谅,大家相互交流。
最后,感谢鹅厂的这次活动~
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。