当前位置: 首页 > news >正文

ESP32连接mqtt服务器

ESP32连接mqtt服务器

  • 需要注意esp32连不上5G频段

需要的条件

  1. WiFi
  2. mqtt服务器
  3. esp32
  4. VsCode

使用app_main.c连接mqtt

1. 使用VsCode打开\esp-idf\examples\protocols\mqtt\tcp

image

2. 配置WiFi名和WiFi密码

  • 手机开始热点,AP频段设置为2.4GHz 频段,WiFi名全英文
    image

3. 配置mqtt服务器地址

  • 输入mqtt服务器地址
    image

4. 构建、烧录、监视设备

  • 插入esp32
    image

5. 打开mqttx发送信息

  • 配置连接
    image
  • 设备主题
    image
  • 发送数据
    image
  • 查看是否接受到数据
    image

手写连接

  • 使用的mqtt服务器: mqtt://broker.hivemq.com

1. 使用VsCode打开\esp-idf\examples\protocols\mqtt\tcp

image

2. 新建一个tcp_main.c文件

  • 为了更加清晰连接步骤,自己手写连接过程
    image

3. 修改CMakeLists.txt

  • SRCS后的文件名为自己新建的文件
    image

4. 新建app_main

image

5. 设置标签

image

6. 打印ESP32启动信息

  • 启动日志,剩余内存日志,使用IDF版本
    image

7. 设置日志等级

  • 显示需要的日志
    image
ESP-ID日志级别 详细程度
ESP_LOG_NONE 无日志
ESP_LOG_ERROR 仅输出错误
ESP_LOG_WARN 警告以及错误信息
ESP_LOG_INFO 正常信息、警告以及错误信息
ESP_LOG_DEBUG 调式信息,正常信息,警告以及错误信息
ESP_LOG_VERBOSE 全部详细信息
名称 对应信息
mqtt_client MQTT 客户端核心逻辑信息
transport / transport_base 传输
esp-tls 加密传输
outbox 消息队列
* 所有的信息

8. 初始化NVS闪存

  • 使用ESP_ERROR_CHECK()检测是否成功初始化
    image

9. 初始化TCP/IP 协议栈与事件队列

  • 初始化网络接口、事件队列
    image

10. 配置WiFi

  • 导入模块
    #include "esp_wifi.h"
  • 创建STA接口
    image
  • 配置要连接的WiFi信息
    image
  • 设置ESP32为STA模式,加载配置的WiFi信息
    image
  • 启动esp32WiFi模块并连接,使用延迟等待成功
    image

11. 连接MQTT服务器

  • 配置MQTT服务地址
    image
  • 创建事件回调函数
static void mqtt_event_handler(void *handler_args, esp_event_base_t base, int32_t event_id, void *event_data)
{// 设置标签esp_mqtt_event_handle_t event = event_data;esp_mqtt_client_handle_t client = event->client;switch ((esp_mqtt_event_id_t)event_id) {case MQTT_EVENT_CONNECTED:ESP_LOGI(TAG, "MQTT服务器连接成功");// 订阅主题 /esp32esp_mqtt_client_subscribe(client, "/esp32", 0);break;case MQTT_EVENT_DISCONNECTED:ESP_LOGI(TAG, "MQTT服务器连接断开");break;case MQTT_EVENT_SUBSCRIBED:ESP_LOGI(TAG, "ESP32 订阅主题成功, msg_id=%d", event->msg_id);// 向主题 /esp32 发送信息esp_mqtt_client_publish(client, "/esp32", "ESP32 login success", 0, 1, 0);break;case MQTT_EVENT_UNSUBSCRIBED:ESP_LOGI(TAG, "ESP32 取消订阅主题, msg_id=%d", event->msg_id);break;case MQTT_EVENT_PUBLISHED:ESP_LOGI(TAG, "ESP32 发布消息成功, msg_id=%d", event->msg_id);break;case MQTT_EVENT_DATA:// 接收订阅的消息ESP_LOGI(TAG, "MQTT_EVENT_DATA");printf("收到主题: %.*s\n", event->topic_len, event->topic);printf("收到数据: %.*s\n", event->data_len, event->data);break;case MQTT_EVENT_ERROR:ESP_LOGI(TAG, "MQTT_EVENT_ERROR");break;default:ESP_LOGI(TAG, "Other event id:%d", event->event_id);break;}
}
名称 作用
MQTT_EVENT_CONNECTED 连接成功触发
esp_mqtt_client_subscribe 订阅主题
esp_mqtt_client_publish 发送信息
MQTT_EVENT_DATA 接收到数据触发
event->topic 主题名称
event->data 接收到的数据
  • 初始化MQTT客户端
    image
  • 注册MQTT事件处理函数
    image
  • 启动MQTT客户端
    image

