PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : WEMO D1 mini startet nicht (Portproblem)



Elkokiller07
06.03.2021, 18:55
Hallo,
ich möchte mit einem SR04 über einen D1mini den Abstand messen und auf einer Homepage anzeigen.
Funktioniert auch alles! Allerdings nur wenn ich den Wemo erstmal von meiner Platine ziehe.
Er startet nicht so lange ich den SR04 angeschlossen habe.
Ziehe ich ihn oder den Wemos ab, läuft das Programm an. Dann stecke ich ihn bzw. den SR04 auf die Platine und alles ist perfekt.
Ich habe mehrere Ports versucht und immer das selbe Ergebnis.

Kann ich die beiden Ports zum Programmstart "abschalten"?
(Im Moment ist es 0 und 16)


#include <ESP8266WiFi.h>

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


WiFiServer server(80);


int trigger = 16;
int echo = 0;
long dauer = 0;
int PinConnect = 4; // WLAN Connect


long entfernung = 0;


void setup() {
Serial.begin(115200);


Serial.println("Setze Pins als Ausgänge");
pinMode(PinConnect, OUTPUT);
digitalWrite(PinConnect, LOW);



delay(10);


IPAddress ip(192, 168, 0, 71);
IPAddress gateway(192, 168, 0, 1);
IPAddress subnet(255, 255, 255, 0);
IPAddress dns(192, 168, 0, 71);
WiFi.config(ip, dns, gateway, subnet);
WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");

}

Serial.println();
Serial.println("WiFi connected");
digitalWrite(PinConnect, HIGH);


pinMode(trigger, OUTPUT);
pinMode(echo, INPUT);


// Connect to WiFi network


WiFi.mode(WIFI_STA);
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);


WiFi.begin(ssid, password);


while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");


// Start the server
server.begin();
Serial.println("Server started");


// Print the IP address
Serial.println(WiFi.localIP());
}


void loop() {


digitalWrite(trigger, LOW);
delay(5);
digitalWrite(trigger, HIGH);
delay(10);
digitalWrite(trigger, LOW);
dauer = pulseIn(echo, HIGH);
entfernung = (dauer * 0.018);

String cmd;
cmd += "\"";


WiFiClient client = server.available();
client.println("HTTP/1.1 200 OK");
client.println();
client.println("<!DOCTYPE html>");
client.println("<html xmlns='http://www.w3.org/1999/xhtml'>");
client.println("<head>\n<;meta charset='UTF-8'>");
client.println("<title>Abstandsmessung</title>");
client.println("</head>\n<body>");
client.println("<H2>Wemo D1 Mini</H2>");
client.println("<h3>");


if (entfernung >= 0 || entfernung <= 1000)
{
client.println("Kein Messwert");
}
else
{


client.print(entfernung);
client.println(" cm");
}


client.println("</h3>");
client.print("</body>\n</html>");
delay(500);
}

Rabenauge
07.03.2021, 07:36
Abschalten nicht, aber du kannst beide als Eingänge deklarieren, und das dann später ändern.
Allerdings- wenn er beim starten in ner Schleife zu hängen scheint, solltest du das Problem weiter eingrenzen: bau mal einige Debug-Ausgaben ein, und schau, wie weit er eigentlich kommt.
Da anfangs mit dem Trigger gar nichts angestellt wird, kann der auch eher nicht die Ursache sein.

Was mir nicht gefällt ist, dass du PulseIn ohne Timeout benutzt.
Allein das kann den Code für eine volle Sekunde blockieren, wenn der kein Echo bekommt.
Die ESP brauchen aber hin und wieder (ich glaube, so alle 20ms) etwas Zeit, um die Wifi-Angelegenheiten zu regeln.

Moppi
07.03.2021, 10:52
Ich kenne das nur von den ESP12-E. Wenn man dort die falschen Pins nutzt, startet das Gerät nicht und führt auch keine Software aus. So habe ich das hier auch verstanden.

Wir hatten das erst, dass man die Teile auch nur mit einem Draht betreiben kann. Echo und Trigger müssen dann überbrückt werden und der Pin für Echo und Trigger sind dann eben identisch. Muss ja irgendeinen Pin geben, den man beim Start vorher für Geräte nutzen kann, um diese anzuschließen.

Beim ESP8266 sollte man D1 bis D4 (0,2,4 und 5) problemlos nutzen können. Damit hatte ich keine Probleme.

16 ist GPIO16 = D0, den Pin verwendet man besser nicht.

Allerdings kenne ich den WEMOS D1 Mini nicht. Von daher meine Angaben ohne Gewähr, weil ich nicht weiß, in wie weit das Identisch zum ESP-12E ist.



MfG

- - - Aktualisiert - - -

Pins (GPIOs), die bei meinen Programmen funktioniert haben: 0,2,4,5,9,10,12,13,14