chenchun022 发表于 2024-5-1 00:41:36

ESP32发射蓝牙信号一段时间后需要断电重启才可以运行

用ESP32模块做了一个蓝牙发射功能,连接mqtt,用来控制GIMI遥控器模拟信号打开投影仪。连接的5V1A的电源。

但是使用一段时间之后发现通过mqtt发送消息,能收到,但是ESP32的蓝色灯不亮,需要断电重启才可以继续使用mqtt控制打开投影仪,打开成功后ESP32的蓝色灯是会亮的。
目前不清楚什么问题,大佬们这是为什么呢

polisher 发表于 2024-5-1 09:47:40

不懂,帮顶。
建议你把求助信息写详细一点。比如你的硬件构成,代码来源什么的,不然很难获得有效帮助。

chenchun022 发表于 2024-5-1 12:23:50

嗯,好的谢谢


用的Arduino ide编写的,网上的帖子抄的

#include <WiFi.h>               
#include "PubSubClient.h"      
#include <WiFiUdp.h>            
#include "ESP32BLEAdvertise.h"

const char* ssid = "C-T";         
const char* password = "111111";   
//#define ID_MQTT"64e26601a9f63aa70"   
const char* topic = "GIMITYY";      
const int B_led = 2;      
bool Turned = false;;

const char* mqtt_server = "192.168.31.80";
const int mqtt_server_port = 1883;
const char* mqtt_username = "cc";
const char* mqtt_password = "password";
WiFiClient espClient;
PubSubClient client(espClient);
SimpleBLE bleadv;
//灯光函数及引脚定义
void turnOn();
void turnOff();

WiFiUDP Udp;
IPAddress remote_IP(192, 168, 31, 143);
unsigned int remoteUdpPort = 16735;
unsigned int remoteUdpPortFZ = 16750;
const char* Keyword = "KEYPRESSES:116";
const char* KeywordFZ = {"{\"action\":20000,\"controlCmd\":{\"delayTime\":0,\"mode\":6,\"time\":0,\"type\":0},\"msgid\":\"2\"}"};
void setup_wifi() {
delay(10);
Serial.println();
Serial.print(F ("Connecting to ") );
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(F (".") );
}

Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());

}
void callback(char* topic, byte* payload, unsigned int length) {
Serial.print(F ("Topic:") );
Serial.println(topic);
String msg = "";
for (int i = 0; i < length; i++) {
    msg += (char)payload;
}
Serial.print(F ("Msg:") );
Serial.println(msg);
if (msg == "on") {
    turnOn();
    Turned = true;
} else if (msg == "off") {
    turnOff();
    Turned = false;
}
msg = "";
}
void reconnect() {
while (!client.connected()) {
    Serial.print(F ("Attempting MQTT connection...") );
    if (client.connect(ID_MQTT)) {
      Serial.println("connected");
      Serial.print(F ("subscribe:") );
      Serial.println(topic);
      client.subscribe(topic);
    } else {
      Serial.print(F ("failed, rc=") );
      Serial.print(F (client.state()) );
      Serial.println(" try again in 5 seconds");
      delay(5000);
    }
}
}
void setup() {
pinMode(B_led, OUTPUT);
digitalWrite(B_led, LOW);
Serial.begin(115200);   
setup_wifi();         
client.setServer(mqtt_server, mqtt_server_port);
client.setCallback(callback);
}
void loop() {
int i = 1;
if (!client.connected()) {
    reconnect();
}
else
{
    if (Turned)
    {
      bleadv.begin();
      uint8_t data[] = {0x46,0x00,0x28,0x68,0xe9,0x68,0xb2,0x24,0x40,0xff,0xff,0xff,0x30,0x43,0x52,0x4b,0x54,0x4d};
      bleadv.advertise(data, 18);
      delay(5000);
    }
    else
    {
      bleadv.end();
    }
}
client.loop();
}
void turnOn() {
digitalWrite(B_led, HIGH);
}
void turnOff() {
digitalWrite(B_led, LOW);
Udp.beginPacket(remote_IP, remoteUdpPortFZ);
String str_cnt(KeywordFZ);
Udp.print(str_cnt);
Udp.endPacket();
}
页: [1]
查看完整版本: ESP32发射蓝牙信号一段时间后需要断电重启才可以运行