SWA2G422&485JK2G基础篇: STM32+W5500实现MQTT通信控制,485/422透传通信
说明
这节实现的功能:
STM32+W5500实现MQTT通信控制
细节功能:
1.DHCP动态获取IP
2.DNS域名解析
3.网口<--MQTT-->485/422透传通信
测试准备工作
注:如果想连接自己的服务器测试,请修改为自己的MQTT连接信息

一,按照下面方式短接通信端口
电脑串口<-->STM32串口1 (注:单片机的串口1作为了Debug端口)
422/485 <-->STM32串口3

二,连接网线(网线另一端连接可以上网的路由器或者交换机)

三,连接485/422通信模块(任选一种即可,下面说明两种接线方式)
3.1: 485连接方式

3.1: 422连接方式

四,打开两个串口调试助手,分别监控STM32串口1和485/422的数据
4.1: 单片机串口1监听配置

4.2: 485/422通信口串口配置
注:之所以这样配置是由于后面章节测试与PLC远程通信所需.

五,打开MQTT调试助手




如果上面程序中修改了MQTT信息,此处请按照自己的修改

六,下载单片机程序

注:hex文件路径



测试
一,正常状态下STM32串口1打印如下
如果使用域名连接,则会经过DHCP->DNS->TCP连接->MQTT连接通信
如果使用IP连接,则会经过DHCP->TCP连接->MQTT连接通信

二,根据设备订阅和发布的主题,设置MQTT调试助手订阅和发布的主题

测试 网口<--MQTT-->485/422 透传通信

测试 MQTT客户端控制开发板两路继电器
一,查询两路继电器的状态
{"data":"switch","bit":"-1","status":"-1"}
设备返回
{"data":"switch","bit":"-1","status":"00"}
00:第一路和第二路状态

二,控制第一路继电器吸合
{"data":"switch","bit":"1","status":"1"}
设备返回
{"data":"switch","bit":"-1","status":"10"}
10:第一路和第二路状态


三,控制第二路继电器吸合
{"data":"switch","bit":"2","status":"1"}
设备返回
{"data":"switch","bit":"-1","status":"11"}
11:第一路和第二路状态


