04-STM32+W5500+AIR202基本控制篇-功能2-Android和微信小程序使用MulticastBind绑定W5500,并通过MQTT实现485,422通信和继电器控制(Android)

一万年来谁著史,三千里外欲封侯。这篇文章主要讲述04-STM32+W5500+AIR202基本控制篇-功能2-Android和微信小程序使用MulticastBind绑定W5500,并通过MQTT实现485,422通信和继电器控制(Android)相关的知识,希望能为你提供帮助。
< p> < iframe name="ifd" src="http://img.readke.com/220507/161KIB6-0.jpg" frameborder="0" scrolling="auto" width="100%" height="1500"> < /iframe> < /p>

 
【04-STM32+W5500+AIR202基本控制篇-功能2-Android和微信小程序使用MulticastBind绑定W5500,并通过MQTT实现485,422通信和继电器控制(Android)】 
功能说明这节的功能是使用android绑定W5500,然后和W5500实现MQTT远程通信控制
关于这节的绑定方式:MulticastBind
MulticastBind 是组播绑定的意思
android和W5500通过组播交换数据,实现绑定
 
功能演示1.根据第一节的硬件介绍下载本节的单片机程序

04-STM32+W5500+AIR202基本控制篇-功能2-Android和微信小程序使用MulticastBind绑定W5500,并通过MQTT实现485,422通信和继电器控制(Android)

文章图片

 
 
 
 
2.程序文件hex路径
04-STM32+W5500+AIR202基本控制篇-功能2-Android和微信小程序使用MulticastBind绑定W5500,并通过MQTT实现485,422通信和继电器控制(Android)

文章图片

 
3.按照下面方式短接通信端口
 电脑串口 连接 STM32串口1   (注:单片机的串口1作为了Debug端口)
 422/485 连接 STM32串口3
04-STM32+W5500+AIR202基本控制篇-功能2-Android和微信小程序使用MulticastBind绑定W5500,并通过MQTT实现485,422通信和继电器控制(Android)

文章图片

 
 
 
 
4.连接网线(网线另一端连接路由器)
 
04-STM32+W5500+AIR202基本控制篇-功能2-Android和微信小程序使用MulticastBind绑定W5500,并通过MQTT实现485,422通信和继电器控制(Android)

文章图片

 
 
5.连接485/422通信模块(任选一种即可,下面说明两种接线方式)
 
485连接方式:
04-STM32+W5500+AIR202基本控制篇-功能2-Android和微信小程序使用MulticastBind绑定W5500,并通过MQTT实现485,422通信和继电器控制(Android)

文章图片

 
 
422连接方式:
04-STM32+W5500+AIR202基本控制篇-功能2-Android和微信小程序使用MulticastBind绑定W5500,并通过MQTT实现485,422通信和继电器控制(Android)

文章图片

 
6,打开串口调试助手,分别监控STM32串口1和485/422的数据
单片机串口1监听配置
04-STM32+W5500+AIR202基本控制篇-功能2-Android和微信小程序使用MulticastBind绑定W5500,并通过MQTT实现485,422通信和继电器控制(Android)

文章图片

 
 
485/422通信口串口配置
04-STM32+W5500+AIR202基本控制篇-功能2-Android和微信小程序使用MulticastBind绑定W5500,并通过MQTT实现485,422通信和继电器控制(Android)

文章图片

 
7.安装手机APP
 
04-STM32+W5500+AIR202基本控制篇-功能2-Android和微信小程序使用MulticastBind绑定W5500,并通过MQTT实现485,422通信和继电器控制(Android)

文章图片

 
 
 
04-STM32+W5500+AIR202基本控制篇-功能2-Android和微信小程序使用MulticastBind绑定W5500,并通过MQTT实现485,422通信和继电器控制(Android)

文章图片

 
 
开始测试1.长按开发板 PB5(图示①)按钮大约3S    ,直至指示灯快闪(图示②)
04-STM32+W5500+AIR202基本控制篇-功能2-Android和微信小程序使用MulticastBind绑定W5500,并通过MQTT实现485,422通信和继电器控制(Android)

文章图片

 
 
2.点击APP右上方的菜单 "添加以太网设备"
 
04-STM32+W5500+AIR202基本控制篇-功能2-Android和微信小程序使用MulticastBind绑定W5500,并通过MQTT实现485,422通信和继电器控制(Android)

