开源DTU 支持OTA 空中升级 与 云端服务器
本帖最后由 easyio 于 2015-9-16 10:37 编辑一年前 发帖 《打造一款开源的 开放API的 云端 DTU , 求关注!》的帖子 由于违反论坛规定被封ID了。大家可以先在阿莫搜索一下这篇帖子(论坛不允许发链接),做一个了解。
上一版本发布不久后由于被封ID所以没有进行持续更新,只是在一年的时间里与台湾一家做定位器产品的公司合作,合作过程中不断优化和完善功能,并以实际产品来对EasyIO的稳定度和一些基于理论的东西做了实际验证。
这一版比上一般的的改进内容:
1,从之前的AT命令方式改为PPP模式,增加了数据传输的稳定度
2,增加CMUX ,使之实现多通道数据处理
3,增加了多平台的支持,MCU支持STM32L和STM32F系类,Modem支持市面上百分之九十的3g/GPRS模块
这一版发布主要包含3个功能
1,TCP连线,一个DTU的雏形,包含keepalive和断线重连功能,开发者只需考虑上层应用实现无需考虑 稳定性和发送心跳包的问题。
2,能够连接openfire服务器,实现云端管理 和控制
3,空中升级,这次由于更新了底层数据传输,才得以完成OTA功能,用户只需调用相关接口即可完成远程OTA功能。
4,增加了自动APN侦测,目前包含 中国,中国台湾省,英国,德国。用户可以自行扩展。
应用场景
传统DTU的替代。使用EasyIO比传统DTU有如下优点:
1,价格优势。传统DTU的使用都需要外挂一颗MCU来完成数据采集和传送的功能,而DTU的价格便宜的也需要200元左右,而EasyIO是直接使用MCU驱动Modem模块,模块价格只有30元左右,价格十分便宜。
2,开发优势。传统DTU都是提供一个串口透传的功能,这样用户只能发送简单的数据到服务器,数据可靠性传输很难保证。空中升级功能更是难上加难。EasyIO提供各种服务接口API,用户在网络数据传送方面的开发,更加灵活可靠。
3,体积与性能优势。传统DTU一般体积比较大,而且对功耗基本上没有什么控制。而EasyIO是直接驱动Modem模块所以体积做到很小,由于MCU的直接控制,可以针对不同型号的Modem模块进行功耗控制和休眠策略的开发。
EasyIO 的目标:做3G/GPRS 领域的Ardiuno ,提供方便可靠地API接口,简化开发者对底层的细节考虑,快速开发出产品级应用。并以从设备到服务端一体化的解决方案服务于使用者。
EasyIO力争开源,也不要问我为什么要开源,因为现在人们看不懂开源就像十年前传统行业看不懂互联网一样!
EasyIO 会坚持每周做优化和功能升级,欢迎各位及时提出需要改进的地方和BUG,我们会及时修复。
由于源码是以git方式发布的而我又不能贴网址,我把附件中上传了一个文本文件,里面包含GitOSC 的地址。
EasyIO 下载地址
说明文档及其教程现在还不是很完整,更新中。。。
刚刚看到,,帮顶, 问下楼主,现在你这里you模块链接吗,???? seeyou2013 发表于 2015-9-15 21:38
问下楼主,现在你这里you模块链接吗,????
用STM32开发板 + SIM900开发板即可。我后面会补充上 用STM32+SIM900搭建的教程 我自己也有模块。但是不知道这里能不能发淘宝链接。 PPP模式是不是需要比较多的资源啊?? PPP模式是不是需要比较多的资源啊?? lindabell 发表于 2015-9-15 23:29
PPP模式是不是需要比较多的资源啊??
是的PPP所需资源是比较多的,但是PPP带来的好处比要大于坏处。而且现在MCU的价格已经比较低了,选型一个高资源的也还不算太贵 等了好就终于等到今天!LZ很给力! PPP模式64K RAM就可以跑的很欢了,lz的cmux部分完整不啊{:smile:} 关于APN可以参考如下博文(转载 cn0086)
APN 设置技巧
如果产品不涉及出国,仅在国内使用,那么以下内容不合适。
我们要讨论的是产品发出去后,有可能在不同国家使用,有不同的运营商。
曾经请教过朋友,他们建议使用短信,更新APN参数。
这个方法也不错,不过遇到数据卡时,国外叫 M2M,machine to machine,
这种卡连号码都没有,没办法使用这种方法更新。
后来参考手机的做法,根据插入SIM card 的 IMSI:International Mobile SubscriberIdentification Number 来设置APN
具体做法如下:
1, 先把有可能用到的运营商资料,做成一个2维数组:
结构是 MMC+MNC,然后是 APN,user name, password
//IMSI共有15位,其结构如下:MCC+MNC+MIN
//MCC:Mobile Country Code,移动国家码,共3位,中国为460;
//MNC:Mobile Network Code,移动网络码,共2位,
const unsigned char *apn_list[]= {\
//MCC+MNC,apn,user,passwd
//apn carrier="China-Mobile"
"46000","CMNET","","",\
//apn carrier="China-Mobile"
"46002","CMNET","","",\
//apn carrier="China-Mobile"
"46007","CMNET","","",\
//apn carrier="Vodafone NL"
"20404","live.vodafone.com","vodafone","vodafone",\
//apn carrier="T-Mobile Internet"
"20416","internet","","",\
//apn carrier="Orange NL"
"20420","internet","",""\
};
2, 取得SIM card 的 IMSI 后,根据前5位,搜索数组,找到正确的 index:
for ( i = 0 ; i < apn_count ; i++ ) { if ( cmpmem(respond_str,(unsigned char *)apn_list,5 )) { my_gsm.apn_index = i ; return true; } } 3, 在设置 APN 时,通过 index,找到对应的 apn, user, passwd,逐一设置好即可。 附:全球 apn 列表 关于APN可以参考如下博文(转载 cn0086)
APN 设置技巧
如果产品不涉及出国,仅在国内使用,那么以下内容不合适。
我们要讨论的是产品发出去后,有可能在不同国家使用,有不同的运营商。
曾经请教过朋友,他们建议使用短信,更新APN参数。
这个方法也不错,不过遇到数据卡时,国外叫 M2M,machine to machine,
这种卡连号码都没有,没办法使用这种方法更新。
后来参考手机的做法,根据插入SIM card 的 IMSI:International Mobile SubscriberIdentification Number 来设置APN
具体做法如下:
1, 先把有可能用到的运营商资料,做成一个2维数组:
结构是 MMC+MNC,然后是 APN,user name, password
//IMSI共有15位,其结构如下:MCC+MNC+MIN
//MCC:Mobile Country Code,移动国家码,共3位,中国为460;
//MNC:Mobile Network Code,移动网络码,共2位,
const unsigned char *apn_list[]= {\
//MCC+MNC,apn,user,passwd
//apn carrier="China-Mobile"
"46000","CMNET","","",\
//apn carrier="China-Mobile"
"46002","CMNET","","",\
//apn carrier="China-Mobile"
"46007","CMNET","","",\
//apn carrier="Vodafone NL"
"20404","live.vodafone.com","vodafone","vodafone",\
//apn carrier="T-Mobile Internet"
"20416","internet","","",\
//apn carrier="Orange NL"
"20420","internet","",""\
};
2, 取得SIM card 的 IMSI 后,根据前5位,搜索数组,找到正确的 index:
for ( i = 0 ; i < apn_count ; i++ ) { if ( cmpmem(respond_str,(unsigned char *)apn_list,5 )) { my_gsm.apn_index = i ; return true; } } 3, 在设置 APN 时,通过 index,找到对应的 apn, user, passwd,逐一设置好即可。 附:全球 apn 列表 EasyIO 开发环境搭建 中的git地址 不能下载 _yuming 发表于 2015-9-16 09:57
EasyIO 开发环境搭建 中的git地址 不能下载
刚刚地址有变动,现在修改过了,可以下载了 _yuming 发表于 2015-9-16 09:57
EasyIO 开发环境搭建 中的git地址 不能下载
刚刚地址有变动,现在修改过了,可以下载了 tomyqg 发表于 2015-9-16 09:44
关于APN可以参考如下博文(转载 cn0086)
APN 设置技巧
谢谢提供 顶起,是个好东西,现在物联需求旺盛,这个东西有前途。 Mark备用 DTU 谢谢分享 谢谢搂主分享 支持一下 tomyqg 发表于 2015-9-16 09:31
PPP模式64K RAM就可以跑的很欢了,lz的cmux部分完整不啊
好像被封装了吧 easyio 发表于 2015-9-15 21:40
用STM32开发板 + SIM900开发板即可。我后面会补充上 用STM32+SIM900搭建的教程 我自己也有模块。但是不知 ...
好像如果开源了, 且有价值的话, 应该是能发淘宝配套链接的, 如果有配套硬件,我也想买一套。 ysu533 发表于 2015-9-16 15:04
好像如果开源了, 且有价值的话, 应该是能发淘宝配套链接的, 如果有配套硬件,我也想买一套。 ...
嗯嗯,等我把 云服务 和 ota 部分的教程 和演示视频完成后 再推相应模块 很给力~ 可以考虑用消息总线 ActiveMQ 和 mosquitto MQTT协议。 比较Ardiuno ,还可以考虑用 elua ,参考 NODEMCU 模式也挺有意思... xwiron 发表于 2015-9-16 15:25
比较Ardiuno ,还可以考虑用 elua ,参考 NODEMCU 模式也挺有意思...
跑 LUA 还是比较容易的,只是STM32 资源实在有限了 学习了! 本帖最后由 hyz_avr 于 2015-9-17 23:41 编辑
好像没看到短信部分了? hyz_avr 发表于 2015-9-17 22:47
好像没看到短信部分了?
因为这版是从产品中抽离出来的,所以短信部分还没完全抽离完,后面会补上 {:smile:}赞!!非常有价值的开源 支持哈,楼主不错,学习一下先。 easyio 发表于 2015-9-18 09:07
因为这版是从产品中抽离出来的,所以短信部分还没完全抽离完,后面会补上 ...
PPP模式有哪些好处,使用PPP模式对短信接收这些有影响吗? 楼主一定是呕心沥血了。搞了多长时间呢 本帖最后由 easyio 于 2015-9-18 10:48 编辑
hyz_avr 发表于 2015-9-18 10:22
PPP模式有哪些好处,使用PPP模式对短信接收这些有影响吗?
PPP 可以充分发挥 TCP的可靠传输。 二进制数据传输不会丢帧错帧。
由于是使用Cmux 多通道。所以数据传输和短信不互相影响。
现有的LED控制卡稍加改动即可实现一个 “云版本” 的控制卡。 xinmulan 发表于 2015-9-18 10:37
楼主一定是呕心沥血了。搞了多长时间呢
断断续续将近2年。不过期间也进行过一些商业应用 easyio 发表于 2015-9-18 10:47
PPP 可以充分发挥 TCP的可靠传输。 二进制数据传输不会丢帧错帧。
由于是使用Cmux 多通道。所以数据传输 ...
嗯,LED主要还是TCP,“云版本”TCP传输只是一小部分,更多的还是在用户操作这块,像节目编辑,审核,终端管理,用户和权限的管理等。
这是我们目前实现的。
hyz_avr 发表于 2015-9-18 11:19
嗯,LED主要还是TCP,“云版本”TCP传输只是一小部分,更多的还是在用户操作这块,像节目编辑,审核,终 ...
不错看上去很成熟 PPP拨号只需要RXD,TXD,不需要硬件流控制吗? PPP拨号只需要RXD,TXD,不需要硬件流控制吗? coolhorse 发表于 2015-9-18 16:00
PPP拨号只需要RXD,TXD,不需要硬件流控制吗?
是的 不需要的 学习一下! easyio 发表于 2015-9-18 16:58
是的 不需要的
"EasyIO 会坚持每周做优化和功能升级,欢迎各位及时提出需要改进的地方和BUG,我们会及时修复。"
好像这么久都没更新过吧... 什么时候开源呢? 说明文档打不开网页 赞!!非常有价值的开源 支持下楼主,不过楼主好像好久没有动静了! 一直在找DTU替代方案 关注楼主,楼主做出来了,我买上毛爷爷送上支持一块开发板。 gzhmcu 发表于 2015-9-16 09:28
等了好就终于等到今天!LZ很给力!
下载看了吗?提供API接口,以lib形式做的? MARK 给力的 项目 好东西顶上来 你好,,请问如果使用openfire 是不是还需要买一台云服务器啊 mark 好东西顶上来 Mark,DTU 大家有研究过吗? 项目现在什么状态?开源中国上一年也没有提交更新。
页:
[1]