Use this forum to chat about hardware specific topics for the ESP8266 (peripherals, memory, clocks, JTAG, programming)

User avatar
By henkoegema
#63283 I have an ESP8266-1 as webserver.
Connected to GPIO2 is a LED which I can switch on and off via web.

When I power off the ESP it will not start correct as long as the LED is connected. :roll:
When I restart without the LED connected to GPIO2 and connect the LED after power is restored than it works ok. :)
User avatar
By henkoegema
#63288
schufti wrote:let me guess !! .... you connected the led between gpio2 and gnd !!

You guessed correct.
schufti wrote:connect it between Vcc and gpio2 and .... experience another miracle !!

I'm going to try.
But what could be the reason that the way I did it is not working? (b.t.w. On the ESP8266-12E I don't have this problem.)
schufti wrote:(don't forget the resistor and to invert your logic)

:)
User avatar
By henkoegema
#63295
schufti wrote:......................................
.....................................
(don't forget the resistor and to invert your logic)

I have reversed the LED. ( GPIO2 -> resistor -> LED -> VCC)
Changed pinMode(2, OUTPUT) to pinmode(2, INPUT)

But after that I'm not sure what to do. :?:


    /*
    * This sketch demonstrates how to set up a simple HTTP-like server.
    * The server will set a GPIO pin depending on the request
    * http://server_ip/gpio/0 will set the GPIO2 low,
    * http://server_ip/gpio/1 will set the GPIO2 high
    * server_ip is the IP address of the ESP8266 module, will be
    * printed to Serial when the module is connected.
    */

    #include <ESP8266WiFi.h>

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

    // Create an instance of the server
    // specify the port to listen on as an argument
    WiFiServer server(80);

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


    // prepare GPIO2
    // pinMode(2, OUTPUT); <---Commented out by me !!
    // digitalWrite(2, 0); <---Commented out by me !!

    // prepare GPIO2
    pinMode(2, INPUT); <----Changed this value from OUTPUT to INPUT

    // 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.println(WiFi.localIP());

    }

    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 req = client.readStringUntil('\r');
    Serial.println(req);
    client.flush();

    // Match the request
    int val;
    if (req.indexOf("/gpio/0") != -1)
    val = 0;
    else if (req.indexOf("/gpio/1") != -1)
    val = 1;
    else {
    //Serial.println("invalid request");
    client.stop();
    return;
    }

    // Set GPIO2 according to the request
    digitalWrite(2,0 ); <----- How to handle this here ?

    client.flush();

    // Prepare the response
    //String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nGPIO is now ";
    //s += (val)?"high":"low";
    //s += "</html>\n";

    // Send the response to the client
    //client.print(s);
    delay(1);
    //Serial.println("Client disonnected");

    // The client will actually be disconnected
    // when the function returns and 'client' object is detroyed
    }