Punto de acceso (AP) ESP8266 NodeMCU para servidores web

Si estás buscando una solución económica y eficiente para crear un punto de acceso (AP) para tus servidores web, el ESP8266 NodeMCU es la respuesta que necesitas. Con su potente capacidad y su facilidad de programación, este dispositivo se ha convertido en la elección favorita de muchos desarrolladores. En este artículo, te guiaremos a través de los pasos necesarios para configurar tu ESP8266 NodeMCU como un punto de acceso para tus servidores web. ¡Descubre todo lo que necesitas saber para darle vida a tu proyecto de forma sencilla y efectiva!

En este tutorial, aprenderá cómo configurar su ESP8266 NodeMCU como punto de acceso (AP) utilizando el IDE de Arduino. Esto le permite conectarse a su ESP8266 directamente a través de WiFi sin un enrutador WiFi.

Punto de acceso (AP) ESP8266 NodeMCU para servidores web

Para configurar el ESP8266 como punto de acceso, utilice WiFi.softAP(ssid, contraseña);

Estación ESP8266 y punto de acceso

En la mayoría de nuestros proyectos de servidor web ESP8266 NodeMCU, conectamos el ESP8266 a un enrutador WiFi. En esta configuración podemos acceder al ESP8266 a través de la red local.

En este escenario, el enrutador actúa como punto de acceso y el ESP8266 está configurado como estación. Por lo tanto, debe estar conectado a su enrutador (red local) para controlar el ESP8266.

Punto de acceso (AP) ESP8266 NodeMCU para servidores web

En algunos casos, esta puede no ser la mejor configuración (si no tienes un enrutador cerca). Sin embargo, si configura el ESP8266 como punto de acceso (punto de acceso), puede conectarse al ESP8266 utilizando cualquier dispositivo con capacidad Wi-Fi sin tener que conectarse a su enrutador.

En pocas palabras, cuando configura el ESP8266 como punto de acceso, crea su propia red WiFi y los dispositivos (estaciones) WiFi cercanos pueden conectarse a ella (como su teléfono inteligente o su computadora).

Punto de acceso (AP) ESP8266 NodeMCU para servidores web

En este tutorial le mostraremos cómo configurar el ESP8266 como punto de acceso en sus proyectos de servidor web. De esta manera no necesita estar conectado a un enrutador para controlar su ESP8266.

Debido a que el ESP8266 ya no se conecta a una red cableada (como su enrutador), se le llama Soft AP (Punto de acceso suave).

Esto significa que intentar cargar bibliotecas o utilizar firmware desde Internet no funcionará. Tampoco funcionará si intenta realizar solicitudes HTTP a servicios en Internet, como por ejemplo: B. publicar valores de sensores en la nube.

Instalación de la biblioteca DHT para ESP8266

Para este ejemplo, usaremos un proyecto de servidor web anterior que muestra los valores de un sensor DHT.

Después de instalar la placa ESP8266 en Arduino IDE, para leer el sensor DHT utilizamos el Biblioteca DHT de Adafruit. Para utilizar esta biblioteca también debes tener la Biblioteca de sensores unificada de Adafruit.

Siga los siguientes pasos para instalar estas dos bibliotecas:

1. Abra su IDE de Arduino y vaya a Bosquejo > incluir biblioteca > Administrar bibliotecas. El administrador de la biblioteca debería abrirse.

2. Busque «DHTen el cuadro de búsqueda e instale la biblioteca DHT de Adafruit.

Punto de acceso (AP) ESP8266 NodeMCU para servidores web

3. Después de instalar la biblioteca Adafruit DHT, escriba «Sensor unificado de Adafruit”en el campo de búsqueda. Desplácese hacia abajo para buscar e instalar la biblioteca.

Punto de acceso (AP) ESP8266 NodeMCU para servidores web

Después de instalar las bibliotecas, reinicie su IDE de Arduino.

Punto de acceso (AP) ESP8266 NodeMCU

En este ejemplo, modificamos el servidor web ESP8266 de un tutorial anterior para agregar funcionalidad de punto de acceso. Aquí está el ejemplo del proyecto que usaremos: ESP8266 DHT11/DHT22 Servidor web de temperatura y humedad con Arduino IDE.

