hbolanos2001
Published © CERN-OHL

Matchbox LEDs with ESP8266 IoT

One IoT device controlled by wifi inside a Matchbox -Battery included!

IntermediateShowcase (no instructions)1,015
Matchbox LEDs with ESP8266 IoT

Things used in this project

Hardware components

LED (generic)
LED (generic)
×2
ESP8266 ESP-01
Espressif ESP8266 ESP-01
×1
Coin Cell Battery CR2032
Coin Cell Battery CR2032
The battery that fix perfect and run the mA requested by the esp8266 module is LIR2450 - 3.7 V -
×1

Software apps and online services

Android matchbox
MATCHBOX - ESP8266

Hand tools and fabrication machines

Soldering iron (generic)
Soldering iron (generic)

Story

Read more

Schematics

SCHEMATIC

ESP8266 PINS CONNECTED TO POWER SOURCE AND LEDS- (GREEN LED TO GPIO0 - RED LED TO GPIO2)

Code

MATCHBOX -ESP8266

Arduino
This code runs in the esp8266 you do not need and arduino module. You need to upload directly using a serial port to the ESP8266, selecting the esp8266 module library of the Arduino IDE.Remember that you need GPIO0 pin connected to ground to upload the code to the esp8266 Module
/*
 *  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/gpio1/0 will set the GPIO0 low,
 *    http://server_ip/gpio1/1 will set the GPIO0 high
 *    http://server_ip/gpi2/0 will set the GPIO2 low,
 *    http://server_ip/gpi2/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.
 */

// Updated: august 2-2017 - to be used with APP Inventor 2
// Developed by: Hernando Bolaños

#include <ESP8266WiFi.h>
const char* ssid = "FAMILIA BM ";
const char* password = "99091300";

// 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 - OK
  pinMode(2, OUTPUT);
  digitalWrite(2, 0);

  // prepare GPIO0 -OK 
  pinMode(0, OUTPUT);
  digitalWrite(0, 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 val1;
 int val2;
 if (req.indexOf("/gpio1/0") != -1)
    {val1 = 0;
    digitalWrite(0, val1); // Set GPIO2 according to the request
  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 MatchBox Prototype APP - LED GREEN on GPIO0 is now ";
  s += (val1)?"high":"low";
  s += "-MacthBox Device working Good!!\n";
  
 
  // Send the response to the client
  client.print(s);
  delay(1);
  
  Serial.println("Client disconnected");

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

    
    }
 if (req.indexOf("/gpio1/1") != -1)
    {val1 = 1;
    digitalWrite(0, val1); // Set GPIO2 according to the request
    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\n MatchBox Prototype APP - LED GREEN on GPIO0 is now ";
  s += (val1)?"high":"low";
  s += "-MacthBox Device working Good!!\n";
  
 
  // Send the response to the client
  client.print(s);
  delay(100);
  
  Serial.println("Client disconnected");

  // The client will actually be disconnected 
  // when the function returns and 'client' object is detroyed
    
   }
 if (req.indexOf("/gpio2/0") != -1)
   {val2 = 0;
   digitalWrite(2, val2); // Set GPIO2 according to the request
    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\n MatchBox Prototype APP - LED RED on GPIO2 is now ";
  s += (val2)?"high":"low";
  s += "-MacthBox Device working Good!!\n";
  
 
  // Send the response to the client
  client.print(s);
  delay(100);
  
  Serial.println("Client disconnected");

  // The client will actually be disconnected 
  // when the function returns and 'client' object is detroyed
  }
 if (req.indexOf("/gpio2/1") != -1)
   {val2 = 1;

digitalWrite(2, val2); // Set GPIO2 according to the request
    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\n MatchBox Prototype APP - LED RED on GPIO2 is now ";
  s += (val2)?"high":"low";
  s += "-MacthBox Device working Good\n";
  
 
  // Send the response to the client
  client.print(s);
  delay(100);
  
  Serial.println("Client disconnected");

  // The client will actually be disconnected 
  // when the function returns and 'client' object is detroyed}
   
   }
  else {
    Serial.println("invalid request");
    client.stop();
    return;
    
  }
}
  
 

Credits

hbolanos2001

hbolanos2001

11 projects • 32 followers
Thanks to el profe Garcia, andres spiess, and the team Suportfronwheel sae-ea.

Comments