STMCU小助手
发布时间:2022-2-8 21:58
|
前言 通过前面了解MQTT有关概念、分析了有关的报文,我们对于这个协议也有了更深的认识。但纸上谈来终觉浅,绝知此事要躬行。 W5500 - 芯片介绍 全硬件TCPIP协议栈
8个独立的硬件Socket,各路通信互不影响 32KB片上缓存供TCP/IP包处理 集成802.3以太网MAC 集成10BaseT / 100Base-T以太网PHY 主机接口:SPI高速串行外设接口(最高80Mhz ) 低功耗,工作温度40℃左右 支持嵌入式操作系统:Linux & RTOS 支持掉电模式 & UDP网络唤醒 工作电压3.3V,I/O 5V耐压 支持自动协商(全/半双工,10M/100M) 48Pin LQFP无铅封装(7x7mm, 0.5mm针间距) W5500以太网芯片内核
全硬件TCP/IP协议栈以太网接入方案
方案介绍
1)STM32F405为主控芯片,它通过传感器采集环境数据,比如温度,湿度,光照度,大气压强等; 2)主控芯片通过W5500模块将测量的数据通过MQTT协议方式发布到MQTT服务器(服务器域名和IP见固件程序); 3)主控订阅LED灯控制的消息,当接收到对应的控制指令后点亮或者熄灭对应的LED灯; 4)安卓手机端订阅传感器数据的消息,当接收到消息后将传感器数据在界面显示; 5)安卓手机可发送点亮或者熄灭LED灯的指令到服务器,然后服务器会将该指令转发给STM32主控,然后STM32主控解析该指令并执行指令。 准备 1)下载MQTT客户端 源码 2)解压源码,再进入MQTTPacket文件夹,里面有三个文件夹。 A)) 拷贝 src 下 所有 *.c *.h、samples下的transport.c、transport.h两个文件复制到工程目录下。
打开transport.c文件,这个是MQTT连接,发送,接收的接口,源码是Linux跟Windows平台,用的标准的Socket接口函数,我们这里的移植工作量很小,因为LWIP也是支持标准的Socket接口函数,只不过里面有些函数接口是LWIP不支持的,主要就是transport_open这个连接函数有区别。把原来的transport_open函数注释掉,重新写一个。
MQTT的移植非常简单,将C/C++ MQTT Embedded clients的代码添加到工程中,然后我们只需要再次封装4个函数即可:
|
【福利三:逢7发帖赢大礼】4、基于STM32G070板子SPI flash 移植SFUD库
【福利三:逢7发帖赢大礼】基于STM32G070板子的uart shell移植设计
【福利三:逢7发帖赢大礼】3、基于STM32G070板子的YModem串口协议通信
【福利三:逢7发帖赢大礼】2、基于STM32G070板子的OLED移植U8G2库
实战经验 | ClassB功能安全认证代码与应用代码分区的实现要点
STM32G0 系列 I2C 通信异常典型案例分析与解决方案总结
经验分享 | LAT1490 两个STM32G0 I2C 通信异常的案例分析
经验分享 | STM32G0 I2C bootloader Go 命令后调试连接失败:DBG_SWEN 位复位修复
经验分享 | STM32G0B1 待机模式意外唤醒深度解析:RTC 结构体未初始化的隐形坑
经验分享 | STM32G0B1 待机模式意外唤醒深度解析:RTC 结构体未初始化的隐形坑
微信公众号
手机版