物联 -鸡舍项目总结

物联 开发的那些“坑”

传感器和采集模块层面之间的“坑”

第一个“坑”,最开始测温度原打算采用SHT1x系列的温湿度芯片,后来考察发现,湿度监测点其实只有一个,而温度至少需要四个,所以综合考虑,还是采用了DS18B20芯片。由于安装物联 采集模块盒子的防水接头的孔径大概是6mm左右,去现场的时候采购的四芯双绞屏蔽线没有找到这么细的,只好选择了四芯屏蔽线。鸡舍一般120米长,安装在前、中、后三个位置,那么每个温湿度探头平均分布,如果温度采集模块在中间位置,那么至少间隔40米左右相对合适,如果想减少RS485的通信距离,物联 采集模块离 关比较近一些,那么最远的通信距离应该在80米左右。为了便于布线,初步打算采用的是总线方式,也就是一根线上同时连接4个传感器(含一个外部环境温度)。但是现场测试发现100米的线根本无法正确获取温度数据,40米左右的线也不行。经过上 查证一些资料,决定把GPIO由原来的推挽模式,改为驱动能力更大的开漏模式,同时把上拉电阻尽量变得更小一些。测试发现40米左右可以正确获取温度数据,但是100米仍然不行(查询相关的资料,发现如果是屏蔽双绞线,传输距离会进一步变大,一般会有3倍以上的提升)。考虑到现场条件的制约,最终方案是物联 采集模块放在中间,向两端分别布设约30-40米左右现场的温度探头,以这种方式迈过了第一个坑。

第二个“坑”,同样也是出现在DS18B20上。单总线驱动其实是.NET Micro Framework官方自带的驱动,应用示例来自国外GHI,以前测试也没有发现问题。现场开始实施的时候也没有问题,后续在观察温度数据中发现,会出现异常大的值。仔细分析后发现,当温度在零下的时候会出现这样的值。查代码发现,原来示例中数值转换的代码有误,看来最初写这个示例的程序员只在温度适宜的地方测试过呀。(附记:后来根据上传到云端的温度曲线,发现温度在-1~1摄氏度的之间,温度会出现跳变,如图2所示。把温度探头放到冰箱,一点点看着温度变到零度以下,并没有发现类似的温度跳变,可惜后续回来后,温度一直没有零度以下,而在冰箱又是快速变到零度以下的,所以很难复现现场的温度趋势,直到现在,还弄不明白为什么会出现这种情况。系统实际运转的时候,鸡舍的温度应该在38摄氏度左右,不会出现零摄氏度以下,但是这是一个值得深究的问题)。

第三个“坑”,也是温度上出现了问题,这次是采集SHT1x芯片温度时出现的,就是低于零摄氏度时,只会显示零。查底层驱动代码发现,当时没有考虑到温度为零下的情况,在对单精度浮点数转双字节的数据变换中,把浮点数的符 位弄丢了。

第四个“坑”,就是称重环节,称鸡的重量,加上围栏和架子,大概200千克左右,要求称重精度几十克。采购了4个S型传感器,由于精度要求高,物联 采集模块的芯片AD精度最高才12位,远远不够,所以中间添加了HX711采集模块,并且在以前测量马路沥青铺设厚度的项目中采用过类似的方案。以为应该没有什么大问题,但是实际测试中发现,除了角差以外,还有如下问题,就是重量和温度相关,并且伴有零点漂移现象(似乎单纯的进行温度补偿不能解决问题),如图3、图4所示。虽然变化的重量分摊到一只鸡上,不过十几克,但是为什么重量逐渐变小,值得深入研究。

云端通信的坑

写在最后

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2017年2月11日
下一篇 2017年2月11日

相关推荐