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
Espressif 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

Photo on 7 5 17 at 5 06 pm 7 05huowsyxv
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

AWS IoT Environment for Home Assistant
Intermediate
  • 903
  • 8

Work in progress

Home Assistant is an automation platform that can track and control all kinds of devices and automate actions, which fits well with AWS IoT.

Home Automation Using IoT
Intermediate
  • 117
  • 2

Work in progress

Connecting home appliances to the internet and controlling them from anywhere in the world.

Doorbell (Working Captive Portal Use Case)
Intermediate
  • 50
  • 0

Wi-Fi Example of dynamical switching between SoftAp & STA: makes a wireless Arduino device configurable via a web page (SoftAP mode).

Autonomous Plant (ESP8266 - Arduino)
Intermediate
  • 538
  • 4

Full instructions

Want to build system that takes care of a plant? Here's my first attempt. Using ESP8266, soil moisture and Sonoff grow light

ESP8266: Sending Data to an Online Deskboard
Intermediate
  • 163
  • 0

Protip

Easiest, cheapest and cleanest way to send small chunks of data. Wemos uploads data to Dweet.io and it is visualized via Freeboard.io.

Add Email Notifications to Any Robotic Vacuum Cleaning Robot
Intermediate
  • 56
  • 0

Full instructions

Dear friends, welcome to another tutorial! This is Nick and today we are going modify this Roomba robotic vacuum cleaner.

ProjectsCommunitiesTopicsContestsLiveAppsBetaFree StoreBlogAdd projectSign up / Login