ESP8266 OTA D1 Wemos stürzt duch pinMode ab

Ich habe ein seltsames Problem, bei dem sich selst die Suche im Netz als Problem darstellt.

Thema OTA (oh, nicht schon wieder, ist doch so einfach...)

Ich habe einen Wemos D1, an diesem sind alle digitalen ein und Ausgänge belegt. Da ner verbaut is, soll er wieder über OTA beschrieben werden.

Nach wochenlangen Tests habe ich das Problem ziemlich eingegrenzt.
Ich stelle den Sketch hier ein:

#include <ESP8266WiFi.h>
#include <ArduinoOTA.h>


const char* ssid = "****";
const char* password = "**********";

int taster_off=8;
int taster_on=7;
int taster_temp=11;
int taster_speed=10;
int taster_diesel=2;
int taster_glu=9;
int relais_1=3;
int relais_2=4;
int relais_3=5;
int relais_4=6;
int relais_3a=12;

void setup() 
{

   WiFi.begin(ssid, password);
  ArduinoOTA.setHostname("XXXXXXX");
  ArduinoOTA.setPassword("XXXXXXXX");
  ArduinoOTA.begin();
  
//pinMode(taster_on, INPUT_PULLUP);
//pinMode(taster_off, INPUT_PULLUP);
//pinMode(taster_temp, INPUT_PULLUP);
pinMode(taster_speed,INPUT_PULLUP);
pinMode(taster_diesel, INPUT);
pinMode(taster_glu, INPUT_PULLUP);
pinMode(relais_1, OUTPUT);
pinMode(relais_2, OUTPUT);
pinMode(relais_3, OUTPUT);
//pinMode(relais_4, OUTPUT);
pinMode(relais_3a, OUTPUT);

Serial.begin(9600);
}
void loop()
{

 ArduinoOTA.handle();


}


Den Rest aus dem loop habe ich entfernt, er hat keinen Einfluss auf den Ablauf.
Wenn ich den Sketch so hochlade funktioniert alles, wie es soll.
aktiviere ich jetzt allerdings auch nur einen der mit // deaktivierten Zeilen, führt das System einen dauernden Rest durch und läuft nicht mehr.
Es liegt auch nicht an der Anzahl den PinModes. Deaktiviere ich einen anderen, funktionieren die deaktivierten dann trotzdem nicht.

Ich habe von der ArduinoOTA ältere Versionen getestet (stand irgendwo im Netz),
habe es mit IDE 1.8 und auch mit IDE 2 probiert,

Hat jemand eine Erklärung für diese Problem?

Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden. Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.

mfg ein Moderator.

Suche nach pins belegung GPIO 9 ist belegt, den nutzt Speicher. Nicht alle darfman ohne alles nutzen, algemein linke Seite sollte man nicht nutzen.

Hier findest du das Problem, von dem @fony schreibt.

Und Probleme gibt es bei den Pins 3, 9, 10, 11.
Diese solltest du nicht verwenden.

Danke @HotSystems

Die Nummern, die Sie zur Identifizierung der Pins verwenden, beziehen sich auf GPIO-Nummern, nicht auf die mit Dx gekennzeichnete Nummer. Die Pins, die Sie für INPUT_PULLUP aktivieren, sind auf den Wemos (oder fast allen ESP8266-Boards) nicht sichtbar, da sie mit dem Flash verbunden sind. Tatsächlich sind nicht einmal die Dx-markierten Pins mit diesen Nummern freigelegt. Auf einem ESP8266-12F sind sie freigelegt, sollten aber nicht verwendet werden.

Gerne...

Was bedeutet "solltest du nicht verwenden" Die Anlage, mit der kompletten Belegung läuft sein 1,5 Jahren. Ohne Probleme. Wollte jetzt nur eine Zeit verändern, allerdings läuft der Upload ewig, ohne zum Abschluss zu kommen. Daraufhin hab ich die Anlage demontiert und den Chip direkt angeschlossen. Dann fiel das Problem erst auf. Also hab ich einen neuen Chip genommen, das gleiche Problem.
Und ich versteh nicht, das ich Pins nicht verwenden soll, wozu sind die sonst da?

Auch hier. Muss erwähnen, das die Anlage komplett seit über einem Jahr arbeitet. Weil eine Laufzeit geändert werden sollte, hab ich den neuen Sketch draufgespielt (per WLAN) seit dem zickt er rum...

am ESP gibt es einige Pins mit besonderen Verhalten. Die einen machen was beim starten, die anderen müssen beim starten einen bestimmten Pegel aufweisen.

Wenn es bisher "funktioniert" hat - Glück gehabt. An IO9 häng der Speicher. Würde ich daher nicht verwenden.
Bei 16, 0, 2, 15, 10, 9 ... gibts Besonderheiten die es zu Berücksichtigen gilt.

Um zB. Weiteren Speicher einbinden usw.
Steht alles in der Doku für ESP8266.
ESP8266 und 32 arbeiten intern anders als ATmega.

evtl. könnte man 2 Pins noch freischaufeln.
DIO vs. QIO

Ganz einfach, weil der Hersteller das so empfiehlt.

Und da hast du richtig Glück gehabt.

Hier noch ein paar Infos zu den Pins:

  • GPIO16: pin is high at BOOT
  • GPIO0: boot failure if pulled LOW
  • GPIO2: pin is high on BOOT, boot failure if pulled LOW
  • GPIO15: boot failure if pulled HIGH
  • GPIO3: pin is high at BOOT
  • GPIO1: pin is high at BOOT, boot failure if pulled LOW
  • GPIO10: pin is high at BOOT
  • GPIO9: pin is high at BOOT

Weiteres findest du auch hier.

Ich muss mich an dieser Stelle bei allen entschuldigen. Pin 9 hat mich stutzig gemacht. Gibt es am D1 garnicht.
Hab die Anlage jetzt noch mal zerlegt und geschaut. Der Grundbaustein ist ein ESP WROOM 32 - ESP32 DEVKITV1. Der D1 saß nur drüber, der steuert das OLED. Auf Grund der kleinen verbauten Kiste hab ich den anderen Chip darunter garnicht für voll genommen.
Zwar besteht jetzt das Problem, das ich den trotzdem nicht bespielt kriege, das wird aber ein andes Thema. Das ist der Nachteil, wenn man per WiFi bespielen möchte, man weiß nach ein paar Monaten garnicht mehr, welcher Chip dahinter sitzt. Auf Grund eines HDD Chrash sind leider auch die Unterlagen, in denen genau das steht, verloren gegangen.

Nochmals danke für eure Arbeit.

Backup einspielen?

Gruß Tommy

Dann solltest du unbedingt den GPIO3 frei machen, der der wird vom USB-Serialwandler genutzt. Du blockierst da vermutlich den Zugriff.

Und was deinen ESP32 betrifft, solltest du dich zuvor informieren, welche Pins genutzt werden dürfen. Hier darfst du dazu nachlesen.

Ob nun ESP32 oder ESP8266, deine anfangs gezeigte Pinbelegung ist in beiden Fällen nicht richtig bzw. fehlerträchtig und somit nicht funktionsfähig.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.