文章图片

 
 
04-STM32+W5500+AIR202基本控制篇-功能2-Android和微信小程序使用MulticastBind绑定W5500,并通过MQTT实现485,422通信和继电器控制(Android)

文章图片

 
 
 
3.绑定成功以后,将在主页上显示一个设备
04-STM32+W5500+AIR202基本控制篇-功能2-Android和微信小程序使用MulticastBind绑定W5500,并通过MQTT实现485,422通信和继电器控制(Android)

文章图片

 
 
 
4.点击设备进入控制页面
04-STM32+W5500+AIR202基本控制篇-功能2-Android和微信小程序使用MulticastBind绑定W5500,并通过MQTT实现485,422通信和继电器控制(Android)

文章图片

 
 
 
04-STM32+W5500+AIR202基本控制篇-功能2-Android和微信小程序使用MulticastBind绑定W5500,并通过MQTT实现485,422通信和继电器控制(Android)

文章图片

 
 
5.控制两路继电器
04-STM32+W5500+AIR202基本控制篇-功能2-Android和微信小程序使用MulticastBind绑定W5500,并通过MQTT实现485,422通信和继电器控制(Android)

文章图片

 
 
 
 
 
 
04-STM32+W5500+AIR202基本控制篇-功能2-Android和微信小程序使用MulticastBind绑定W5500,并通过MQTT实现485,422通信和继电器控制(Android)

文章图片

 
04-STM32+W5500+AIR202基本控制篇-功能2-Android和微信小程序使用MulticastBind绑定W5500,并通过MQTT实现485,422通信和继电器控制(Android)

文章图片

 
 
 
04-STM32+W5500+AIR202基本控制篇-功能2-Android和微信小程序使用MulticastBind绑定W5500,并通过MQTT实现485,422通信和继电器控制(Android)

文章图片

 
 
 
单片机程序说明1.关于W5500和android MQTT通信
W5500连接MQTT以后
订阅的主题:user/W5500的mac地址
发布的主题:device/W5500的mac地址
 
如果想让android和W5500之间实现通信
android需要
订阅:  device/W5500的mac地址
发布:  user/W5500的mac地址
 
所以只要android获取到W5500的MAC地址即可!
 
2.关于MulticastBind协议
1. android向固定广播地址  224.1.1.1    端口号  5558  发送信息 :"{"data":"bind","msg":"hello"}" 2.  单片机利用组播接收到    "{"data":"bind","msg":"hello"}"以后,解析客户端  IP地址和端口号 3.使用UDP发送自身的IP地址和MAC地址给android "{"data":"bind","ip":"0.0.0.0","mac":"XX:XX:XX:XX:XX:XX"}" 4.android接收到以后,即实现了和w5500绑定 
3.单片机程序是在功能1的基础上增加了MulticastBind  绑定程序 和 simip 以太网解析程序
04-STM32+W5500+AIR202基本控制篇-功能2-Android和微信小程序使用MulticastBind绑定W5500,并通过MQTT实现485,422通信和继电器控制(Android)

文章图片

 
 
 
4.用户长按3S执行 启动 MulticastBind
04-STM32+W5500+AIR202基本控制篇-功能2-Android和微信小程序使用MulticastBind绑定W5500,并通过MQTT实现485,422通信和继电器控制(Android)

文章图片

 
 
 
 
5.MulticastBindStart 函数主要是初始化,设置要传输给android的IP,mac信息
04-STM32+W5500+AIR202基本控制篇-功能2-Android和微信小程序使用MulticastBind绑定W5500,并通过MQTT实现485,422通信和继电器控制(Android)

文章图片

 
 
 
 
 
6.MulticastBindLoop 是绑定通信函数
  1.此函数里面开了两个UDP
其中一个udp作为组播通信,另一个udp作为普通udp
组播通信的udp获取到android发来的消息以后,解析处理对方的IP地址和端口号
然后用普通的udp通信把w5500的ip地址和mac地址信息发送给android
04-STM32+W5500+AIR202基本控制篇-功能2-Android和微信小程序使用MulticastBind绑定W5500,并通过MQTT实现485,422通信和继电器控制(Android)

文章图片

 
 
 
 
04-STM32+W5500+AIR202基本控制篇-功能2-Android和微信小程序使用MulticastBind绑定W5500,并通过MQTT实现485,422通信和继电器控制(Android)

