NodeMCU en español
NodeMCU - Juan Antonio Villalpando
-- Tutorial de NodeMCU en español --
Volver al índice del tutorial NodeMCU
____________________________
76.- Convertidor Analógico Digital. Potenciómetro. Ver en una LCD. Enviar por WiFi del ModeMCU. LDR.
- Movemos un potenciómetro conectado a la entrada del convertidor Analógico Digital (ADC) A0 y obtenemos 1024 valores.
- Esos valores se presentarán en la pantalla LCD.
- Además se enviarán por WiFi para que se vea en una página web.
- La página no se refresca automáticamente, si queremos volver a ver un nuevo valor debemos refrescarla.
- Se puede refrescar por código HTML pero estaría continuamente enviando información por la red y generando tráfico.
___________________________________________________
1.- Conexión con la pantalla LCD.
- Es conveniente tener una pantalla LCD, pero si no la tienes puedes comprobar el funcionamiento en el Serial Monitor.
- Necesitamos un potenciómetro de unos 10K. También sería conveniente una LDR.
- Realizamos la siguiente conexión:
___________________________________________________
2.- Librerías.
- Aquí voy a poner las librerías que he utilizado hasta este momento la de LiquidCrystal, Presión, DHT11, ESP8266WiFi...
Varias_librerias.zip
___________________________________________________
3.- Código simple de convertidor Analógico Digital (ADC).
- NodeMCU tiene dos entradas ADC, pero la más utilizada es la A0.
- El máximo nivel de entrada es de 1 V y puede obtener 1024 valores, ya que tiene una resolución de 10 bits.
- Es decir cada 1 / 1024 = 1 mV sube un peldaño de esos 1024.
- Puede soportar un nivel de sobre-tensión de hasta 6 V.
- Hacemos la conexión con un potenciómetro de unos 10 K como se observa en la imagen superior.
- Consultamos el Serial Monitor.
Nodemcu_ADC.ino
|
// Juan A. Villalpando.
// KIO4.COM
const int Entrada_Analogica = A0;
int lectura_obtenida = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
lectura_obtenida = analogRead(Entrada_Analogica);
Serial.println(lectura_obtenida);
}
|
___________________________________________________
4.- Convertidor Analógico Digital (ADC). Visualización en una pantalla LCD.
- Si no tienes pantalla LCD, lo puedes ver en el Serial Monitor.
- En este ejemplo al mover la resistencia variable, se observa su valor en la pantalla LCD.
Nodemcu_ADC_LCD.ino
|
// Juan A. Villalpando.
// KIO4.COM
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
// LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
const int Entrada_Analogica = A0;
int lectura_obtenida = 0;
void setup() {
Serial.begin(9600);
lcd.begin(16,2); // Columnas y filas de LCD
}
void loop() {
lectura_obtenida = analogRead(Entrada_Analogica);
Serial.println(lectura_obtenida);
lcd.clear(); // Borra pantalla
lcd.setCursor(0,0); // Inicio del cursor
lcd.print("ADC = ");
lcd.print(lectura_obtenida);
delay(100);
}
|
___________________________________________________
5.- Convertidor Analógico Digital (ADC). Visualización en una pantalla LCD y envío de información por el WiFi del NodeMCU.
Nodemcu_ADC_LCD_Wifi.ino
|
// Juan A. Villalpando.
// KIO4.COM
// Conversor Analógico Digital DCA (A0)
// Convierte la tensión en el cursor de una
// resistencia variable en un valor 0...1023
// Se visuliza en LCD y se envía por WiFi.
#include <ESP8266WiFi.h>
const char* ssid = "Tu_nombre_de_red_wifi";
const char* password = "La_clave_de_tu_red_wifi";
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
// LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
const int Entrada_Analogica = A0;
int lectura_obtenida = 0;
WiFiServer server(80);
void setup() {
Serial.begin(115200);
lcd.begin(16,2); // Columnas y filas de LCD
// 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) {
// Convertidor y pantalla LCD.
lectura_obtenida = analogRead(Entrada_Analogica);
Serial.println(lectura_obtenida);
lcd.clear(); // Borra pantalla
lcd.setCursor(0,0); // Inicio del cursor
lcd.print("ADC = ");
lcd.print(lectura_obtenida);
delay(500);
return;
}
// Espera hasta que el cliente envíe datos.
Serial.println("Nuevo cliente.");
while(!client.available()){
delay(1); // Comprueba con otros valores 10, 100...
}
// Convertidor y pantalla LCD.
// Este código está repetido, lo puedes quitar y
// comprobar si te funciona mejor o igual.
lectura_obtenida = analogRead(Entrada_Analogica);
Serial.println(lectura_obtenida);
lcd.clear(); // Borra pantalla
lcd.setCursor(0,0); // Inicio del cursor
lcd.print("ADC = ");
lcd.print(lectura_obtenida);
// 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.print("<h3>Valor del convertidor analógico digital: ");
client.println(lectura_obtenida);
client.println("</h3><br><br>");
client.println("<img src='http://kio4.esy.es/kio42.png'>");
client.println("</font></center></body></html>");
Serial.println("Cliente desconectado.");
}
|
___________________________________________________
6.- Mediante una LDR.
- En vez de poner una resistencia variable puedes poner una LDR y una resistencia fija.
___________________________________________________
7.- ¿Qué es mapear?
- Cambiar los valores extremos de una medida.
- Supongamos que estamos midiendo con una LDR y no da un valor mínimo de 40 y un valor máximo de 780 y nosotros queremos pasar esos valores a los extremos de 0 y 100.
- Para eso utilizamos map:
cambiado = map(valor, 40, 780, 0, 100);
___________________________________________________
8.- Serial Monitor y Serial Plotter.
- Podemos abir el Serial Plotter y mover la resistencia variable, veremos su evolución.
- El Serial Monitor y el Serial Plotter no pueden funcionar al mismo tiempo.
- La información llega al Serial Plotter con los comandos Serial.print.
___________________________________________________
9.- Ver la información en Android con App Inventor.
- Podemos realizar una pequeña aplicación con App Inventor con un componente de VisorWeb y un Reloj con un Intervalo = 2000
- Cada dos segundos el VisorWeb obtiene y visualiza la página suministrada por el Servidor Web de NodeMcu.
________________________________
|