ESP 8266-01 Startproblem

Hallo ,

mal ne Frage an die Leute die sich gut mit dem ESP8266-01 auskennen. Ich hab damit eine Wetterstation gebaut die seit einigen Wochen im Langzeitversuch zufriedenstellend läuft. Jetzt hat sich gestern ein Problem gezeigt und ich wollte das Ding neu starten, einfach nur Power off/on Leider ist mir das ohne Verbindung zum PC nicht geglückt Nur Hardwareverbindung zum PC hergestellt dann liefes ohne Probleme an. Ging ja während der Softwareentwicklung und in der Testphase auch immer ohne Probleme wenn mit PC verbunden. Eigendlich ist das reproduzierbar, nicht verbunden startete es nicht, verbunden kein Problem.

Ich denke ohne die Verbindung liegt eine der Leitungen TX RX auf einem Pegel der das starten verhindert.

ich hab dazu auf der Seite von Stephan Fings auch was gefunden. Pin 8 darf nicht auf LOW gezogen werden. Nur hab ich in dem Fall beide Pins offen.

GPIO0 , GPIO2 RST haben 2,2K gegen Vcc bzw Taster gegen 0V zum flushen & reset. GPIO0 und GPIO2 werden noch als I2C Schnittstellet für einen BM280 benutzt und haben Richtung Bus noch mal 330Ohm.

Hier die Schalung

für R1-R4 hab ich allerdings 2,2KOhm verwendet und zus.einen Taster an GPIO0

ich denke ich sollte Pin 8 mit einem Wiederstand gegen vcc legen, vermutlich geht dann aber die Schnittstelle nicht mehr. Hat jemand sowas schon mal gemacht, oder kennt das Problem.

Heinz

Es wäre gut zu wissen, was genau nicht geht? Bleibt er hängen, oder kriegt er "nur" keine Verbindung zum WiFi?
Wie sieht der Code aus?
Was hast Du für eine Versorgung?

Hallo
was genau nicht geht das wüste ich auch gerne. Bleibt er hägen ? weiss ich nicht ,vermute aber ja, er bekommt jedenfalls keine Verbindung zum Wlan. ( Fritzbox nicht im Netz.)

Wenn ich den PC anhänge um im Monitor was zu sehen klappt es ja , also kann ich auf diese Weise den Fehler nicht finden. ich habe derzeit noch die Stromversorgung für den Versuchsaufbau dran , daran kann´s eigentlich nicht liegen.

Versuchsaufbau derzeit

Steckernetzteil , Stromversorgug 3,3V, Lochrasteplatine mit den R und Tasten u dem ESP , Breadboard mit dem BM280. Ich denke daran kanns nicht liegen.

PS ich fab ein Foto von meinem Vesuchsaufbau angehängt weiss nicht ob das klappt.

Welcher Arduino, wo ist der Sketch in Codetags?

Ist im Setup sowas drin wie

while (!Serial);

Gruß Tommy

Hallo ,

ich hab jetzt mal versucht den gesamten Sketch einzustellen , geht nicht ist zu lang, also nur das Setup. Klar da sind noch Serial.print mit drin , aber die sollten eigendlich ja kein Problem sein , und sind sie ja auch nicht wenn der ESP gestartet hat. Das Wifi.begin ist ja so ziemlich das erste was überhaupt gemacht wird, aber wenn er hängt ist er nicht im Netz, also kommt er nicht bis dahin denke ich.

ich tippe ehr auf ein Harwareproblem beim starten, deshalb meine Frage ob da einem bekannt vorkommt und sich das Problem einfach mit einem zus. Pull-up lösen lässt.

Noch zur Ergänzung.

an den PC gehe ich über ein USB Seriell Konverter, der eigendlich zum direkten aufstecken des ESP gedacht ist ( siehe Foto.) Die Verbindung hab ich dann über drei Strippen mit Stiftleiste auf beiden Seiten gemacht also steckbar.
Wenn der ESP hochlaufen soll ist es egal ob ich die Kabel direkt an der Lötraster Platine abstecke oder alles so drann lasse wie auf dem Foto zu sehen ist. Ich dachte zuerst das die strippen sich was einfangen und darum der ESP nicht startet. Es ist aber tatsächlich so der Konverter muss im PC stecken, sonst gehts nicht.

