So I finally outgrew the Arduino IDE. To be frank I outgrew it a few years ago and finally decided to try my favorite Eclipse with the Arduino plugin. I also wanted to program the ESP8266 under Eclipse with Arduino also. After many hours, installing and uninstalling four versions of Arduino, I eventually got it to work. Based on this experience I thought I would consolidate the many steps into a single location. Hope this helps others who want to use Eclipse with Arduino and the ESP8266
1. Download Eclipse bundle (includes Arduino plugin) from baeyens site. Install to root of C drive.
2. Download Arduino IDE v1.5.6-r2 from here . Install to root of C drive.
3. Download Python 2.7 from here and Install to root of C drive. Make sure Python runs by opening a cmd window and enter:
If it cannot find Python you might have to add the dir path to the PATH variable.
4. Install esp8266 software can be done in 2 ways:
If you have git installed do the following:
open cmd window and enter
cd c:\Arduino\hardware mkdir esp8266com cd esp8266com git clone https://github.com/esp8266/Arduino.git esp8266 cd esp8266/tools python get.py
If you do not have Git you can download the zip file from here.
open cmd window and enter
cd c:\Arduino\hardware mkdir esp8266com cd esp8266com mkdir esp8266
Unzip the downloaded file into “C:\Arduino\hardware\esp8266com\esp8266”
Go back to the cmd window and enter
cd esp8266/tools python get.py
5. Start Eclipse by clicking launcher.exe under “C:\eclipseArduino” and configure it. Use the following steps:
- Go to Window –> preferences –> Arduino
- Change “Private hardware path” to “C:\Arduino\hardware\esp8266com\esp8266” as shown below:
6. Now create a new project under File->New project
Pick the boards.txt at “C:\Arduino\hardware\esp8266com\esp8266”
Now you can pick your ESP board and other ESP configuration settings. A screenshot of mine is shown below:
7. Compile and upload. All done. Let me know if I missed anything here.
Including the std library so you can use vector/map/list etc.
Took me a while to fight with the IDE (which I lost) but eventually had to update the platform.txt at location C:\Arduino\hardware\esp8266com\esp8266 to add the directive -lstdc++ at the end of the compiler.c.elf.libs line. Line should look like:
compiler.c.elf.libs=-lm -lgcc -lhal -lphy -lpp -lnet80211 -llwip -lwpa -lcrypto -lmain -lwps -laxtls -lsmartconfig -lmesh -lstdc++
Without the library in place I would get the compiler error:
c:\arduino\hardware\esp8266com\esp8266\tools\xtensa-lx106-elf\xtensa-lx106-elf\include\c++\4.8.2\bits/stl_tree.h:1225: undefined reference to `std::_Rb_tree_increment(std::_Rb_tree_node_base const*)'
Collision problems with the Arduino Time library
If you have downloaded the Time library for Arduino that allows you to do thing such as time_t = now() etc. then you might experience a collision with the ESP8266 core time library. It gives errors such as:
esp8266/time.c:107:8: error: unknown type name 'time_t'
Seems the problem is the time.h and Time.h collide. The only way around this, at least the simplest I found that works, is to rename the Arduino library Time.h header file and references within library .cpp files to something other than Time.h. I renamed mine to TimeX.h.