Probleme beim Upload mit Nodemcu

Hallo,
Habe bei meinem Nodemcu eine Led mit Vorwiderstand an D8 und GND angeschlossen.
Beim Hochladen des Skteches bekomme ich immer eine Fehlermeldung:
esptool v0.4.12 - (c) 2014 Ch. Klippel ck@atelier-klippel.de
setting board to nodemcu
setting baudrate from 115200 to 115200
setting port from to COM6
Beim Hochladen des Sketches ist ein Fehler aufgetreten
setting address from 0x00000000 to 0x00000000
espcomm_upload_file
espcomm_upload_mem
setting serial port timeouts to 1000 ms
opening bootloader
resetting board
trying to connect
flush start
setting serial port timeouts to 1 ms
setting serial port timeouts to 1000 ms
flush complete
espcomm_send_command: sending command header
espcomm_send_command: sending command payload
read 0, requested 1
trying to connect
flush start

Den gleichen Fehler bekomme ich auch wenn ist statt D8 D7 als Pin verwende.
Wie kann ich D7 und D8 als GPIO Pins verwenden, dass ein Upload ohne Fehler klappt? :-\
Vielen Dank für eure Hilfe!!! :wink:

Ich habe bei mir an D0-D2 & D4-D8 eine 64*32 LED Matrix angeschlossen, Upload klappt ohne Probleme. Glaube also nicht, dass es bei Dir daran liegt.
Klemm doch einfach mal die LED ab und teste dann nochmal.

ich habe mir u.a. vermerkt, dass D8 bei Wakeup Low sein muss und auch andere GPIOs markiert, die rumzicken könnten oder sonstige Besonderheiten aufweisen:

Danke für eure Antworten.
Wenn ich die Led bei D8 oder D7 abklemme dann kann ich den Sketch ohne Fehlermeldung uploaden. Das Programm läuft aber nicht richtig.
Wenn ich aber in meinem Sketch
...
pinMode (13, OUTPUT); //Relais
digitalWrite(13, LOW);
delay (2000);
...
das delay kommentiere, dann läuft der Sketch ohne Probleme!

Beim ESP musst Du aufpassen, dass Pin 13 != D13 ist. Beim ESP werden die Nummern als GPIO-Nummern bewertet.
Wie hast Du die LED angeschlossen? Nach GND oder nach 3,3V?

Die D13-LED der Arduinos gibt es so nicht. Nutze LED_BUILTIN als für den Prozessor definierte Konstante.

Gruß Tommy

Interessante Beobachtung:

Wenn ich den unten angeführten Code ausführe, funktioniert der Uplaod aber das Programm läuft nicht richtig.

void setup () {
   static WiFiEventHandler e1, e2, e3;

   Serial.begin (115200);
   Serial.println ();
   WiFi.mode (WIFI_STA);
   WiFi.begin (YOUR_WIFI_SSID, YOUR_WIFI_PASSWD);

   pinMode (ONBOARDLED, OUTPUT); // Onboard LED
   digitalWrite (ONBOARDLED, HIGH); // Switch off LED

   pinMode (13, OUTPUT);      //Relais
 digitalWrite (13, LOW);
 delay (2000);
 digitalWrite (13, HIGH);
 delay (2000);

   NTP.onNTPSyncEvent ([](NTPSyncEvent_t event) {
       ntpEvent = event;
       syncEventTriggered = true;
   });

   // Deprecated
   /*WiFi.onEvent([](WiFiEvent_t e) {
       Serial.printf("Event wifi -----> %d\n", e);
   });*/

   e1 = WiFi.onStationModeGotIP (onSTAGotIP);// As soon WiFi is connected, start NTP Client
   e2 = WiFi.onStationModeDisconnected (onSTADisconnected);
   e3 = WiFi.onStationModeConnected (onSTAConnected);

   //by default, we'll generate the high voltage from the 3.3v line internally)
 display.begin(SSD1306_SWITCHCAPVCC);
 //init done
 
 display.display();
 delay(2000);
 
 //clear buffer display
 display.clearDisplay();
 display.setTextSize(1);
 display.setTextColor(WHITE);
 display.println("HALLO!!!");
 display.display();

//Initialize the I2C bus (BH1750 library doens't do this automatically)
 Wire.begin(D6,D5);    //D6,D5
 // on ESP8266 you can select SCL and SDA pins using Wire.begin (D4,D3)
 delay(500);
 
}

void loop () {
.....
}

