基于STM32+W5500的UPnP协议应用

Home / 博客 / 基于STM32+W5500的UPnP协议应用

来自:阿莫电子论坛

1. 概述


工具: PC  W5500EVB 路由器 串口调试工具
编译环境:Keil4 &IAR
功能:通过SNMP协议实现内网与外网的端口映射以及连接。PC连接路由器,PC和路由器在同一个网段。本文主要把路由器IP模拟为外网IP,W5500EVB的IP作为内网IP,从以下几个方面来验证此功能的可实施性。
TCP Server回环测试
UDP回环测试
外网设备发送指令控制W5500EVB上LED

2. UPnP协议即通用即插即用英文是Universal Plug and Play,缩写为UPnP,下面主要说一下基本的实现过程。

UPnP定义了设备之间、设备和控制点、控制点之间通信的协议。完整的UPnP有设备寻址、设备发现、设备描述、设备控制、事件通知和基于Html的描述等几部分构成。
1)寻址

首先寻址是通过控制点和设备取得网络地址的过程,控制点和设备都先获取IP地址后才能进行下一步的工作;
2 ) 发现

控制点首先要寻找整个网络上的UPnP设备,同时网络上的设备也要宣告自身的存在,本篇中W5500将作为控制点;
3 ) 描述

控制点要取得设备的描述,包括这些设备提供什么样的服务;控制点可以从发现消息中得到设备描述的URL,通过URL取回设备描述的信息;
4)控制

控制点发出动作信息给设备;
5)事件

控制点监听设备的状态,当状态改变时作出相应的处理动作;
在控制点发现设备和取得设备描述之后,展示也就开始了。具体的讲解内容大家可以在网上搜集资料学习。

3.操作过程
注意:本篇实例并没有真正在外网测试,是在一个内网中再搭建一个内网,相对最内层的网络来说,外面的一层是“外网”,但是并不违背端口映射的原理。W5500EVB通过网线连接到路由器,PC应该和路由器在同一网段内。
编译程序无误以后下载到开发板里,复位以后查看串口的打印信息如下。

upnp1
在执行DHCP、SSDP、获得描述和设置事件后,如果正常则显示以上信息。之后打印一个菜单页面,大家可以根据提示选择相应的应用功能。如下图所示。
upnp2

按照菜单提示,我们首先添加一个TCP端口映射,外网端口为是随意的,由于本人能力有限,内网端口为固定的5000,添加成功后会提示AddPortSuccess。那么是否真的添加成功了呢,我们可以查看路由器的端口映射表。添加成功以后可以看到如下图所示信息。
upnp3
upnp4
ID 1的信息就是成功映射后的端口信息。
成功以后可以选择5 TCP 回环测试来验证效果如何。
首先检查下路由器在外网中的IP地址,登陆路由器在 WAN口设置 项可以找到路由器IP地址为192.168.10.135,可见路由器的网段与W5500 EVB(IP地址是192.168.1.110)的网段不是一样的,这正是“外网”和内网的区别。
我们在与路由器同一网段的PC(IP地址是192.168.10.116)上建立TCP client,连接到路由器的12222端口,并发送测试字符串,在接收区看到收到了loopback的回复,如下图所示。端口映射成功!

在测试完添加端口映射后,我们可以按照菜单提示将刚才添加的端口删除掉,然后在PC上重新连接刚才删除的外网端口,会发现已经连接不上,这与预期结果相符。

UPnP 的应用范围非常大,可以实现许多现成的、新的及令人兴奋的方案,包括家庭自动化、打印、图片处理、音频 / 视频娱乐、厨房设备、汽车网络和公共集会场所的类似网络。它可以充分发挥 TCP/IP 和网络技术的功能,不但能对类似网络进行无缝连接,而且还能够控制网络设备及在它们之间传输信息。一个 UPnP 设备能够自动跟一个网络连接上、并自动获得一个 IP 地址、传送出自己的权能并获悉其它已经连接上的设备及其权能。最后,此设备能自动顺利地切断网络连接,并且不会引起意想不到的问题。

 

程序下载:http://pan.baidu.com/s/1B7BCM

感谢阅读!

更多WIZnet相关信息:

WIZnet中文官方网站:http://www.iwiznet.cn

WIZnet官方微博:http://weibo.com/wiznet2012

WIZnet公众平台二维码:

WIZnet微信二维码