bclose

WeMos D1 ESP8266 WIFI

Una placa comoda para trabajar con ESP8266

 

Objetivos

 

 

  • Presentar la familia WeMos D1.
  • Al menos la D1 y la D1 mini
  • Mostrar como programarlos.

 

Material requerido.

La WeMos D1

 

No cabe duda de que los chips ESP8266 han sido una autentica revelación en el mercado de los WIFI sencillos y más importante aún, baratos. Cuando miro el Google Analitics para ver qué cosas son lo que más os interesan, de esta vuestra casa, las páginas relativas al ESP8266 suelen ser siempre las primeras en la lista.

Hace algo más de un año, conseguir que tu Arduinillo se conectara a la WIFI, suponía rascarte el bolsillo hasta encontrar unos 70E además de  tu Arduino.

Pero con la aparición delos ESP8266 empezaron a aparecer multitud de modelos sencillos basados en el, de modo que conseguir una conexión básica era sencillo y por poco más de 5€, lo que ha sido toda una revolución sin duda.

Pero como la felicidad nunca es completa, el fabricante chino de este chip se prodigó sacando al mercado toda una colección de modelos con diferentes pines hasta conseguir que tuviéramos una empanada mental de tamaño extra luxe.

Y no me extraña porque hacía falta dedicar un rato al tema para entender que a pesar de los infinitos módulos de montaje que nos vendían como cosas distintas, el chip era siempre el mismo y la diferencia correspondía solamente a la montura en la que se soldaba el chip base.

Las características eran espectaculares. Un  SOC (System On Chip o procesador central) de 32 bits a 160 MHz con RAM y EEPROM mas el stack WIFI completo por unos 5€ era algo que nos atraía como moscas a la miel.

Pero como cuestión de principio, uno ya ha aprendido suficientes lenguajes de programación y estructuras de micro procesadores a lo largo de mi vida, como para salir corriendo a aprender otro que aún no había demostrado que fuese a permanecer.

 
  • Muchos buenos productos son enterrados por las arenas del tiempo sin dejar más rastro que la cara de memo que se te queda después de dedicarle unos cuantos cientos de horas.
  • De esto se yo un rato, he dedicado muchas horas a cantidad de productos prometedores que se fueron al vertedero a pesar de las mejores promesas técnicas.
  • Al final es lo que se vende lo que permanece y eso raramente es lo mejor técnicamente, aunque os parezca asombroso.  

Cuando unos benefactores anónimos de la humanidad se descolgaron con un pluggin para el IDE Arduino, que permitía programar este chip como si fuera un Arduino, la marea cambió y fue el momento de embarcarse y corriendo si no querías quedarte en tierra, pero trabajar el ESP8266 no ha sido nunca fácil, por el lio de pines, placas y montajes.

Ahora para rizar el rizo, han aparecido placas basadas en el ESP8266 que además, remedan los pines de nuestro venerable y muy confortable Arduino UNO, con lo que ni siquiera tenemos que complicarnos la vida con que pin hace qué (Que es lo que a mi me gusta. Recordad que soy un vago natural)

Llevaba ya un tiempo tratando de conseguir unos cuantas  de estas placas y por fin los he recibido (Casi al mismo tiempo, que en Internet dicen que ya están obsoletas, hay que joderse) Ahora toca jugar con ellas y ver qué tal se portan y esta es la idea de esta sesión. Vamos a probarlas y ver si son lo que parecen y prometen.

 

Conociendo las WeMos D1

 

Para empezar podemos decir que esta placa está gobernada por un ESP8266 que se encarga de las tareas de procesamiento y del control de WIFI tranquilamente, todo en un único chip, que si nos leei de vez en cuando os sonará ya de sobra.

Vista de distribucion de pines

Las características principales de la placa:

 
  • 11 entradas/ salidas digitales.
  • 1 entrada analógica.
  • Conector micro USB
  • Distribución de pines tipo Arduino UNO.  
MicrocontrollerESP-8266EX
Operating Voltage3.3V
Digital I/O Pins11
Analog Input Pins1
Clock Speed80MHz/160MHz
Flash4M bytes

No quiero comparar, que siempre me dijeron que era muy feo, pero este es un procesador de potencia similar a un DUE, no a un UNO y eso a 80 MHz que si lo subimos a 160 MHz, no te digo y además incluye WIFI, por una fracción del precio.

Aparentemente no le falta nada, e incluye tanto I2C como SPI y una puerta analogica de 3.3V

PinFunctionESP-8266 Pin
D0RXGPIO3
D1TXGPIO1
D2IOGPIO16
D3 (D15)IO, SCLGPIO5
D4 (D14)IO, SDAGPIO4
D5 (D13)IO, SCKGPIO14
D6 (D12)IO, MISOGPIO12
D7 (D11)IO, MOSIGPIO13
D8IO, Pull-upGPIO0
D9IO, Pull-up, BUILTIN_LEDGPIO2
D10IO, Pull-down,SSGPIO15
A0Analog InputA0

Fíjate que esta placa dispone de capacidad PWM en todos los pines digitales ya además dispone de I2C y SPI, pero todos los pines son de 3.3V incluyendo el convertido analógico al digital.