文章图片

 
 
 
  2.为什么需要开两个udp
组播模式下的udp,发送数据的时候不会按照你自己设置的ip和端口号发送数据
无论你怎么设置,消息都是发往组播地址!!!!!这是W5500官方固件应该去优化的地方!
 
3.解析对方的ip地址和端口号是我自己写的解析程序,取名为smallip
原因:组播模式下的udp官方固件是获取不到对方的ip地址和端口号的
获取到的是组播地址和组播端口号,组播地址和端口号都是用户自己写在程序里面固定的,获取这个没啥子用!!!
这也应该是W5500官方应该去优化的地方!
本来一开始我移植了lwip用于解析,后来想了想就因为解析这一点点信息,不至于,所以自己写了一个程序用于解析
04-STM32+W5500+AIR202基本控制篇-功能2-Android和微信小程序使用MulticastBind绑定W5500,并通过MQTT实现485,422通信和继电器控制(Android)

文章图片

 
 
 
 
7.优化了一下MQTT继电器消息处理程序
统一了解析方式,便于扩展控制多路继电器
04-STM32+W5500+AIR202基本控制篇-功能2-Android和微信小程序使用MulticastBind绑定W5500,并通过MQTT实现485,422通信和继电器控制(Android)

文章图片

 
 
android1.点击绑定按钮
每隔1S向组播地址发送  "{"data":"bind","msg":"hello"}" 数据
04-STM32+W5500+AIR202基本控制篇-功能2-Android和微信小程序使用MulticastBind绑定W5500,并通过MQTT实现485,422通信和继电器控制(Android)

文章图片

 
 
04-STM32+W5500+AIR202基本控制篇-功能2-Android和微信小程序使用MulticastBind绑定W5500,并通过MQTT实现485,422通信和继电器控制(Android)

文章图片

 
 
 
 
 
 
 
  2.绑定成功,携带着数据跳转到  MainActivity
提示:数据格式 
{"data":"bind","mac":"xx:xx:xx:xx:xx:xx","ip":"xxx.xxx.xxx.xxx","model":"E0000","name":"以太网设备"}
04-STM32+W5500+AIR202基本控制篇-功能2-Android和微信小程序使用MulticastBind绑定W5500,并通过MQTT实现485,422通信和继电器控制(Android)

文章图片

 
 
 
 
 
3.在 MainActivity 的  onNewIntent  中提取数据,并存储到手机,然后刷新list适配器
04-STM32+W5500+AIR202基本控制篇-功能2-Android和微信小程序使用MulticastBind绑定W5500,并通过MQTT实现485,422通信和继电器控制(Android)

文章图片

 
 
 
4.点击设备
提取所点击设备的mac,传递mac  
04-STM32+W5500+AIR202基本控制篇-功能2-Android和微信小程序使用MulticastBind绑定W5500,并通过MQTT实现485,422通信和继电器控制(Android)

文章图片

 
 
 
5.在控制页面提取mac,并订阅主题
04-STM32+W5500+AIR202基本控制篇-功能2-Android和微信小程序使用MulticastBind绑定W5500,并通过MQTT实现485,422通信和继电器控制(Android)

文章图片

 
 
 
 
04-STM32+W5500+AIR202基本控制篇-功能2-Android和微信小程序使用MulticastBind绑定W5500,并通过MQTT实现485,422通信和继电器控制(Android)

文章图片

 
 
 
6.接收处理消息
04-STM32+W5500+AIR202基本控制篇-功能2-Android和微信小程序使用MulticastBind绑定W5500,并通过MQTT实现485,422通信和继电器控制(Android)

文章图片

 
 
 
04-STM32+W5500+AIR202基本控制篇-功能2-Android和微信小程序使用MulticastBind绑定W5500,并通过MQTT实现485,422通信和继电器控制(Android)

文章图片

 
 
 
7.发布消息
04-STM32+W5500+AIR202基本控制篇-功能2-Android和微信小程序使用MulticastBind绑定W5500,并通过MQTT实现485,422通信和继电器控制(Android)

文章图片

 
结语对于初学者而言,此节代码测试一下通信即可,后面的章节会有详细的说明教程
会让用户彻底明白一切的一切是怎么来的!
不要心慌,无需着急!
详细的说明教程过后还会有专门的移植使用教程.
用户可以迅速的移植到自己的项目中使用.
 

    推荐阅读