Wenn ich dieses angeführten Code ausführe, funktioniert der Uplaod und das Programm läuft richtig. Habe diese Codezeilen
pinMode (13, OUTPUT); //Relais
digitalWrite (13, LOW);
delay (2000);
digitalWrite (13, HIGH);
delay (2000);
an das ende von void setup() gesetzt. Mehr nicht...

void setup () {
    static WiFiEventHandler e1, e2, e3;

    Serial.begin (115200);
    Serial.println ();
    WiFi.mode (WIFI_STA);
    WiFi.begin (YOUR_WIFI_SSID, YOUR_WIFI_PASSWD);

    pinMode (ONBOARDLED, OUTPUT); // Onboard LED
    digitalWrite (ONBOARDLED, HIGH); // Switch off LED

   

    NTP.onNTPSyncEvent ([](NTPSyncEvent_t event) {
        ntpEvent = event;
        syncEventTriggered = true;
    });

    // Deprecated
    /*WiFi.onEvent([](WiFiEvent_t e) {
        Serial.printf("Event wifi -----> %d\n", e);
    });*/

    e1 = WiFi.onStationModeGotIP (onSTAGotIP);// As soon WiFi is connected, start NTP Client
    e2 = WiFi.onStationModeDisconnected (onSTADisconnected);
    e3 = WiFi.onStationModeConnected (onSTAConnected);

    //by default, we'll generate the high voltage from the 3.3v line internally)
  display.begin(SSD1306_SWITCHCAPVCC);
  //init done
  
  display.display();
  delay(2000);
  
  //clear buffer display
  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.println("HALLO!!!");
  display.display();

//Initialize the I2C bus (BH1750 library doens't do this automatically)
  Wire.begin(D6,D5);    //D6,D5
  // on ESP8266 you can select SCL and SDA pins using Wire.begin (D4,D3)
  delay(500);

   pinMode (13, OUTPUT);      //Relais
  digitalWrite (13, LOW);
  delay (2000);
  digitalWrite (13, HIGH);
  delay (2000);
  
}

void loop () {
...
}

Beim ESP musst Du aufpassen, dass Pin 13 != D13 ist. Beim ESP werden die Nummern als GPIO-Nummern bewertet.
Wie hast Du die LED angeschlossen? Nach GND oder nach 3,3V?

Die D13-LED der Arduinos gibt es so nicht. Nutze LED_BUILTIN als für den Prozessor definierte Konstante.

Gruß Tommy

Nach meinen Recharchen ist D7 der GPIO13.
Die Led habe ich nach GND angeschlossen.

Ok, ich weiß mein Schreibstil und auch zB die delay () sind nicht in Orndung. Dieser Code dient nur zu Testzwecken für mich. :slight_smile:

LOOIIS:
Nach meinen Recharchen ist D7 der GPIO13.

Du hast gut recherchiert!

Ist aber auch nicht schwer herauszubekommen.

Da der Teufel grundsätzlich immer wieder im Detail steckt habe ich meinen obigen Sketch genauer untersucht. :sweat_smile:
Dabei habe ich unter Verwendung der Standard Library für den NTP Client von German Martin und dem Hinzufügen der Codezeilen (Siehe Code)

pinMode (13, OUTPUT);      //Relais
   digitalWrite (13, LOW);
   delay (2000);
   digitalWrite (13, HIGH);
   delay (2000);

festgestellt, dass das Programm keine Wlan Verbindung aufbaut.
Verschiebe ich aber die obigen 4 Codezeilen am Ende der Setupfunktion funktioniert das Programm!
Hat jemand von euch eine Ahnung, was der Grund dafür ist? :astonished:
Vielen Dank! :wink:

/*
Copyright 2016 German Martin (gmag11@gmail.com). All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are
permitted provided that the following conditions are met :

1. Redistributions of source code must retain the above copyright notice, this list of
conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice, this list
of conditions and the following disclaimer in the documentation and / or other materials
provided with the distribution.

THIS SOFTWARE IS PROVIDED BY <COPYRIGHT HOLDER> ''AS IS'' AND ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.IN NO EVENT SHALL <COPYRIGHT HOLDER> OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
   SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
   ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT(INCLUDING
       NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
   ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

   The views and conclusions contained in the software and documentation are those of the
   authors and should not be interpreted as representing official policies, either expressed
   or implied, of German Martin
*/

/*
Name: NtpClient.ino
Created: 20/08/2016
Author: gmag11@gmail.com
Editor: http://www.visualmicro.com
*/

