VISIÓN DE CONJUNTO
Poder controlar o obtener información de sus proyectos usando WiFi es algo en lo que todos queremos experimentar en algún momento u otro.
Una manera fácil de comenzar es usar una placa de desarrollo que tenga WiFi incorporada, como las placas de desarrollo NodeMCU.
El NodeMCU se basa en el popular módulo WiFi ESP8266. El uso de NodeMCU facilita la conexión y el uso de las capacidades del ESP8266, así como el uso del IDE de Arduino con el que estamos familiarizados para cargar bocetos.
A medida que hagamos más tutoriales utilizando las placas NodeMCU, veremos más detalles sobre cómo funcionan, qué entradas y salidas están disponibles y las diferentes formas en que puede programarlas.
En esta primera parte controlaremos un Pixel stick (WS2812B) a través de una página web para encender y apagar, cambiaremos los colores y usaremos el Arduino IDE para programar el NodeMCU.
NODEMCU INTRODUCCIÓN
Vamos a ver dos versiones de la placa NodeMCU: Versión 2 y Versión 3:
Como puede ver en la imagen de arriba, la Versión 3 (arriba) es un poco más grande que la Versión 2 (abajo), también el V3 de la placa NodeMCU usa el chip CH340G USB a serie comparado con el V2 que usa el chip CP2102.
No hace mucha diferencia cuál se usa, siempre que cargue el controlador correcto.
La versión 2 también incluye un LED adicional a bordo.
El pin de ambos tableros es prácticamente el mismo, excepto que V3 tiene un pin de tierra más y también proporciona un pin de salida de energía USB como se puede ver en el siguiente diagrama.
CONEXIONES
La conexión para este tutorial es bastante mínima, como se puede ver en el esquema.
Para alimentar el WS2812 Pixel Stick, estamos usando los pines 3.3V y GND del NodeMCU.
El pin RX o D9 del NodeMCU está conectado al D1 (entrada digital) del WS2812 Pixel Stick.
* Nota: dado que solo estamos utilizando un WS2812 Pixel Stick, podemos alimentarlo usando el NodeMcu.
En el futuro tutorial utilizaremos una fuente de alimentación externa ya que utilizaremos más LEDs.
EL CÓDIGO
Estamos utilizando la biblioteca NeoPixelBus para controlar la barra de píxeles WS2812 RGB.
Puede encontrar un enlace para descargar la biblioteca en la parte inferior de esta página de tutorial.
Para instalar la placa NodeMCU en Arduino IDE, deberá dirigirse a:
ARCHIVO -> PREFERENCIAS ->
y agregue la siguiente información en “URLs del administrador de juntas adicionales:”
http://arduino.esp8266.com/stable/package_esp8266com_index.json
El siguiente código se conectará a una red WiFi y luego creará una página web que tendrá 2 botones para seleccionar los colores que desea visualizar.
Recuerde reemplazar la “xxxxxxx” en el código con su propio nombre y contraseña de red WiFi.
Puede abrir las ventanas del Monitor de serie al inicio para ver qué IP recibe el NodeMCU por la red WiFi.
Vamos a entrar en más detalles y complejidad en futuros tutoriales utilizando el NodeMCU.
Como siempre, no olvides mirar nuestro video Tutorial para más información.
#include "NeoPixelBus.h" // Biblioteca para controlar Pixel Stick #include "ESP8266WiFi.h" // Biblioteca WiFi #define PixelCount 8 // Número de leds en stick #define PixelPin 2 // NodoMCU pin 2 (RX) conectado a Digital In de Pixel Stick const char * sid = "xxxxxxx" ; // Nombre de la red WiFi const char * contraseña = "xxxxxxx" ; // Contraseña de la red WiFi En t primer intento = 0 ; // Comprobar Si sistema acaba de ser encendido En t Presionado por un botón = 5 ; // Para mantener presionado el botón en la página web // Inicializar biblioteca NeoPixelBus NeoGrbFeature, Neo800KbpsMethod > tira (PixelCount, PixelPin); // Definir matrices para colores largo switchled00 [] = { 0x0E5219 , 0x52160E , 0x0E5219 , 0x52160E , 0x0E5219 , 0x52160E , 0x0E5219 , 0x52160E }; largo switchled01 [] = { 0x19257B , 0x7B7A19 , 0x19257B , 0x7B7A19 , 0x19257B , 0x7B7A19 , 0x19257B , 0x7B7A19 }; Servidor WiFiServer ( 80 ); // Definir el puerto del servidor web void setup () { De serie . empezar( 115200 ); retrasar( 10 ); tira . Empezar(); // Init de Pixel Stick tira . Espectáculo(); // Clears alguna iluminado Leds // Conéctate a la red WiFi De serie . impresión ( "Conectado a " ); De serie . println (ssid); Wifi . comenzar (ssid, contraseña); // Espere hasta que esté conectado a WiFi mientras (Wifi . estado() ! = WL_CONNECTED) { retrasar( 250 ); De serie . impresión ( "." ); } // Confirmación de que WiFi es conectado De serie . println ( "" ); De serie . println ( "WiFi conectado" ); // Inicie el servidor web servidor . empezar(); De serie . println ( "Servidor web iniciado" ); // Mostrar dirección IP De serie . impresión ( "Puede conectarse al servidor aquí:" ); De serie . impresión ( "http: //" ); De serie . impresión (Wifi . localIP ()); De serie . println (); De serie . println (); } void loop () { // Comprobar Si alguien es conectado Cliente WiFiClient = servidor . disponible(); Si ( ! cliente) { regreso ; } // Lea qué botón se presionó en la página web Solicitud de cadena = cliente . readStringUntil ( ' r ' ); // Leds iluminados basados en el botón presionado Si (solicitud . índice de( "/ REDGREEN = 1" ) ! = - 1 ) { para ( En t LED = 0 ; LED 8 ; LED ++ ) { tira . SetPixelColor (led, HtmlColor (switchled00 [led])); } tira . Espectáculo(); Presionado por un botón = BAJO; primer intento = 1 ; } Si (solicitud . índice de( "/ BLUEYELLOW = 1" ) ! = - 1 ) { para ( En t LED = 0 ; LED 8 ; LED ++ ) { tira . SetPixelColor (led, HtmlColor (switchled01 [led])); } tira . Espectáculo(); Presionado por un botón = ALTO; primer intento = 1 ; } // Crear página web cliente . println ( "HTTP / 1.1 200 OK" ); // Encabezado HTML cliente . println ( "Content-Type: text / html" ); cliente . println ( "" ); cliente . println ( "" ); cliente . println ( "" ); // Inicio de HTML cliente . println ( "
); cliente . println ( "body {background-color: #ACAEAD;}" ); // Establecer color de fondo cliente . println ( "" ); Si (primer intento == 0 ) { cliente . impresión ( "Haz clic en un botón" ); } más { cliente . impresión ( "El último botón presionado fue" ); } Si (Presionado por un botón == BAJO) { cliente . impresión ( "Rojo verde" ); } Si (Presionado por un botón == ALTO){ cliente . impresión ( "Azul amarillo" ); } cliente . println ( " " ); cliente . println ( " " / REDGREEN = 1 "" > " ); cliente . println ( " " / BLUEYELLOW = 1 "" > " ); cliente . println ( "" ); retrasar( 10 ); }
VIDEO TUTORIAL
DESCARGAR
Copie el código de Sketch anterior en su software Arduino IDE para programar su placa NodeMCU.
Bibliotecas usadas:
Descargue la biblioteca NeoPixel
creado por ‘Makuna’:
https://github.com/Makuna/NeoPixelBus
Una vez descargado, simplemente extrae el contenido de los archivos zip dentro de tu ” arduino / en la carpeta “libraries”, y asegúrese de reiniciar el software Arduino IDE (Cerrar y volver a abrir) para que detecte esta biblioteca recién instalada.