Lo que le mostramos aquí se puede utilizar con cualquier ejemplo de servidor web ESP8266.

Cargue el boceto que se proporciona a continuación para configurar el ESP8266 como punto de acceso.

/*********
  Rui Santos
  Complete project details at https://randomnerdtutorials.com/esp8266-nodemcu-access-point-ap-web-server/
  
  Permission is hereby granted, free of charge, to any person obtaining a copy
  of this software and associated documentation files.
  The above copyright notice and this permission notice shall be included in all
  copies or substantial portions of the Software.
*********/

// Import required libraries
#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <Hash.h>
#include <ESPAsyncTCP.h>
#include <ESPAsyncWebServer.h>
#include <Adafruit_Sensor.h>
#include <DHT.h>

const char* ssid     = "ESP8266-Access-Point";
const char* password = "123456789";

#define DHTPIN 5     // Digital pin connected to the DHT sensor

// Uncomment the type of sensor in use:
//#define DHTTYPE    DHT11     // DHT 11
#define DHTTYPE    DHT22     // DHT 22 (AM2302)
//#define DHTTYPE    DHT21     // DHT 21 (AM2301)

DHT dht(DHTPIN, DHTTYPE);

// current temperature & humidity, updated in loop()
float t = 0.0;
float h = 0.0;

// Create AsyncWebServer object on port 80
AsyncWebServer server(80);

// Generally, you should use "unsigned long" for variables that hold time
// The value will quickly become too large for an int to store
unsigned long previousMillis = 0;    // will store last time DHT was updated

// Updates DHT readings every 10 seconds
const long interval = 10000;  

const char index_html[] PROGMEM = R"rawliteral(
<!DOCTYPE HTML><html>
<head>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <style>
    html {
     font-family: Arial;
     display: inline-block;
     margin: 0px auto;
     text-align: center;
    }
    h2 { font-size: 3.0rem; }
    p { font-size: 3.0rem; }
    .units { font-size: 1.2rem; }
    .dht-labels{
      font-size: 1.5rem;
      vertical-align:middle;
      padding-bottom: 15px;
    }
  </style>
</head>
<body>
  <h2>ESP8266 DHT Server</h2>
  <p>
    <span class="dht-labels">Temperature</span> 
    <span id="temperature">%TEMPERATURE%</span>
    <sup class="units">&deg;C</sup>
  </p>
  <p>
    <span class="dht-labels">Humidity</span>
    <span id="humidity">%HUMIDITY%</span>
    <sup class="units">%</sup>
  </p>
</body>
<script>
setInterval(function ( ) {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      document.getElementById("temperature").innerHTML = this.responseText;
    }
  };
  xhttp.open("GET", "/temperature", true);
  xhttp.send();
}, 10000 ) ;

setInterval(function ( ) {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      document.getElementById("humidity").innerHTML = this.responseText;
    }
  };
  xhttp.open("GET", "/humidity", true);
  xhttp.send();
}, 10000 ) ;
</script>
</html>)rawliteral";

// Replaces placeholder with DHT values
String processor(const String& var){
  //Serial.println(var);
  if(var == "TEMPERATURE"){
    return String
  }
  else if(var == "HUMIDITY"){
    return String(h);
  }
  return String();
}

void setup(){
  // Serial port for debugging purposes
  Serial.begin(115200);
  dht.begin();
  
  Serial.print("Setting AP (Access Point)…");
  // Remove the password parameter, if you want the AP (Access Point) to be open
  WiFi.softAP(ssid, password);

  IPAddress IP = WiFi.softAPIP();
  Serial.print("AP IP address: ");
  Serial.println(IP);

  // Print ESP8266 Local IP Address
  Serial.println(WiFi.localIP());

  // Route for root / web page
  server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/html", index_html, processor);
  });
  server.on("/temperature", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/plain", String
  });
  server.on("/humidity", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/plain", String(h).c_str());
  });

  // Start server
  server.begin();
}
 
