+ Post New Thread
Results 1 to 3 of 3
  1. #1
    Member level 3
    Points: 624, Level: 5

    Join Date
    Oct 2017
    Posts
    58
    Helped
    1 / 1
    Points
    624
    Level
    5

    Arduino Uno+Esp8266+local Webserver

    Dear all,

    I am looking for sample code that can read Sensor value from DTHsensor and display on local server. There are lot example but config for externally like thingsspeak.

    I wanna try basic sample code example that can read data and display locally

    I am using Esp8266 E01 / ESP8266 E12E / ESP8266 Node MCU unit

    Click image for larger version. 

Name:	LED_SerialOut.jpg 
Views:	5 
Size:	216.9 KB 
ID:	147776

    Click image for larger version. 

Name:	Router_register.jpg 
Views:	4 
Size:	210.0 KB 
ID:	147775

    With below peice of code i could see ip address being registered in router but if i open serial monitor display different ip address, How can i change local IP address.

    Can someone suggest me esp8266 to display Analog sensor value of DTH11 locally with Relay controll & MIT app Inverter application.


    Major problem i found working with arduino uno+ esp8266 example sn=how with library ESP8266wifi.h not found i tried download using github website and get more error on arduino v 1.8.5 IDE.


    Code:
    /*
     WiFiEsp example: WebServerLed
     
     A simple web server that lets you turn on and of an LED via a web page.
     This sketch will print the IP address of your ESP8266 module (once connected)
     to the Serial monitor. From there, you can open that address in a web browser
     to turn on and off the LED on pin 13.
    
     For more details see: http://yaab-arduino.blogspot.com/p/wifiesp.html
    */
    
    #include "WiFiEsp.h"
    
    // Emulate EspSerial on pins 6/7 if not present
    #ifndef HAVE_HWEspSerial
    #include "SoftwareSerial.h"
    SoftwareSerial EspSerial(2, 3); // RX, TX
    #endif
    
    char ssid[] = "esp8266";            // your network SSID (name)
    char pass[] = "Test123456";        // your network password
    int status = WL_IDLE_STATUS;
    
    int ledStatus = LOW;
    
    WiFiEspServer server(80);
    
    // use a ring buffer to increase speed and reduce memory allocation
    RingBuffer buf(8);
    
    void setup()
    {
      pinMode(LED_BUILTIN, OUTPUT);	// initialize digital pin LED_BUILTIN as an output.
      Serial.begin(115200);   // initialize serial for debugging
      EspSerial.begin(115200);    // initialize serial for ESP module
      WiFi.init(&EspSerial);    // initialize ESP module
    
      // check for the presence of the shield
      if (WiFi.status() == WL_NO_SHIELD) {
        Serial.println("WiFi shield not present");
        // don't continue
        while (true);
      }
    
      // attempt to connect to WiFi network
      while (status != WL_CONNECTED) {
        Serial.print("Attempting to connect to WPA SSID: ");
        Serial.println(ssid);
        // Connect to WPA/WPA2 network
        status = WiFi.begin(ssid, pass);
      }
    
      Serial.println("You're connected to the network");
      printWifiStatus();
     
      // start the web server on port 80
      server.begin();
    }
    
    
    void loop()
    {
      WiFiEspClient client = server.available();  // listen for incoming clients
    
      if (client) {                               // if you get a client,
        Serial.println("New client");             // print a message out the serial port
        buf.init();                               // initialize the circular buffer
        while (client.connected()) {              // loop while the client's connected
          if (client.available()) {               // if there's bytes to read from the client,
            char c = client.read();               // read a byte, then
            buf.push(c);                          // push it to the ring buffer
    
            // printing the stream to the serial monitor will slow down
            // the receiving of data from the ESP filling the serial buffer
            //Serial.write(c);
           
            // you got two newline characters in a row
            // that's the end of the HTTP request, so send a response
            if (buf.endsWith("\r\n\r\n")) {
              sendHttpResponse(client);
              break;
            }
    
            // Check to see if the client request was "GET /H" or "GET /L":
            if (buf.endsWith("GET /H")) {
              Serial.println("Turn led ON");
              ledStatus = HIGH;
              digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
            }
            else if (buf.endsWith("GET /L")) {
              Serial.println("Turn led OFF");
              ledStatus = LOW;
              digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
            }
          }
        }
       
        // close the connection
        client.stop();
        Serial.println("Client disconnected");
      }
    }
    
    
    void sendHttpResponse(WiFiEspClient client)
    {
      // HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK)
      // and a content-type so the client knows what's coming, then a blank line:
      client.println("HTTP/1.1 200 OK");
      client.println("Content-type:text/html");
      client.println();
     
      // the content of the HTTP response follows the header:
      client.print("The LED is ");
      client.print(ledStatus);
      client.println("");
      client.println("");
     
      client.println("Click here turn the LED on");
      client.println("Click here turn the LED off");
     
      // The HTTP response ends with another blank line:
      client.println();
    }
    
    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 where to go in the browser
      Serial.println();
      Serial.print("To see this page in action, open a browser to http://");
      Serial.println(ip);
      Serial.println();
    }

    •   AltAdvertisement

        
       

  2. #2
    Member level 3
    Points: 624, Level: 5

    Join Date
    Oct 2017
    Posts
    58
    Helped
    1 / 1
    Points
    624
    Level
    5

    Re: Arduino Uno+Esp8266+local Webserver

    Dear all,

    I finally purchased Nodemcu 12e version . i have tested basic code with this module and updating board manager and library for it.

    Code1: Here i am testing the code where turn on LED and Turn off LED using local web server.This is working very welll need clarification in below parts

    1) weather Local Ip address can be set to device or not ? if yes how it can be done in below code
    2) If multiple client trying to aceess common server then it get hangs,
    for example i have connected 2 mobile device to same router . if mob1 con connected to local ip one at time. of both mobile tryint to access common client it will hang, How can i avoid it

    Code:
    #include "ESP8266WiFi.h"
    
    const char* ssid = "esp8266";
    const char* password = "Test123456";
    
    int ledPin = 13; // GPIO13
    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("");
      client.println("");
    
      client.print("Led pin is now: ");
    
      if(value == HIGH) {
        client.print("On");
      } else {
        client.print("Off");
      }
      client.println("");
      client.println("");
      client.println(""); 
      client.println("");
    
      delay(1);
      Serial.println("Client disonnected");
      Serial.println("");
    
    }

    Code2: For this i am looking for DHT11 library.
    If am trying this library gives out error https://roboindia.com/tutorials/DHT11-NodeMCU-arduino Node MCU not supporting these library

    if i use DHT11 library like in arduino uno it will work. but same library wont supported for Nodemcu.
    Is there any simple coding. It detected and display same server.



    •   AltAdvertisement

        
       

  3. #3
    Super Moderator
    Points: 29,553, Level: 41
    andre_teprom's Avatar
    Join Date
    Nov 2006
    Location
    Brazil
    Posts
    8,823
    Helped
    1114 / 1114
    Points
    29,553
    Level
    41
    Blog Entries
    9

    Re: Arduino Uno+Esp8266+local Webserver

    Quote Originally Posted by ajit_nayak87 View Post
    weather Local Ip address can be set to device or not ? if yes how it can be done in below code
    The ESP8266WiFi.h library allow several configuration settings, and in general this is the code sequence that are usually on the Setup() routine:

    Code:
    WiFi.mode   ( WIFI_AP )                  ;  
    WiFi.begin  ( ssid , password )           ;
    WiFi.config ( net , gateway , subnet )    ;
    The above net variable contains the fixed IP in the wifi network where your system is connected.
    --------------------------------------------------------------------------------------------------
    Part of the world that you live in, You are the part that you're giving ( Renaissance )



--[[ ]]--