loading

NodeMCU Dev Board is based on widely explored esp8266 System on Chip from Expressif. It combined features of WIFI accesspoint and station + microcontroller and uses simple LUA based programming language. ESP8266 NodeMCU offers-

--Arduino-like hardware IO

--Event-driven API for network applicaitons

--10 GPIOs D0-D10, PWM functionality, IIC and SPI communicaiton, 1-Wire and ADC A0 etc. all in one board

--Wifi networking (can be uses as access point and/or station, host a webserver), connect to internet to fetch or upload data.

--excellent few $ system on board for Internet of Things (IoT) projects.

Recently, there has been interest in programming ESP8266 systems using Arduino IDE. Programming, of ESP8266 using Arduino IDE is not very straight forward, until it is properly configured. Especially because, the Input and output pins have different mapping on NodeMCU than those on actual ESP8266 chip.

I had request about showing how to program ESP-12E NodeMCU using Arduino IDE. I struggled myself earlier in the beginning, so thought of making this Instructable for beginners. This is quick guide/tutorial for getting started with Arduino and ESP8266 NodeMCU V2 ESP-12Ewifi module. (I think, this method can be used for other NodeMCU boards too. (or only ESP8266 boards, but with necessary hardware modifications and using FTDI modules for programming- not covered in this tutorial because, this is only for NodeMCU dev boards).

This Instructable gives quick intro to-
1) Installing Arduino core for ESP8266 WiFi chip in Arduino IDE and Getting started with sketches written using Latest stable Arduino IDE 1.6.7

2) Run/modify basic LED blink sketch to blink onboard LED and/or externally connected LED at pin D0 or GPIO-16 as per the pin configuration mentioned here and here.

NOTE- To use NodeMCU V1 or V2 or V3 dev boards using Arduino IDE, we do not need to flash it with firmware using nodemcu flasher. It is required only if we intend to program NodeMCU using Lua script with esplorer etc.

I have other video published on getting started with NodeMCU and flashing NodeMCU firmware on following link https://www.youtube.com/watch?v=x7GzK7zHKOk

**Arduino logo and NodeMCU logo are their respective trademarks- logos shown in above image were taken from -https://github.com/nodemcu and https://www.arduino.cc/en/Main/Software

Step 1: NodeMCU ESP-12E Pin mapping

First and foremost word of - CAUTION !

* The ESP8266 chip requires 3.3V power supply voltage. It should not be powered with 5 volts like other arduino boards.

* NodeMCU ESP-12E dev board can be connected to 5Vusing micro USB connector or Vin pin available on board.

* The I/O pins of ESP8266 communicate or input/output max 3.3V only. i.e. the pins are NOT 5V tolerant inputs.