#include <TimeLib.h>
#include "WifiConfig.h"
#include <NtpClientLib.h>
#include <ESP8266WiFi.h>

#ifndef WIFI_CONFIG_H
#define YOUR_WIFI_SSID 
#define YOUR_WIFI_PASSWD 
#endif // !WIFI_CONFIG_H

#define ONBOARDLED 2 // Built in LED on ESP-12/ESP-07

int8_t timeZone = 1;
int8_t minutesTimeZone = 0;
bool wifiFirstConnected = false;

void onSTAConnected (WiFiEventStationModeConnected ipInfo) {
   Serial.printf ("Connected to %s\r\n", ipInfo.ssid.c_str ());
}


// Start NTP only after IP network is connected
void onSTAGotIP (WiFiEventStationModeGotIP ipInfo) {
   Serial.printf ("Got IP: %s\r\n", ipInfo.ip.toString ().c_str ());
   Serial.printf ("Connected: %s\r\n", WiFi.status () == WL_CONNECTED ? "yes" : "no");
   digitalWrite (ONBOARDLED, LOW); // Turn on LED
   wifiFirstConnected = true;
}

// Manage network disconnection
void onSTADisconnected (WiFiEventStationModeDisconnected event_info) {
   Serial.printf ("Disconnected from SSID: %s\n", event_info.ssid.c_str ());
   Serial.printf ("Reason: %d\n", event_info.reason);
   digitalWrite (ONBOARDLED, HIGH); // Turn off LED
   //NTP.stop(); // NTP sync can be disabled to avoid sync errors
}

void processSyncEvent (NTPSyncEvent_t ntpEvent) {
   if (ntpEvent) {
       Serial.print ("Time Sync error: ");
       if (ntpEvent == noResponse)
           Serial.println ("NTP server not reachable");
       else if (ntpEvent == invalidAddress)
           Serial.println ("Invalid NTP server address");
   } else {
       Serial.print ("Got NTP time: ");
       Serial.println (NTP.getTimeDateString (NTP.getLastNTPSync ()));
   }
}

boolean syncEventTriggered = false; // True if a time even has been triggered
NTPSyncEvent_t ntpEvent; // Last triggered event

void setup () {
   static WiFiEventHandler e1, e2, e3;

   Serial.begin (115200);
   Serial.println ();
   WiFi.mode (WIFI_STA);
   WiFi.begin (YOUR_WIFI_SSID, YOUR_WIFI_PASSWD);

   pinMode (ONBOARDLED, OUTPUT); // Onboard LED
   digitalWrite (ONBOARDLED, HIGH); // Switch off LED

     pinMode (13, OUTPUT);      //Relais
   digitalWrite (13, LOW);
   delay (2000);
   digitalWrite (13, HIGH);
   delay (2000); 

   

   NTP.onNTPSyncEvent ([](NTPSyncEvent_t event) {
       ntpEvent = event;
       syncEventTriggered = true;
   });

   // Deprecated
   /*WiFi.onEvent([](WiFiEvent_t e) {
       Serial.printf("Event wifi -----> %d\n", e);
   });*/

   e1 = WiFi.onStationModeGotIP (onSTAGotIP);// As soon WiFi is connected, start NTP Client
   e2 = WiFi.onStationModeDisconnected (onSTADisconnected);
   e3 = WiFi.onStationModeConnected (onSTAConnected);

  

    
}

void loop () {
   static int i = 0;
   static int last = 0;

   if (wifiFirstConnected) {
       wifiFirstConnected = false;
       NTP.begin ("pool.ntp.org", timeZone, true, minutesTimeZone);
       NTP.setInterval (120);
   }

   if (syncEventTriggered) {
       processSyncEvent (ntpEvent);
       syncEventTriggered = false;
   }

   if ((millis () - last) > 5100) {     
       //Serial.println(millis() - last);
       last = millis ();
       Serial.print (i); Serial.print (" ");
       Serial.print (NTP.getTimeDateString ()); Serial.print (" ");
       Serial.print (NTP.isSummerTime () ? "Summer Time. " : "Winter Time. ");
       Serial.print ("WiFi is ");
       Serial.print (WiFi.isConnected () ? "connected" : "not connected"); Serial.print (". ");
       Serial.print ("Uptime: ");
       Serial.print (NTP.getUptimeString ()); Serial.print (" since ");
       Serial.println (NTP.getTimeDateString (NTP.getFirstSync ()).c_str ());

       Serial.println(hour());
       

       i++;
   }
   delay (0);
}