野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 37499|回复: 11

开源基于Onenet的小网关

[复制链接]
发表于 2017-1-23 18:42:36 | 显示全部楼层 |阅读模式
本帖最后由 Ray 于 2017-1-23 18:45 编辑

该工程是去年本人参加的野火Onenet物联网应用比赛,很早之前就跟火哥提过完善后就开源,只是一直很忙,提交作品后几乎没时间再回头修改,现在仅仅针对比赛时的代码做出风格上的小调整,以及添加W5500的一些代码。

首先感谢野火以及中移所提供的平台。其次,开源的目的是为了为该行业的发展做出一丁点的贡献。本人从事技术行业以来,深受互联网的各大神的开源的帮助,一直希望能够做出回馈。
在此先感谢某网友:“飞鸿踏雪”    APP的界面方面参考了该作者的其中一个作品。
本工程虽然并无太多技术难题,仅仅是基于平台上的一个技术的整合,不过本人在该工程的逻辑框架以及代码编写都下了一定的功夫,尽量的做到层次分明。
(代码风格本人也一直在寻觅着一个合适的,也不断在修改中,各大网友如果有好的建议希望可以留言)

先简单讲解下该工程的工作流程。
通信协议使用的是Onenet中的MQTT协议,该协议是有IBM所开发的一个即时通讯协议,在这几年中的使用尤其广泛,可见该协议比较符合物联网行业中的技术需求,这也是我选用该协议的原因之一。
设备端和移动端之间的数据传输格式使用的是JSON数据格式,这样子无论是WEB还是移动端上的解析都是比较方便,并且也很方便调试人员观察数据。
由于时间有限,所以当初所做的模式是平台上实现设定好一个固定的topic,设备端登录成功后,数据会使用该topic发布出去,移动端也同理,是通过订阅该topic获取数据的。
设备的联网方式是使用ESP8266进行无线WIFI连接,设备上接有PM2.5、光照、温湿度、以及18B20传感器等5个参数。(板子上还有蓝牙部分,但是该部分的控制程序未添加,所以仅能放歌,未能在APP上进行控制)

代码工程目录: 1.png


工程的设计思想是,底层的外设驱动放在BSP,处理有关的放在APP,由于KEIL MDK没法分组嵌套,所以第三方库(MQTTLIB和CJSON)以及网络部分(ESP8266和W5500)都放出来,这样子应该会比较明了一点。
工程的TCP功能通过TCPinterface.c中的接口所约束,使用一个函数把所需要使用的网络部分驱动注册对接进接口里。


接口函数部分
  1. typedef struct
  2. {
  3.     bool (*Init)(void);
  4.     bool (*Listen)(char *port);
  5.     bool (*Connect)(char *ip, char *port);
  6.     bool (*Disconnect)(void);
  7.     bool (*Send)(uint8_t *, uint16_t len);
  8.     int (*Receive)(uint8_t *,int len);
  9. }TcpInterface;
复制代码
  1. TcpInterface TcpFunc;   //Tcp funcition for external user


  2. /*
  3.     Regsister function for external user
  4. */
  5. void Register_TCPDriver(TcpInterface *tcp_driver)
  6. {
  7.     TcpFunc.Init = tcp_driver->Init;
  8.     TcpFunc.Listen = tcp_driver->Listen;
  9.     TcpFunc.Connect = tcp_driver->Connect;
  10.     TcpFunc.Disconnect = tcp_driver->Disconnect;
  11.     TcpFunc.Send = tcp_driver->Send;
  12.     TcpFunc.Receive = tcp_driver->Receive;
  13. }
复制代码

由于我做设计的硬件部分有以太网和WIFI部分,我是打算在这两者的使用上做到二选一,现在驱动是已经完成,存在问题是MQTT的处理函数中还未做兼容,因为8266部分代码有针对网络问题做出一些判断和重启,
而W5500仅仅是把接口对接好,尚未能直接通过注册无缝使用。
该模式的设计思想是,为了把各部分可以区分开的都进行分层,然后通过类似接口的形式对接起来,就像插座一样,你可以插风扇,也可以插充电器,只要你的接口符合我的标准。
2.png



