Probando el Lolin NodeMCU V3 esp8266

Estoy probando el Lolin NodeMCU V3 esp8266. Este es un pequeño microcontrolador con wifi incorporado. El modelo que estamos probando tiene 1 MB de flash ram más 8k de RAM dinámica. Estos es más que suficiente para muchos propósitos.

Estoy usando Arduino IDE sólo por simplicidad ya que es lo que usé para otros ejemplos. Pero NodeMCU tiene un framework Lua, esto es que se puede subir scripts de Lua al NodeMCU, vincularlos al script init.lua y ejecutarlo. No voy a mostrar el ejemplo de Lua en este post, sino el ejemplo de IDE de Arduino.

El IDE de Arduino se puede personalizar para varios controladores que no son equivalentes o compatibles con el Framework Arduino. Para esto se debe incluir un crosscompiler, algunos scripts y definiciones tienen que ser construidos. Y hay una manera de decir a Arduino IDE que incluya a estos en el IDE.

Para que su Arduino IDE sepa cómo trabajar con Lolin NodeMCU tenemos que incluir el plugin.

Inicie su IDE de Arduino y seleccione File|Preferences. Se abre un formulario y en el TextBox «Additional Boards Manager URLs:» escribimos «http://arduino.esp8266.com/stable/package_esp8266com_index.json« y hacemos click en [OK].

Ahora tenemos que descargar el plugin y las bibliotecas.

Así que hacemos clic en Tools|Board|NodeMCU 1.0 (ESP-12E Module). Esto selecciona nuestro nuevo tablero para trabajar.

Ahora hacemos click en Tools|Board|Board Manager… y buscamos la tarjeta esp8266. La seleccionamos y hacemos click en Install]. Se tarda un tiempo, pero esto instala el plugin y los módulos necesarios.

Ahora podemos enchufar el NodeMCU con un cable micro usb a nuestra computadora. Debiera reconocer un dispositivo de comunicaciones serial. En mi caso se conecta en /dev/ttyUSB0. Tu puedes verificar en tu sistema Linux con el comando: dmesg | grep tty

Asegúrese que está seleccionado Tools|Board|NodeMCU 1.0 (ESP-12E Module). También seleccione Upload Speed a 115200. Y asegúrese que el usuario de la computadora está en el grupo dialup. Para los usuarios de Windows, pueden encontrar indicaciones para esto en cualquier otro lugar de Internet.

Ahora estamos listos para hacer nuestro primer programa.

Vamos a hacer un Servidor Web que enciende o apaga el LED azul de la placa.

Este programa fue modificado del que aparece en Quick-Start-to-Nodemcu-ESP8266-on-Arduino-IDE

Ese ejemplo no usa el LED azul incorporado. Además el LED azul está invertido. Esto es que el nivel bajo del pin lo enciende, mientras que el nivel alto lo apaga.

Tu deberás insertar el nombre de tu red wifi y la clave en las variables ssid y password variables. Esto es necesario para que el NodeMCU se conecte a tu red inalámbrica.

#include
const char* ssid = "your_wifi_name";
const char* password = "your_wifi_password";
int ledPin = 2; // Arduino standard is GPIO13 but lolin nodeMCU is 2 http://www.esp8266.com/viewtopic.php?f=26&t=13410#p61332
WiFiServer server(80);
void setup() {
 Serial.begin(115200);
 delay(10);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, HIGH);
// Connect to WiFi network
Serial.println();
Serial.println();
 Serial.print("Connecting to ");
 Serial.println(ssid);

WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {
 delay(500);
 Serial.print(".");
 }
 Serial.println("");
 Serial.println("WiFi connected");

// Start the server
 server.begin();
 Serial.println("Server started");

// Print the IP address
 Serial.print("Use this URL to connect: ");
 Serial.print("http://");
 Serial.print(WiFi.localIP());
 Serial.println("/");

}

void loop() {
 // Check if a client has connected
 WiFiClient client = server.available();
 if (!client) {
 return;
 }

// Wait until the client sends some data
 Serial.println("new client");
 while(!client.available()){
 delay(1);
 }

// Read the first line of the request
 String request = client.readStringUntil('r');
 Serial.println(request);
 client.flush();

// Match the request
 //Lolin nodeMCU has inverted the LED.
 //Low level turns on the led
 //while High level turns it off

int value = HIGH; //initially off
 if (request.indexOf("/LED=OFF") != -1) {
 digitalWrite(ledPin, HIGH);
 value = HIGH;
 }
 if (request.indexOf("/LED=ON") != -1) {
 digitalWrite(ledPin, LOW);
 value = LOW;
 }

// Set ledPin according to the request
 //digitalWrite(ledPin, value);

// Return the response
 client.println("HTTP/1.1 200 OK");
 client.println("Content-Type: text/html");
 client.println(""); 
 client.println("<!DOCTYPE HTML>");
 client.println("<html>");

client.print("Led pin is now: ");
 //High=off
 //Low=on

if(value == HIGH) {
 client.print("Off");
 } else {
 client.print("On");
 }
 client.println("");
 client.println("<a href=\"/LED=ON\"\"><button>Turn On </button></a>");
 client.println("<a href=\"/LED=OFF\"\"><button>Turn Off </button></a><br />");
 client.println("</html>");

delay(1);
 Serial.println("Client disonnected");
 Serial.println("");
}

