侵权投诉
订阅
纠错
加入自媒体

浅谈基于Apollo2 mcu的智慧农业系统

2019-07-16 08:57
润欣科技
关注

组网通信与云服务器

设备间组网与添加节点

针对于使用场景的不同,大范围农田可以选择使用SX1260/ SX1278 LORA进行组网。小范围类似大棚,可以选用ZigBee或者蓝牙mesh。ZigBee和蓝牙mesh都有自组网功能,数据交换和节点添加相对简单。

如果选用的LORA模块,笔者个人建议使用应答模式的星型网组网(图6)。每个节点的地址使用Apollo2 mcu 自带的chip ID作为参照。数据交替通过主节点对单个节点发出心跳指令,子节点唤醒后获取各类数据并上传,然后等待应答,如果应答超时,既丢包,重复发送如果仍无法收到,将会发给备用主节点报错。

同理,如果主节点发送心跳指令没有数据应答,会进行等待、重发,长时间无应答会将该地址节点踢出循环列表同时给服务器发出报错。

图6

LORA通信暂不支持自组网功能。该功能相对简单,主节点广播发出添加节点模式,子节点待命等待主节点单个检索地址。每个检索完毕的地址,都会退出添加节点模式。当主节点检索完所有已知节点后,会二次发出新节点广播。二次收到的新节点就主动循环给主节点发送自己的地址。直到主节点发送应答才结束。

设备与服务器通信

TCP(Transmission Control Protocol) 传输控制协议。TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握确认建立一个连接。TCP标志位有6种 标示:

SYN(synchronous建立连接)

ACK(acknowledgement 确认)

PSH(push传送)

FIN(finish结束)

RST(reset重置)

URG(urgent紧急)

Sequence number(顺序号码)

Acknowledge number(确认号码)。

流程如图7所示:

第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。握手完成后,两台主机开始传输数据了。

图7

主节点,通过转接口模块接入互联网,同时模块设置好TCP/IP 协议进行传输。对于服务端的TCP/IP 协议,笔者使用的是SocketAsyncEventArgs类进行编写。SocketAsyncEventArgs是.net提供的关于异步socket类。也就是高性能复用IO。对比与传统socket,使用该类编写的Server性能和吞吐量都有很大的提升。初始化代码如下:

启动,socket监听代码:

图9

在使用socket通信时,如果长时间没有数据交互。服务器是会直接断连。笔者这里使用双应答模式。服务器向智能硬件发送心跳包,智能硬件应答并上传数据。如果中间因为网络或者各方面原因失去连接。智能硬件会根据定时器设置主动向服务器发送确认连接信号,如果无应答,既断连。智能硬件将会重新启动TCP协议。多次连接失败将会发出链接异常警报,提醒人工进行排查。

文章来源:润欣科技Fortune公众号

<上一页  1  2  3  
声明: 本文由入驻维科号的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。

发表评论

0条评论,0人参与

请输入评论内容...

请输入评论/评论长度6~500个字

您提交的评论过于频繁,请输入验证码继续

暂无评论

暂无评论

    电子工程 猎头职位 更多
    扫码关注公众号
    OFweek电子工程网
    获取更多精彩内容
    文章纠错
    x
    *文字标题:
    *纠错内容:
    联系邮箱:
    *验 证 码:

    粤公网安备 44030502002758号