附件PDF是我的原理图部分,由于有些地方还存在些问题,所以就不贴PCB了,简述下所存在的问题:1、蓝牙音频部分的电源电容需要加到至200多到300多UF,不然会存在音源声音调到很大的时候,模块会重启。
2、BOOT0和BOOT1的拨码设计有误,如果置0的话,无法使用串口下载程序,IO需要串电阻。
3、无网络变压器以太网口和带网络变压器的以太网口的LED是不一样的,带网络变压器的LED是极性是相同的,无网络变压器的是反过来的....

原理图:
wifibox.pdf (89.48 KB, 下载次数: 157)

所以尽量只参考关键部分:W5500,ESP8266以及传感器IO。工程中的代码可以确保跑的起来,并且经过了比较长时间的运行。
(印象中不断电好像也有将近一个月,期间手动断网,拔路由,路由重启,小区断网的情况均遇到过,设备未重启的情况下扔能正常运行,证明该框架基本没什么问题,并且也预留了一些扩展的函数,有兴趣的网友可以多看点代码)

针对ANDROID APP部分,本人也是在期间现学现用的,时间比较仓促,所以并未做很多功能,但是也还是会保持个人样的。
(登录界面,只要大家注册的设备是MQTT协议,就可以使用我这个APP登录,登录成功后会进入数据页面,数据是订阅“device/out”获得的)
如下图
IMG_2916.JPG       IMG_2917.JPG


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
该作品还不是最终版,在这里做个计划,规划出当初构想还未完成的部分,后续有时间我再去完善发出第二版
1、设备端 添加了sub topic部分代码,但是还没设计控制部分,后续打算用作蓝牙控制
2、Smartlink还未做,MCU上只是简单的一条指令,这个APP方面的工作稍多点,打算界面做滑动界面,一个是传感器数据,一个是蓝牙音频页面
3、W5500还未完成无缝与ESP8266切换
4、硬件下,拓展的IO口打算修改,打算留有一路串口,这样会更方便拓展
5、有点打算使用ESP32S去完整这一整个功能(性能完全可行,工作时间问题....不知有无必要)

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
下面放一下放一些作品图:
IMG_2846.PNG              IMG_2878.JPG
IMG_2879.JPG              IMG_2927.JPG





由于代码和APP工程超过了10M,只能放百度云了分享.....
MCU代码链接:http://pan.baidu.com/s/1kUSxvIB 密码:vjfh
APP代码链接:http://pan.baidu.com/s/1eSecHLw 密码:sxjs










回复

使用道具 举报

发表于 2017-1-23 21:58:27 | 显示全部楼层
作品挺漂亮的,感谢分享~
回复 支持 反对

使用道具 举报

发表于 2017-2-11 10:53:29 | 显示全部楼层
cool
回复

使用道具 举报

发表于 2017-2-11 12:39:01 | 显示全部楼层
perfect!!感谢!!!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-14 20:31:57 | 显示全部楼层
希望能多点人阅读,打算给自己定个目标,先移植到野火的F429,然后下一步重新设计板子做一版新的。
回复 支持 反对

使用道具 举报

发表于 2017-5-17 10:05:08 | 显示全部楼层
等待楼主移植到fire429
回复 支持 反对

使用道具 举报

发表于 2017-5-25 12:27:29 | 显示全部楼层
谢谢楼主分享,不用也学习下
回复 支持 反对

使用道具 举报

发表于 2018-7-17 19:36:09 | 显示全部楼层
新手一枚   烦请一下 数据是订阅“device/out”获得的  这里是如何操作。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-16 22:14:26 | 显示全部楼层
天真的小孩 发表于 2018-7-17 19:36
新手一枚   烦请一下 数据是订阅“device/out”获得的  这里是如何操作。。。

专门做一个topic传出去,给手机读的
回复 支持 反对

使用道具 举报

发表于 2021-5-19 21:13:30 | 显示全部楼层
先收藏了,虽然现在还看不懂,但一定是好东东,以后一定能看懂的
回复 支持 反对

使用道具 举报

发表于 2021-10-8 17:02:26 | 显示全部楼层
完美,cool
回复

使用道具 举报

发表于 2021-10-9 08:46:25 | 显示全部楼层
前排仰望大佬
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-21 16:48 , Processed in 0.031972 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表