Primeros pasos con la placa de desarrollo Wi-Fi de NodeMCU | ESP8266

NodeMCU es una popular placa de desarrollo basada en Wi-Fi en proyectos IoT. Sus predecesores son ESP-01, ESP8266-12E. El NodeMCU se basa en la serie ESP866.

Como sugiere el nombre, es una placa de desarrollo, contiene circuitos adicionales para la fuente de alimentación USB, comunicaciones, etc. (Similar a un Arduino Uno construido alrededor de ATMEGA328 IC). Por lo tanto, esta placa tiene reguladores de voltaje incorporados para proporcionar una potencia óptima a ESP8266 IC. Como sabemos, el ESP8266 es un microcontrolador de 3,3 V, necesita un regulador de 3,3 V para suministrar una potencia óptima.

Además, tiene CP2102 USB Driver IC para comunicarse vía USB con PC. Mediante un cable micro USB puedes conectarlo al PC sin necesidad de alimentación adicional (para circuitos de baja potencia). Debe descargar e instalar el controlador manualmente por primera vez.

Características y especificaciones:

  • El kit de desarrollo basado en ESP8266 integra GPIO, PWM, IIC, 1-Wire y ADC, todo en una placa.
  • USB-TTL incluido, Plug & Play
  • 10 GPIO D0-D10, funcionalidad PWM, I2C, SPI, 1-Wire y ADC (A0).
  • Red Wi-Fi (se puede utilizar como punto de acceso, estación y servidor pequeño).
  • Se puede programar con Arduino IDE (consulte Asignación de pines) o Lua Scripts.
  • antena de circuito impreso
  • API avanzada para hardware IO, que puede reducir drásticamente el trabajo redundante para configurar y manipular hardware. Codifique como Arduino, pero de forma interactiva en el script Lua.

Detalles detallados de pines y mapeo GPIO:

Veremos cómo instalar controladores, placas y bibliotecas Wi-Fi en este tutorial.

Instalación del controlador CP2102:

Si observa la parte posterior de NodeMCU, muestra qué controlador admite. Casi todas las placas NodeMCU admiten el controlador CP2102. Puede visitar el sitio web y descargar el controlador de acuerdo con su sistema operativo.

Sitio web del controlador CP2102 (enlace del controlador): https://www.silabs.com/

Instale el software del controlador eligiendo el instalador de 32 o 64 bits.

Después de la instalación, conecte el NodeMCU con un cable MicroUSB y abra el Administrador de dispositivos. Aquí puede ver que el controlador está instalado correctamente.

A continuación, debemos configurar Arduino IDE para agregar nuestro NodeMCU al ‘Administrador de tableros’.

Configurar el IDE de Arduino:

Si tiene Arduino IDE, ábralo. O puede descargarlo e instalarlo desde el sitio web de Arduino.

Paso 1: Abrir Archivo->Preferencias

Paso 2: agregue la siguiente URL en el campo «URL del administrador de tableros adicionales». Luego haga clic en Aceptar y vuelva a ejecutar el IDE.

https://arduino.esp8266.com/stable/package_esp8266com_index.json

Instalación de tableros ESP8266 en Boards Manager

Podemos instalar la lista de tableros ESP en ‘Boards Manager’. Este paquete de tableros ESP8266 admitirá NodeMCU, ESP32, Wemos, etc. Como hemos agregado la ‘URL del administrador de tableros adicionales’ en el último paso, podemos continuar y buscar ESP8266 en la pestaña ‘Administrador de tableros’. Vaya a Herramientas-> Tablero->Administrador de tablero.

Ahora en la barra de búsqueda escriba ‘esp8266’ y le mostrará las Bibliotecas. Elija el esp8266 de ESP8266 Community e instálelo.

Después de volver a ejecutar el IDE, puede ver NodeMCU en Boards Manager de Arduino IDE. Herramientas>Tablero>NodeMCU

Esta es una configuración limitada para ejecutar nuestro NodeMCU sin Wi-Fi. Para acceder a las Funcionalidades Wi-Fi necesitamos instalar la Biblioteca Wi-Fi ESP8266.

Configuración de la placa:

Configuración de la placa y puerto COM antes de cargar el código.

En el ‘Administrador de placas’, elija la versión exacta de la placa NodeMCU. Aquí usamos NodeMCU 1.0 (Módulo ESP12E).

Placa: NodeMCU 1.0 (Módulo ESP-12E)

Tamaño del flash: «4M (1M SPIFFS)»

Frecuencia de CPU: «80MHz»

Velocidad de carga: «115200»

Elija su puerto COM apropiado que se muestra en su IDE. El puerto COM será diferente para todos. En mi caso, el puerto COM se detecta en COM26. Así que elegí COM26 en Configuración de puerto.

Puede encontrar ejemplos de Wi-Fi en Archivo>Ejemplos>Wi-Fi. Cargue cualquier ejemplo y pruebe que todo funciona perfectamente.

Nota: Asegúrese de elegir ESP8266 o NodeMCU (placas relacionadas con ESP) en Boards. De lo contrario obtendrá un error fatal. Porque el código ESP8266 se está compilando bajo el tipo de placa Arduino. Así que elija los tableros correctos para compilar/cargar.

Ejemplo de un código Wi-FI para controlar un LED usando un navegador web:

En este ejemplo, vamos a ENCENDER y APAGAR el LED integrado de NodeMCU.

Nota: El LED incorporado en NodeMCU está invertido o polarizado inversamente (ALTO significa Apagado y BAJO significa Encendido). Entonces, si está utilizando un LED normal con polarización directa en ese pin, asegúrese de cambiar ALTO a BAJO y viceversa.

En el siguiente código, cambie ‘Su SSID Wi-FI’ y ‘Su contraseña’ con sus credenciales de red Wi-Fi.

Funcionamiento de este código: se conectará a la red Wi-Fi que proporcionó en su código e imprimirá la dirección IP en Serial Monitor. Todo lo que tenemos que hacer es copiar y pegar la dirección IP que se muestra en Serial Monitor en la URL de su navegador y presionar enter. Obtendrá dos botones para encender/apagar el LED integrado. El mismo estado se mostrará en el navegador y en Serial Monitor.

Código:

#include <ESP8266WiFi.h>  const char* ssid = "Your Wi-Fi SSID"; const char* password = "Your Password";  int ledPin = 16; // GPIO16---D0 of NodeMCU 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  int value = LOW; 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(""); // do not forget this one client.println("<!DOCTYPE HTML>"); client.println("<html>");  client.print("Led is now: ");  if(value == HIGH) { client.print("OFF"); } else { client.print("ON"); } client.println("<br><br>"); client.println("<a href="/LED=OFF""><button>ON </button></a>"); client.println("<a href="/LED=ON""><button>OFF </button></a><br />");  client.println("</html>");  delay(1); Serial.println("Client disonnected"); Serial.println("");  }

Producción:

Aquí, en mi salida, la dirección IP asignada por el enrutador es 192.168.43.102. Ingrese esta dirección IP en su navegador (PC/Móvil pero debe estar conectado a la misma red). Además, asegúrese de que la velocidad en baudios del monitor serie sea la misma.

Salida del navegador: