ESP8266 + MQTT + 陶晶驰-串口屏(arduino)

# ESP8266 + MQTT  + 陶晶驰-串口屏 #

 

关键代码:(mcu串口指令发送给串口屏)

首先串口屏工程需要 设置为 UTF-8编码  

其次为arduino 代码

//=========串口屏输出
void tjs(String name) {
  Serial.print("\xff\xff\xff");
  String tjcsend = "g0.txt=";
  Serial.print(tjcsend);
  Serial.print("\"");
  Serial.print(name);
  Serial.print("\"");
  Serial.print("\xff\xff\xff");
}

 

Arduino开发环境下让ESP32实现MQTT功能,可按以下步骤操作: 1. **安装程序库**:这是开发的基础准备工作,为后续编写程序提供必要的支持,但引用中未提及具体的安装方式。 2. **编写相关程序**: - **引入头文件**:虽然引用未给出具体头文件,但在实现MQTT功能时,通常需要引入ESP32网络连接、MQTT协议相关的头文件。 - **定义MQTT相关参数**:如MQTT服务器地址、端口、客户端ID、订阅和发布的主题等。 - **创建对象**:创建用于网络连接和MQTT通信的对象,例如WiFi客户端对象和MQTT客户端对象。 - **连接网络**:必须先连接WiFi,才能访问MQTT服务器。示例代码如下: ```cpp void connectToWiFi() { WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi..."); } Serial.println("Connected to WiFi"); } ``` - **连接MQTT服务器**:配置MQTT客户端,绑定服务器地址、端口,设置消息回调函数,然后进行连接。示例代码如下: ```cpp void connectToMQTT() { while (!mqttClient.connected()) { Serial.print("Attempting MQTT connection..."); if (mqttClient.connect(mqtt_client_id)) { Serial.println("connected"); // 订阅主题 mqttClient.subscribe(mqtt_topic_subscribe); } else { Serial.print("failed, rc="); Serial.print(mqttClient.state()); Serial.println(" try again in 5 seconds"); delay(5000); } } } ``` - **MQTT回调函数**:当收到MQTT消息时触发该函数,可在其中添加处理消息的逻辑。示例代码如下: ```cpp void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Message arrived ["); Serial.print(topic); Serial.print("] "); for (int i = 0; i < length; i++) { Serial.print((char)payload[i]); } Serial.println(); // 可在此添加处理消息的逻辑,如控制LED等 } ``` 3. **完整的代码例程**:一个完整的ESP32 + Arduino IDE开发的MQTT通信程序示例如下: ```cpp #include <WiFi.h> #include <PubSubClient.h> // WiFi参数 const char* ssid = "your_SSID"; const char* password = "your_PASSWORD"; // MQTT参数 const char* mqtt_server = "your_MQTT_SERVER"; const int mqtt_port = 1883; const char* mqtt_client_id = "esp32_client"; const char* mqtt_topic_subscribe = "test/topic"; const char* mqtt_topic_publish = "test/topic"; WiFiClient espClient; PubSubClient mqttClient(espClient); void setup() { // 1. 初始化串口通信(波特率115200,用于调试输出) Serial.begin(115200); delay(1000); // 等待串口初始化完成(避免启动时打印乱码) // 2. 初始化LED引脚(设置为输出模式,初始关闭) pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, LOW); // 初始状态:LED关闭 // 3. 连接WiFi(必须先连WiFi,才能访问MQTT服务器) connectToWiFi(); // 4. 配置MQTT客户端(绑定服务器地址、端口,设置消息回调函数) mqttClient.setServer(mqtt_server, mqtt_port); mqttClient.setCallback(callback); // 5. 连接MQTT服务器 connectToMQTT(); } void loop() { if (!mqttClient.connected()) { connectToMQTT(); } mqttClient.loop(); // 可在此添加发布消息的逻辑 mqttClient.publish(mqtt_topic_publish, "Hello, MQTT!"); delay(5000); } void connectToWiFi() { WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi..."); } Serial.println("Connected to WiFi"); } void connectToMQTT() { while (!mqttClient.connected()) { Serial.print("Attempting MQTT connection..."); if (mqttClient.connect(mqtt_client_id)) { Serial.println("connected"); // 订阅主题 mqttClient.subscribe(mqtt_topic_subscribe); } else { Serial.print("failed, rc="); Serial.print(mqttClient.state()); Serial.println(" try again in 5 seconds"); delay(5000); } } } void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Message arrived ["); Serial.print(topic); Serial.print("] "); for (int i = 0; i < length; i++) { Serial.print((char)payload[i]); } Serial.println(); // 可在此添加处理消息的逻辑,如控制LED等 } ``` 4. **MQTT连接测试**:在代码编写完成并上传到ESP32后,可通过串口监视器查看连接状态和消息收发情况,也可使用MQTT客户端工具(如MQTT.fx)来测试消息的发布和订阅。 相关资料可参考:使用Arduino开发ESP32(六):基于arduino的ESP32,连接MQTT服务器,发送,接收消息;MQTT服务器的搭建;ESP32连接MQTT服务器(基于Arduino环境);EMQTT官方文档等 [^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值