JSN-SR04T-2.0 met NodeMCU start niet na het resetten of sluit de USB-stroom opnieuw aan

Ik heb een NodeMCU (1.0) en een JSN-SR04T waterdichte ultrasone sensor gekocht die compatibel is met HC-SR04.

Als ik mijn programma upload naar NodeMCU, werkt het maar soms meet het een verkeerde afstand - het is een andere vraag, maar deze kan verbinding maken met deze vraag.

Als ik op de reset-knop druk, wordt mijn applicatie niet gestart of als hij is losgekoppeld en op usb-voeding aangesloten, start hij niet.

Als ik de ultrasone sensor 3.3V loskoppelen en begint te aarden.

Het begint met de volgende code:

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);//Sets the trigPin as an Output
  pinMode(echoPin, INPUT);//Sets the echoPin as an Input

  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);  

}

Ik heb de volledige broncode geüpload naar github-project:

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

Waarom het niet begint?

UPDATE:

Ik heb een minimale versie van de code gemaakt om het probleem te reproduceren:

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

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

bedrading:

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)
0
Bewerk uw vraag om een ​​Minimaal, Volledig en Verifieerbaar voorbeeld van code op te nemen, niet alleen fragmenten. Minimaal betekent dat je irrelevante dingen hebt weggenomen, gewoon achterlatend wat nodig is om het probleem te laten zien. Compleet betekent dat alle bibliotheeknamen worden getoond, alle variabelenverklaringen en alle functiedefinities - zodat mensen geen tijd hoeven te verspillen met raden wat u hebt gedaan of wat u bedoelde. Verifieerbaar betekent dat het kan worden gecompileerd en getest, waardoor andere mensen hun theorieën over het probleem kunnen testen
toegevoegd de auteur user31481, de bron
Waarom het niet begint?
toegevoegd de auteur Rip Leeb, de bron
Volledige bron kan door github te downloaden je kunt het proberen, als je een minimale versie nodig hebt, kan ik alle onnodige code verwijderen om het probleem te reproduceren.
toegevoegd de auteur Rip Leeb, de bron

2 antwoord

Om ESP8266 firmware-flashing in te schakelen, moet de GPIO0-pin laag worden getrokken   voordat het apparaat wordt gereset. Omgekeerd, voor een normale boot, moet GPIO0 dit doen   hoog of zwevend worden getrokken.

De D3-pin is equivalent GPIO0. Voor een normale opstartprocedure moet de GPIO0 omhoog worden getrokken of zweven tijdens het opstarten of opnieuw instellen van de module. Daarna (normale opstart), kunt u de uitvoer voor andere doeleinden gebruiken.

U kunt een andere uitgang gebruiken of proberen een pull-up-weerstand te gebruiken voor de D3.

2
toegevoegd
Dit is de juiste identificatie van het probleem, maar het is onwaarschijnlijk dat het toevoegen van een pullup-weerstand op D3/GPIO0 zal helpen, omdat het waarschijnlijk laag actief wordt aangedreven.
toegevoegd de auteur rossp, de bron
Breid uw antwoord alstublieft uit. Hoe gebruik je de D3-pin voor andere doeleinden?
toegevoegd de auteur user31481, de bron
Ja! Je hebt waardevolle informatie om te delen. Kijk naar antwoorden van Majenko, Code Gorilla en Nick Gammon als leidraad.
toegevoegd de auteur user31481, de bron
@Look Alterno Als ik de volgende tekst toevoeg, is dat genoeg ?: Voor een normale start moet de GPIO0 omhoog worden getrokken of drijvend tijdens het opstarten of opnieuw instellen van de module. Daarna (normale opstart), kunt u de uitvoer voor andere doeleinden gebruiken.
toegevoegd de auteur user32827, de bron
Als ik de Echo op D2 aansluit, werkt het. na reset.
toegevoegd de auteur Rip Leeb, de bron

Ik had hetzelfde probleem. Uiteindelijk heb ik uitgewerkt wat er mis ging met de informatie bij " Startup Guide for ESP8266 NodeMCU WeMos "

Het verklaart - "Het gebruik van GPIO0 (D3), GPIO2 (D4) en GPIO15 (D8) kan een beetje lastig zijn. Er zijn bepaalde redenen, bijvoorbeeld dat GPIO0 (D3) en GPIO2 (D4) voor normale start HIGH (PULL-UP weerstand) worden getrokken omhoog van ESP8266 terwijl GPIO15 (D8) LOW wordt getrokken (PULL-DOWN weerstand). Het wordt aanbevolen om deze pinnen niet als INPUT te gebruiken. "

Het probleem treedt op wanneer een van de NodeMCU-pinnen die HOOG wordt bij het opstarten - D3 en D4 - is verbonden met de "ECHO" -pin van de JSN-SR04T-sensor terwijl de voedings- en aardingspinnen zijn aangesloten. De "ECHO" -pin heeft een lage impedantie en verlaagt de spanning op D3 of D4 tot ongeveer 1 Volt. Dit voorkomt dat de NodeMCU opnieuw opstart.

Het probleem doet zich niet voor als de D3- of D4-pin is aangesloten op de "TRIGGER" -pen van de JSN-SR04T-sensor omdat deze een hoge impedantie heeft en de spanning op de aangesloten NodeMCU-pin niet verlaagt.

Dit komt overeen met wat het artikel dat ik vond aanbevolen: het gebruik van D3, D4 en D8 voor OUTPUT is OK, maar het wordt aanbevolen deze niet te gebruiken voor INPUT.

0
toegevoegd