查看:
20016
回复: 16 |
参赛作品《物联网采控系统》完结
|
|
发表于2017-06-11 12:46:41
|
显示全部楼层
1#
电梯直达
【报名阶段需要填写的内容】 1. 参赛者姓名(必填项): 张工 94900A (立创ID) 2. 单位或学校名称(必填项): 个人 3. 当前职务或职称(必填项): 电子工程师 4. 参赛作品的名字(必填项): 物联网采控系统(通用设备) 5. 简要陈述您的idea和作品(必填项): 该系统会是一个标准的物联网采控系统,通过标准的接口接入设备可以后期无限制的扩展,避免了每次扩展需要整体修改架构。 系统可以用于家庭物联网,可以实现采集各项指标,例如PM2.5,室内温度光照,有毒气体等。同时还可以通过控制链路进行对相应的设备控制操作。 系统可以用于工业采控,智能家居,对环境的采集,实时监控环境的指标,如果需要可以实时对相应的控制设备进行下发控制 该系统具备一个服务器后台,服务器系统采用linux,服务器编写采用PHP/C/C++ 对于数据的展现,由于时间关系,只初级暂时实时消息,展示端为PC端,采用C#操作,如果时间不够,则采用MQTT协议实施发布展示数据内容,这样可以通过第三方的MQTT客户端查阅。 目前需要展示的设备内容有网关+无线采集器+无线/有线控制器。 网关: 公网采用以太网通信,后续可以兼容GSM等通信方式 主板自带WIFI,前期暂时不用 本地网络采用Lora通信以及2.4G(NRF24L01) 主控采用STM32F系列 支持RS485/232总线,方便驳接设备 无线采集器: 低功耗设计,电池供电 采用Lora通信方式 主控采用STM8L系列 挂载SHT20温湿度传感器 控制器: 采用2.4G(NRF24L01)通信 支持4路继电器控制(展示用,实际可以扩展) 主控采用STM8 说明: 为了节省时间,射频部分均采用购买模块来完成,包含LORA模块,NRF24L01P模块 6. 拟用到的立创商城在售物料(必填项): 主控 STM32 STM8 外围器件 电阻 电容 电感 DCDC 等等 7. 拟用到的非立创商城物料或其它补充(必填项): LORA模块 NRF24L01P模块 【作品正式发表(报名成功后进入设计阶段)需要填写的内容】 一、作品简介 例如,可以包括但不局限于以下内容: 1.作品的整机外观图片或焊接组装好的PCBA图片; 2.作品的研究背景、目的和功能、市场应用前景; 3.作品在创新性、趣味性、实用性甚至公益性方面,有哪些亮点可体现? 现在的物联网设备品种太多,如果要把各类的协议标准起来也不可能,例如MODBUS也只是标准了协议,并没标准协议内的有效数据。这样就会使 各个厂家有各自的软件。如果自家用了5家的设备,那么最终你想控制这些设备要来回切换,不麻烦吗?同时也防止厂家间接“强奸”用户,例如: 为了使用更加方便,买同一个牌子的设备,实际上有些我并不是很喜欢,只是能凑合罢了。 用这个网关就是集成各种厂家的数据,最终给用户的只是一个界面,这样用户体验更加清爽,舒适。同时还可以把古老的设备,没有接入互联网功能 的设备让它联网!成为一个互联网设备。让数据集中管理,用户单一管理,效率更高更实用。 二、系统构架图 用流程图或思维导图等形式,描述您的作品的组成构架,即方案图。
网关与服务器通信架构图:
网关与节点的通信架构图:
三、硬件部分的描述 1.附上原理图&PCB实物图的图片或者源文件(官方建议大家尽量用源文件上传),如果是图片,请确保图片是清晰可辨的; 2.用文字把该作品的实现原理、系统的工作过程大致讲解一下。 PCB原文件:网关PCB源文件 网关原理图:
-----------------------------------------网关PCB图片如下--------------------------------------------------
网关PCB实物图,手工焊接了2张,WIFI是预留了接口,ESP-08
采用了很多钽电容,目前全部焊接,如果作为实际的产品而言,可以通过测压力,去掉一些钽电容,毕竟成本太高了 选取的网关外壳,铝合金的,不过商家不给开孔,我得想办法了
=====================================无线采集控制功能验证板===============================
PC远程控制软件
四、材料清单(BOM列表) 列出您这个作品所用到的主要器件(关键器件即可),比如单片机&ARM芯片、专用集成芯片(ASIC)、传感器、功能模块等。 如果所列出的芯片是来自我们立创商城上的,最好能写出该器件的商品编号或附上对应购买链接。 MCU: STM32F205 存储: W25Q64 & TF 无线通信: RA-01/02 & NRF24L01P & ESP8266(预留接口) 有线通信: RS232/485 RTC: PCF8563T 传感器: BH1750FVI SHT211 DS18B20 MQ-135/MQ-2 DCDC: MP2451 LDO: ME6210 所有元器件都是常用你的,除了模块,其他的立创都有。模块想必每个人呢都见过了吧,都是行业大佬出的模块。
BOM没有整理,有点乱!嘿嘿 五、软件部分的描述(选填) 见 【二】 硬件介绍: LORA(Aithink RA-01): 选取LORA的原因是,针对于物联网行业,越来越多的设备选择它是因为距离比较远,但是缺点也没见几个人说,那就是距离远,传输速率慢!传输时间长! (20dbm的功率,9600bps的速率,空旷距离1km左右) LORA应用,对于数据量小,使用环境复杂的情况使用还不错。对于智能家居这一块使用我个人觉得还不错,因为在家里面,几乎全是墙壁,如果用zigbee, 会涉及到非常多的路由,如果链路断掉,很定位问题点。对于这种环境,看好LORAWAN,顺带吐槽下,目前LORAWAN的开发设备套件太JB贵了!!!! 选择理由:距离远,未来主流 NRF24L01P(PA+LNA): 这款搞这行电子的应该都知道了吧,现在很多无线通信设备、传感器都是用它做无线,甚至国内还有这款的SOC,这价格叫一便宜。所以可以挂载很多不同 厂家的传感器,知道对方的协议即可。 NRF24L01P,传输速率比LORA快N倍,但说【入网】这个流程那是ms级别。LORA那是 百ms级别,但是缺点就是无线绕射性能不怎么好,传输直线距离 还不错,但是曲线,有障碍物这种情况距离大大衰减。 选择理由:市场占有率高,便宜 W25Q64: 这款华邦的SPI FLASH,只要用过SPI FLASH 的工程师应该第一款就用的这类吧。说下个人看法: 优点:便宜,好用 缺点:擦除时间太长了!!!!! 选择理由:便宜!好用! W5500: 对于以太网而言,要么跑协议栈,要么就用硬件,再要么上高逼格linux(自带)。我这里选取的是W5500,因为主办方要求用STM芯片,其次跑通协议栈很 简单,搞稳定协议栈不简单!!所以,为了项目进度、稳定所以选取了W5500。 芯片支持8个socket,1个用于通信,1个用于UDP(本地配置参数用,广播),1个DNS,预留1个TCP SERVER做网页。 目前使用中还是很稳定,用W5500官方的栈分分钟钟搞定,比较稳定。 提示:在我使用中发现socket刚连接上就发送数据,会返回成功,但是服务器并没收到数据。解决方法:链接上socket后,延时300ms(随便延时的)再发送。 选择理由:开发简单,大大缩短了开发时间,成本也不会上升多少,芯片使用也很稳定。 ESP8622: 出货量相当惊人的WIFI模块,所以必须得兼容,现在很多智能家居都是用的它采集控制的。不过同是在一个局域网,依然可以通过W5500控制那些WIFI设备。 暂时预留着,后续使用。不过有网线的地方还是建议用以太网,WIFI的稳定性受自身以及路由器的影响,会导致产品体验感不受控制,掉线了是设备问题还是 路由器问题呢? 选择理由:便宜!大众化! RS232/485: 古老且标准的通信方式,必须兼容。打印机、传感器啥的几乎都有这个东西,所以必须兼容。如果家里有一台传统的打印机,想要改造成互联网打印,所以这就 派上用场了,拨接协议,直接远程通信打印就搞定了! 硬件设计采用了全隔离方式(信号+电源),保证主控不会受影响。毕竟外接什么设备是unknow的。 选择理由:地球标准,兼容新旧设备 USB: 采用USB HID方式进行通信,目前下位机已经完成,上位机还没写完.....。后续继续! 为什么采用HID方式? -->> 免驱!!! 打开上位机,插上设备即可完成通信多么好,虽然速率不高,但是满足配置以及读取信息足矣了! 如果虚拟串口,那么你打开的是串口几呢?还要去选择,很麻烦的。体验感太差劲了。 选择理由:仅需要一根USB Micro 数据线(大部分安卓手机标配)即可 TF: 目前是预留了TF卡,是为了用做长期的大量历史数据存储。通信接口是SDIO方式,硬件已经完善,软件还没有调试。目前使用W25Q64来存储历史数据。 选择理由:地球标准大容量储存卡 RTC: RTC选取的是一款比较常用的型号PCF8563T,同时配上了一颗充电电池作为RTC备用电源。这颗芯片通信方式采用常用的IIC,很方便操作。 选择理由:便宜!操作简单!稳定! 网关功能介绍: 1. 远程升级 原理:通过以太网/RS232/R485/LORA 按照指定格式把升级Bin文件发送给网关,目前实现的是通过以太网网络发送, 每次发送256byte字节。因为软件是等Bin文件接收完了之后,再跳转到Bootloader进行升级,所以在此是存储在SPI FLASH上的。 该SPI FLASH 单次写入最大数据是256byte,所以这样规定的。其次是因为数据采用json协议,如果数据量过大,会导致解析json开销过大。 提示:发送bin文件,因为是16进制,所以我用了base64进行转码。 2. 数据缓存 软件内部会有一个RAM的缓存池,根据芯片的RAM来决定,目前我用的这款我采用了最大50KB来作为缓存池,以便于网络不稳定,数据不会丢失。 如果数据存满了,网络依旧尚未畅通,则会按照指定格式存储在SPI FLASH 指定的区域,以便于网络通畅后把历史数据上传到服务器。 3. 无线通信 载无线通信模块:RA-01(LORA) + NRF24L01P+ESP8266,目前ESP8266预留接口,功能调试主要是针对于RA-01+NRF24L01P。 由于硬件原因,LORA的单包最大数据为128Byte,NRF24L01P最大数据为32Byte,这对于传输json数据太痛苦,但是传输modbus这种协议很难 解读。所以我采用的类似json的“序列化”+“反序列化”的方式进行编写,这样后期可无限制的添加协议,不会影响之前设备的协议。 同时在LORA和NRF24L01P上做了简单的拆组包协议,以便于发送更长的数据包。目前支持最高512Byte。 4. 兼容协议 无论是通过RS232/485、LORA、NRF24L01、ETH,所有的数据协议会分为两种,第一种JSON,第二种自定义协议。然后把数据放入指定的TASK解析, 例如要开个灯,从RS232发送,从ETH发送,从LROA发送都是一样的效果,而且执行的程序也是一样的,只是指令进出的管道不一样而已。这样方便于 管理通信协议,不会造成混乱。 5. 电量检测 1秒一次检测DCDC输入电压值,并记录发送到服务器,方便于核实供电情况。
无线采集控制功能验证板介绍: 这只是为了验证功能,所以采用了N合一的设计,实际应用应该不会用到这么多。 多合一内容: SHT21 + DS18B20 + BH1750FVI + MQ-XXX + 2路继电器 + 1个UART扩展 无线通信:LORA/NRF24L01P,二选一。演示采用LORA,这个相对复杂点,NRF24L01P相对简单一点,暂时不做演示。 模块采用MOS管控制电源,不用则关闭,以降低功耗,主控采用STM8L151K4,最终最低功耗做到了2.5ua睡眠电流,RTC唤醒,视频有介绍哈。 六、作品演示 腾讯视频: 地址 (https://v.qq.com/x/page/n0539xzjjbj.html) 着急忙忙的终于吧B端的采集展示做好了,来不及拍视频,就留个链接哈 http://iots.f3322.net:10080/index.php/admin/login/index 账号:user 密码:1234567890
七、总结 先说下整体的流程吧: 1. 网关设计,思考到底要做成什么样子,有什么功能。 2. 功能验证,通过设计的理念,去网上找是否有现成的零部件让我能组装成我想要的产品。 3. 网关电路设计 4. 服务器搭建 5. 网关程序编写+功能验证 6. 无线采集控制功能验证板电路设计,因为只是为了验证功能,所以没有去设计外观。 7. 无线采集控制功能验证板程序编写+功能验证 8. 系统联调 9. PC端软件编写 10. 帖子编写 由于时间关系,只做了PC端演示程序,但是协议都是零活的,后续会完善B端展示。无论是http,ws,socket,有效数据里面的数据协议均是一样, 这样就让整套系统更加容易管理。 服务器用的linux + php + workerman + mosquito + mysql + nginx搭建。支持长连接,高并发!针对于嵌入式物联网设备。 服务器目前完成了:用户登陆+数据解析+数据存储+远程升级 + 远程控制等,后续继续完善B端,这样就方便于手机操控,同时绑定在微信里面就更易用了。 提醒下:买物料一定要仔细!!!我这就买错了一个物料,继电器我设计的是5V供电,买成了12V,后面写程序的时候才发现,然后在一个开发板上卸 了两个下来。上面的图片继电器是12V,那是焊接好拍摄的。视频里面是5V,那是后面写程序的时候修改过了。
这里感谢立创商城提供的这个机会--> int main(void){ for(;;){ printf("3Q!\r\n"); } } 由于时间关系,没有做得那么精致完美完善,希望做这个产品的目的大家能理解,有什么更好的建议意见可以回帖一起讨论。谢谢! /* 更新日志 */ 2017-06-25 - 2017-07-01 搭建云服务器
2017-07-01 - 2017-07-05 网关的原理图设计以及PCB绘制
2017-07-21
下一步:打样采集器+制作,目前看来时间要紧,所以采集器为功能验证板,没法做成产品的样子了。 完成网关的外壳修改,让其成为一个像样的的产品。 2017-08-19 完结 |
|
发表于2017-09-01 15:14:20
|
显示全部楼层
12#
厉害!!!
|
|