El fabricante pone una nota diciendo que en esta tarjeta todos los pines soportan interrupciones, SPI e I2C, además de PWM excepto el pin2, lo que es un bonus espectacular.

Además esta placa soporta la programación OTA (Over The Air) es decir sin hilos directamente a través del WIFI, algo que habrá que investigar.

 

Programando la WeMos D1

 

La gran virtud esta placa es que incorpora un ESP8266 con los pines de Arduino, lo que nos resulta mucho mas sencillo de hacernos con ella, por lo familiar de todo y en principio debería correr con cualquier Shield que acepte 3.3V (Que deberían ser todos) y también compilar sin demasiados problemas las librerías existentes.

 
  • Mucho cuidado aquí. Aunque la buena gente que se ha dejado los cuernos trabajando para nosotros haciendo las librerías y el pluggin Arduino, han puesto todo su cuidado en duplicar las llamadas a las librerías estándar, no os fiéis demasiado hasta que no lo probéis cuidadosamente.
  • Al final son diferentes procesadores con diferentes directivas y poco a poco se irá puliendo todo, pero los errores en esto son inevitables y conviene no dar por supuesto que todo va a funcionar a la primera.
  • Cómprate una y empieza a probar, pero no supongas de entrada que todo funcione y luego te quejes amargamente de que te hemos engañado. No te fíes de nadie (Y mucho menos de nosotros que somos bien conocidos por frecuentar bares y lugares dudosos a deshoras)  

Para empezar el fabricante pone a nuestra disposición una buena colección de ejemplos que podéis descargar aquí , pero siguiendo la costumbre imbécil habitual, no proporciona ninguna descripción de ellos y hay que ajustarse a lo que podemos sacar leyendo los programas y aun así hay mucha información.

Hay ejemplos básicos para hacer el blinking led y fadding en LEDs (Ajustar el brillo) así como la forma de leer la puerta analógica. Incluye varios ejemplos de lo más interesantes como mover un servo y mucho más útil como implementar un Ticker o interrupción programada cada cierto tiempo para llamar a una de nuestras funciones, además del ejemplo adaptado del I2C scanner que ya vimos en su día para explorar el I2C en busca de dispositivos conectados.

También tenemos un ejemplo de cómo leer un sensor de temperatura Dallas DS18x20 y varios ejemplos de cómo usar diferentes Shield que sospecho no son los que esperáis sino unos pequeñajos que el mismo fabricante proporciona, pero que en cualquier caso nos proporcionara pistas sobre el asunto.

Lo asombroso es no proporcionan ni un joido ejemplo de cómo acceder y usar la WIFI interna. Si, ya sabemos que se supone que el Shield y el ESP8266 es 100% compatibilice con los ejemplos oficiales del WIFI Shield Arduino.

 

Pero uno echa de menos que hubieran colocado aquí unos cuantos ejemplos probados y que pudiéramos revisar para aprender.

Vamos a empezar programando algo rápido como un blinking LED para variar ya acostumbrarnos a la placa.

Tenemos que empezar instalado el pluggin IDE para el ESP8266 (los que no lo hayáis instalado aun), y podéis hacerlo leyendo la sesión que dedicamos al asunto aquí.

Además estas placas utilizan, como no, el chip CHG340 por lo que si aún no habéis instalado el driver correspondiente podéis hacerlo descargándolo de aquí ch341ser_win (Ya estáis tardando, porque os lo vais a encontrar en todos los sitios)

  • Los amigos de Apple podéis encontrar aquí el driver correspondiente. Los de Linux no lo necesitais porque suelev venir de fábrica.

Y ahora conectad vuestro flamante WeMos D1 a un USB y seleccionad la placa correspondiente:

Arduino IDE
 
  • Os fijareis que ahora marca la D1 R1 como retirada porque la nueva R2  que acaba de salir, es lo mismo pero incluye además, con una modificación para que junto con Arduino se le pueda cargar NodeMCU (Que es otro lenguaje similar a Arduino pero pensado para la Web)
  • También aparece las WeMos D1 mini de la que hablaremos enseguida..  

Seleccionad ahora el puerto serie en el que se os haya instalado la placa y así como sin querer, fijaros que podemos variar la velocidad de la CPU y si es preciso mejorarla.

Wemos D1

Vamos a volcar un Blinking LED como este para hacer boca:

void setup()
   {  pinMode(BUILTIN_LED, OUTPUT); // Onboard LED
      Serial.begin(9600);
   }

void loop()
   { digitalWrite(BUILTIN_LED, HIGH);  // turn on LED with voltage HIGH
     delay(1000);                      // wait one second
     digitalWrite(BUILTIN_LED, LOW);   // turn off LED with voltage LOW
     delay(1000);                      // wait one second
     Serial.println(BUILTIN_LED);
   }

Enseguida veréis parpadear la luz interna, que como curiosidad no está conectado al pin 13 sino al pin 2.

 

WeMos D1 mini

 

Hay una variante de esta misma placa con muchos menos pines pero las mismas posibilidades y de mucho menor tamaño ideal para pequeños proyectos que requieran poco tamaño y WIFI, que se llama WeMos D1 mini.

