|     Inicio    |   |         |  |   FOROS      |  |      |      
   Elastix - VoIP B4A (Basic4Android) App inventor 2 PHP - MySQL
  Estación meteorológica B4J (Basic4Java) ADB Shell - Android Arduino
  AutoIt (Programación) Visual Basic Script (VBS) FireBase (BD autoactualizable) NodeMCU como Arduino
  Teleco - Emisora de A.M. Visual Basic Cosas de Windows Webs interesantes
Translate:
Búsqueda en este sitio:


.

NodeMCU en español
NodeMCU - Juan Antonio Villalpando

-- Tutorial de NodeMCU en español --

Volver al índice del tutorial NodeMCU

____________________________

62B2.- NodeMCU web server. Servidor web. Tarjeta SdCard.

- En el tutorial anterior vimos como suministrar una página HTML.

- Ahora, además de la información contenida en esa página web, la vamos a ampliar con más información, pero esta vez tomaremos esa nueva información de una tarjeta SdCard.

- En el tutorial: 99.- Leer y escribir en tarjeta SdCard, vimos cómo leer y escribir en tarjeta SdCard.

- Realizamos esta conexión:

_______________________________________________________

- Conexiones NodeMcu.

- En el código debes poner la línea correspondiente al NodeMcu:

const int CS = D8; // Para el NodeMcu.
// const int CS = 4; // Para el Arduino y Wemos

- Fíjate que el terminal correspondiente al CS es el D8 en NodeMcu.

- !SD.begin(CS)

 

___________________________________________________
3
.- IP estática.

NodeMCU_wifi_web_server_IPestatica.ino
// Juan A. Villalpando.
// KIO4.COM
// Saldrá una página web con cuatro botones.
// Los botones no hacen ejecutan nada.
#include <ESP8266WiFi.h>
const char* ssid = "Tu_nombre_de_red_wifi";
const char* password = "La_clave_de_tu_red_wifi";
IPAddress ip(192, 168, 1, 222); // IP estática
IPAddress gateway(192, 168, 1, 1); // Puerta de enlace.
IPAddress subnet(255, 255, 255, 0);// Red.

WiFiServer server(80);
 
