bclose

NodeMcu con pantalla OLED 0.96″

Conectarse a una red WiFi y mostrar los datos en pantalla

Objetivos

 

 

    • Presentar el NodeMcu con pantalla OLED de 0.96″.
    • Aprender a utilizar las librerías para ponerlo en marcha.
    • Conectarnos a una red WiFi.
    • Escribir caracteres la pantalla OLED.
 

Material requerido

tienda online prometec

 

Qué tenemos entre manos

 

Este nuevo dispositivo está llamado a convertirse en uno de los mejores amigos para los que nos gusta trastear con estas historias conocidas como IoT (Internet of Things). Y es que esta placa compatible con Arduino integra todas las bondades de los NodeMcu y además integra una pantalla OLED de 0.96″.

Es una pantalla con el tamaño suficiente para poder visualizar, por ejemplo, el estado de la conexión WiFi o la lectura de cualquier sensor que tenga conectado.

WEMOS OLED

Así que en resumidas cuentas tenemos una placa que a un precio muy reducido nos ofrece:

  • Conexión Micro USB.
  • Compatibilidad con el IDE de Arduino.
  • 8 pines que pueden funcionar como entrada/salida/PWM/I2C/SPI (excepto el D0)
  • 1 entrada analógica.
  • Pantalla OLED de 0.96″ y 128×64.
 
  • Una recomendación que os hacemos es que cuando conectéis y desconectéis el microUSB lo hagáis con cuidado, porque no está demasiado bien sujeta la conexión de la placa. 

Si queréis comprobar cómo se ve la pantalla, podéis conectar la placa y veréis un programa pregrabado que muestra varias cosas en la pantalla.

Programación

 

Si nunca habéis trabajado antes con el NodeMcu, primero deberíais echar un ojo a esta sesión donde explicamos como preparar el IDE de Arduino para poder programar los NodeMcu con él: Programando NODEMCU con Arduino IDE. Cuando lo tengáis todo bien configurado ya podemos empezar a programar.

Lo primero que debemos hacer es descargar esta librería: esp8266-oled-ssd1306-master, la utilizaremos para manejar la pantalla OLED de la placa. Hemos intentado correr los ejemplos de la librería, pero sin demasiada suerte… así que hemos hecho uno propio. Lo que pretendemos que haga es simplemente conectarse a la red WiFi que queramos, pero que en vez de mirar en el monitor serie podamos ver en la pantalla OLED cómo lo va haciendo, y nos muestre la red a la que se va a conectar y la dirección ip que se le asigne cuando lo consiga. Así que al lío.

Vamos a empezar incluyendo las librerías que vamos a utilizar:

#include <ESP8266WiFi.h>
#include <Wire.h>
#include "SSD1306.h"

También tenemos que incluir las variables para la conexión WiFi, nombre de la red a la que nos queremos conectar y su contraseña.

const char* ssid = "prometec"; //Nombre de la red WiFi a la que nos vamos a conectar
const char* password = "contrase"; //Contrasena de la red WiFi a la que nos vamos a conectar

Y para hacer funcionar la pantalla OLED tenemos que definir su dirección y los pines I2C del NodeMcu. Además definiremos la variable flipDisplay a true, que usaremos para girar la pantalla 180º. Aunque no es necesario, a nosotros nos venía mejor esa posición.

SSD1306 display(0x3c, 5, 4); //GPIO 5 = D1, GPIO 4 = D2
#define flipDisplay true

Ya en el setup, vamos a definir la velocidad del puerto serie, por si queremos utilizarlo para comprobar que todo vaya bien. Después vamos a mostrar los primeros caracteres en forma de mensaje de bienvenida en el display OLED. Para eso tenemos que definir la orientación de la pantalla (si queremos cambiarla) y , tras borrar el contenido de la misma, seleccionamos la fuente de texto que queremos y le damos las coordenadas para empezar a escribir y el texto que queremos mostrar. Una vez lo tengamos, tenemos que usar la función display.display(); para mostrarlo.

Serial.begin(115200);
delay(10);
/* Inicializamos la pantalla */
display.init();
if (flipDisplay) display.flipScreenVertically();

/* Mostramos la pantalla de bienvenida */
display.clear();
display.setFont(ArialMT_Plain_16);
display.drawString(15, 25, "Prometec.net");
display.display();
delay (3000);
esp8266 con display

Para conectarnos a la red WiFi usaremos la función WiFi.begin, pero antes vamos a mostrar en pantalla la red WiFi a la que nos estamos intentando conectar.

 /*Mostrar red en pantala*/
 Serial.println();
 Serial.println();
 Serial.print("Connecting to ");
 Serial.println(ssid); 
 display.clear();
 display.setFont(ArialMT_Plain_16);
 display.drawString(0, 0, "Connecting to:");
 display.drawString(0, 32, ssid);
 display.display();

 /*Conectarnos a la red WiFi*/
 WiFi.begin(ssid, password);

 while (WiFi.status() != WL_CONNECTED) {
 delay(500);
 Serial.print(".");
 }
esp8266 con display

Para terminar sólo nos falta mostrar en pantalla un  mensaje que nos muestre el nombre de la red a la que estamos conectados y la IP que se nos ha asignado. La IP la obtenemos con la función WiFi.localIP(); pero como no podemos mostrarla así directamente la convertimos en un String.

/*Mostrar nuestra IP*/
 Serial.println("");
 Serial.print("Red: ");
 Serial.println(ssid);
 Serial.println("IP address: ");
 Serial.println(WiFi.localIP());
 String ip = WiFi.localIP().toString();

 display.clear();
 display.drawString(0, 0, "Red: ");
 display.drawString(40, 0, ssid);
 display.drawString(0, 20, "IP address:");
 display.drawString(0, 40, ip);
 display.display();

Y como no queremos hacer más el loop lo dejamos vacío. Si todo va bien deberías ver algo parecido a esto pero con vuestro nombre de red e IP. Aquí os dejamos el programa completo: Conexion_WiFi.

esp8266 con display

Ya hemos arrancado con esta nueva placa que seguro que nos va a dar muchas alegrías. Seguiremos jugando con ella y trataremos de sacarle el máximo partido posible. De momento os dejamos un vídeo con el resultado:

 

Resumen de la sesión

 

En esta sesión hemos aprendido varias cosas importantes:

 
    • Conocemos una nueva placa, el NodeMcu con pantalla OLED y sus características.
    • Nos hemos conectado a una red WiFi.
    • Hemos usado la pantalla OLED para mostrar los datos de conexión.
    • Podemos prescindir del monitor serie y usar el display de la placa.

¡Ofertón!

Robot Rover 4×4

Ahora por sólo

50€ + IVA

¡Lo quiero!