In case you have to interface with 5V I/O pins, you need to use level conversion system (either built yourself using resistor voltage divider or using ready to use level converters (e.g. these ones adafruit or aliexpress etc.).

-------------------------------------------------------------------------------------------------------------------------------------------------

The pin mapping of NodeMCU dev board are different from those of ESP8266 GPIOs. Attached images gives mapping of pins, source of images.

More information about pins is available on following links:

* Github - NodeMCU

* Github-esp8266/Arduino

<p>Hi i have error</p><p>esptool v0.4.9 - (c) 2014 Ch. Klippel &lt;ck@atelier-klippel.de&gt;</p><p>setting board to nodemcu</p><p>setting baudrate from 115200 to 115200</p><p>setting port from /dev/tty.usbserial to /dev/cu.wchusbserial1420</p><p>setting address from 0x00000000 to 0x00000000</p><p>espcomm_upload_file</p><p>espcomm_upload_mem</p><p>opening port /dev/cu.wchusbserial1420 at 115200</p><p>tcgetattr</p><p>tcsetattr</p><p>serial open</p><p>opening bootloader</p><p>resetting board</p><p>trying to connect</p><p>espcomm_send_command: sending command header</p><p>espcomm_send_command: sending command payload</p><p>trying to connect</p><p>espcomm_send_command: sending command header</p><p>espcomm_send_command: sending command payload</p><p>serialport_receive_C0: C4 instead of C0</p><p>trying to connect</p><p>espcomm_send_command: sending command header</p><p>espcomm_send_command: sending command payload</p><p>serialport_receive_C0: C4 instead of C0</p><p>resetting board</p><p>trying to connect</p><p>espcomm_send_command: sending command header</p><p>espcomm_send_command: sending command payload</p><p>trying to connect</p><p>espcomm_send_command: sending command header</p><p>espcomm_send_command: sending command payload</p><p>serialport_receive_C0: C4 instead of C0</p><p>trying to connect</p><p>espcomm_send_command: sending command header</p><p>espcomm_send_command: sending command payload</p><p>serialport_receive_C0: C4 instead of C0</p><p>resetting board</p><p>trying to connect</p><p>espcomm_send_command: sending command header</p><p>espcomm_send_command: sending command payload</p><p>trying to connect</p><p>espcomm_send_command: sending command header</p><p>espcomm_send_command: sending command payload</p><p>serialport_receive_C0: C4 instead of C0</p><p>trying to connect</p><p>espcomm_send_command: sending command header</p><p>espcomm_send_command: sending command payload</p><p>serialport_receive_C0: C4 instead of C0</p><p>warning: espcomm_sync failed</p><p>error: espcomm_open failed</p><p>error: espcomm_upload_mem failed</p>
never heard or experienced such errors. not sure what might be causing this. but just quick guess is...have you selected correct nodemcu board in boards manager?<br>have you installed esp8266 arduino core libraries properly?<br>is your usb cable good?<br>lastly do not connect it to usb hub.<br>good luck.
HI <br>have you installed esp8266 arduino core libraries properly? yes i installed libraries.<br>is your usb cable good?- good<br>thanks
esp communication error is mostly encountered by me when usb cable is not good, esp is connected to usb hub, improper driver, wrong board selected while selecting board in arduino ide. <br>check if you can see usb device in Windows device manager, try to change baud rate of your usb port, use short usb cable , do not connect via usb hub.<br>last option would be, try first to program usin esptool or lua loader, if it doesn't work even there then probably something is wrong in your hardware or in communication port. <br>I have a video on my youtube channel about getting started with nodemcu using esptool.<br>good luck
<p>good i'ble.Now after passing through everything ,</p><p>during uploading, i get this</p><p>warning: espcomm_sync failed</p><p>error: espcomm_open failed</p><p>error: espcomm_upload_mem failed.</p><p>what might be the reason , i am sure with the correctness of the serial port .</p>
<p>HI,</p><p>Very likely you have two (or more) Arduino-IDE/Serial monitor windows open.</p><p>Dave</p>
I remember having this error at some point but cannot recall correctly what I did to resolve it..<br>do you have anything connected to io pins of ur esp? especially D0 , if so just remove it for a while during programming. secondly, esp are power hungry devices... my esp shows errors when several sensors/peripherals are powered directly through nodemcu. just as a test, first try upload sketch on a bare board.<br>I hope this helps a bit. good luck
check your com port number and settings.
<p>if someone in the community could solve this,i would be grateful to them</p>
<p>Why is a current-limiting resistor not needed for the LED? The GPIOs are rated for 12mA and typical LEDs draw 20mA.</p>
<p>Looking at the schematic, you NEED a resistor, tho one onboard is only connected to the onboard LED.</p>
no, you do not need to do anything with Rst or Flash buttons, to program.
it is not required for D0 pin since there is an onboard resistor, as far as I know.<br>for other pins we will need a resistor.
<p>Hi,</p><p> I have already setup and tested a weather iot using NodeMCU but now i need an external battery supply. My electronics knowledge is rudimentary at best but can i use a 9v snap jack cable connected to a jack to micro usb cable that is connected to the NodeMCU as a power supply? Will the ams1117 take care of the step down for the 3.3v or will that like totally fry my nodeMCU board? <br></p>
I believe it should work by applying 9v through usb socket..but not sure. you also need to be very careful that you do not apply 9v to usb data pins.<br>other way is to apply 9v via Vin pin of nodemcu. to the best of my knowledge the voltage regulator should take care of stepping down voltage to 3.3v.<br>just a word of caution. ..I have confusion whether max voltage can be 5 v or 12v at Vin pin..because I read in some forums that we can apply max 5 v only to Vin pin. but my guess is 9v at Vin pin should work.<br>good luck.
<p>Thanks Electromania! *Keeping fingers crossed *</p>
<p>Sir when i press compile bottom on Arduino ID it showing following <br>error--- Error Compiling for board Node MCU 1.0(ESP-12E Modul).<br> Board nodemcuv2 (platform esp8266,package esp8266) is unknown<br>Error compiling for board ModeMCU 1.0 (ESP- 12E Module)</p><p>please help me</p>
do u see Nodemcu board in Boards Manager as shown in step 5. <br>If not, then seems you have not installed esp8266 core repositories as mentioned in previous steps.<br>secondly please remember to restart your Arduino IDE after installing esp8266 core libraries.
<p>I have the same problem (I think).</p><p>I do everything listed in the instructable, however when I plug the esp into a usb port, the IDE doesn't list it (no ports available). Am I missing a driver or something? I tried linux and windows.</p><p>If I randomly push the reset and flash buttons, both sometimes list a port, and I am able to upload a sketch, however when trying to open the serial monitor later, the port is no longer listed.</p><p>Someone please help :(</p>
esp is power hungry device. if ur pc detects esp for some period and dissappears later then- i noticed this issue if the usb cable lenght is too long or not good quality like those Blue colored usb cables commonly supplied with most of the Chinese web suppliers. when I used my samsung or nokia phone cable such issues were solved. <br>if you cannot detect the nodemcu at all..evenin device manger in windows system then probably you will need appropriate drivers. I have given links to drivers used by me on my github page. I have tested those on win xp..win7 and win 8.1 pc...all work perfectly. please follow my videos on youtube about installation procedure. it is probably given in video of getting started with arduino nano... chip is same in both cases.. ch340 I guess.<br>
Hello, I have tried and tried to load my NodeMCU to the board manager according to your direction but the ESP COMM option does not appear in Board Manager section upon restart. Any suggestion? Let me know if you need any other info to help you understand my issue. Thanks.
<p>Are you stuck at Step 4 ? </p><p>if so, make sure you are putting correct link http://arduino.esp8266.com/stable/package_esp8266com_index.json in the arduino preferences. Which version of arduino IDE are you using ? Try first exactly 1.6.7 version like i have used. once it works on this, then you can upgrade your Arduino IDE to latest version. or try to go to 1.6.5 version. i have followed the steps given in my instructable on 3 different PCs and they have worked perfectly for WinXP, Win 8.1 and Win 7. </p>
Thanks a lot for your rapid reply. Pardon my ignorance but how can I roll back my IDE version from 1.6.11 to 1.6.7? The only way I can figure is to uninstall the IDE entirely but won't doing so lose my sketchbook?
I generally take a copy of my Arduino folder libraries n sketchbook folder. then install arduino. later you can put back libraries n sketchbook folders.
<p>Hi,</p><p>I'd like to connect NodeMcu to my wifi and then when someone presses the button connected to NodeMCU that it triggers Raspberry Pi's script which runs Pushbullet notification that someone rang the doorbell and then takes the screenshot of the camera.</p><p>Second part with RPi I've done in Python and it's working fine, but only when pressing the button which is connected to RPi, now I'd like to get it wirelessly via NodeMCU which would somehow trigger over the wifi the RPi.</p><p>Is that possible, and how would you do it?</p><p>Thank you! :)</p>
<p>I believe it should be possible to do what you said. I have not yet explored this further. You can try to send UDP data to rpi or use a web server on nodemcu and let rpi read it... these are just suggestions.</p><p>i have been able to connect rpi to nodemcu via udp..but still to be explored. In few weeks i will upload instructable on this. may be that might somehow help you.</p>
I also have a D1 that is having the same issue. Thanks again.<br>
<p><a href="http://arduino.esp8266.com/stable/package_esp8266com_index.json">http://arduino.esp8266.com/stable/package_esp8266c...</a></p><p>i cant install this...i am getting error downloading message !</p>
try link of github. you don't have to download manually. it will be done automatically.u just have to insert link into arduino ide as shown in step 2.
<p>how to connect board arduino to nodemcu board? </p>
<p>I've been playing with an ESP12EV2 I got from Banggood and have struggled but been ultimately successful in creating a little web server that can turn the 2 LEDs on my board on and off and blink them. But success with the Arduino IDE had eluded me until I watched your video (so, Thanks!). I look at this little device as a bit of a treasure hunt. The actual developers are very stingy with information and the really detailed documents are in Chinese (which I do not read). So we hunt and peck and poke around and collaborate and try to make something work. I'm sure I can do cool things with one. There is only one thing that I cannot resolve: I cannot get my iPhone to reliably connect to the ESP when it is in SOFTAP mode. It will maybe connect once but then I have to erase the flash and re-load the code I have written. Then it will connect again, but only once. Eventually I will figure that one out too. Thanks again!</p>
<p>Thanks for the pinout &amp; schematic. I am using an ESP-12 V2 I got on <br>banggood.com and it has two LEDs and I don't know how many you ESP has <br>because your schematic shows only one. On my boards, the one in the <br>middle is D0 / GPIO16. There is another that blinks when the board is <br>being flashed and that one is D4 / GPIO2. The pin mapping is a little <br>confusing because what the pinout calls D0 is GPIO16 and 16 for the <br>Arduino IDE. Likewise, D4 on the pinout is GPIO2 and 2 for Arduino. <br>Live and learn.</p>
yes it is true...pinout differences between arduino and nodemcu and esp8266 gpio are all different. I too had lot of confusion in the beginning. <br>I have same board like yours and two leds onboard same like you. in sketch I just showed externally connected led because it is understood that there are two more leds onboard nodemcu, shown in video.<br>nevertheless, I always remain confused between pin mapping differences. so, as a quick guide I have given a table with pin mapping on my blog here... <br>http://theelectromania.blogspot.it/2016/02/how-to-program-esp8266-esp-12e-nodemcu.html?m=1<br><br>enjoy IoT...
your are absolutely right. I too believe this is like a intelligent black box... n probably it is much versatile n useful than what is generally mentioned on the suppliers website. documentation is scattered n confusing. <br>I think, not sure, your problem might be related to interfence from some other wifi devices...like router, mouse etc running at same channel as that of ur nodemcu. it took a month for me to realise that my newly purchased wireless mouse was interfering my all other wifi devices. <br>good luck...
<p>i have nodemcu. first i connected nodemcu to router.after that i disconnect that router. after some time i connect nodemcu to other router which is not have internet connection . so my nodemcu is not connect that router... </p><p>so please give me solution for that as soon as possible</p>
it should connect to otherone too... irrespective of whether it is connected to internet or not. please check your wifi ssid and password. <br>also try changing security type of router e.g. psk, tkip etc.
<p>now im not able to access the port option itself to select the port</p>
good to know... driver reinstalling worked. <br>you can skip connecting external led. just check if you Onboard led blinks.... if uploading is successful then it should work. are you putting correct pin no in your sketch?
check if you have drivers installed properly for usb to ttl converter you are using ...refer my latest instructable and youtube video where I have shown how to install drivers...<br>are you using nodemcu?
<p>i am using node mcu</p>
https://youtu.be/fZX9FQuNBdc<br><br>check this video for installing drivers...
<p>What if you only have the esp-12 board and not the nodeMCU board? Like the image below without the DHT sensor, I can program the other board (on the white breakout board) with no problem.</p><p>Thanks in advance if anyone has any input, I also have the resistor between GPIO15 and ground on both boards.</p>
<p>Sorry, I have not understood your question, you say that you can program white board. And both boards not nodemcu. you can program White board using Arduino IDE and Black board cannot ?</p><p>I think it is straight forward to program is using Arduino as long as you have USB to TTL converter and you have made necessary pin connections.</p>
<p>I guess that was confusing, but I can program the 8266 12, but when I wire up the 8266 12-E, I am unable to program it, and the one time I was successful, it knocked all my other wireless devices offline when it connected to my wireless network.</p>
sounds strange. did you try to reflash or reset your esp.
<p>nodemcu board is the best on the market right now in my opinion. for price and what it can do, there is just nothing else out there to even compete. </p>
<p>great tutorial, really helpful thanks :)</p>
<p>Very informative...Thanks!</p>
thanks for this great tutorial! <br>got one of those controllers around, time to play with it :)