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远程控制器系统方 ...
随机推荐
- java虚拟机规范学习笔记之数据类型
1.1 class文件格式 编译后被Java虚拟机所执行的代码使用了一种平台中立的二进制格式来表示,并且经常以文件的形式来存储,这种格式称为class文件格式.class文件格式中精确的定义了类与接口 ...
- FineUIPro v6.0.1 小版本更新!
这次修正了 v6.0.0版本的几个问题,建议所有用户升级到此版本: +修正调用F.addMainTab时可能出现JS错误的问题(34484135,1450561644). -仅在未调用F.ini ...
- tsar使用说明
常用命令 tsar --nginx --live -i 1 查询1秒的状态每秒采样一次 系统模块 cpu 字段含义 user: 表示CPU执行用户进程的时间,通常期望用户空间CPU越高越好. ...
- torch_10_stackGAN-V2
核心要点 StackGAN旨在生成高分辨率的真实图片. stackGAN-v1架构包含两个阶段:用于文本到图像的合成,阶段1GAN根据给定的文本描述绘制对象的形状和颜色,生成低分辨率图像.阶段2将阶段 ...
- DNA Sorting POJ - 1007
DNA Sorting Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 114211 Accepted: 45704 De ...
- ElasticSearch 6.7.1操作纪录
以下操作均在 6.7.1版本中正常 c# ES客户端 测试项目地址:https://gitee.com/dhclly/IceDog.ElasticSearchClient/tree/master/sr ...
- Docker 镜像-管理-导入-导出
目录 Docker 镜像基本概念 Docker 镜像加速 Docker 镜像 常用命令 Docker 镜像的创建和导出导入 Docker 镜像基本概念 我们使用的容器都是基于镜像的,镜像是由多层组成的 ...
- C#调用Activex中串口电子秤的数据,并将电子秤的数据显示到前端页面
大二的一个项目需要用到Activex技术将读取到串口中的数据在后台获取到,并将串口的数据写入数据库,这个过程需要在后台使用C#调用Activex控件已经使用的方法,然后在前端通过JavaScript进 ...
- 阿里Jvm必问面试题及答案
什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java虚拟机是一个可以执行Java字节码的虚拟机进程.Java源文件被编译成能被Java虚拟机执行的字节码文件. Java被设计 ...
- 纯C语言实现顺序栈
#include <stdio.h> #include <stdlib.h> #define MAXSIZE 100 typedef int SElemType; typede ...