四,同时控制两路继电器指令(用户自行测试)
控制第一路断开,第二路断开
{"data":"switch","bit":"-1","status":"00"}
控制第一路断开,第二路吸合
{"data":"switch","bit":"-1","status":"01"}
控制第一路吸合,第二路断开
{"data":"switch","bit":"-1","status":"10"}
控制第一路吸合,第二路吸合
{"data":"switch","bit":"-1","status":"11"}
SWA2G422&485JK2G基础篇: STM32+W5500实现MQTT通信控制,485/422透传通信的更多相关文章
- SWA2G422&485JK2G基础篇: 硬件使用说明
开发板板载介绍(当前使用的测试板,以后期最终版为准) 一,实物图 硬件说明 一,开发板主控芯片说明: 1. 单片机: STM32F103RET6 2. GPRS模块: Air202 二,开发板外设说明 ...
- ESA2GJK1DH1K基础篇: STM32+Wi-Fi(AT指令版)实现MQTT源码讲解
前言 注: 本程序发送心跳包,发送温湿度,返回控制数据这三个发送是单独的,有可能凑到一起发. 由于本身程序就是复杂性的程序,所以这节程序没有使用中断发送,没有使用环形队列发送,为了避免多条消息可能凑到 ...
- ESA2GJK1DH1K基础篇: STM32+GPRS(AT指令版)实现MQTT源码讲解(支持Air202,SIM800)
前言 注: 本程序发送心跳包,发送温湿度,返回控制数据这三个发送是单独的,有可能凑到一起发. 由于本身程序就是复杂性的程序,所以这节程序没有使用中断发送,没有使用环形队列发送,为了避免多条消息可能凑到 ...
- 转战物联网·基础篇05-通俗理解MQTT协议的实现原理和异步方式
网络上搜索MQTT协议,会出现太多的解释,这里就不做官方标准释义的复制了.这一节我们从实战理解角度,通俗的将MQTT协议的作用及实现原理说一下,旨在可以快速理解MQTT协议.所以可能会出现很多看似 ...
- 转战物联网·基础篇07-深入理解MQTT协议之控制报文(数据包)格式
在MQTT协议中,一个控制报文(数据包)的结构按照前后顺序分如下三部分: 结构名 中文名 解释说明 Fixed header 固定报头 报文的最开始部分,所有报文都包含这个部分 Variable ...
- 转战物联网·基础篇06-深入理解MQTT协议之基本术语
通过上一节我们对MQTT协议已经有了初步的印象,这一节我们开始深入的理解一下MQTT协议,介绍常用的MQTT 3.1.1版本,5.0版本后面指介绍新增部分即可.这一节我们先介绍MQTT里常用的术语 ...
- 16-ESP8266 SDK开发基础入门篇--TCP 服务器 非RTOS运行版,串口透传(串口回调函数处理版)
https://www.cnblogs.com/yangfengwu/p/11105466.html 其实官方给的RTOS的版本就是在原先非RTOS版本上增加的 https://www.cnblogs ...
- ESA2GJK1DH1K升级篇: STM32远程乒乓升级,基于Wi-Fi模块AT指令TCP透传方式,MQTT通信控制升级(含有数据校验)-APP用户程序制作过程
前言 这一节和上一节是搭配的 给大家鱼,也必须给鱼竿! 我期望自己封装的代码,无论过了多少年都有应用的价值! 这节说明一下制作APP用户程序的过程 咱是用MQTT通信控制模块实现升级,所以首先自己的程 ...
- Wi-Fi无线控制器开发例程(基础篇)
动手来做自己的WIFI远程控制插座吧! 如果感觉视频不容易入门可以看这里 https://www.cnblogs.com/yangfengwu/p/10100152.html WIFI远程控制器系统方 ...
随机推荐
- orchard 中文文档 中英对照版
ORCHARD CMS a free, open source, community-focused Content Management System built on the ASP.NET MV ...
- Java 基础系列:异常
Java 中的异常(Exception)又称为例外,是一个在程序执行期间发生的事件,它中断正在执行的程序的正常指令流.为了能够及时有效地处理程序中的运行错误,必须使用异常类. 1. 异常类型 Thro ...
- webpack与vue环境搭建(转载)
原文:https://www.cnblogs.com/lgx5/p/10732016.html npm安装教程 一.使用之前,我们先来掌握3个东西是用来干什么的. npm: Nodejs下的包管理 ...
- 构建Shiny应用
构建Shiny应用 1.什么是Shiny? Shiny是一个R的应用包,帮助用户构建可交互的web应用.它可以结合HTML和CSS代码,以及R 语言的运算能力. 2.下载R Shiny 下载R包 in ...
- 阿里云CentOS7.x安装nodejs及pm2
对之前文章的修订 您将了解 CentOS下如何安装nodejs CentOS下如何安装NVM CentOS下如何安装git CentOS下如何安装pm2 适用对象 本文档介绍如何在阿里云CentOS系 ...
- 未初始化内存检测(MSan)
https://github.com/google/sanitizers/wiki https://github.com/google/sanitizers/wiki/MemorySanitizer ...
- linux 查找被删除但是未被释放空间的文件 并释放资源
使用du -sh 和df -h 查看/data目录,发现结果相差一半,后来了解到: 使用rm命令删除文件时,只有当该文件不存在任何link才会被删除 当有进程访问这个文件时,这个文件的实际占用空间就 ...
- 如何让 C# 在运行时自动选择合适的重载方法?
如题:假设我们有一段代码: static void Main(string[] args) { ; // 假设这里的 obj 的值来自于外部方法 PrintType(obj); } public st ...
- python随机选取目录下的若干个文件
个人记录用. python模块random argparse shutil import argparse parser = argparse.ArgumentParser() parser.add_ ...
- WPF-控件模板
说起控件模板,还是因为在一次需求实现中,我碰到了一个圆形按钮.一开始我认知的按钮是方形灰不拉几的一个块儿.这如何实现一个圆形按钮? 我最先想到的是使用样式,可是发现根本就没有改变Button形状的属性 ...