Resumen de Información Técnica del módulo Wi Fi ESP8266

Características Técnicas del módulo:

  • Voltaje de operación entre 3V y 3,6V (corriente continua).
  • Corriente de operación 80 mA (Con menos corriente tiene problemas para arrancar)
  • Corriente máxima de transmisión, picos de hasta 200mA. (por eso será importante la fuente con la cual se alimente el módulo)
  • Temperatura de operación -40ºC y 125ºC 
Fuente ideal para su alimentación:
Se puede regular con fuente para protoboard de 3,3 V ejemplo fuente marca YWRobot que proporciona voltajes de 3,3v y 5v. En este caso usaremos el de 3,3v.
Esta fuente Aporta 600mA.
Se alimenta con una fuente transformadora entre 6,5v y 9v.





Modos de operación del módulo:

* Access Point (AP): El módulo crea una red Wi Fi de área local (Wireless Local Area Network - WLAN), se lo configura con un nombre de usuario y una contraseña.
* Station (STA): se conectará a un access point.

* Access Point + Station (AP+STA): una combinación de las anteriores.

Con el IDE de Arduino, incluyendo la librería #include "ESP8266WiFi.h"


WiFi.mode(WIFI_AP);


WIFI_AP

WIFI_STA
WIFI_AP_STA
WIFI_OFF

Modo Cliente = Modo Estación



Gestión de energía del módulo:
* Modo activo (Active mode): a pleno rendimiento.
* Modo dormido (Sleep mode): reduce su consumo eléctrico, se queda en modo alerta porque hay eventos que lo despiertan. Consume entre 0,6 mA y 1 mA.
* Modo Sueño profundo (Deep Sleep): estado similar al apagado. Consume alrededor de 20 μA.

Kit fácil:
Si se quiere comprar un kit donde ya venga todo incorporado al módulo puede ser este:
NodeMCU modelo P2 (Amigable para la protoboard)
Se le conecta un cargador de celular y ya funciona, no se necesita fuente para protoboard, ni conversor USB a TTL.

Sobre sus Pines:
ADC es un pin analógico de entrada de 0 a 1V




Poner el módulo en modo AP:
_____________________________________________________________________

#include <ESP8266WiFi.h>

IPAddress local_IP(192,168,4,22);
IPAddress gateway(192,168,4,9);
IPAddress subnet(255,255,255,0);

void setup () {

WiFi.softAPConfig(local_IP, gateway, subnet); 
WiFi.softAP("NombreDeLaRed", "ContraseñaAquí") ? "Ready" : "Failed!";

}

void loop() {

}
_____________________________________________________________________


Poner en modo AP y configurar un servidor web, ejemplo:
_____________________________________________________________________

#include <ESP8266WiFi.h>                  //Incluye la librería ESP8266WiFi

const char ssid[] = "NOMBRE_DE_RED_AQUI";    //Definimos la SSDI de nuestro servidor WiFi -nombre de red- 
const char password[] = "PASSWORD_AQUI";       //Definimos la contraseña de nuestro servidor 
WiFiServer server(80);                    //Definimos el puerto de comunicaciones

int PinLED = 2;                           //Definimos el pin de salida - GPIO2 / D4
int estado = LOW;                         //Definimos la variable que va a recoger el estado del LED

void setup() {
  Serial.begin(115200);

  pinMode(PinLED, OUTPUT);                //Inicializamos el GPIO2 como salida
  digitalWrite(PinLED, LOW);              //Dejamos inicialmente el GPIO2 apagado

  server.begin();                         //inicializamos el servidor
  WiFi.mode(WIFI_AP);
  WiFi.softAP(ssid, password);            //Red con clave, en el canal 1 y visible
}

void loop() {
  // Comprueba si el cliente ha conectado
  WiFiClient client = server.available();  
  if (!client) {
    return;
  }

  // Espera hasta que el cliente envía alguna petición
  while(!client.available()){
    delay(1);
  }

  // Lee la petición
  String peticion = client.readStringUntil('r');
  client.flush();

  // Comprueba la petición
  if (peticion.indexOf('/LED=ON') != -1) {
    estado = HIGH;
  } 
  if (peticion.indexOf('/LED=OFF') != -1){
    estado = LOW;
  }

  //Enciende o apaga el LED en función de la petición
  digitalWrite(PinLED, estado);

  // Envía la página HTML de respuesta al cliente
  client.println("HTTP/1.1 200 OK");
  client.println("");                                     //No olvidar esta línea de separación
  client.println("<!DOCTYPE HTML>");
  client.println("<meta charset='UTF-8'>");
  client.println("<html>");

      //Imprime el estado del led
  client.print("<h1>El LED está ahora: ");                 
  if(estado == HIGH) {
    client.print("ENCENDIDO</h1>");  
  } else {
    client.print("APAGADO</h1>");
  }

      //Se crean enlaces para modificar el estado del LED      
  client.println("Presiona <a href='/LED=ON'>AQUÍ</a> para encender el LED<br>");
  client.println("Presiona <a href='/LED=OFF'>AQUÍ</a> para apagar el LED<br><br>");

      //Se crean cajas de comprobación (checkbox) para modificar el estado del LED
  client.println("<input type='checkbox' onClick=location.href='/LED=ON'> ENCENDER </input><br>");
  client.println("<input type='checkbox' onClick=location.href='/LED=OFF'> APAGAR </input><br><br>");

      //Se crean botones para modificar el estado del LED
  client.println("<button type='button' onClick=location.href='/LED=ON'> ENCENDER </button>");
  client.println("<button type='button' onClick=location.href='/LED=OFF'> APAGAR </button><br><br>");

      //Se crean botones con estilos para modificar el estado del LED
  client.println("<button type='button' onClick=location.href='/LED=ON' style='margin:auto; background-color:green; color:#A9F5A9; padding:5px; border:2px solid black; width:200;'><h2> ENCENDER</h2> </button>");
  client.println("<button type='button' onClick=location.href='/LED=OFF' style='margin:auto; background-color:red; color:#F6D8CE; padding:5px; border:2px solid black; width:200;'><h2> APAGAR</h2> </button><br><br>");

      //Se crea un único botón para modificar el estado del LED
  if(estado == HIGH) {
    client.print("<button type='button' onClick=location.href='/LED=OFF'> APAGAR </button><br><br>");  
  } else {
    client.print("<button type='button' onClick=location.href='/LED=ON'> ENCENDER </button><br><br>");
  }
  client.println("</html>"); 
  delay(1);
  Serial.println("Petición finalizada");          // Se finaliza la petición al cliente. Se inicaliza la espera de una nueva petición.

  //Desconexión de los clientes
  //WiFi.softAPdisconnect();

}
_____________________________________________________________________


Se puede conectar por el navegador mediante 192.168.4.1



Fuente:
https://programarfacil.com/podcast/esp8266-wifi-coste-arduino/
http://www.esploradores.com/access-point-servidor-web-nodemcu/