Things used in this project

Hardware components:
FTDI cable
*IMPORTANT*: 3v3 cable!! If yours is 5V, you'll need to regulate power to the VCC and RX pins.
×1
Proto board and jumper wires
I'm using a Pinoccio proto board, because it's teeny-tiny!
×1
Tactile switch
a.k.a. a button
×2
Esp01
Everything ESP ESP8266 ESP-01
Bought on eBay.
×1

Schematics

Conceptual diagram
I will upload a Fritzing once I am better with that tool! In the meantime, check out the above pictures and description for how to connect everything.
Schematic
esp-jig.png
• Connections are shown on the top of the board. However, they'll be soldered on the bottom, meaning that it'll look "backwards" from this diagram. Don't get confused!
• Also, the wire connections wouldn't line up well with the FTDI header part. Look at the ground wire for reference: each FTDI wire connects to the pin to its right.
• Finally, although the diagram shows two separate boards, the wires are actually stacked on top of each other. It's just easier to show this way.
Esp jig

Code

esp_webserver_BW.inoPlain text
The example code – connects to a WiFi network with no password.
/*
 *  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 = "Brainwash";
const char* password = "";

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

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

  // prepare GPIO2
  pinMode(2, OUTPUT);
  digitalWrite(2, 0);
  
  // 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, val);
  
  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
}

Credits

Tmp image 0?auto=compress%2cformat&w=60&h=60&fit=min
Alex Glow

The Hackster team's resident Hardware Nerd. I like robots, music, EEG, wearables, and languages. FIRST Robotics kid.

Contact
Thanks to Jono Spiro.

Replications

Love this project? Think it could be improved? Tell us what you think!

Give feedback

Comments

Similar projects you might like

Smart Garden
Intermediate
  • 1,992
  • 17

Smart Garden is a plant environmental monitoring system.

ESP8266 friend detector
Intermediate
  • 622
  • 8

Full instructions

Using a ESP8266 to detect when a friend is near.

WiFi Messenger
Intermediate
  • 1,195
  • 13

Protip

Calling my son from his room using 2 ESP8266 modules, instead of shouting.

IoT Thermometer Using Python
Intermediate
  • 855
  • 8

Full instructions

How to develop a simple but powerful IoT thermometer using a Zerynth-powered single-board MCU and the Zerynth App.

WiDC: Wi-Fi-Controlled FPV Robot
Intermediate
  • 6,024
  • 39

Full instructions

What about using a Wi-Fi remote-controlled robot for exploring your surroundings, reaching inaccessible places, spying and take pictures?

Counting Pulses with Maxim DS1682
Intermediate
  • 83
  • 2

Protip

This project is interfacing the Energy Monitoring system with a pulse counter.

ProjectsCommunitiesTopicsContestsLiveAppsBetaFree StoreBlogAdd projectSign up / Login
Feedback