12. 构建、烧录、监视设备

image

http://www.jsqmd.com/news/546390/

相关文章:

  • STM32F4 DAC信号发生器实战:如何用DMA+TIM6生成高精度波形(附完整代码)
  • 避开期货指标常见坑:文华财经赢顺DK多空指标优化配置指南(附参数调试技巧)
  • 从小学数学题到代码调试:5个你没想到的思维链(COT)应用场景
  • 【大模型工程实践③】RAG 基础架构与完整实现
  • GStreamer性能优化指南:在Jetson TX2上实现4K视频低延迟处理(基于NVMM内存)
  • 日志分散难管理?用Visual Syslog Server实现企业级日志集中监控的5个实战方案
  • AB Download Manager完整指南:告别杂乱下载,体验高效文件管理
  • MoMask:零基础创建3D人体动画,开发者的AI动作生成解决方案
  • Python结合字典暴力破解WiFi密码的实战指南
  • 终极NS模拟器管理工具:如何快速安装和更新Yuzu与Ryujinx
  • 机器学习基础(四):损失函数与优化目标
  • 从RS485到TCP/IP:Modbus协议V1.1b3的三种组网方式对比(含WireShark抓包分析)
  • AI引擎排名优化GEO源码系统分享 带完整的搭建部署教程
  • 西门子S7-300 PLC与ET200S分布式IO实战:5步搞定PROFIBUS总线组态
  • 当ECU说‘不’时:一份给汽车诊断工程师的UDS负响应码(NRC)实战排查手册
  • CentOS7下NFS共享报错RPC问题的3种解决方案(含防火墙配置详解)
  • 别再让电费偷偷溜走!用智能时间开关改造家里的热水器和空调(附保姆级选购指南)
  • 煤矿电液阀系统摄像仪护套连接器 DLJ01(1000)参数
  • Phi-4-Reasoning-Vision行业落地:教育领域图像题解与隐藏线索识别案例
  • 视觉语言模型VLM高效部署:基于TensorRT-LLM的C++推理实践
  • 微信支付服务商模式踩坑实录:JSAPI支付在公众号和小程序里调不通?可能是这两个参数搞的鬼
  • 项目分享|VibeVoice:微软开源的前沿语音AI
  • 格密码学入门:从线性代数到Lattice Cryptography的实战指南
  • P3803 【模板】多项式乘法(FFT/NTT)
  • 宇树机器狗go2仿真避坑指南:如何用Velodyne VLP-16雷达降低电脑负载(附完整配置流程)
  • Phi-4-Reasoning-Vision基础教程:双卡4090环境安装、镜像拉取与端口映射
  • 请解释什么是 Docker Swarm,并描述其主要功能。
  • StructBERT情感模型快速部署:镜像免配置+毫秒响应实测分享
  • 用STC89C52RC单片机+L298N驱动模块,做个可调直流电源(附PWM控制代码)
  • 别再让液冷板成为瓶颈:结构热设计规范+仿真技术要点全在这