#include <Time.h>
#include <TimeLib.h>

#include <ESP8266WiFi.h>
#include <WiFiUdp.h>

#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>

#include <string.h>

#include <BME280I2C.h>
#include <Wire.h>


char ssid[] = "xxxx";         // lokales Netzwerk
char pass[] = "xxxx";       // passwort
unsigned int localPort = 2390;      // lokaler port für UDP

IPAddress FritzboxIP(192, 168, 178, 1); // Fritzbox
const int NTP_PACKET_SIZE = 48;         // NTP Paket länge
byte paket[ NTP_PACKET_SIZE];           // NTP puffer
boolean sommerzeit = true;
boolean status_messen = false;

String file = "wetter.csv";

unsigned long last_mess, last_buf;

unsigned long alarmzeit[12];
boolean alarmquit[12];

float temperatur, humidity, luftdruck;    // aktualwerte
float tempMittelbuf, humMittelbuf, luftMittelbuf; // puffer gleitender Mittelwert
float buftemp[18], bufhum[18], bufluft[18]; // Kurzzeitspeicher
float Steigung, Abschnitt;
int ZeigerBuf = -1;
// UDP Instanz erstellen
WiFiUDP udp;

// Server Instanz erstellen
ESP8266WebServer server(80);

// FTP Instanz erstellen
WiFiClient ftpClient;// client Port 21
WiFiClient dClient;// client für daten Portnr. kommt vom Server

// BME settings
BME280I2C::Settings settings(
  BME280::OSR_X1,
  BME280::OSR_X1,
  BME280::OSR_X1,
  BME280::Mode_Forced,
  BME280::StandbyTime_1000ms,
  BME280::Filter_4,
  BME280::SpiEnable_False,
  0x77 // I2C address. I2C specific.
);
BME280I2C bme(settings);


//======================= Set up ============================
void setup() {
  Serial.begin(115200);
  Serial.println("-------------");
  Serial.printf("Connecting to ", ssid);

  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, pass);

  while (WiFi.status() != WL_CONNECTED) {
    delay(200);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("local IP:");
  Serial.println(WiFi.localIP());

  // NTP Zeit abrufen und läuft so automatisch zyklisch ab
  setSyncProvider(get_time);
  setSyncInterval(3600);
  Serial.println(DatumZeit());

  // WebServer starten
  if (MDNS.begin("esp8266")) {
    Serial.println("MDNS responder started");
  }

  server.on("/", handleRoot);
  server.on ( "/test1.svg", drawGraph1 );
  server.on ( "/test2.svg", drawGraph2 );
  server.on ( "/test3.svg", drawGraph3 );
  server.onNotFound(handleNotFound);
  server.begin();
  Serial.println("HTTP server started");


  // I2C Bus starten an pin 1 u pin 2
  Wire.begin(0, 2);

  while (!bme.begin()) {
    Serial.println(F(" Kann BME 280 Sensor nicht finden"));
  }



  // Alarmwerte vorbesetzeten ab  0:00:15 alle zwei Stunden
  for (int i = 0; i <= 11; i++) {
    alarmzeit[i] = i * 7200 + 15;
    // Serial.println(alarmzeit[i]);
  }
  void alarm();// Alarm initialisieren auf aktuelle Zeit

}

Hi

void alarm();// Alarm initialisieren auf aktuelle Zeit
Denke, die Zeile macht nicht, was Du erwartest.
Hiermit wird - meines Wissen - NUR die Funktion alarm(), Welche keinen Rückgabewert liefert (void) und keine Argumente benötigt (leere Klammer) dem Kompiler bekannt gemacht - Diese darf also weiter hinten im Code stehen und trotzdem vorher eingebunden werden.
Ob Das 'so tut', ist mir nicht bekannt, da Du diese Zeile im setup() stehen hast - ich eigene Funktionen ganz vorne bekannt mache und ganz hinten erst stehen habe - allerdings auf dem Arduino, wobei Du ja einen ESP8266-01 nutzt.
Könnte mir aber trotzdem vorstellen, daß der Kompiler bei beiden Ziel-Systemen 'gleich tickt'.

MfG

