JSN-SR04T-2.0 с NodeMCU не запускается после сброса или повторного подключения питания USB

Я купил NodeMCU (1.0) и водонепроницаемый ультразвуковой датчик JSN-SR04T, совместимый с HC-SR04.

Если я загружаю свою программу в NodeMCU, она работает, но иногда измеряет неправильное расстояние — это другой вопрос, но он может быть связан с этим вопросом.

Если я нажимаю кнопку сброса, мое приложение не запускается или если его отключить и снова подключить к USB-питанию, оно не запускается.

Если я отсоединяю ультразвуковой датчик 3,3 В и заземляю его, он запускается.

Он начинается со следующего кода:

const int trigPin = D4;
const int echoPin = D3;

void flashLed() {
  digitalWrite(LED_BUILTIN, LOW);
  delay(400);
  digitalWrite(LED_BUILTIN, HIGH);
  delay(100);
}

void setup() {

  pinMode(LED_BUILTIN, OUTPUT);
  pinMode(trigPin, OUTPUT); // Устанавливает trigPin как выход
  pinMode(echoPin, INPUT); // Устанавливает echoPin как вход

  flashLed();
  Serial.begin(115200);
  flashLed();  
  delay(10);

  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    digitalWrite(LED_BUILTIN, HIGH);
    delay(1000);
    digitalWrite(LED_BUILTIN, LOW);  
    delay(1000);    
  }
  Serial.println("");
  Serial.println("WiFi connected");

  server.begin();

  Serial.println("Web server running. Waiting for the ESP IP...");
  delay(10000);

  Serial.println(WiFi.localIP());

  digitalWrite(LED_BUILTIN, HIGH);  

}

Я загрузил полный исходный код проекта на GitHub:

https://github.com/kisdaniel/nodemcu-wif-http-HC-SR04/blob/master/HomeDashboardUltrasonicHttp.ino

Почему не запускается?

ОБНОВЛЕНИЕ:

Я создал минимальную версию кода для воспроизведения проблемы:

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_BUILTIN, LOW);
  delay(1000);                      
  digitalWrite(LED_BUILTIN, HIGH);  
  delay(2000);                 
}

Проводка:

Node MCU 3.3V -  Vcc (ultrasonic sensor)
Node MCU GND  -  GND (ultrasonic sensor)
Node MCU D4   -  Trigger (ultrasonic sensor)
Node MCU D3   -  Echo (ultrasonic sensor)

, 👍1


1 ответ


0

У меня была та же проблема. В конце концов, я разобрался, в чём дело, благодаря информации из «Руководства по запуску ESP8266 NodeMCU WeMos»

Это объясняет - Использование GPIO0 (D3), GPIO2 (D4) и GPIO15 (D8) может быть немного сложным. На это есть определённые причины. Например, для нормального запуска ESP8266 выводы GPIO0 (D3) и GPIO2 (D4) подтянуты к ВЫСОКОМУ уровню (подтягивающий резистор), а GPIO15 (D8) — к НИЗКОМУ уровню (подтягивающий резистор). Рекомендуется не использовать эти выводы как ВХОД.

Проблема возникает, когда один из выводов NodeMCU, переходящий в состояние HIGH при запуске (D3 и D4), подключен к выводу «ECHO» датчика JSN-SR04T при подключенных выводах питания и заземления. Вывод «ECHO» имеет низкое сопротивление и снижает напряжение на D3 или D4 примерно до 1 вольта. Это предотвращает перезагрузку NodeMCU.

Проблема не возникает, если вывод D3 или D4 подключен к выводу «TRIGGER» датчика JSN-SR04T, поскольку он имеет высокое сопротивление и не снижает напряжение на подключенном к нему выводе NodeMCU.

Это соответствует рекомендациям статьи, которую я нашел: использовать D3, D4 и D8 для ВЫХОДА допустимо, но не рекомендуется использовать их для ВХОДА.

,