Wemos D1 R32 теряет соединение Bluetooth

У меня этот проект работает, за исключением случаев, когда я отключаю питание ESP32 со следующими соединениями (ESP32 -> Модуль реле) 5V — VCC, GND — GND, Pin12 — IN1, Pin13 — IN2. Когда я снова и снова включаю ESP32, релейный модуль «Реле активировано» срабатывает. Светодиоды горят тускло, и ESP32 не отображается как доступное устройство Bluetooth. Если я отключу провод 5 В, появится ESP32, а затем снова подключу 5 В, и все будет работать нормально. Примечание. Это не будет работать при отключении GND. Я попытался использовать контакт 14 на базе транзистора, чтобы включить 5 В только после того, как соединение выполнено, однако возникает тот же сбой. При подключении 5В перезагрузка не работает. Я включу изображение тускло горящих светодиодов и код для ESP32 с кодом, который я добавил с помощью транзистора.

Светодиод горит при перезапуске

#include "BluetoothSerial.h"

#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
#error Bluetooth is not enabled! Please run `make menuconfig` to and enable it
#endif
int upButton   = 12;
int downButton = 13;
char received = 0;
int upButtonState = 0;
int downButtonState = 0;
int powerRelay = 14;

BluetoothSerial SerialBT;

void setup() {
  // поместите сюда код установки для однократного запуска:
  Serial.begin(115200);
  pinMode(upButton,OUTPUT);
  pinMode(downButton,OUTPUT);
  pinMode(powerRelay,OUTPUT);
//****** Не имеет смысла, но HIGH на релейном модуле выключен. ******//
  digitalWrite(upButton,HIGH);
  digitalWrite(downButton,HIGH);
  digitalWrite(powerRelay,LOW);
  SerialBT.begin("CamperJack"); //Имя Bluetooth-устройства
  Serial.println("The device started, now you can pair it with bluetooth!");
}

void loop() {
  if (Serial.available()) {
    SerialBT.write(Serial.read());
  }
  if (SerialBT.available()) { 
    received = SerialBT.read();
    Serial.print("The value of received = ");
    Serial.println(received);
    Serial.write(SerialBT.read());
    digitalWrite(powerRelay,HIGH);
  }
// если (Серийный.доступный() > 0)
// {
// получено2 = SerialBT.read();
// }
////////// Кнопка вверх //////////
  if (upButtonState == 0 && received == '1' && downButtonState != 1)
  {
    Serial.println("Up Button ON");
    digitalWrite(upButton,LOW);
    received = 0;
    upButtonState = 1;
  }
  if (upButtonState == 1 && received >= '1' )
  {
    Serial.println("Up Button OFF");
    digitalWrite(upButton,HIGH);
    received = 0;
    upButtonState = 0;
  }
////////// Кнопка вниз //////////
  if (downButtonState == 0 && received == '2' && upButtonState != 1)
  {
    Serial.println("Down Button ON");
    digitalWrite(downButton,LOW);
    received = 0;
    downButtonState = 1;
  }
  if (downButtonState == 1 && received >= '1')
  {
    Serial.println("Down Button OFF");
    digitalWrite(downButton,HIGH);
    received = 0;
    downButtonState = 0;
  }
  delay(20);
}

, 👍1

Обсуждение

iirc, вы снимаете перемычку, подключаете 5 В к среднему контакту группы перемычек, затем подаете 3,3 В на контакт vcc в группе из 4 контактов, чтобы логика работала на 3,3 В, а энергоемкая катушка работала на 5 В., @dandavis

Я фактически решил эту проблему, НЕ используя GPIO12. Я где-то читал, что 12 для чего-то используется при загрузке, поэтому я переключился на контакты 13 и 14, и все работает отлично!, @bc65925 Cartersburg Forge


1 ответ


0

На самом деле я решил эту проблему, НЕ используя GPIO12. Я где-то читал, что 12 для чего-то используется при загрузке, поэтому я переключился на контакты 13 и 14, и все работает отлично!

,