尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

ESP32C3 对接 EMQX Cloud 云端完整教程

ESP32C3 对接 EMQX Cloud 云端完整教程 目录项目简介一、EMQX 服务器部署Cloud 云端1.1进行EMQX登入1.2创建EMQX项目二、Vscode IDE 环境配置ESP32C3三、ESP32C3端连接测试代码总结项目简介EMQX 是目前最主流的开源 MQTT 消息服务器广泛应用于物联网设备通信、智能家居、工业物联网场景。ESP32 作为高性价比的物联网主控搭配 EMQX 可快速实现设备云端通信、数据上报、远程指令控制。一、EMQX 服务器部署Cloud 云端EMQX Cloud 是 EMQX 官方提供的托管 MQTT 云服务免去本地 Docker、虚拟机部署 EMQX开箱即用支持免费试用非常适合快速验证物联网项目。EMQX CloudServerless 无服务器部署自带永久免费额度非常适合新手学习测试项目。每月1GB 消息流量免费关键避坑创建部署时消费限额保持默认 0超出免费额度服务会自动限流不会产生账单扣费。如果修改限额大于 0流量超出后将会按量收费。1.1进行EMQX登入登录 | EMQ没有账号请进行注册这里登入环节就不展示了1.2创建EMQX项目填写项目名称和备注我们进行确定这里点击新增部署根据图片的步骤进行这里注意消费限额为0防止免费用超了被扣区域看自己需求没有需求默认即可。这样我们的EMQX就部署完毕了。二、Vscode IDE 环境配置ESP32C3我们可以查看之前的这篇文章进行配置Vscode的esp32c3的开发环境保姆级教程VSCodePlatformIO 搭建 ESP32-C3 开发环境-CSDN博客三、ESP32C3端连接测试代码代码适配公有云 EMQX 服务器修改 Wi-Fi 账号密码还有填入自己MQTT的配置信息即可直接运行。在此之前我们要进行配置信息的拿取与设置如图所示我们要的信息这里面的代码将你的信息进行替换根据图中自己找ssid 你的wifi名password 你的wifi密码mqttBroker mqttBrokermqttPass mqttPass重要提醒 本段代码使用 sslClient.setInsecure()关闭TLS证书校验未嵌入CA根证书。 仅用于本地学习、临时调试 严禁直接部署到正式项目存在中间人攻击风险会造成账号、设备数据泄露。 上线使用必须移除setInsecure()配置对应EMQX Cloud的CA证书并开启证书校验。#include Arduino.h #include WiFi.h #include PubSubClient.h #include WiFiClientSecure.h // WiFi配置 const char* ssid 你的wifi名; const char* password 你的wifi密码; // EMQX MQTT TLS信息 const char* mqttBroker mqttBroker; const uint16_t mqttPort 8883; const char* mqttUser mqttUser; const char* mqttPass mqttPass; const char* clientId esp32c3_simple; WiFiClientSecure sslClient; PubSubClient mqttClient(sslClient); // 消息接收回调 void callback(char* topic, byte* payload, unsigned int length) { Serial.print(收到消息); for (int i 0; i length; i) { Serial.print((char)payload[i]); } Serial.println(); } // MQTT重连函数 void connectMQTT() { while (!mqttClient.connected()) { Serial.print(尝试连接MQTT服务器...); if (mqttClient.connect(clientId, mqttUser, mqttPass)) { Serial.println( 连接成功); mqttClient.subscribe(test/in); } else { Serial.print( 失败错误码); Serial.println(mqttClient.state()); delay(2000); } } } void setup() { Serial.begin(115200); sslClient.setInsecure(); // TLS测试跳过证书校验 Serial.print(连接WiFi: ); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() ! WL_CONNECTED) { delay(500); Serial.print(.); } Serial.println(\nWiFi连接成功); mqttClient.setServer(mqttBroker, mqttPort); mqttClient.setCallback(callback); } void loop() { if (!mqttClient.connected()) { connectMQTT(); } mqttClient.loop(); }# 这里打开platformio.ini文件因为要导入PubSubClient这个包填写完后ctrls保存就行[env:esp32c3] platform espressif32 board esp32-c3-devkitm-1 framework arduino monitor_speed 115200 upload_port COM3 monitor_port COM3 board_build.f_cpu 160000000L board_build.f_flash 80000000L board_build.flash_mode dio lib_deps knolleary/PubSubClient^2.8串口打印出的效果可以看见我们的数据库已经连接上了后续可在此基础上接入模块进行数据的传输。总结本文完成了 ESP32C3 与 EMQX 的零基础对接覆盖服务器部署、环境配置、代码开发、功能测试、代码简洁稳定、自带重连机制可直接用于实际物联网项目开发是嵌入式物联网入门的核心实战案例。感谢关注
返回列表