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)
@Dániel Kis, 👍1
1 ответ
У меня была та же проблема. В конце концов, я разобрался, в чём дело, благодаря информации из «Руководства по запуску 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 для ВЫХОДА допустимо, но не рекомендуется использовать их для ВХОДА.
- Ультразвуковой датчик (HC-SR04), регистрирующий случайное расстояние
- NodeMCU с ультразвуковым датчиком HC-SR04
- NodeMCU - Vin контакт как выход 5V?
- Как заставить 5-вольтовое реле работать с NodeMCU
- ESP8266 не подключается к Wi-Fi
- Разве в узле MCU v3 (LoLin) нет встроенного светодиода?
- Разница между этими двумя платами NodeMCU?
- NodeMCU - использовать кнопку flash в качестве входного сигнала в loop()