Objetivos
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.
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.
Las características principales de la placa:
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
Pin | Function | ESP-8266 Pin |
---|---|---|
D0 | RX | GPIO3 |
D1 | TX | GPIO1 |
D2 | IO | GPIO16 |
D3 (D15) | IO, SCL | GPIO5 |
D4 (D14) | IO, SDA | GPIO4 |
D5 (D13) | IO, SCK | GPIO14 |
D6 (D12) | IO, MISO | GPIO12 |
D7 (D11) | IO, MOSI | GPIO13 |
D8 | IO, Pull-up | GPIO0 |
D9 | IO, Pull-up, BUILTIN_LED | GPIO2 |
D10 | IO, Pull-down,SS | GPIO15 |
A0 | Analog Input | A0 |
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.
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:
[one-fourth] [/one-fourth][three-fourth last][margin value=»5″ /][fancy-ul style=»rounded-tick»]
[three-fourth last][margin value=»5″ /][fancy-ul style=»rounded-tick»]
- 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.. [/fancy-ul] [/three-fourth]
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.
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.
[one-half]
[/one-half]
[one-half last]
[/one-half]
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:
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