Arduino Tutorial: First look at the WeMos D1 Arduino compatible ESP8266 Wifi Board from

Arduino Tutorial: First look at the WeMos D1 Arduino compatible ESP8266 Wifi Board from

Dear friends welcome to another video! This
is Nick from and today we are going to take a look at the impressive WeMos D1
Arduino compatible development board, the cheapest Wi-Fi enabled Arduino compatible
board available today. Let’s get started! A few weeks ago I discovered this board on It is a Wi-Fi enabled Arduino compatible board based on the ESP8266 chip.
The price was so tempting as well! Less than 9$. Without any second thoughts I ordered
it a few days ago I received it and started working with it. You can find a link for this
board in the description of the video. The board looks like an ordinary Arduino board.
The dimensions and the pin layouts are exactly the same. So, this board is compatible with
all the existing shields for Arduino. But don’t expect them to work at once, since
the libraries available for the ESP8266 chip are few so far. The board, instead of an ATMEGA
chip that standard Arduino boards use, use the impressive ESP8266 WiFi chip!
The ESP8266EX chip that the WeMos D1 board uses offers:
• A 32 bit RISC CPU running at 80MHz • 64Kb of instruction RAM and 96Kb of data
RAM • 4MB flash memory! Yes that’s correct,
4MB! • Wi-Fi
• 16 GPIO pins • I2C,SPI
• I2S • 1 ADC
That’s a beast compared to a standard Arduino. It’s a 32bit processor that runs at a much
higher frequency. The performance difference with a standard Arduino I expect to be huge!
The Arduino Uno, offers 2KB of RAM memory and this chip has 160Kbs. The Flash memory
of the device is also 100 times bigger than Arduino. Of course, the main reason that everyone
is using this chip, is that it has embedded Wi-Fi! All that for less than 10$. The hardware
looks fantastic. Now let’s see the software of it.
In order to use the board, you have to download an add-on for the Arduino IDE. Go to File
->Preferences and enter this link here. I copied this link from the WeMos website. Then
go to Tools ->Board and load the Boards Manager. The all you have to do is to download the
file for the ESP8266 boards. After that you can select the WeMos D1 board and you are
ready to use it. Let’s try the board. Let’s upload the standard blink program. We have
to go to File ->Examples ->ESP866 ->Blink in order to load the program and then press
the upload button. After a while the LED on the ESP8266 chip will start flashing. Note,
that this is not the standard Blink sketch we were using so far. It is a similar one
developed for the ESP8266. Due to the different hardware architecture of the ESP8266 most
programs will not work without modifications. Also most of the libraries need to be re written
in order to work as well. That’s a lot of work that needs to be done.
The first thing I wanted to find out was if it is easy to connect to the internet with
this board. So I developed a simple program that connects to my home Wi-Fi network, and
then visits my website to download some text that it is stored in a .txt file
at this URL As you can see, in the little OLED display, after a while
the text “It works fine” appears. That’s the text from the .txt file on the server!
The board works flawlessly! Our Arduino projects can now access the Internet with ease. The
OLED display I was using in the past with Arduino works fine as well with the use of
the appropriate library developed for the ESP8266. As always you can find the code of
this project in a link in the description of the video.
This was my first project with an ESP8266 chip. The WeMos D1 board makes things a lot
easier since we can program the chip using the Arduino IDE and the workflow that we are
used to. I will work more with this board which I think has a great potential. Adding
Wi-Fi capabilities to any project is now very easy and cheap! We can now build projects
that a few years ago would be science fiction! What do you think about the ESP8266 chip or
the WeMos D1 board? How do you plan to use it? Please post any project ideas in the comments
below. Also, if you want to see the latest channel
news, like what project I am currently working on, you can follow the facebook page of the
channel at .
If this is your first time here, I would love to have you subscribed. In this channel I
post videos about DIY projects every Saturday. I build projects with Arduino, Raspberry Pi,
I build robots and simple electronic circuits. I hope you will join our community. I love
making things and helping people doing the same. I hope that you will join our community.
Until next Saturday, Watch, Learn, Build!

