ESP8266 и HTTP сервер

Тема в разделе "Arduino & Shields", создана пользователем raccoon, 26 апр 2017.

  1. raccoon

    raccoon Guest

    Доброго времени суток! Господа, столкнулся с такой проблемой. Есть ESP8266. Я сделал датчик протечки, выводы которого подключаются к ESP8266 следующим образом: 1) GND -> GND; 2) +5V -> VCC; 3) Data -> GPIO5. По распиновке я выяснил, что GPIO5 является D1. Задача следующая. Поднять на ESP8266 HTTP сервер, на который будет отправляться показания с датчика. Датчик выдает след. значения - если +5В и Data замыкаются - логическая 1, иначе 0. ESP должна подключаться к роутеру. Пользователь заходит на веб сервер по IP адресу, который выдает ему роутер и на пустой странице должны выводится показания датчика. Программирую сей девайс в Arduino IDE. Собственно, есп цепляется к сети, но вот на веб сервере ничего не выводится. Скеч прикладываю. Прошу помочь разобраться в данной проблеме. Спасибо
    Код (C++):
    /*
      WiFi Web Server

    A simple web server that shows the value of the analog input pins.
    using a WiFi shield.

    This example is written for a network using WPA encryption. For
    WEP or WPA, change the Wifi.begin() call accordingly.

    Circuit:
    * WiFi shield attached
    * Analog inputs attached to pins A0 through A5 (optional)

    created 13 July 2010
    by dlf (Metodo2 srl)
    modified 31 May 2012
    by Tom Igoe

    */


    #include <Arduino.h>
    #include <ESP8266WiFi.h>

    char ssid[] = "SSID";      // your network SSID (name)
    char pass[] = "Passwd";   // your network password
    int keyIndex = 0;                 // your network key Index number (needed only for WEP)

    int status = WL_IDLE_STATUS;

    int data = 1;

    WiFiServer server(80);

    void setup() {
      //Initialize serial and wait for port to open:
      Serial.begin(9600);
      while (!Serial) {
        ; // wait for serial port to connect. Needed for native USB port only
      }

      // check for the presence of the shield:
      if (WiFi.status() == WL_NO_SHIELD) {
        Serial.println("WiFi shield not present");
        // don't continue:
        while (true);
      }

      String fv = WiFi.firmwareVersion();
      if (fv != "1.1.0") {
        Serial.println("Please upgrade the firmware");
      }

      // attempt to connect to Wifi network:
      while (status != WL_CONNECTED) {
        Serial.print("Attempting to connect to SSID: ");
        Serial.println(ssid);
        // Connect to WPA/WPA2 network. Change this line if using open or WEP network:
        status = WiFi.begin(ssid, pass);

        // wait 10 seconds for connection:
        delay(10000);
      }
      server.begin();
      // you're connected now, so print out the status:
      printWifiStatus();
      pinMode(data,OUTPUT);
    }


    void loop() {
      // listen for incoming clients
      WiFiClient client = server.available();
      if (client) {
        Serial.println("new client");
        // an http request ends with a blank line
        boolean currentLineIsBlank = true;
        while (client.connected()) {
          if (client.available()) {
            char c = client.read();
            Serial.write(c);
            // if you've gotten to the end of the line (received a newline
            // character) and the line is blank, the http request has ended,
            // so you can send a reply
            if (c == '\n' && currentLineIsBlank) {
              // send a standard http response header
              client.println("HTTP/1.1 200 OK");
              client.println("Content-Type: text/html");
              client.println("Connection: close");  // the connection will be closed after completion of the response
              client.println("Refresh: 5");  // refresh the page automatically every 5 sec
              client.println();
              client.println("<!DOCTYPE HTML>");
              client.println("<html>");
              // output the value of each analog input pin
              for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
                int sensorReading = analogRead(analogChannel);
                client.print("analog input ");
                client.print(analogChannel);
                client.print(" is ");
                client.print(sensorReading);
                client.print("Value: ");
                client.print(data);
                client.println("<br />");
              }
              client.println("</html>");
              break;
            }
            if (c == '\n') {
              // you're starting a new line
              currentLineIsBlank = true;
            } else if (c != '\r') {
              // you've gotten a character on the current line
              currentLineIsBlank = false;
            }
          }
        }
        // give the web browser time to receive the data
        delay(1);

        // close the connection:
        client.stop();
        Serial.println("client disonnected");
      }
    }


    void printWifiStatus() {
      // print the SSID of the network you're attached to:
      Serial.print("SSID: ");
      Serial.println(WiFi.SSID());

      // print your WiFi shield's IP address:
      IPAddress ip = WiFi.localIP();
      Serial.print("IP Address: ");
      Serial.println(ip);

      // print the received signal strength:
      long rssi = WiFi.RSSI();
      Serial.print("signal strength (RSSI):");
      Serial.print(rssi);
      Serial.println(" dBm");
    }
     
     

    Вложения:

  2. dmitron1036

    dmitron1036 Гик

    выводите в последовательный порт всё что происходит на борту. отследите путь коим идёт программа. и будет вам счастье.