Fragen zum Esp8266

Hallo,
Ich bin am verzweifeln ich habe mir 7 esp-01 bestellt und versuche seit einer Woche die Teile zum laufen zu bekommen.Bisher aber ohne Erfolg.
Vielleicht ist es nur eine Kleinigkeit aber und irgendjemand von euch kann mich mal in die richtige Richtung schubsen.
Ich habe verschiedene ganz einfache Sketche die einfach nur eine led an gpo 2 über das lokale Netz ein und ausschalten sollen und das will einfach nicht funktionieren.
Was ich bis jetzt erfolgreich geschafft habe: - Firmware aktualisiert, Sketch geflasht, Zugriff über Browser,SSID (PW im Sketch)geändert.
Wenn ich den Sketch jetzt hochlade und mein lokales Netz scanne finde ich den esp-01 und kann ihn im Browser aufrufen.Dort ist auch der Butten led an und aus. Wenn ich nun auf led an klicke blitzt zwar die led am esp mal ganz kurz auf aber die led am gpo2 bleibt aus.Wenn ich der led aber direkt die 3,2 v gebe leuchtet diese.
Ich sollte vielleicht noch erwähnen das der esp an einem Labornetzteil hängt mit 3,2v.
2. Frage auf vielen Seiten steht das man den esp über AT-Befehle in der Arduino Software abfragen kann.Ich sehe zwar Meldungen wie „Client verbunden“aber wenn ich zBsp AT eingebe kommt keine Antwort.
Auch eigenartig nach einem reset ist der esp im Netz noch zu sehen (mit ip)aber ich kann ihn im Browser nicht mehr aufrufen.
Und das alles mit 4 Unterschiedlichen esp‘s unter Mac OS ,win 7 und Linux Debian.

Meinst Du, wir sind Hellseher und ziehen uns Deinen Sketch per Ommm rein?

Setze Deinen Code bitte in Codetags (</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter ohne *).

Gruß Tommy

AAaaaußerdem, Wenn du den Esp mit der Ardhino IDE geflasht hast ist die original
Firmware weg ! Dann ist nix mehr mit AT-Interface.

Ulli

#include <ESP8266WiFi.h>
 
const char* ssid = "Logi";//type your ssid
const char* password = "c1430lc1430l";//type your password
 
int ledPin = 2; // GPIO2 of ESP8266
WiFiServer server(80);
 
void setup() {
  Serial.begin(115200);
  delay(10);
 
 
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
   
  // Connect to WiFi network
  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.print("Use this URL to connect: ");
  Serial.print("http://");
  Serial.print(WiFi.localIP());
  Serial.println("/");
    
}
 