77 thoughts to “Arduino Tutorial: First look at the WeMos D1 Arduino compatible ESP8266 Wifi Board from”

  1. hi, can normal shields be mounted on top of this board without problems? I think to different logic levels, in general esp8266 is 3.3v while arduino is 5v… or wemos implemented some kind of logic level translations to make the D1 5v tolerant?

  2. this isnt very useful, espicially because it doesnt use atmega 328, all the libraries need to be rewritten, it should incorporate both

  3. It's not an Arduino. It's an ESP8266 in the form factor of the Arduino Uno. Yes, you can compile stuff for the board with the Arduino IDE, but you don't have to. You have NodeMCU, Espruino, bare metal C/C++ on your hands. Even Basic is available if that's your heart's desire. You can use Sming or And yes, this doesn't have as many libs as the Arduino, still the number of libs available is steadily growing. And performance wise this easily beats any Arduino. I think the biggest weakness is the lack of hardware timers and PWMs of the ATmega. Maybe the ESP32 chip will solves this, it's on the hoirzon and available soon.

  4. Arduino better step up their game… they just got left in the dust. I think it has some stability issues and I had trouble with PWM, but hopefully some later ESP8266 firmware updates will resolve them.

  5. As usual your work is greatly appreciated. Thank you for sharing.
    I'm going to get one of these and start working with it.

  6. Thanks for your great video tutorials……. I just noticed you did not give us help with regard to the Driver for this board….. As I am new to this game…I just want to post this info in case there are other viewers with the same problem….. I found this and down loaded this and now your tutorial works. I got this from Banggood as you suggested and very excited to learn more.

  7. i've followed your instruction, but everytime i try to upload this message comes up:
    Arduino: 1.6.6 (Windows 10), Board: "WeMos D1, 80 MHz, Serial, 115200, 4M (3M SPIFFS)"

    Board d1 (platform esp8266, package esp8266) is unknown

    Error compiling.

  8. Here is the link in the preference to download the ESP8266 board emulation sw:

  9. There are so many "channels" that purport to explain things or teach you something. Most of them work really hard to cram 5 minutes of information into a 25 minute video (often because they don't edit before posting). Your site is a wonderful exception. You cram 10 minutes of information into a 5 minute video — I can always stop and go back but I will never die of boredom. Thanks. This video was just what I was looking for!

  10. Nice, I ordered one and will get it soon!
    My Project-This will take over my home automation at the circuit breakers solid state relay bank from the Arduino Leonardo. I was directed here again by Eric W.

  11. Can you make a video for Ambilight for PC with D1 mini V2 and Apa102 leds. I want to use D1 mini V2 because its fast, very cheap only $4 with shipping and Apa102 because its faster PWM, Great for PC and PC Gaming. Can you make a tutorial with this. THANKS 🙂

  12. I am getting this error while trying to compile the wifitest file on arduino:

    C:ArduinolibrariesOLEDESPESP_SSD1306.cpp: In member function ‘virtual void ESP_SSD1306::drawPixel(int16_t, int16_t, uint16_t)’:

    C:ArduinolibrariesOLEDESPESP_SSD1306.cpp:130:14: error: ‘swap’ was not declared in this scope

    swap(x, y);


    C:ArduinolibrariesOLEDESPESP_SSD1306.cpp: In member function ‘virtual void ESP_SSD1306::drawFastHLine(int16_t, int16_t, int16_t, uint16_t)’:

    C:ArduinolibrariesOLEDESPESP_SSD1306.cpp:594:16: error: ‘swap’ was not declared in this scope

    swap(x, y);


    C:ArduinolibrariesOLEDESPESP_SSD1306.cpp: In member function ‘virtual void ESP_SSD1306::drawFastVLine(int16_t, int16_t, int16_t, uint16_t)’:

    C:ArduinolibrariesOLEDESPESP_SSD1306.cpp:662:16: error: ‘swap’ was not declared in this scope

    swap(x, y);


    exit status 1
    Error compiling for board WeMos D1 R2 & mini.

    Would you help how to fix this please ? I use Arduino 1.6.9 version too, thank you.

  13. is this same board

  14. I dont get it. the modified Adafruit_GFX.h is missing. There is supposed to be a explanation in the readme.txt but this is also missing. 🙁

  15. Great videos! You do an excellent job of outlining the project and the steps you take. I've just ordered a Wemos D1 and a mini because of your videos but have a question about sensor voltages. As I understand it, these boards can neither supply nor receive more than 3.3v; is that correct? So if I want to build a project with 5v sensor (e.g., an ultrasonic range finder) should I be searching for a sensor that runs with 3.3v?

  16. I've had a WeMos D1 R2 for about 2 months and all but given up on Arduino IDE ESP8266 SPI projects that I've found online. Your example, after switching pins from SDA and SCL to D3 and D5 worked perfectly. Thank you!

  17. This board is much cheaper now. just 3.80 USD

  18. Γεια σου φίλε , μπράβο για τα βιντεάκια σου..απίστευτα ! Μια ερώτηση .. μόλις παρήγγειλα το board αλλά δεν μπορώ να καταλάβω αν έχει vibration sensor η όχι ,
    Aν όχι σε παρακαλώ μπορείς να μου προτείνεις κάποιο ;;
    Θέλω να κάνω κάτι παρόμοιο με αυτό το βιντεάκι σου .. μόνο που θέλω να μου στέλνει email όταν υπάρχει κάποια δόνηση !
    Ευχαριστώ πολύ !

  19. hi one question i wanna know th names of the analog pins, if the first one is A0 the second one is A1? coz i cant connect in the analog pings thxs

  20. How to control With WEMOS D1 Over LAn WIFI.
    I have install the 8266 Library and did the Basic OTA connection. NOw what should I do …
    Can you tell me further with a tutorial. I am new to this.

  21. You say that: "The board looks like an ordinary Arduino board. The dimensions and the
    pin layouts are exactly the same. So, this board is compatible with all
    the existing shields for Arduino." // Well, with TFT-shield as well? Yet, WeMos has no all (UNO R3 standard) analog pins available – only one. Good question is – why?

  22. With the Wemos D1, i mentionned that it was quite slow. In fact the client.println() is very slow. So to make it faster, it is better to concatenate all the strings together and then to send the command client.println(TotalString);

  23. Help needed! Thanks for this example, I used the code example and it worked pretty well (I removed all OLED references as I just wanted to try out the WIFI functionality). In 99% of the cases the example code is correctly showing a result of 14 characters: It works fine!
    Every now and then however, the result is: It works fine!ÿ
    Note the additional ÿ at the end! Still, the length is reported to be 14 characters, so it seems to recognise that only 14 bytes were received, yet somehow reading the ethernet buffer spits out this extra character under some circumstances? Would love to understand this, to make sure I can apply it in a robust failsafe solution.

  24. i bought this one from ebay. is it possible to connect this board to arduino like a shield?

  25. I'm getting time from internet using D1 wifi board, I want it to put the time on to RTC ds3231. Please help me in this.

  26. Great video. I thought this was an add on to the UNO. So can this board be used as a stand alone system?  I would like to make something that will text/email me if a sensor is triggered, like an alert board if my sump pump fails.

  27. Wow thanks a million! For some reason I kept looking for the flash button on this device, at last some time last night while digging around on the Internet, I found the information that some of these boards do not need the flash button, or a jumper set to flash. So I followed your lead and uploaded the blink program and it works!! Now I can use this board for something when the need arises. Perhaps a wireless thermometer or something that displays on my cell phone, mounted under the hood of our RV so it is out of the sunlight but still protected from the engine heat by the insulation that is built into the system!

  28. ets Jan 8 2013,rst cause:2, boot mode:(3,6)

    load 0x4010f000, len 1264, room 16
    tail 0
    chksum 0x0f
    csum 0x0f
    Connection Failed! Rebooting…
    …….what is the solution of that output….. plz help me

  29. Hello, I have a problem in making this operation, the system gives me this error (, I was unable to solve it, you can help me ?? thank you

  30. I have a CNC mashine in the garage. I want to know when it is ready. I thinking of have a Arduino with a Wifi module mounted on the CNC. It shall send a signal of my internal Wifi net and I can see it inside my house it is ready ny an other Arduino-wifi module. Do you think it is realistic or shall I use Bluetooth instead. Greatful for help

  31. hi pro,i have question if you can help me about this board,i want display for this board i don't know which display compatible,can you tell me please?
    because i want put the display on the board no external ?

  32. I connected my board using your direction – they were great! However when I tested the device, my "blink" program worked in reverse polarity? I'm confused. can you help?

  33. OK, first of all this is the link in the video to add in preferences->additional boards:
    Now, i kept getting "espcomm_open failed" message – this is how i solved it:
    MY upload speed didn't have an option like in the video for 155200, so i used 115200 in the arduino IDE (tools upload speed).
    Then i set the com port device port speed to be the same: right click "computer"->properties->device manager, open the ports (COM & LPT) right click the com port you are using and choose properties, "port settings" tab and change bits per second to 115200. then ok.

    After this the example program worked fine with a blinking led.

  34. even tough you have a horrible accent, it is still a good video.

    planning to automise some window curtains with 2 of these boards. (1 for the window and 1 for the controller that gives the signal of when to do its thing)

  35. anyone have idea for my problems?
    "error: Failed to open COM12
    error: espcomm_open failed
    error: espcomm_open failed"

  36. ….thinkin of sandwiching D1 ESP8266 with VS1053b + 2-4-inch LCD touch screen -Module-…for the cheapest streaming radio connected to a hifi amp…call it burgeradino…is it possible.?..i cant find any similar project sketch u know how to do it.?..does the D1 Esp32 accepts D1 ESP8266 sketches.?..vice versa

  37. if anybody have trouble uploading sketches to their WEMOS D1R1 or similar using the latest arduino ide with error message cxxabi_tweaks.h not present do this….copy cxxabi_tweaks.h from{ your drive]C:Documents and Settings{your pc name}Local SettingsApplication DataArduino15packagesesp8266toolsxtensa-lx106-elf-gcc1.20.0-26-gb404fb9-2xtensa-lx106-elfincludec++4.8.2xtensa-lx106-elfbits to C:Documents and Settings{your pc name}Local SettingsApplication DataArduino15packagesesp8266toolsxtensa-lx106-elf-gcc1.20.0-26-gb404fb9-2xtensa-lx106-elfincludec++4.8.2bits ….it took me a week to figure it out…finally the blink sketches worked…so i have a renewed my spirit for my ambitious WEB RADIO project…hehehe

  38. Hi there,

    Could I use this chip and create a web server on the device? I would like to have it to create a webserver that I can log onto to read certain data on my phone

  39. Hi. I've connect an oled 0.91 to an adrduinoo uno ind it works. The same project is not working on arduino UNO wifi . Any ideea?

Leave a Reply

Your email address will not be published. Required fields are marked *