Compile y cargue el programa en su NodeMCU. Va a mostrar una secuencia de puntos y un porcentaje hasta que llegue a [100%]. Entonces el programa estará cargado y corriendo. Active el Tools|Serial Monitor. Asegúrese que está configurado a 115200 baudios. Va a responder algo como esto:

load 0x4010f000, len 1384, room 16
 tail 8
 chksum 0x2d
 csum 0x2d
 v09f0c112
 ~ld

Connecting to your_wifi_name
 ..
 WiFi connected
 Server started
 Use this URL to connect: http://192.168.1.102/

La dirección 192.168.1.102 (Puede ser diferente en su sistema) es la dirección en la que el Servidor Web está escuchando las solicitudes.

Cuando se conecta a esta dirección, en el navegador se obtiene lo siguiente:

Web Page

El LED inicialmente está apagado. En el Serial Monitor usted puede ver que el navegador se ha conectado al servidor.

new client
 GET / HTTP/1.1
 Client disonnected

new client
 GET /favicon.ico HTTP/1.1
 Client disonnected

Puede ser levemente diferente en su sistema. Cuando se hace click en el botón de [Turn On] se enciende el LED en la tarjeta y el Monitor Serial lee:

new client
 GET /LED=ON HTTP/1.1
 Client disonnected

new client
 GET /favicon.ico HTTP/1.1
 Client disonnected

 

NodeMCU

 

Cuando se hace click en el botón [Turn Off] en el navegador se obtiene un LED apagado y la sigueinte respuesta en el Monitor Serial:

new client
GET /LED=OFF HTTP/1.1
Client disonnected

new client
GET /favicon.ico HTTP/1.1
Client disonnected

Ahora usted tiene un LED controlado mediante http.

&nbsp;

Entradas relacionadas

11 comentarios sobre «Probando el Lolin NodeMCU V3 esp8266»

  1. The only gripe I have of the V3, is the width. It occupies the entire height of a breadboard from the outer 5-pin sockets.. One hack someone suggested, getting a short Minimum 15-pin width (5X15) breadboard, and sawing it right down the center, so the 5-point rails could be placed further apart. (have done so already with an old Radioshack breadboard. 276-0003, and cut it right down the center of the chip area.)
    I’m still trying to figure out LUA on both the -01 & the -12 on the Lolin.. (had been running stock NodeMCU, recently updated to a custom from https://nodemcu-build.com/ (does the build from the V2.1.0 source, allowing you to pick which modules to add, then EMAILS You the Float & Integer firmwares.)

  2. enrique

    Yes. It is similar to several others. Another is cited in the post. But this one you pointed to i sa little more interesting because gets more information on its web site like number of blinks, delay and pin to use… That one is already a modification from another…. https://www.esp8266basic.com/blink-example.html
    Thanks…

  3. enrique

    Sawing the breadboard is a clever idea, but will make it difficult for some other chips. In my case, I’ll adapt them for some geophysical data loggers, so most likely I’ll make a PCB with the adequate connectors in it.
    I did not have time to experiment with LUA yet. But I will.
    I had not tried custom builds from https://nodemcu-build.com/ but I will investigate about it…

    Stephen, Thank you very much for your comments and information.

  4. Martin Bribiesca

    Hola,

    Sabes como configurarlo para que acepte comandos AT, yo lo he flasheado con varios programas y versiones pero nada.

    Saludos

  5. Jack

    Why is my serial monitor printing: HpY>$(⸮⸮D:h⸮⸮⸮B⸮⸮⸮E⸮P⸮⸮
    ⸮⸮̋T-⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮

  6. Most likely your serial communications speed/baudrate is not set properly. Make sure they both coincide to 115200 that is set on the IoThing or change the program to fit your serial monitor speed. See.. «… Serial.begin(115200); …»

  7. erick

    no me contecta a serial, solo aparece una red wifi farylink y no me aparede algo mas

  8. Tenés que explicar mejor cual es el entorno con el que estás trabajando. Verificá la velocidad de transmisión serial.

  9. danilocontini

    Try to change monitor from 57600 baud to 115200 baud

Los comentarios están cerrados.