说明

  这节实现的功能:

  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透传通信的更多相关文章

  1. SWA2G422&485JK2G基础篇: 硬件使用说明

    开发板板载介绍(当前使用的测试板,以后期最终版为准) 一,实物图 硬件说明 一,开发板主控芯片说明: 1. 单片机: STM32F103RET6 2. GPRS模块: Air202 二,开发板外设说明 ...

  2. ESA2GJK1DH1K基础篇: STM32+Wi-Fi(AT指令版)实现MQTT源码讲解

    前言 注: 本程序发送心跳包,发送温湿度,返回控制数据这三个发送是单独的,有可能凑到一起发. 由于本身程序就是复杂性的程序,所以这节程序没有使用中断发送,没有使用环形队列发送,为了避免多条消息可能凑到 ...

  3. ESA2GJK1DH1K基础篇: STM32+GPRS(AT指令版)实现MQTT源码讲解(支持Air202,SIM800)

    前言 注: 本程序发送心跳包,发送温湿度,返回控制数据这三个发送是单独的,有可能凑到一起发. 由于本身程序就是复杂性的程序,所以这节程序没有使用中断发送,没有使用环形队列发送,为了避免多条消息可能凑到 ...

  4. 转战物联网·基础篇05-通俗理解MQTT协议的实现原理和异步方式

      网络上搜索MQTT协议,会出现太多的解释,这里就不做官方标准释义的复制了.这一节我们从实战理解角度,通俗的将MQTT协议的作用及实现原理说一下,旨在可以快速理解MQTT协议.所以可能会出现很多看似 ...

  5. 转战物联网·基础篇07-深入理解MQTT协议之控制报文(数据包)格式

      在MQTT协议中,一个控制报文(数据包)的结构按照前后顺序分如下三部分: 结构名 中文名 解释说明 Fixed header 固定报头 报文的最开始部分,所有报文都包含这个部分 Variable ...

  6. 转战物联网·基础篇06-深入理解MQTT协议之基本术语

      通过上一节我们对MQTT协议已经有了初步的印象,这一节我们开始深入的理解一下MQTT协议,介绍常用的MQTT 3.1.1版本,5.0版本后面指介绍新增部分即可.这一节我们先介绍MQTT里常用的术语 ...

  7. 16-ESP8266 SDK开发基础入门篇--TCP 服务器 非RTOS运行版,串口透传(串口回调函数处理版)

    https://www.cnblogs.com/yangfengwu/p/11105466.html 其实官方给的RTOS的版本就是在原先非RTOS版本上增加的 https://www.cnblogs ...

  8. ESA2GJK1DH1K升级篇: STM32远程乒乓升级,基于Wi-Fi模块AT指令TCP透传方式,MQTT通信控制升级(含有数据校验)-APP用户程序制作过程

    前言 这一节和上一节是搭配的 给大家鱼,也必须给鱼竿! 我期望自己封装的代码,无论过了多少年都有应用的价值! 这节说明一下制作APP用户程序的过程 咱是用MQTT通信控制模块实现升级,所以首先自己的程 ...

  9. Wi-Fi无线控制器开发例程(基础篇)

    动手来做自己的WIFI远程控制插座吧! 如果感觉视频不容易入门可以看这里 https://www.cnblogs.com/yangfengwu/p/10100152.html WIFI远程控制器系统方 ...

随机推荐

  1. 【shell脚本】检测当前用户是否为超级管理员===checkRoot.sh

    检测当前用户是否为超级管理员,是则使用yum安装vsftpd,不是则输出提示信息 脚本赋予执行权限 [root@VM_0_10_centos shellScript]# chmod a+x check ...

  2. Vue.js 源码分析(十八) 指令篇 v-for 指令详解

    我们可以用 v-for 指令基于一个数组or对象来渲染一个列表,有五种使用方法,如下: <!DOCTYPE html> <html lang="en"> & ...

  3. Spring Security OAuth2 Demo —— 客户端模式(ClientCredentials)

    前情回顾 前几节分享了OAuth2的流程与其它三种授权模式,这几种授权模式复杂程度由大至小:授权码模式 > 隐式授权模式 > 密码模式 > 客户端模式 本文要讲的是最后一种也是最简单 ...

  4. Neo4j 第十篇:更新数据

    更新图包括图的节点和关系的创建.更新和删除,也能更新图的节点和关系的属性.节点标签和关系类型. 一,创建节点 1,创建空的节点 CREATE (n) CREATE (a),(b) 2,创建带标签的节点 ...

  5. ASP.Net Core使用Ajax局部更新

    由于目前ASP.NET Core中没有提供Ajax帮助器,所以参照 上一篇帖文,使用data-ajax-*属性来使用jQuery Unobtrusive Ajax功能实现HTML的局部页面元素更新. ...

  6. Java学习——BigInteger类和BigDecimal类

    Java学习——BigInteger类和BigDecimal类 摘要:本文主要学习了用于大数字运算的BigInteger类和BigDecimal类. 部分内容来自以下博客: https://www.c ...

  7. Python游戏开发——打砖块

    打砖块游戏向来大家也不会很陌生,今天来用python来开发一下这个小游戏 1.引用对应数据库 import pygame from pygame.locals import * import sys, ...

  8. http接口和webservice接口的区别

    web service(SOAP)与HTTP接口的区别 什么是web service? soap请求是HTTP POST的一个专用版本,遵循一种特殊的xml消息格式Content-type设置为: t ...

  9. laravel报错 No query results for model . 的解决方法

    这个通常由路由绑定出的问题,注意有绑定模型的路由,同路径的路由需要放在没绑定路由的后面 例如:/product/comments和/product的是同路径,/product必须放在/product/ ...

  10. CHIP8模拟器的python3实现-3-指令实现

    class Chip8CPU(object): def __init__(self, screen): self.registers = { 'v': [], 'index': 0, 'pc': 0, ...