Probiere mal, ob er bis zum WiFi kommt, wenn Du die Serial im Setup auskommentierst.
Beim Wemos D1 mini pro kenne ich diese Probleme nicht, abr ich weiß auch nicht, was der USB-Wandler anstellt. Evtl. mal die interessanten Pins durchmessen, wenn er angesteckt ist und wenn nicht.

Gruß Tommy

@postmaster

die function alarm liefert eigendlich einen bool zurück , den ich aber hier im Setup nicht benötige. Eigendlich werden damit hier im Setup die bool Werte alarmquit[] bis zur aktuellen Uhrzeit gesetzt. Es soll ja beim starten nicht gleich 4,5 Alarme ausgelöst werden, sondern später im loop nur dann wenn die zugehörigen alarmzeiten[] erreicht sind. Damit werden dann Daten mittels FTP geschrieben.

ich hab alle eigenen functionen ganz hinten stehen das gab bisher noch nie Probleme , kann auch nicht verstehen warum dann der ESP nicht im Wifi Netz angemeldet werden sollte.

@Tommy56

ja die Serial im Setup sind auch für mich der einzige Grund warum es an der Software liegen könnte , aber logisch ist es nicht. Den Wandler schliesse ich eigendlich aus , da es ja auch nicht geht wenn er abgesteckt ist.

inzwischen glaub ich die Dinger die ich da hab sind nicht ganz kompatibel, habe auch das Filesysem vor einigen Wochen nicht zum laufen bekommen.
Werde das morgen mal versuchen, muss sowieso an anderer Stelle noch was ändern. Wollte das Wifi.beginn noch in eine function packen damit bei verlust der Verbinung diese ohne neustart des ESP wieder aufgebaut werden kann. (das war der Grund für den Neustart am Donnerstag ohne PC )

Zudem ist meine Wetterprognose für den Webserver aus mittlerer Luftdruckänderung ( lineare regressionskurve der letzten 4 Stunden) und dem absoluten Luftruckes noch bescheiden :slight_smile:

ich melde mich wenn ich was gefunden hab.

Guß Heinz

Ich würde Dir den Wechsel zum Wemos D1 mini pro empfehlen. Der hat den USB-Anschluß gleich dran.
Evtl. könnte auch ein Wechsel zur Version 2.3.0 der ESP8266-Software helfen. Die 2.4.0/1 hat noch einige Bugs.
Dazu ist eine portable Installation der IDE ganz praktisch. Davon kann man mehrere betreiben mit eigenen Libs/Versionen.

Gruß Tommy

Ich würde alles, was mit serieller Schnittstelle zu tun hat, folgendermaßen lösen:

//#define DEBUG
#ifdef DEBUG
  #define debugBegin(...) Serial.begin(__VA_ARGS__);while(!Serial)
  #define debugPrint(...) Serial.print(__VA_ARGS__)
  #define debugPrintln(...) Serial.println(__VA_ARGS__)
#else
  #define debugBegin(...)
  #define debugPrint(...)
  #define debugPrintln(...)
#endif

Dann einfach je nach Bedarf #define DEBUG auskommentieren

Ich habe es schon bei einigen Controllern erlebt, dass es Probleme gibt (Controller hing sich auf), wenn die serielle Kommunikation ohne seriellen Monitor genutzt wird.

weiss ich nicht ,vermute aber ja,

-->verpasse ihm doch eine LED und eine Blink-Routine, dass er immer blinkt.

Hallo zusammen,

hab das heute noch mal ausgiebig getestet. Donald würde es fake news nennen sorry :wink:

ist alles ok.

Hab natürlich von der falschen Seite angefangen zu testen und erst mal alle Seriell rausgenommen , geiches Ergebniss.

Dann hab ich die Strippen auf der ESP Seite abgesteckt und siehe es ging alles. Hatte das zwar am Freitag schon mal gemacht , aber !!!
Hab dann jetzt alle Seriell wieder rein genommen - geht immer noch. Der ESP bootet nur dann nicht wenn die Strippen mit dem USB seriell Konverter dran hängen und der Converter nicht im PC eingesteckt ist. Die blaue Led glimmt dann vor sich hin. Mindestens 10 mal versucht.

Ich hab da aber noch ne Frage: zum Thema Wifi Verbindung verloren. Ist aber ein neuse Thema also da.

nochmals vielen Dank an alle sich sich den Kopf mit zerbrochen haben.

Heinz