Vista superior
Vista inferior

Es una placa bastante minúscula (Tened en cuenta que el cable de la foto es un micro USB )y con muy buena pinta que está pidiendo a gritos usarla en algo para hacer pruebas con sensores y enviando datos a través de WIFI. Aquí os dejo el pinout:

pin out

Son al final una buena solución para usar los ESP8266 de una manera cómoda y bien empaquetada que nos evite los dolores de cabeza habituales de que pines hay que colocar o dejar. La placa viene completa y lista para usar directamente desde le IDE Arduino sin más historias, lo que resulta una novedad de lo mas bienvenida y casi apetece decir eso tan castellano de “Dios mio. Por fin

Aunque seguro que habrá cosas que fallarán, son unas placas de lo más curiosas y recomendables si queréis pelearos con los WIFI baratos y los ESP8266, os recomiendo que empecéis por aquí y os olvidéis inicialmente de ESP01 y demás. Ya tendréis tiempo de usar chips cuando estáis diseñando una placa integrada.

Al final estas placas pueden ser una muy buena solución para enredar con los ESP8266 y las WIFI de un modo sencillo y sin problemas de pines raros y puñetas similares.

Aun no las he probado suficiente y desde luego me he encontrado varios shield de pantallas TFT que no funcionan porque necesitan los pines A4 y A5 y otros como el Shield keypad que necesita alimentacion a 5V y sencillamente no parece ir, pero para conectar sensores y cosas asi deberia funcionar bastante bien si podemos aceptar que es de 3.3V

 

Resumen de la sesión

 

 

    • Presentamos las nuevas placs WeMos basadas en los chips WIFI ESP8266.
    • Presentamos los modelos D1 y el D1 mini.
    • Vimos que podemos progranmarlo directamente desde el IDE Arduino sin mas que instalar el pluggin IDE
    • VImos com programar el mas sencillo ejemplo de blinking LED. 

 

 

(42) Comments

    • Alicia

    Un comentario muy importante es que deberías saber y entender que no es lo mismo hablar en la barra de un bar que escribir para que lo lean otros

    (Casi al mismo tiempo, que en Internet dicen que ya están obsoletas, hay que joderse)
    Aunque la buena gente que se ha dejado los cuernos trabajando para nosotros
    Lo asombroso es no proporcionan ni un joido ejemplo de cómo acceder y usar la WIFI interna

    Vamos que no son expresiones muy acertadas especialmente en la página de una web comercial

    • Hola Alicia, muchas gracias por tu compartir tu opinión con nosotros. Sin embargo, estamos convencidos de que tratar estos temas con demasiada seriedad aburre y espanta a la gente. Por eso somos defensores de una manera más desenfadada de compartir lo que hemos aprendido, la mayoría de ello en libros serios (y bastante coñazo) de los que comentas. Aunque no sería la primera vez que nos equivocamos… Un saludo!

    • Ariel

    Hola Admin, soy nuevo en Arduino y estoy practicando, queria consultarte por un programa que con un puldador enciendo u apago un led, el tema que no se si le estoy errando en el pinout por que no me anda, Te dejo mi programa, y la placa que uso es una Wemos D1 R2, espero me puedas ayudar.

    #include
    int PULSADOR = 0; // en la placa es el pin 0
    int LED = 14; // en la placa es el pin 14
    int ESTADO = LOW;

    void setup() {
    pinMode(PULSADOR, INPUT); // pin D3 como entrada
    pinMode(LED, OUTPUT); // pin D5 como salida
    }
    void loop() {
    while (digitalRead(PULSADOR) == LOW) { // espero a que el pulsador se presione

    }
    ESTADO = digitalRead(LED); // leo estado del LED
    digitalWrite(LED, !ESTADO); // escribo el valor contrario
    while (digitalRead(PULSADOR) == HIGH) { // antirebote

    }
    }

    • Hola Ariel,

      EN primer lugar no puedes leer el pulsador simplemente digitalRead(PULSADOR) si no has puesto un pull up resister. MIrate los tutos sobre botone sy pulsadores y veras porque. Simplemente esto ya haria que el encendido de tu led fuera erratico

    • Youssef

    Hola Crack!! Gracias por responderme!!
    El problema es el siguiente ya compre Wemos d1 pro y llevo horas echadas y no me sale, nose como se configura el DNS, porque el BSSID si aparece y contraseña ya la programe, pero no funciona la conexion.

    • Hola Youssef

      El wemos d1 y el nodemcu usan el mismo chip y por tanto los programas de uno deberias poderlos pasar sin cambios de uno a otro.

      La unica diferenecia son el numero de pin si usas interaccion con el exterior, pero todo lo que sea alrededor dela liberria wifi es exactamente lo mismo y puedes copoiar y pegar de uno a otro

    • Youssef El Moussaoui

    Hola Admin, estoy haciendo un proyecto que necesito acabarlo en cuestrion de unas semanas. Y necesito hacer un repetidor wifi, me podrias ayudar con el tema?? porfavor!!!

Give a Reply

WordPress Anti-Spam by WP-SpamShield