家庭物联网系统设计之以太网通信
1 设计目的
实现家庭物联网的以太网通信,家庭物联网网关设计。
2 方案设计与论证
本方案设计首先在花生壳网站申请域名,下载花生壳软件客户端并运行该软件使之在线才能得以激活域名。其次配置家庭路由器,将域名绑定在家庭路由器上。这样本系统的Android应用程序可以解析域名来得到家庭路由器IP,再通过套接字实现将消息发送到目标网关。总而言之,该数据通信链路应用Ethernet+TCP/IP方式,使得Android应用程序能够将消息通过以太网传送到家庭路由器。
对于家庭物联网的控制终端可通过WiFi模块作为中转,WiFi模块作为服务器,无线路由器作为客户端,家庭路由器将其接收到的消息发送给WiFi模块,WiFi模块再将消息通过UART发送给微控制器。
3 网络模块的设计与架构
3.1 网络模块工作原理
3.1.1 端口号规划
A 家庭路由器(TCP服务器)的外部端口8899开放,供手机(TCP客户端)连接
B WiFi模块(TCP服务器)的端口8899开放,供路由器(TCP客户端)连接
3.1.2 家庭路由器绑定域名
A wu919202662.eicp.net
3.1.3 IP地址规划
A 家庭路由器外部出口:动态IP
B 家庭路由器内部网关:192.168.1.1
C USR-WIFI232-B模块:192.168.1.160
3.1.4 串口参数
A 与家庭物联网的控制终端的串口参数一致
3.1.5 总结
家庭路由器与固定域名wu919202662.eicp.net绑定,Android应用程序能够解析绑定在连接在互联网上的家庭路由器的域名,得到其IP地址。把家庭路由器作为TCP服务端,Android应用程序作为TCP客户端。通过家庭路由器开放的外部端口号8899,Android应用程序通过互联网与家庭路由器建立TCP连接,然后向家庭路由器发送消息。家庭路由器的内网网关(ip地址:192.168.1.1)与usr-wifi232-b模块(ip地址:192.168.1.160)开放的端口号8899也建立TCP连接,此时,家庭路由器为TCP客户端,usr-wifi232-b模块为TCP服务端。家庭路由器将Android应用程序发过来的数据,按照虚拟服务器的转发规则,将消息转发给usr-wifi232-b模块。usr-wifi232-b模块将消息通过串口发送给家庭物联网的控制终端。
3.2 外网路由转发模块
3.2.1 域名申请
A 在花生壳官网(http://hsk.oray.com/)注册帐号并申请免费域名wu919202662.eicp.net
B 下载花生壳动态域名客户端软件
C 测试
3.2.2 家庭路由器设置
3.2.2.1 域名绑定
A 绑定域名时,花生壳动态域名客户端要在线,才可激活域名。
3.2.2.2 转发规则
A 外部端口号与Android应用程序的端口号一致。
B 内部端口号与usr-wifi232-b模块内部设置端口号一致。
C 转发地址为usr-wifi232-b模块的地址(192.168.1.160)
3.2.3外网及路由器转发功能测试
将PC机(注意:关闭防火墙!)连入家庭路由器(模拟usr-wifi232-B模块),配置静态IP为192.168.1.160。将PC设为TCP内网服务器,Android应用程序作为TCP外网的客户端。Android应用程序通过解析域名wu919202662.eicp.net获取动态IP,并给家庭路由器(外网服务器)发送消息,家庭路由器(内网客户端)转发给PC机。
3.3 内网WiFi接收模块
3.3.1 模式选择
令usr-wifi232-b处于station模式。
3.3.2 无线终端设置
A、点击“搜索”,即可看到所有可供连接的无线信号的信息。选取所要连接的ssid并应用。
B、输入家庭路由器密码。
3.3.3 串口及其它设置
A、设置串口参数与家庭物联网的控制终端的串口参数一致。
B、设置usr-wifi232-b为TCP的服务器端,端口号与家庭路由器的内部端口一致。
3.3.4 重启完成配置
3.3.5 usr-wifi232-b内网测试
将自己PC(注意:关闭防火墙!)连接到家庭路由器,此时PC与WiFi模块处于同一无线局域网内。将自己PC作为TCP客户端,WiFi模块作为TCP服务器,WiFi模块通过串口连接到PC机。利用usr-tcp232-test串口转网络调试助手,PC机通过无线局域网发送数据给WiFi模块,WiFi模块再通过串口传数据给PC机,在串口数据接收端显示。
3.4 内外网通信测试
将PC机模拟成家庭物联网的控制终端,利用usr-tcp232-test串口转网络调试助手接收手机发送过来的数据。