void loop() {
  // Check if a client has connected
  WiFiClient client = server.available();
  if (!client) {
    return;
  }
   
  // Wait until the client sends some data
  Serial.println("new client");
  while(!client.available()){
    delay(1);
  }
   
  // Read the first line of the request
  String request = client.readStringUntil('\r');
  Serial.println(request);
  client.flush();
   
  // Match the request
 
  int value = LOW;
  if (request.indexOf("/LED=ON") != -1) {
    digitalWrite(ledPin, HIGH);
    value = HIGH;
  } 
  if (request.indexOf("/LED=OFF") != -1){
    digitalWrite(ledPin, LOW);
    value = LOW;
  }
 
// Set ledPin according to the request
//digitalWrite(ledPin, value);
   
 
  // Return the response
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println(""); //  do not forget this one
  client.println("<!DOCTYPE HTML>");
  client.println("<html>");
   
  client.print("Led pin is now: ");
   
  if(value == HIGH) {
    client.print("On");  
  } else {
    client.print("Off");
  }
  client.println("

");
  client.println("Click <a href=\"/LED=ON\">here</a> turn the LED on pin 2 ON
");
  client.println("Click <a href=\"/LED=OFF\">here</a> turn the LED on pin 2 OFF
");
  client.println("</html>");
 
  delay(1);
  Serial.println("Client disonnected");
  Serial.println("");
 
}

ich hoffe das ist so richtig
ist von der Webseite:

OK das die Firmware dann weg ist wusste ich allerdings auch noch nicht.Das wirft aber dann die Frage auf wie man es dann Flasht bzw kann man denn auch das ganze flashen das die at Firmware oben bleibt?

Ändere mal den Teil

 // client.flush();

  // Match the request

  int value = LOW;
  if (request.indexOf("GET /LED=ON" >= 0) ) {
    digitalWrite(ledPin, HIGH);
    value = HIGH;
  }
  if (request.indexOf("GET /LED=OFF") >= 0) {
    digitalWrite(ledPin, LOW);
    value = LOW;
  }

Hat leider nicht geholfen aber danke trotzdem.Warum ist eigentlich alles weg sobald ich den Esp einmal Stromlos mache bzw.wenn ich wieder einschalte kann ich ihn anpingen aber nicht mehr über http ansprechen.

in deinem Beispiel ist imho

int value = LOW;

an der falschen Stelle. Das ist lokal und wird bei jedem Loop durchlauf neu auf LOW gesetzt.

Mach sie global und value wird den Loop überleben.

Generell, tu dir was gutes und verwende nur webserver Beispiele die

#include <ESP8266WebServer.h>

verwenden. Siehe dazu auch die Beispiele in der IDE. Das ist doch wesentlich übersichtlicher oder?

Wenn dein Ding dann läuft und du ein etwas größeres Beispiel durcharbeiten möchtest, kannst du beispielsweise
ESP8266 Webserver - Webclient - Kommunikation zwischen zwei ESP folgen.
Und ja es ist absicht, dass der ganze Code erst auf einer späteren Seite kommt - das soll zum genauen Lesen anregen :wink:

Hallo,

noiasca:
in deinem Beispiel ist imho

int value = LOW;

an der falschen Stelle. Das ist lokal und wird bei jedem Loop durchlauf neu auf LOW gesetzt.

Mach sie global und value wird den Loop überleben.

mehr so als allgemeine Anmerkung: wenn value hier nur innerhalb loop() verwendet wird, reicht auch ein

static int value = LOW;

damit sie ihren Wert behält.
Ich bin zwar auch immer schnell bei globalen Variablen, aber nötig sind sie eigentlich oft nicht.

value als Variablenname ist auch nicht so kreativ, man sollte sich angewöhnen, sprechende Namen zu benutzen.

  int value = LOW;
  if (request.indexOf("GET /LED=ON" >= 0) ) {
    digitalWrite(ledPin, HIGH);
    value = HIGH;
  }

// besser (als Beipiel):

  static bool LEDstatus = LOW;
  if (request.indexOf("GET /LED=ON" >= 0) ) {
    LEDstatus = HIGH;
    digitalWrite(ledPin, LEDstatus);
  }

Gruß aus Berlin
Michael

Ok ich habe schon bemerkt das ich mich in meinem Post ganz schön misverständlich ausgedrückt habe.
Ich wollte nichts vergessen und möglichst alles berichten, was mir selber schon aufgefallen ist aber das hat
alles etwas durcheinander gebracht.
Danke das sich doch noch einige finden die mir helfen wollen.
Ich versuche es jetzt noch einmal nach dem Tip von noiasca
(DE: Wie man Fragen postet:

  1. was hat man (Sketch und Hardware)
  2. was SOLL es machen
  3. was macht es: IST (Fehlverhalten, Fehlermeldungen, Serial.Output ...)
  4. Eine Frage stellen bzw. erklären was man erwartet)

1.Der Sketch ist ja noch richtig gewesen.Hardware: ESP-01 schwarz ;FTDI USB zu TTL Adapter (jumper auf 3V) zusätzlich Labornetzgerät an + & - auf 3,2 V eingestellt( RX an TX;
TX an RX;VCC CH_PD an +;GND an GND;Res über Taster an GND ;GPIO an GND;Led an GPO2.

2.Ich suche für den Anfang einen ganz einfachen Sketch der mir eine LED über das Web an und
ausschaltet um mich mit dem Modul vertraut zu machen.
Im Internet fand ich auf der Seite https://www.hackster.io/ROBINTHOMAS/esp8266-esp-01-webserver-7248ca eine schöne Anleitung mit Bildern und
Kommentaren die ich mal versuchen wollte.(ich habe auch noch andere im Netz gefunden und versucht aber immer ohne Erfolg)

3.Flashen funktioniert;Web-Aufruf funktioniert(zumindest direkt nach dem Flashen solange ich den Stom nicht kurz unterbreche oder CH_PD von + trenne)

  1. Ich hab keine Ahnung warum es nicht funktioniert obwohl es im Netz soviel Anleitungen gibt die ich 1:1 nachgebaut habe und bei mir nicht wollen.
  2. Frage nach dem Flashen und Kurz Stromlos machen ist das Modul noch im Netz zu sehen aber die Webseite meldet keine Verbindung (pin funktioniert aber)
    Der Sketch ist doch dann nicht weg?
  3. Frage vofür genau ist die Firmware? Das ist doch wie bei einem Hany das Betriebssystem oder? Warum ist diese dann weg wenn ich mit der
    Arduino IDE flashe oder vofür brauch ich die dann?

Ich hoffe so ist es etwas Verständlicher und möchte mich noch mal bei allen bedanken die mir bisher geantwortet haben.

Hallo,

Du hast aber auch nach dem Flashen GPIO0 wieder von GND getrennt? Sonst geht der ESP beim Reset wieder in den Programmiermode. Normalerweise baut man da auch einen Taster an.
Programmieren:
GPIO0 Taster festhalten
Reset drücken und wieder loslassen
GPIO0 Taster noch ca. 1s festhalten
GPIO0 Taster wieder loslassen

Dann ist er im Programmiermode.
Für den normalen Programmablauf muß GPIO bei Reset auf High sein.

Gruß aus Berlin
Michael

Die Firmware ist nichts anderes als ein Sketch, der gewisse „at“ Kommandos ausführt. Nicht zu verwechseln mit dem Bootloader, welcher dafür sorgt, dass man seriell neue Software flashen kann.

Du mußt CH_PD auf +VCC legen. Der Sketch läuft jedenfalls zumindest mit den Änderungen aus #4.
Gerade getestet.

mfG Thorsten

Ok jetzt hab ich wieder etwas Zeit zum testen gefunden und ich hab das Problem lösen können.Es lag an meinem Adapter. Der esp ist ja so das man ihn nicht einfach auf das breadboard stecken kann und der Adapter (die Slotleiste )hat auf gpo2 keinen Kontakt.Optisch ist absolut nichts zu sehen warum sie kein Kontakt hat aber beim messen hat sie kein Durchgang.
Vielen Dank für all eure Tipps und ich glaub ich kann den post damit schließen.