void loop(){  
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= interval) {
    // save the last time you updated the DHT values
    previousMillis = currentMillis;
    // Read temperature as Celsius (the default)
    float newT = dht.readTemperature();
    // Read temperature as Fahrenheit (isFahrenheit = true)
    //float newT = dht.readTemperature(true);
    // if temperature read failed, don't change t value
    if (isnan(newT)) {
      Serial.println("Failed to read from DHT sensor!");
    }
    else {
      t = newT;
      Serial.println
    }
    // Read Humidity
    float newH = dht.readHumidity();
    // if humidity read failed, don't change h value 
    if (isnan(newH)) {
      Serial.println("Failed to read from DHT sensor!");
    }
    else {
      h = newH;
      Serial.println(h);
    }
  }
}

Ver código sin formato

Personaliza el SSID y la contraseña

Debe definir un nombre SSID y una contraseña para acceder al ESP8266. En este ejemplo configuramos el nombre SSID del ESP8266. Punto de acceso ESP8266pero puedes cambiar el nombre por el que quieras. La contraseña es 123456789Pero también puedes cambiarlo.

const char* ssid     = "ESP8266-Access-Point";
const char* password = "123456789";

Configure el ESP8266 como punto de acceso (AP).

Hay una sección en el configuración() para configurar el ESP8266 como un punto de acceso con el AP suave() Método:

WiFi.softAP(ssid, password);

También hay otros parámetros opcionales que puede especificar AP suave() Método. Aquí están todos los parámetros:

.softAP(const char* ssid, const char* password, int channel, int ssid_hidden, int max_connection)
  • SSID (previamente definido): máximo 31 caracteres
  • contraseña (previamente definido): al menos 8 caracteres. Si no se especifica, el punto de acceso está abierto (63 caracteres máximo)
  • canal: Número de canal WiFi (1-13). El valor predeterminado es 1
  • ssid_hidden: si se establece en verdadero, el SSID se ocultará
  • conexión_maxima: máx. estaciones conectadas simultáneamente, de 0 a 8

A continuación, obtenga la dirección IP del punto de acceso con el APIP suave() método e imprimirlo en el monitor serie.

IPAddress IP = WiFi.softAPIP();
Serial.print("AP IP address: ");
Serial.println(IP);

Nota: Por defecto, la dirección IP del punto de acceso es 192.168.4.1

Estos son los fragmentos de código que debe incluir en los bocetos de su servidor web para configurar el ESP8266 como un punto de acceso suave.

Para saber cómo funciona el código completo del servidor web, lea: ESP8266 NodeMCU DHT11/DHT22 Servidor web de temperatura y humedad con Arduino IDE.

Piezas requeridas

Para continuar con este tutorial necesitarás las siguientes partes:

Puedes utilizar los enlaces anteriores o ir directamente MakerAdvisor.com/tools ¡Para encontrar todas las piezas para tus proyectos al mejor precio!

Punto de acceso (AP) ESP8266 NodeMCU para servidores web

Representación esquemática

Ensamble todas las piezas de acuerdo con el siguiente diagrama esquemático:

Punto de acceso (AP) ESP8266 NodeMCU para servidores web

Conexión al punto de acceso ESP8266

Después de ejecutar el boceto en el ESP8266, abra la configuración de Wi-Fi en su teléfono inteligente y toque Punto de acceso ESP8266 Red:

Punto de acceso (AP) ESP8266 NodeMCU para servidores web

Ingrese la contraseña que estableció anteriormente.

Punto de acceso (AP) ESP8266 NodeMCU para servidores web

Abra su navegador web e ingrese la dirección IP http://192.168.4.1. La página del servidor web debería cargarse:

Punto de acceso (AP) ESP8266 NodeMCU para servidores web

El lado del servidor web es un poco diferente del servidor web original. Este servidor web muestra dos iconos junto a la temperatura y la humedad. Estos íconos se cargan desde el sitio web de Font Awesome. Sin embargo, dado que el ESP8266 actúa como un punto de acceso suave (no está conectado a Internet), no podemos cargar estos símbolos.

Envolver

En este tutorial, aprendió cómo configurar el ESP8266 como un punto de acceso suave. Esto le permite conectarse directamente al servidor web ESP8266 a través de WiFi sin tener que conectarse a un enrutador.

Sin embargo, tenga en cuenta que el ESP8266 no está conectado a Internet. Por lo tanto, no puede enviar solicitudes HTTP a otros servicios para publicar datos de sensores o recuperar datos de Internet (por ejemplo, cargar los iconos).

