NodeMCU en español
NodeMCU - Juan Antonio Villalpando
-- Tutorial de NodeMCU en español --
Volver al índice del tutorial NodeMCU
____________________________
62E.- NodeMCU server web. App Inventor. Potenciómetro.
- En esta ocación NodeMCU va a enviar un valor que obtendrá según la posición del cursor de un potenciómetro.
- App Inventor enviará estas órdenes:
192.168.1.5/dato=1
- NodeMCU le responderá con el valor del potenciómetro.
___________________________________________________
1.- Código para convertir al NodeMCU en un servidor web (web server) y enviar información a App Inventor (Android). Potenciómetro.
NodeMCU_wifi_web_server_AppInventor_Potenciometro.ino |
// Juan A. Villalpando.
// KIO4.COM
// Recibe y envía información
#include <ESP8266WiFi.h>
const char* ssid = "Tu_nombre_de_red_wifi";
const char* password = "La_clave_de_tu_red_wifi";
WiFiServer server(80);
const int Entrada_Analogica = A0;
int lectura_obtenida = 0;
void setup() {
Serial.begin(115200);
delay(10);
// 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.");
while(!client.available()){
delay(1);
}
/////////////////////////////////////////////////////
// Lee la información enviada por el cliente.
String req = client.readStringUntil('\r');
Serial.println(req);
client.flush();
// Consulta la petición del cliente.
if (req.indexOf("/dato=1") != -1)
{
lectura_obtenida = analogRead(Entrada_Analogica);
Serial.println(lectura_obtenida);
}
delay(10);
//////////////////////////////////////////////
// Página WEB. ////////////////////////////
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println(""); // Comillas importantes.
client.println(lectura_obtenida);
Serial.println("Cliente desconectado.");
}
|
- Una vez que el cliente ha entrado se lee la información de llegada que ha traido la IP, hasta fin de línea: \r
- Cuando llega "/dato=1" realiza una acción.
___________________________________________________
2.- App Inventor.
p62E_nodemecu_potenciometro.aia
____________________
- Diseño.
____________________
- Bloques.
____________________
- Comentarios.
- Al pulsar el Botón, se enviará un mensaje al servidor:
192.168.1.5/dato=1
- NodeMCU detectará que un cliente quiere recibir información, consultará la petición dato=1
- Consultará el valor del potenciómetro y lo enviará mediante lectura_obtenida.
___________________________________________________
- ¿Qué es mapear?
- Cambiar los valores extremos de una medida.
- Supongamos que estamos midiendo con el potenciómetro y no da un valor mínimo de 4 y un valor máximo de 970 y nosotros queremos pasar esos valores a los extremos de 0 y 100.
- Para eso utilizamos map:
cambiado = map(valor, 4, 970, 0, 100);
____________________
- Propuestas.
- Mejora la presentación de la respuesta.
- Crea un cambio de base mediante mapear.
- En vez de un potenciómetro, realiza una aplicación similar con una LDR.
- En vez de un botón, puedes poner un Reloj y que lea automáticamente el valor del potenciómetro cada segundo.
________________________________
|