void setup() {
  Serial.begin(115200);
  delay(10);
 
  // Conecta a la red wifi.
  Serial.println();
  Serial.println();
  Serial.print("Conectando con ");
  Serial.println(ssid);
  
  WiFi.config(ip, gateway, subnet); // Configura IP estática
  WiFi.begin(ssid, password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("Conectado con WiFi.");
 
  // Inicio del Servidor web.
  server.begin();
  Serial.println("Servidor web iniciado.");
 
  // Esta es la IP
  Serial.print("Esta es la IP para conectar: ");
  Serial.print("http://");
  Serial.print(WiFi.localIP());
  Serial.println("/");
}
 
void loop() {
  // Consulta si se ha conectado algún cliente.
  WiFiClient client = server.available();
  if (!client) {
    return;
  }
 
  // Espera hasta que el cliente envíe datos.
  Serial.println("Nuevo cliente.");
  IPAddress  ip_cliente = client.remoteIP();
  Serial.println(ip_cliente);
  while(!client.available()){
    delay(1);
  }
 
  // Página WEB. ///////////////////////////////
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println(""); //  Comillas importantes.
  client.println("<!DOCTYPE HTML>");
  client.println("<html>");
  client.println("<head><meta charset=utf-8></head>");
  client.println("<body><font face='Arial'><center><h1>Servidor web con NodeMCU.</h1>");
  client.println("<h2><font color='#009900'>KIO4.COM - Juan A. Villalpando</font></h2>");
  client.println("<h3>Página web.</h3>");
  client.println("<br><br>");
  client.println("<img src='http://kio4.esy.es/kio42.png'><br>");
  client.println("<button>Juan Antonio </button>");
  client.println("<button>KIO4.COM </button>"); 
  client.println("<button>Buen tiempo. </button>");
  client.println("<a href=\"/mensaje=4\"\"><button>Puerto Real </button></a>"); 
  client.println("</font></center></body></html>");
 
  Serial.println("Cliente desconectado.");
}

___________________________________________________
4
.- Creación de la información extra en la SdCard.

- Vamos al Editor de texto Notepad++ y creamos un archivo llamdo extra.txt con Codificación UTF-8 sin BOM

extra.txt

\<p><font face="Arial">Esto es un ejemplo de página web.</font></p>
<p><font face="Arial"><a href="http://kio4.com">kio.com</a></font></p>

- Lo guardamos en nuestra SdCard y la insertamos en el lector.

___________________________________________________
5
.- Página web con información añadida de la SdCard.

NodeMCU_wifi_web_server_IPestatica_SdCard.ino

// Juan A. Villalpando.
// KIO4.COM
// Saldrá una página web con cuatro botones.
// Los botones no hacen ejecutan nada.
// Texto extra en una SdCard.
#include <ESP8266WiFi.h>
#include <SD.h>
const int CS = D8; // Para el NodeMcu.
// const int CS = 4; // Para el Arduino y Wemos

const char* ssid = "Tu_nombre_de_red_wifi";
const char* password = "La_clave_de_tu_red_wifi";
String textoextra =""; // Texto de la SdCard.

WiFiServer server(80);
 
void setup() {
  Serial.begin(115200);
  delay(10);
  ////////////////////////////////
  Serial.println("");
  Serial.println("Iniciando SdCard...");
  if (!SD.begin(CS)) {
    Serial.println("Error al iniciar.");
    return;
  }
    Serial.println("SdCard iniciada.");

  File miarchivo = SD.open("extra.txt");
  if (miarchivo) {
    while (miarchivo.available()) {
      Serial.write(miarchivo.read());
      textoextra = textoextra + miarchivo.readString();
    }
     miarchivo.close();
  }
  else {
    Serial.println("Error al abrir el archivo.");
  }
  ///////////////////////////////////////////////////////
 
  // Conecta a la red wifi.
  Serial.println();
  Serial.print("Conectando con ");
  Serial.println(ssid);
 
  WiFi.begin(ssid, password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("Conectado con WiFi.");
 
  // Inicio del Servidor web.
  server.begin();
  Serial.println("Servidor web iniciado.");
 
  // Esta es la IP
  Serial.print("Esta es la IP para conectar: ");
  Serial.print("http://");
  Serial.print(WiFi.localIP());
  Serial.println("/");
}
 
void loop() {
  // Consulta si se ha conectado algún cliente.
  WiFiClient client = server.available();
  if (!client) {
    return;
  }
 
  // Espera hasta que el cliente envíe datos.
  Serial.println("Nuevo cliente.");
  IPAddress  ip_cliente = client.remoteIP();
  Serial.println(ip_cliente);
  while(!client.available()){
    delay(1);
  }
 
  // Página WEB. ///////////////////////////////
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println(""); //  Comillas importantes.
  client.println("<!DOCTYPE HTML>");
  client.println("<html>");
  client.println("<head><meta charset=utf-8></head>");
  client.println("<body><font face='Arial'><center><h1>Servidor web con NodeMCU.</h1>");
  client.println("<h2><font color='#009900'>KIO4.COM - Juan A. Villalpando</font></h2>");
  client.println("<h3>Página web.</h3>");
  client.println("<br><br>");
  client.println("<img src='http://kio4.esy.es/kio42.png'><br>");
  client.println("<button>Juan Antonio </button>");
  client.println("<button>KIO4.COM </button>"); 
  client.println("<button>Buen tiempo. </button>");
  client.println("<a href=\"/mensaje=4\"\"><button>Puerto Real </button></a>"); 
  
  client.println(textoextra); // Texto de la SdCard.

  client.println("</font></center></body></html>");

  Serial.println("Cliente desconectado.");
}

___________________________________________________
6
.- Comentarios.

- En la SdCard tenemos un archivo llamado extra.txt con este texto, por ejemplo:

\<p><font face="Arial">Esto es un ejemplo de página web.</font></p>

<p><font face="Arial"><a href="http://kio4.com">kio.com</a></font></p>

- En el código observamos línas referente a la lectura de la SdCard.

- El código lee el archivo extra.txt de la SdCard.

- Toda la lectura del archivo la guarda en una variable llamada: textoextra

- Mediante la orden client.println() va escribiendo línea a línea del código web.

- En la antepenúltima línea añade el contenido de la variable textoextra

client.println(textoextra);

___________________________________________________
7
.- Todo el contenido de la página HTML está en la SdCard.

- Ahora vamos a poner todo el contenido HTML en la SdCard.

- Desde nuestro ordenador, copiamos en nuestra SdCard el siguiente código en un archivo llamado index.htm

- Fíjate en los detalles, comienza por \

- Utiliza comilla simple '

index.htm

\<!DOCTYPE HTML>
<html>
<head><meta charset=utf-8></head>
<body><font face='Arial'><center><h1>Servidor web con NodeMCU.</h1>
<h2><font color='#009900'>KIO4.COM - Juan A. Villalpando</font></h2>
<h3>Página web.</h3>
<br><br>
<img src='http://kio4.esy.es/kio42.png'><br>
<button>Juan Antonio </button>
<button>KIO4.COM </button>
<button>Buen tiempo. </button>
<a href='/mensaje=4'><button>Puerto Real </button></a>
<p><font face='Arial'>Esto es un ejemplo de página web.</font></p>
<p><font face='Arial'><a href='http://kio4.com'>kio4.com</a></p>
</font></center></body></html>			

- Cargamos este código en el NodeMcu:

toda_la_pagina_sdcard.ino

// Juan A. Villalpando.
// KIO4.COM
// Saldrá una página web con cuatro botones.
// Los botones no hacen ejecutan nada.
#include <ESP8266WiFi.h>
#include <SD.h>
const int CS = D8; // Para el NodeMcu.
// const int CS = 4; // Para el Arduino y Wemos

const char* ssid = "Tu_nombre_de_red_wifi";
const char* password = "La_clave_de_tu_red_wifi";
String paginaweb =""; // Texto de la SdCard.

WiFiServer server(80);
 
void setup() {
  Serial.begin(115200);
  delay(10);
  ////////////////////////////////
  Serial.println("");
  Serial.println("Iniciando SdCard...");
  if (!SD.begin(CS)) {
    Serial.println("Error al iniciar.");
    return;
  }
    Serial.println("SdCard iniciada.");

  File miarchivo = SD.open("index.htm");
  if (miarchivo) {
    while (miarchivo.available()) {
      Serial.write(miarchivo.read());
      paginaweb = paginaweb + miarchivo.readString();
    }
     miarchivo.close();
  }
  else {
    Serial.println("Error al abrir el archivo.");
  }
  ///////////////////////////////////////////////////////
 
  // Conecta a la red wifi.
  Serial.println();
  Serial.println();
  Serial.print("Conectando con ");
  Serial.println(ssid);
 
  WiFi.begin(ssid, password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("Conectado con WiFi.");
 
  // Inicio del Servidor web.
  server.begin();
  Serial.println("Servidor web iniciado.");
 
  // Esta es la IP
  Serial.print("Esta es la IP para conectar: ");
  Serial.print("http://");
  Serial.print(WiFi.localIP());
  Serial.println("/");
}
 
void loop() {
  // Consulta si se ha conectado algún cliente.
  WiFiClient client = server.available();
  if (!client) {
    return;
  }
 
  // Espera hasta que el cliente envíe datos.
  Serial.println("Nuevo cliente.");
  IPAddress  ip_cliente = client.remoteIP();
  Serial.println(ip_cliente);
  while(!client.available()){
    delay(1);
  }
 
  // Página WEB. ///////////////////////////////
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println(""); //  Comillas importantes.
  
  client.println(paginaweb); // Texto de la SdCard.

  Serial.println("Cliente desconectado.");
}

___________________________________________________
8
.- Comentarios.

- Observa que al principio lee todo el archivo index.htm que se encuentra en la SdCard.

- Lo guarda en la variable paginaweb.

- Luego, mediante client.println(paginaweb); muestra todo el contenido.

___________________________________________________
9
.- El NodeMcu tiene memoria interna.

- En vez de guardar el archivo completo de la página web index.htm en la SdCard externa, podemos guardarlo en el mismo NodeMcu.

- NodeMcu contiene una memoria interna de 1 MB, que podemos utilizar para almacenar archivos.

- Podemos tomar el contenido del archivo index.htm y guardarlo como archivo en el NodeMcu.

- Esto lo vemos al final del tutorial 99.- Leer y escribir en tarjeta SdCard.

___________________________________________________
10
.- Consulta de conexiones de clientes.

- Mediante el Monitor Serie podemos ver los clientes que se conectan.

- Cuando se ha servido la página completa a un cliente debe salir el mensaje "Cliente desconectado".

- Si un cliente conecta y se mantiene el mensaje de "Nuevo cliente", probablemente ha caído nuestro servidor web.

________________________________

 

- Mi correo:
juana1991@yahoo.com
- KIO4.COM - Política de cookies. Textos e imágenes propiedad del autor:
© Juan A. Villalpando
No se permite la copia de información ni imágenes.
Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación y realizan análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. Acepto    Más información