Usted también puede estar interesado en:

  • Salidas de control del servidor web ESP8266
  • Servidor web ESP8266 con SPIFFS (SPI Flash File System) – NodeMCU
  • Visualiza los valores de tus sensores desde cualquier parte del mundo (ESP32/ESP8266 + MySQL + PHP)
  • Domótica con ESP8266 (curso)

Gracias por leer.

Error 403 The request cannot be completed because you have exceeded your quota. : quotaExceeded

Configuración de Punto de Acceso (AP) ESP8266 NodeMCU para Servidores Web

En este tutorial, aprenderás cómo configurar tu ESP8266 NodeMCU como Punto de Acceso (AP) utilizando Arduino IDE. Esto te permite conectarte directamente a tu ESP8266 a través de Wi-Fi sin necesidad de un enrutador inalámbrico.

¿Cómo configurar el ESP8266 como Punto de Acceso?

Para configurar el ESP8266 como Punto de Acceso utiliza la función WiFi.softAP(ssid, password);

Estación y Punto de Acceso ESP8266

En la mayoría de nuestros proyectos de servidor web ESP8266 NodeMCU, conectamos el ESP8266 a un enrutador inalámbrico. En esta configuración, podemos acceder al ESP8266 a través de la red local.

Sin embargo, en algunos casos, esta configuración puede no ser la mejor opción, especialmente cuando no tienes un enrutador cercano. Al configurar el ESP8266 como Punto de Acceso, puedes conectarte directamente al ESP8266 utilizando cualquier dispositivo con capacidades Wi-Fi sin necesidad de conectarte a tu enrutador.

Instalación de la Biblioteca DHT para ESP8266

Para este ejemplo, utilizaremos un proyecto previo de servidor web que muestra lecturas de sensores de un sensor DHT.

  1. Abre tu Arduino IDE y ve a Sketch > Include Library > Manage Libraries.
  2. Busca «DHT» en el cuadro de búsqueda e instala la biblioteca DHT de Adafruit.
  3. Luego, busca «Adafruit Unified Sensor» en el cuadro de búsqueda y también instálala.

Configuración del ESP8266 como Punto de Acceso (AP)

En este ejemplo, modificaremos el Servidor Web ESP8266 de un tutorial anterior para agregar capacidades de Punto de Acceso. Aquí está el ejemplo de proyecto que utilizaremos: ESP8266 DHT11/DHT22 Temperatura y Humedad Servidor Web con Arduino IDE.

Para definir el nombre SSID y la contraseña para acceder al ESP8266, puedes personalizarlos dentro del código. Por ejemplo:

const char* ssid = "ESP8266-Access-Point";
const char* password = "123456789";

Para establecer el ESP8266 como Punto de Acceso, utilizamos la función WiFi.softAP(ssid, password);

Conectándose al Punto de Acceso ESP8266

Una vez que el ESP8266 está ejecutando el código, en tu smartphone abre la configuración de Wi-Fi y conéctate a la red ESP8266-Access-Point. Luego, introduce la contraseña definida anteriormente.

Abre tu navegador web y escribe la dirección IP http://192.168.4.1. La página del servidor web debería cargarse correctamente.

Conclusión

En este tutorial, has aprendido cómo configurar el ESP8266 como un Punto de Acceso suave, lo que te permite conectarte al servidor web ESP8266 directamente a través de Wi-Fi sin necesidad de un enrutador. Sin embargo, ten en cuenta que el ESP8266 no está conectado a Internet, por lo que no puedes realizar solicitudes HTTP a otros servicios.

5 comentarios en «Punto de acceso (AP) ESP8266 NodeMCU para servidores web»

  1. ¡Este artículo me resolvió muchas dudas que tenía sobre cómo utilizar el ESP8266 NodeMCU como punto de acceso para servidores web! ¡Me siento más preparado para probarlo por mi cuenta ahora! ¡Gracias!

  2. Me alegra haber encontrado este artículo, me ha aclarado muchas dudas sobre cómo configurar un servidor web con el ESP8266 NodeMCU. ¡Ahora me siento más confiado para experimentar por mi cuenta! ¡Gracias por compartir tus conocimientos!

Deja un comentario