Как добавить плату esp8266 в arduino ide
Перейти к содержимому

Как добавить плату esp8266 в arduino ide

  • автор:

Installing ESP8266 Board in Arduino IDE (Windows, Mac OS X, Linux)

The ESP8266 community created an add-on for the Arduino IDE that allows you to program the ESP8266 using the Arduino IDE and its programming language.

This tutorial shows how to install the ESP8266 board in Arduino IDE whether you’re using Windows, Mac OS X or Linux.

Watch the Video Tutorial

This tutorial is available in video format (watch below) and in written format (continue reading this page).

If you like the ESP8266 and want to build more projects, you can get my eBook: Home Automation using ESP8266.

Prerequisites: Arduino IDE Installed

Before starting this installation procedure, make sure you have the latest version of the Arduino IDE installed in your computer. If you don’t, uninstall it and install it again. Otherwise, it may not work.

Having the latest Arduino IDE software installed from arduino.cc/en/Main/Software, continue with this tutorial.

Do you need an ESP8266 board? You can buy it here.

Install ESP8266 Add-on in Arduino IDE

To install the ESP8266 board in your Arduino IDE, follow these next instructions:

Install ESP8266 Board add-on in Arduino IDE open preferences

Install ESP8266 Board add-on in Arduino IDE enter URL

Note: if you already have the ESP32 boards URL, you can separate the URLs with a comma as follows:

https://dl.espressif.com/dl/package_esp32_index.json, http://arduino.esp8266.com/stable/package_esp8266com_index.json

Install ESP8266 Board add-on in Arduino IDE Open boards manager

Install ESP8266 Board add-on in Arduino IDE search ESP8266

ESP8266 Board add-on in Arduino IDE installed

Testing the Installation

To test the ESP8266 add-on installation, let’s see if we can blink an LED with the ESP8266 using the Arduino programming language.

Parts Required

Here’s the hardware that you need to complete this project:

  • ESP8266 – read Best ESP8266 Wi-Fi Development Boards
  • LED
  • 330 Ohm resistor
  • Breadboard
  • Jumper wires

If you’re using an ESP8266-01, you also need an FTDI programmer to upload code.

You can use the preceding links or go directly to MakerAdvisor.com/tools to find all the parts for your projects at the best price!

Uploading the Sketch

Uploading the Sketch to the ESP-12E

If you’re using an ESP-12E NodeMCU Kit, uploading the sketch is very simple, since it has built-in programmer. Plug your board to your computer. Make sure you have the right board selected:

Install ESP8266 Board add-on in Arduino IDE select board

You also need to select the Port:

Install ESP8266 Board add-on in Arduino IDE select COM port

Then, copy the code provided:

/********* Rui Santos Complete project details at https://randomnerdtutorials.com *********/ int pin = 2; void setup() < // initialize GPIO 2 as an output. pinMode(pin, OUTPUT); >// the loop function runs over and over again forever void loop() < digitalWrite(pin, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(pin, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second >

Click the “Upload” button in the Arduino IDE and wait a few seconds until you see the message “Done uploading.” in the bottom left corner.

Done uploading sketch to ESP8266 using Arduino IDE

Uploading the Sketch to the ESP-01

Uploading code to the ESP-01 requires establishing a serial communication between your ESP8266 and a FTDI Programmer as shown in the schematic diagram below.

ESP8266 ESP-01 Uploading sketch with FTDI programmer Arduino IDE

The following table shows the connections you need to make between the ESP8266 and the FTDI programmer.

ESP8266 FTDI programmer
RX TX
TX RX
CH_PD 3.3V
GPIO 0 GND
VCC 3.3V
GND GND

If you have a brand new FTDI Programmer and you need to install your FTDI drivers on Windows PC, visit this website for the official drivers: http://www.ftdichip.com/Drivers/VCP.htm.

Then, you just need to connect the FTDI programmer to your computer, and upload the sketch to your ESP8266 board. You should see the “Done Uploading” message after a few seconds.

Schematic

If you’re using an ESP8266-12E

Connect an LED to your ESP8266, as shown in the following schematic diagram. The LED should be connected to GPIO 2 (D4).

ESP8266 NodeMCU board Blinking an LED with Arduino IDE

If you’re using an ESP8266-01

If you’re using the ESP8266-01 assemble the following circuit.

ESP8266 ESP-01 Blinking an LED with Arduino IDE

If everything went well, your LED should be blinking every 1 second.

Troubleshooting

If you try to upload a new sketch to your ESP8266 and you get this error message “esptool.FatalError: Failed to connect to ESP8266: Timed out waiting for packet header“. It means that your ESP8266 is not in flashing/uploading mode.

esptool.FatalError Failed to connect to ESP8266: Timed out waiting for packet header

Having the right board name and COM port selected, follow these steps:

  • Hold-down the “BOOT/FLASH” button in your ESP8266 development board
  • Press the “Upload” button in the Arduino IDE to upload your sketch:
  • When you see the “Connecting….” message in your Arduino IDE, release the finger from the “BOOT/FLASH” button
  • After that, you should see the “Done uploading” message

Your ESP8266 should have the new sketch running. Press the “ENABLE/RESET” button to restart the ESP8266 and run the new uploaded sketch.

Wrapping Up

This is a quick guide that illustrates how to prepare your Arduino IDE for the ESP8266 on a Windows PC, Mac OS X, or Linux computer.

That’s it, you’re ready to start building your own IoT projects with the ESP8266!

  • Home Automation Using ESP8266
  • ESP8266 Web Server Step-by-step
  • ESP8266 Wi-Fi Button – DIY Amazon Dash Button Clone
  • ESP8266 Daily Task – Publish Temperature Readings to ThingSpeak
  • ESP8266 Weather Forecaster
  • Nextion Display with ESP8266 – Touchscreen User Interface for Node-RED
  • More ESP8266 projects…

Do you have any questions? Leave a comment below!

Thanks for reading. If you like this post probably you might like my next ones, so subscribe to my newsletter.

[eBook] Build Web Servers with ESP32 and ESP8266 (2nd Edition)

Build Web Server projects with the ESP32 and ESP8266 boards to control outputs and monitor sensors remotely. Learn HTML, CSS, JavaScript and client-server communication protocols DOWNLOAD »

Build Web Server projects with the ESP32 and ESP8266 boards to control outputs and monitor sensors remotely. Learn HTML, CSS, JavaScript and client-server communication protocols DOWNLOAD »

Recommended Resources

Build a Home Automation System from Scratch » With Raspberry Pi, ESP8266, Arduino, and Node-RED.

Home Automation using ESP8266 eBook and video course » Build IoT and home automation projects.

Arduino Step-by-Step Projects » Build 25 Arduino projects with our course, even with no prior experience!

What to Read Next…

Build an All-in-One ESP32 Weather Station Shield

ESP8266 NodeMCU MQTT Publish BME280 Sensor Readings Arduino IDE

ESP8266 NodeMCU MQTT – Publish BME280 Sensor Readings (Arduino IDE)

ESP8266 DHT11/DHT22 Temperature and Humidity Web Server with Arduino IDE

Enjoyed this project? Stay updated by subscribing our newsletter!

70 thoughts on “Installing ESP8266 Board in Arduino IDE (Windows, Mac OS X, Linux)”

Hi
I need some help…!
I want o using esp8266 esp-07 standalone and program it with the arduino ids but i can’t even compile the examples with the ide and I fallow all the instructions in the github website and also your website and the error is compile error please help me how can i fix this problem.
thankes alot Reply

Can you see the ESP8266 boards in the tools section? Have you restarted your Arduino IDE? Which error is occurring? Reply

Hi
I need some help…!
I want o using esp8266 esp-07 standalone and program it with the arduino ids but i can’t even compile the examples with the ide and I fallow all the instructions in the github website and also your website and the error is compile error please help me how can i fix this problem.
thankes alot Reply

hola confirma que no tengas otra librería declarada, me pasaba lo mismo con un programa que usaba anteriormente y al no tener instalada esa librería en especifico, no podía compilar. #include la idea es que solo incluyas esa librería si tienes otra, elimínala y haz la prueba para ver si compila. Reply

sami alfarra
please where is code Rui Reply
It’s on this exact page Reply
suppaman80

hi rui
but for start the led blink i remove the gpio 0 from 3v
the image is incorrect ��
thankes alot for all Reply

The GPIO 0 connected to VCC is to make that your ESP doesn’t boot in flash/upload mode. Thanks!
Rui Reply

Oscar Mayorquin

Hi Rui When I try to upload the code, the compilation give me some errors warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed Do you know because this? Reply

Hi Oscar,
Your ESP8266 is not in flash mode or it’s having a power issue.
Can you read this troubleshooting guide? https://randomnerdtutorials.com/esp8266-troubleshooting-guide/ I hope this helps,
Rui Reply

Oscar Mayorquin

Thanks Rui, I’ve to flash my ESP again and upload the code, but the LED isn’t blinking, and I really doing step by step. Reply

One note, as someone who just tried this, and…. bombed… This will require one of the 1.6.x or newer versions of the Arduino IDE.. I’m running a UBUNTU desktop, and it’s version for the IDE is 1.0.5… Not going to work! (and for some reason, they install the IDE in an odd fashion, making it tougher to install the newer version.) Reply

Hello is there a way to password protect my esp’s access point. Thanks. Reply
Blagoja Andonoski

Hello MR. Rui Santos
I am a novice at Arduino projects.
Install ESP8266 according to your instructions and uplaud to get the following information:
I am a novice at Arduino projects.
Install ESP8266 according to your instructions and uplaud to get the following information:
I am a novice at Arduino projects.
Install ESP8266 according to your instructions and uplaud to get the following information:
warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed
error: espcomm_upload_mem failed Please help. Best Regaeds Blagoja Andonoski Reply

This might help: https://randomnerdtutorials.com/esp8266-troubleshooting-guide/ Reply

Sketch uses 222,241 bytes (44%) of program storage space. Maximum is 499,696 bytes.
Global variables use 31,576 bytes (38%) of dynamic memory, leaving 50,344 bytes for local variables. Maximum is 81,920 bytes.
warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed
error: espcomm_upload_mem failed Reply

Your ESP is not establishing a serial communication with your computer, so it can’t upload any code.
I hope this post helps: https://randomnerdtutorials.com/esp8266-troubleshooting-guide/ Reply

Hi Rui! I have NodeMCU installed on my ESP-01.
Can’t I use Arduino IDE with it? If I can then how? if I can’t than what shall I do to be able to use Arduino IDE? Greeings,
Prithul Reply

You can use the Arduino IDE, if you follow this tutorial will overwrite the NodeMCU firmware with the Arduino IDE blink sketch Reply

Thank you very much for this tutorial. Reply
You’re welcome,
Rui Reply

Hi Rui Santos,
When I go to boards manager it says: Error downloading http://arduino.esp8266.com/stable/package_esp8266com_index.json and doesn’t download anything. I am using OS X El Capitan. I’ve try in windows machine and it works…
Do you think is some issue with the mac machine?
Regards Leandro Reply

SHEHU BELLO

Thank you Mr.Rui. I followed your instructions in this tutorial, but I have this error message: “/bin/xtensa-1×106-elf-g++ ” not found
Error compiling for board Generic ESP6266 module
Build options changed, rebuilding all
exec: “/bin/xtensa-lx106-elf-g++”: file does not exist
Error compiling for board Generic ESP8266 Module. This report would have more information with
“Show verbose output during compilation”
option enabled in File -> Preferences. Reply

Neil lucas

Hi I want to use 2 esp s and two arduino one of them will act as a server and the other is client to control my combi using a relay. One of them will get the temperature of my room by means of dht22 and send it to other when it’s below the temperature I want the other esp will take the information and trigger the relay. How can I do this? Reply

Hi Neil,
I don’t have any tutorials on that exact subject.
Thanks,
Rui Reply
soard raspi
My LED does not blink. Please help me with this. Reply

You didn’t provide any details, so it can be anything… Please read this troubleshooting guide that might help: https://randomnerdtutorials.com/esp8266-troubleshooting-guide/ Reply

Found your site. And have an Adafruit ESP8266 board (https://www.adafruit.com/product/2821).
Loaded your code and it works straight away!
Don’t need any external LEDs, your code will turn the red & blue LEDs off and on. Just need to reverse the HIGH / LOW in the socket On / Off calls.
Thanks for the excellent post! Mike Reply

I’m using the Arduino IDE version 1.8.5 with a Windows computer, Arduino UNO, and an ESP8266-01. I tried uploading the blink_led_8266 sketch. The IDE keeps reporting that it “can not compile”. I can’t figure out what is going on. When I go back to an old version IDE I can upload sketches without any problem. Any ideas? Reply

Sara Santos

Hi Robert.
Have you installed the ESP8266 board in the new version of Arduino IDE 1.8.5?
Having two versions of Arduino IDE may cause conflicts, because you may think you’re running one version instead of the other.
You need to install the ESP8266 board in both versions, if you want to keep them both installed. Reply

Hi Sara,
I installed the Arduino IDE 1.8.5 on another computer with Windows 10.
The error message that I’m getting is as follows:
Warning: espcomm_send_command: wrong direction/command:
0x00 0x8, expected 0x01 0x08
Warning: espcomm_sync failed
Error: espcomm_open failed
Error: espcomm_upload_mem failed I get the Arduino and the ESP8266 to respond to the uploading of the sketch by seeing the Arduino led flash and also the blue led on the ESP8266 flash. Where do I go from here? I’m going to order an FTDI programmer to see if that makes a difference rather then using the Arduino UNO.
Let me know what you think.
Thank you. Reply

Sara Santos

I would recommend using an FTDI, and that should solve your problem, but an Arduino Uno should also work.
That error means that your computer is not making a serial connection with your ESP8266.
You need to double check the TX and RX connections.
You might also need to reboot your ESP while GPIO 0 is connected to GND, to ensure that your ESP boots in uploading mode.
I hope this helps. Reply

Zenilkumar vaghasiya
thank you .you solve my problem Reply
Mihai Tache
Hi, Why I can’t select any port in the “Tool” menu? Reply
Sara Santos

Hi.
Please read our troubleshooting guide bullet 6 (this is for ESP32, but it also applies to ESP8266): https://randomnerdtutorials.com/esp32-troubleshooting-guide/
I hope this helps.
Regards,
Sara Reply

Mihai Tache

Great! Thank you very much!
The thing is my laptop said it was downloading something the first time I plugged the board, but I didn’t check what the result was. Thanks again! Mihai Reply

James T Cullins

Rui,
I am having trouble getting the ESp8266 board manager to load.
I get this error:
Error downloading http://arduino.esp8266.com/stable/package_esp8266com_index.json
I am running ver 1.8.9
I have re-booted IDE and even the computer, still the same.
I loaded the ESP32 board manager and it worked fine. Reply

Steve Greenfield

Did you ever figure this out? I had no problem with the ESP32 board manager, but the same fail as you for ESP8266 board manager. Reply

Joel Solórzano Ochoa
Thank so much. God bless y’all. Reply
Larry Fostano

Ok I have tried everything under the sun(internet searches) I keep getting the same message Arduino: 1.8.13 (Mac OS X), Board: “NodeMCU 1.0 (ESP-12E Module), 80 MHz, Flash, Disabled (new can abort), All SSL ciphers (most compatible), 4MB (FS:none OTA:~1019KB), v2 Lower Memory, Disabled, None, Only Sketch, 57600” /private/var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/AppTranslocation/898E1FD5-7C13-486F-8EB4-BF2FCC9AB98A/d/Arduino.app/Contents/Java/arduino-builder -dump-prefs -logger=machine -hardware /private/var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/AppTranslocation/898E1FD5-7C13-486F-8EB4-BF2FCC9AB98A/d/Arduino.app/Contents/Java/hardware -hardware /Users/Owner/Library/Arduino15/packages -tools /private/var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/AppTranslocation/898E1FD5-7C13-486F-8EB4-BF2FCC9AB98A/d/Arduino.app/Contents/Java/tools-builder -tools /private/var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/AppTranslocation/898E1FD5-7C13-486F-8EB4-BF2FCC9AB98A/d/Arduino.app/Contents/Java/hardware/tools/avr -tools /Users/Owner/Library/Arduino15/packages -built-in-libraries /private/var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/AppTranslocation/898E1FD5-7C13-486F-8EB4-BF2FCC9AB98A/d/Arduino.app/Contents/Java/libraries -libraries /Users/Owner/Documents/Arduino/libraries -fqbn=esp8266:esp8266:nodemcuv2:xtal=80,vt=flash,exception=disabled,ssl=all,eesz=4M,ip=lm2f,dbg=Disabled,lvl=None____,wipe=none,baud=57600 -vid-pid=0000_0000 -ide-version=10813 -build-path /var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/arduino_build_967711 -warnings=default -build-cache /var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/arduino_cache_622285 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.mkspiffs.path=/Users/Owner/Library/Arduino15/packages/esp8266/tools/mkspiffs/2.5.0-4-b40a506 -prefs=runtime.tools.mkspiffs-2.5.0-4-b40a506.path=/Users/Owner/Library/Arduino15/packages/esp8266/tools/mkspiffs/2.5.0-4-b40a506 -prefs=runtime.tools.python3.path=/Users/Owner/Library/Arduino15/packages/esp8266/tools/python3/3.7.2-post1 -prefs=runtime.tools.python3-3.7.2-post1.path=/Users/Owner/Library/Arduino15/packages/esp8266/tools/python3/3.7.2-post1 -prefs=runtime.tools.xtensa-lx106-elf-gcc.path=/Users/Owner/Library/Arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506 -prefs=runtime.tools.xtensa-lx106-elf-gcc-2.5.0-4-b40a506.path=/Users/Owner/Library/Arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506 -prefs=runtime.tools.mklittlefs.path=/Users/Owner/Library/Arduino15/packages/esp8266/tools/mklittlefs/2.5.0-4-69bd9e6 -prefs=runtime.tools.mklittlefs-2.5.0-4-69bd9e6.path=/Users/Owner/Library/Arduino15/packages/esp8266/tools/mklittlefs/2.5.0-4-69bd9e6 -verbose /Users/Owner/Documents/Arduino/sketch_jul17cb/sketch_jul17cb.ino
/private/var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/AppTranslocation/898E1FD5-7C13-486F-8EB4-BF2FCC9AB98A/d/Arduino.app/Contents/Java/arduino-builder -compile -logger=machine -hardware /private/var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/AppTranslocation/898E1FD5-7C13-486F-8EB4-BF2FCC9AB98A/d/Arduino.app/Contents/Java/hardware -hardware /Users/Owner/Library/Arduino15/packages -tools /private/var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/AppTranslocation/898E1FD5-7C13-486F-8EB4-BF2FCC9AB98A/d/Arduino.app/Contents/Java/tools-builder -tools /private/var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/AppTranslocation/898E1FD5-7C13-486F-8EB4-BF2FCC9AB98A/d/Arduino.app/Contents/Java/hardware/tools/avr -tools /Users/Owner/Library/Arduino15/packages -built-in-libraries /private/var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/AppTranslocation/898E1FD5-7C13-486F-8EB4-BF2FCC9AB98A/d/Arduino.app/Contents/Java/libraries -libraries /Users/Owner/Documents/Arduino/libraries -fqbn=esp8266:esp8266:nodemcuv2:xtal=80,vt=flash,exception=disabled,ssl=all,eesz=4M,ip=lm2f,dbg=Disabled,lvl=None____,wipe=none,baud=57600 -vid-pid=0000_0000 -ide-version=10813 -build-path /var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/arduino_build_967711 -warnings=default -build-cache /var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/arduino_cache_622285 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.mkspiffs.path=/Users/Owner/Library/Arduino15/packages/esp8266/tools/mkspiffs/2.5.0-4-b40a506 -prefs=runtime.tools.mkspiffs-2.5.0-4-b40a506.path=/Users/Owner/Library/Arduino15/packages/esp8266/tools/mkspiffs/2.5.0-4-b40a506 -prefs=runtime.tools.python3.path=/Users/Owner/Library/Arduino15/packages/esp8266/tools/python3/3.7.2-post1 -prefs=runtime.tools.python3-3.7.2-post1.path=/Users/Owner/Library/Arduino15/packages/esp8266/tools/python3/3.7.2-post1 -prefs=runtime.tools.xtensa-lx106-elf-gcc.path=/Users/Owner/Library/Arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506 -prefs=runtime.tools.xtensa-lx106-elf-gcc-2.5.0-4-b40a506.path=/Users/Owner/Library/Arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506 -prefs=runtime.tools.mklittlefs.path=/Users/Owner/Library/Arduino15/packages/esp8266/tools/mklittlefs/2.5.0-4-69bd9e6 -prefs=runtime.tools.mklittlefs-2.5.0-4-69bd9e6.path=/Users/Owner/Library/Arduino15/packages/esp8266/tools/mklittlefs/2.5.0-4-69bd9e6 -verbose /Users/Owner/Documents/Arduino/sketch_jul17cb/sketch_jul17cb.ino
Using board ‘nodemcuv2’ from platform in folder: /Users/Owner/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.0
Using core ‘esp8266’ from platform in folder: /Users/Owner/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.0
/Users/Owner/Library/Arduino15/packages/esp8266/tools/python3/3.7.2-post1/python3 /Users/Owner/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.0/tools/makecorever.py –build_path /var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/arduino_build_967711 –platform_path /Users/Owner/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.0 –version unix-2.6.0
fatal: not a git repository (or any of the parent directories): .git
Detecting libraries used…
/Users/Owner/Library/Arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/xtensa-lx106-elf-g++ -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ -I/Users/Owner/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.0/tools/sdk/include -I/Users/Owner/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.0/tools/sdk/lwip2/include -I/Users/Owner/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.0/tools/sdk/libc/xtensa-lx106-elf/include -I/var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/arduino_build_967711/core -c -w -Os -g -mlongcalls -mtext-section-literals -fno-rtti -falign-functions=4 -std=gnu++11 -ffunction-sections -fdata-sections -fno-exceptions -DNEW_OOM_ABORT -w -x c++ -E -CC -DNONOSDK22x_191024=1 -DF_CPU=80000000L -DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0 -DARDUINO=10813 -DARDUINO_ESP8266_NODEMCU -DARDUINO_ARCH_ESP8266 “-DARDUINO_BOARD=\”ESP8266_NODEMCU\”” -DFLASHMODE_DIO -DESP8266 -I/Users/Owner/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.0/cores/esp8266 -I/Users/Owner/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.0/variants/nodemcu /var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/arduino_build_967711/sketch/sketch_jul17cb.ino.cpp -o /dev/null -DARDUINO_LIB_DISCOVERY_PHASE
Generating function prototypes…
/Users/Owner/Library/Arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/xtensa-lx106-elf-g++ -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ -I/Users/Owner/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.0/tools/sdk/include -I/Users/Owner/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.0/tools/sdk/lwip2/include -I/Users/Owner/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.0/tools/sdk/libc/xtensa-lx106-elf/include -I/var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/arduino_build_967711/core -c -w -Os -g -mlongcalls -mtext-section-literals -fno-rtti -falign-functions=4 -std=gnu++11 -ffunction-sections -fdata-sections -fno-exceptions -DNEW_OOM_ABORT -w -x c++ -E -CC -DNONOSDK22x_191024=1 -DF_CPU=80000000L -DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0 -DARDUINO=10813 -DARDUINO_ESP8266_NODEMCU -DARDUINO_ARCH_ESP8266 “-DARDUINO_BOARD=\”ESP8266_NODEMCU\”” -DFLASHMODE_DIO -DESP8266 -I/Users/Owner/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.0/cores/esp8266 -I/Users/Owner/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.0/variants/nodemcu /var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/arduino_build_967711/sketch/sketch_jul17cb.ino.cpp -o /var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/arduino_build_967711/preproc/ctags_target_for_gcc_minus_e.cpp -DARDUINO_LIB_DISCOVERY_PHASE
/private/var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/AppTranslocation/898E1FD5-7C13-486F-8EB4-BF2FCC9AB98A/d/Arduino.app/Contents/Java/tools-builder/ctags/5.8-arduino11/ctags -u –language-force=c++ -f – –c++-kinds=svpf –fields=KSTtzns –line-directives /var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/arduino_build_967711/preproc/ctags_target_for_gcc_minus_e.cpp
Compiling sketch…
/Users/Owner/Library/Arduino15/packages/esp8266/tools/python3/3.7.2-post1/python3 /Users/Owner/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.0/tools/signing.py –mode header –publickey /Users/Owner/Documents/Arduino/sketch_jul17cb/public.key –out /var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/arduino_build_967711/core/Updater_Signing.h
/Users/Owner/Library/Arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/xtensa-lx106-elf-g++ -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ -I/Users/Owner/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.0/tools/sdk/include -I/Users/Owner/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.0/tools/sdk/lwip2/include -I/Users/Owner/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.0/tools/sdk/libc/xtensa-lx106-elf/include -I/var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/arduino_build_967711/core -c -Os -g -mlongcalls -mtext-section-literals -fno-rtti -falign-functions=4 -std=gnu++11 -MMD -ffunction-sections -fdata-sections -fno-exceptions -DNEW_OOM_ABORT -DNONOSDK22x_191024=1 -DF_CPU=80000000L -DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0 -DARDUINO=10813 -DARDUINO_ESP8266_NODEMCU -DARDUINO_ARCH_ESP8266 “-DARDUINO_BOARD=\”ESP8266_NODEMCU\”” -DFLASHMODE_DIO -DESP8266 -I/Users/Owner/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.0/cores/esp8266 -I/Users/Owner/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.0/variants/nodemcu /var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/arduino_build_967711/sketch/sketch_jul17cb.ino.cpp -o /var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/arduino_build_967711/sketch/sketch_jul17cb.ino.cpp.o
Compiling libraries…
Compiling core…
Using precompiled core: /var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/arduino_cache_622285/core/core_38d1b48b8c77fb185041ca4ab7d7c526.a
Linking everything together…
/Users/Owner/Library/Arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/xtensa-lx106-elf-gcc -CC -E -P -DVTABLES_IN_FLASH /Users/Owner/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.0/tools/sdk/ld/eagle.app.v6.common.ld.h -o /var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/arduino_build_967711/local.eagle.app.v6.common.ld
/Users/Owner/Library/Arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/xtensa-lx106-elf-gcc -fno-exceptions -DNEW_OOM_ABORT -Wl,-Map -Wl,/var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/arduino_build_967711/sketch_jul17cb.ino.map -g -Os -nostdlib -Wl,–no-check-sections -u app_entry -u _printf_float -u _scanf_float -Wl,-static -L/Users/Owner/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.0/tools/sdk/lib -L/Users/Owner/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.0/tools/sdk/lib/NONOSDK22x_191024 -L/Users/Owner/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.0/tools/sdk/ld -L/Users/Owner/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.0/tools/sdk/libc/xtensa-lx106-elf/lib -Teagle.flash.4m.ld -Wl,–gc-sections -Wl,-wrap,system_restart_local -Wl,-wrap,spi_flash_read -o /var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/arduino_build_967711/sketch_jul17cb.ino.elf -Wl,–start-group /var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/arduino_build_967711/sketch/sketch_jul17cb.ino.cpp.o /var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/arduino_cache_622285/core/core_38d1b48b8c77fb185041ca4ab7d7c526.a -lhal -lphy -lpp -lnet80211 -llwip2-536-feat -lwpa -lcrypto -lmain -lwps -lbearssl -laxtls -lespnow -lsmartconfig -lairkiss -lwpa2 -lstdc++ -lm -lc -lgcc -Wl,–end-group -L/var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/arduino_build_967711
/Users/Owner/Library/Arduino15/packages/esp8266/tools/python3/3.7.2-post1/python3 /Users/Owner/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.0/tools/elf2bin.py –eboot /Users/Owner/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.0/bootloaders/eboot/eboot.elf –app /var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/arduino_build_967711/sketch_jul17cb.ino.elf –flash_mode dio –flash_freq 40 –flash_size 4M –path /Users/Owner/Library/Arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin –out /var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/arduino_build_967711/sketch_jul17cb.ino.bin
Creating BIN file “/var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/arduino_build_967711/sketch_jul17cb.ino.bin” using “/var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/arduino_build_967711/sketch_jul17cb.ino.elf”
/Users/Owner/Library/Arduino15/packages/esp8266/tools/python3/3.7.2-post1/python3 /Users/Owner/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.0/tools/signing.py –mode sign –privatekey /Users/Owner/Documents/Arduino/sketch_jul17cb/private.key –bin /var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/arduino_build_967711/sketch_jul17cb.ino.bin –out /var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/arduino_build_967711/sketch_jul17cb.ino.bin.signed –legacy /var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/arduino_build_967711/sketch_jul17cb.ino.bin.legacy_sig
/Users/Owner/Library/Arduino15/packages/esp8266/tools/python3/3.7.2-post1/python3 /Users/Owner/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.0/tools/sizes.py –elf /var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/arduino_build_967711/sketch_jul17cb.ino.elf –path /Users/Owner/Library/Arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin
Executable segment sizes:
IROM : 228344 – code in flash (default or ICACHE_FLASH_ATTR)
IRAM : 26556 / 32768 – code in IRAM (ICACHE_RAM_ATTR, ISRs…)
DATA : 1240 ) – initialized variables (global, static) in RAM/HEAP
RODATA : 1520 ) / 81920 – constants (global, static) in RAM/HEAP
BSS : 24896 ) – zeroed variables (global, static) in RAM/HEAP
/Users/Owner/Library/Arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/xtensa-lx106-elf-size -A /var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/arduino_build_967711/sketch_jul17cb.ino.elf
Sketch uses 257660 bytes (24%) of program storage space. Maximum is 1044464 bytes.
Global variables use 27656 bytes (33%) of dynamic memory, leaving 54264 bytes for local variables. Maximum is 81920 bytes.
/Users/Owner/Library/Arduino15/packages/esp8266/tools/python3/3.7.2-post1/python3 /Users/Owner/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.0/tools/upload.py –chip esp8266 –port /dev/cu.Bluetooth-Incoming-Port –baud 57600 flash_id –end –chip esp8266 –port /dev/cu.Bluetooth-Incoming-Port –baud 57600 –before default_reset –after hard_reset write_flash 0x0 /var/folders/b0/79htx0t55l507ss77m0grkk40000gp/T/arduino_build_967711/sketch_jul17cb.ino.bin –end
esptool.py v2.7
Serial port /dev/cu.Bluetooth-Incoming-Port
Connecting…….._____….._____….._____….._____….._____….._____…..____Traceback (most recent call last):
File “/Users/Owner/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.0/tools/upload.py”, line 25, in
esptool.main(fakeargs)
File “/Users/Owner/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.0/tools/esptool/esptool.py”, line 2841, in main
esp.connect(args.before)
File “/Users/Owner/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.0/tools/esptool/esptool.py”, line 483, in connect
raise FatalError(‘Failed to connect to %s: %s’ % (self.CHIP_NAME, last_error))
esptool.FatalError: Failed to connect to ESP8266: Timed out waiting for packet header
esptool.FatalError: Failed to connect to ESP8266: Timed out waiting for packet header _ Reply

If the port is correct press the boot button (the other side of Reset) until you have connection, then release it. Reply

hello i want to make a car using esp8266 E12 by controlling using phone gestures
is there is any possible code for it …….. Reply

Sara Santos
Hi.
We don’t have any code for that.
Regards,
Sara Reply
Steve Greenfield

I have never gotten this to work.
Error downloading http://arduino.esp8266.com/stable/package_esp8266com_index.json Arduino 1.8.8
Windows 10
Rebooted, upgraded Arduino (started trying to use this a while ago), no change. Same error every time I start up the Arduino IDE. What am I doing wrong? Reply

Sara Santos
Steve Greenfield

I had not installed the ESP32 yet, so I went ahead and used that page to do so. It worked.
I followed the instructions to the letter for ESP8266. I even deleted the line that already had http://arduino.esp8266.com/stable/package_esp8266com_index.json in it and copy-pasted it again from the website, this time at the end of the list.
Same result –
Error Downloading http://arduino.esp8266.com/stable/package_esp8266com_index.json And as before, in Boards Manager, all I see for ESP8266 is the SparkFun stuff. I’ve tried turning off my VPN, rebooting Arduino IDE, rebooting Windows, tried at home, tried using my cell phone as a WiFi hotspot. Always the same, but only with this. Thank you, Reply

Same problem, if you have any solution for this problem please share. Thank you. Reply
Sara Santos

Hello I am using ESP 8266 with Cayenne MQTT ESP8266 library on Arduino ide when I upload code, it connect with Wi-Fi and just run for 2 to 3 min and after that Wi-Fi connection and the code all just stop and ESP run its led blink code which I first run on it. kindly anyone tell me what I do. Reply

Omar Alkousa

Hello Rui…!
Hello Sara…!
Thanks for this great tutorial.
I’m using ESP-01. The code and everything works well. But only after plug out/in the CH_EN pin twice. and then the blue led of the board will slightly shine.
Is there any explanation?
Thanks in advance!!
Best regards. Omar Reply

Hi There I have still not heard re the problem I am having so just can use the esp8266 – uploading your test program produces a message saying “hard resetting via RTS pin” – this message never clears so I cant continue – can you help please
Malcolm Reply

Sara Santos

Hi Malcom.
That’s the usual message that you get after uploading the code.
Simply press the board RST button so that it starts running the code from the start.
Regards,
Sara Reply

Frank De Hert

Hi Rui & Sara,
I’m trying to get this to work, but something’s off.
I loaded the libraries (add ZIP library) but when I want to install the ESP Daily Task library (“esp daily task” in edit box), the Library Manager window stays blank. Tried restarting the IDE to no avail. Is there something I’m missing?
Thanks in advance for your reaction.
Kind regards,
Frank Reply

Sara Santos

Hi.
Alternatively, you cand download the library in this link:https://github.com/RuiSantosdotme/ESPDailyTask/archive/master.zip
Then, go to Sketch > Library > Add . ZIP folder and select the downloaded .zip folder.
Regards,
Sara Reply

Frank De Hert

Hi Sara,
When I do that I get the message: “A library named ESPDailyTask-master already exists”
When I open the boards manager I get: “Could not find boards.txt in C:\Users\Frank\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6. Is it pre-1.5?”
There is a 1.0.4 directory in which the boards.txt file is present, but there are no entries for the ESP8266 in that file.
In the 1.0.4 directory there are a bunch of subdirectories (cares, libraries, tools, variants) and some files (boards.txt, platform.txt, programmers.txt). In the 1.0.6 directory just one subdirectory (libraries), in which there is a path with empty subdirectories (except for a single subdirectory: C:\Users\Frank\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\ESP32\examples\Camera\CameraWebServer-the 4 Camerwebserver files-).
If I UNZIP the library file there’s not much in there: 2 subdirectories (examples and src) and 3 files: keywords.txt, library.properties, README.adoc.
What would be the next step?
Thanks in advance.
Regards,
Frank Reply

Frank De Hert
Hi,
Any thoughts?
Problem persists. Regards,
Frank Reply
Sara Santos

Hi.
Are you sure you don’t have the library already installed?
That’s what the error message is saying.
If you are not able to solve the issue, it is better to uninstall Arduino IDE, delete all related folders, and try to install everything from the start.
Regards,
Sara

Frank De Hert

Hi,
The error message says that the library is already installed.
I have uninstalled the Arduino IDE, removed all directories and entries in the Registry. Reinstalled the IDE (version 1.8.15) and went through all the steps above. When entering “esp daily task” in the library manager I still get a blank screen.
I have no idea what to do next…
Regards,
Frank Reply

Sara Santos

Hi again.
As I’ve told you, you need to install the library like this:
Download the library here:https://github.com/RuiSantosdotme/ESPDailyTask/archive/master.zip
Then, go to Sketch > Library > Add . ZIP folder and select the downloaded .zip folder.
Then, just restart your Arduino IDE.
When compiling or uploading the code, ensure you have an ESP8266 board selected in Tools > Boards.
Regards,
Sara Reply

Frank De Hert

Yes, I keep doing that and I invariably get the message: “A library named ESPDailyTask-master already exists”.
With always the same result: a blank screen in the Library Manager.
Regards,
Frank Reply

Ion Gheorghe

Hi Frank,
THE HARD WAY,
I had some problems compiling a program when the compile complain about a library.
What i did , took longer but solved the problem.
Here you find ALL arduino versions.
Select one version previous yours, which ever you want.
Download and start install.
You get the message that the present version will be removed.
Say YES
Install older version.
Do not compile to waste your time.
Now, download the version you had, and do again a clean install (remove old and install new)
Install library as Sara sugested.
Bingo, no more errors messages.
I had the problem, before. Now no more.
Also, during the development of the project avoid doing an upgrade of software or boards.
If it is compile, don’t change until project is finished.
Good luck. Reply

Behdad Sadeghian Pour
hi, download speed is very very low, how can i solve it? my network doesnt have a problem Reply
Pertti Ritala

Hi. There are cheap ESP8266 modules in the market that wanted to use as controllers of other RF modules. How can I make sure in such case that wifi does not cause any trouble or is preferably totally shut down? Reply

Hi Sara,
after years of good functioning ESP8266 disappeared from the list of mi Arduino IDE 1.8.5.
Is ESP8266 down?
Thanks
Renzo Reply

Sara Santos

Hi.
That’s weird…
Are you sure you’re not using another arduino version you have on your computer?
Maybe it is better to start with a fresh install…
Regards,
Sara Reply

Как добавить плату esp8266 в arduino ide

Задача: В среду разработки Arduino IDE добавить функционал для работы с модулями ESP8266, т. к. в дефолтной установки этого нет.

К тому же не лишним будет знать, как данная задача выполняется если и модуля ESP8266 у Вас (у Меня) пока нет в наличии хотя бы для общего развития. И так моя домашняя(рабочая) система: Ubuntu 14.04.5 Desktop amd64 (Gnome Classic)

запускаю среду Arduino IDE (у меня установлена версия 1:1.0.5+ваый2-2 )

Приложения — Электроника — Arduino IDE

перед тем как установить, нужно обновить версию пакета Arduino опираясь на заметку тогда это дело можно сделать, а через ту которая идет вместе с релизом Ubuntu Trusty к сожалению этого сделать нельзя просто нет таких пунктов меню.

Итак моя версия среды разработки Arduino IDE → 1.8.5 Hourly Build 2017/08/28 06:25

Запускаю Arduino IDE — File — Preferences — вкладка Settings , в поле:

Additional Boards Manager URLs: вставляю следующую URL ссылку: http://arduino.esp8266.com/stable/package_esp8266com_index.json

Указываю URL ссылку где располагаются необходимые модули для установки в Arduino IDE

Нажимаю OK и еще раз OK окна Preferences.

После открываю Tools — Board: «Arduino/Genuino Uno» — Boards Manager… , посредством скроллинга нахожу или через Filter строку начинающуюся с « es », т. е. Это будет esp8266 by ESP8266 Community.

Устанавливать буду самую последнюю версию 2.3.0, а после нажимаю Install.

Затем устанавливаю самую последнюю версию пакета esp8266

Ожидаю покуда завершится процесс скачки:

Ожидаю покуда процесс скачки необходимых файлов завершится

Когда процесс скачки и установки завершится нажимаю Close окна Boards Manages

На заметку: вообще можно установить все версии если нужно, а лучше по мере нужды разбираться и прийти к выводу что нужно установить такую то версию, это опыт.

Теперь выбираем плату ESP8266: Tools — Board: «Arduino/Genuino Uno» — Generic ESP8266 Module

Теперь выбираем плату ESP8266: Tools — Board:

Когда Я подключу модуль ESP-01 к плате Arduino UNO R3 я смогу через редактор Arduino IDE писать под него скетчи и разбираться.

На этом у меня заметка закончена. Работает. С уважением автор блога Олло Александр aka ekzorchik.

WiFi ESP8266 в проектах Arduino

Микросхема ESP8266 – один из самых популярных инструментов для организации беспроводной связи в проектах умного дома. С помощью беспроводного контроллера можно организовывать связь по интерфейсу WiFi, обеспечивая проектам Arduino выход в интернет и возможность дистанционного управления и сбора данных. На основе ESP8266 созданы такие популярные платы как WeMos и NodeMcu, а также огромное количество самодельных проектов. В этой статье, мы узнаем, что из себя представляет ESP82266, какие бывают ее разновидности, как работать с ESP8266 в среде Arduino IDE.

Описание ESP8266

микросхема esp8266

ESP8266 – микроконтроллер с интерфейсом WiFi, который имеет возможность исполнять программы из флеш-памяти. Устройство было выпущено в 2014 году китайской фирмой Espressif и практически сразу же стало популярным.

Контроллер недорогой, обладает небольшим количеством внешних элементов и имеет следующие технические параметры:

  • Поддерживает Wi-Fi протоколы 802.11 b/g/n с WEP, WPA, WPA2;
  • Обладает 14 портами ввода и вывода, SPI, I2C, UART, 10-бит АЦП;
  • Поддерживает внешнюю память до 16 МБ;
  • Необходимое питание от 2,2 до 3,6 В, потребляемый ток до 300 мА в зависимости от выбранного режима.

Важной особенностью является отсутствие пользовательской энергонезависимой памяти на кристалле. Программа выполняется от внешней SPI ПЗУ при помощи динамической загрузки необходимых элементов программы. Доступ к внутренней периферии можно получить не из документации, а из API набора библиотек. Производителем указывается приблизительное количество ОЗУ – 50 кБ.

Особенности платы ESP8266:
  • Удобное подключение к компьютеру – через USB кабель, питание от него же;
  • Наличие встроенного преобразователя напряжения 3,3В;
  • Наличие 4 Мб флеш-памяти;
  • Встроенные кнопки для перезагрузки и перепрошивки;
  • Все порты выведены на плату на две гребенки с шагом 2,5 мм.
Сферы применения модуля ESP8266
  • Автоматизация;
  • Различные системы для умного дома: Беспроводное управление, беспроводные розетки, управление температурой, дополнение к сигнализационным системам;
  • Мобильная электроника;
  • ID метки;
  • Детские игрушки;
  • Mesh-сети.

Распиновка esp8266

Существует огромное количество разновидностей модуля ESP8266. На рисунке представлены некоторые из них. Наиболее популярным вариантом является ESP 01.

esp8266 разновидности

Исполнение программы требуется задавать состоянием портов GPIO0, GPIO2 и GPIO15, когда заканчивается подача питания. Можно выделить 2 важных режима – когда код исполняется из UART (GPIO0 = 0, GPIO2 = 1 и GPIO15 = 0) для перепрошивки флеш-карты и когда исполняется из внешней ПЗУ (GPIO0 = 1, GPIO2 = 1 и GPIO15 = 0) в штатном режиме.

Распиновка для ESP01 изображена на картинке.

распиновка esp8266

esp8266 описание контактов

  • 1 – земля, 8 – питание. По документации напряжение подается до 3,6 В – это важно учесть при работе с Ардуино, на которую обычно подают 5 В.
  • 6 – RST, нужна для перезагрузки микроконтроллера при подаче на него низкого логического уровня.
  • 4 – CP_PD, также используется для перевода устройства в энергосберегающий режим.
  • 7 и 0 – RXD0 и TXD0, это аппаратный UART, необходимый для перепрошивки модуля.
  • 2 – TXD0, к этому контакту подключается светодиод, который загорается при низком логическом уровне на GPIO1 и при передаче данных по UART.
  • 5 – GPIO0, порт ввода и вывода, также позволяет перевести устройство в режим программирования (при подключении порта к низкому логическому уровню и подачи напряжения) .
  • 3 – GPIO2, порт ввода и вывода.

распиновка esp12 esp8266

Основные отличия Ардуино от ESP8266
  • ESP8266 имеет больший объем флеш-памяти, при этом у ESP8266 отсутствует энергонезависимая память;
  • Процессор ESP8266 быстрее, чем у Ардуино;
  • Наличие Wi-Fi у ESP8266;
  • ESP8266 потребляеn больше тока, чем для Ардуино;

Программирование ESP8266 в Arduino IDE

Программный комплект разработчика esp8266 включает в себя:

  • Компилятор из пакета GNU Compiler Collection.
  • Библиотеки, стеки протоколов WiFi, TCP/IP.
  • Средство загрузки информации в программу контроллера.
  • Операционная IDE.

Изначально модули ESP8266 поставляются с прошивкой от фирмы-изготовителя. С ее помощью можно управлять модулем с внешнего микроконтроллера, реализовывать работу с Wi-Fi как с модемом. Также существует множество других готовых прошивок. Некоторые из них позволяют настраивать работу модуля при помощи WEB-интерфейса.

Можно программировать из среды Arduino IDE. При ее помощи можно легко писать скетчи и загружать их в ESP8266, прошивать ESP8266, при этом не требуется сама плата Ардуино. Arduino IDE поддерживает все виды модулей ESP8266.

В настоящий момент для ESP8266 можно реализовать следующие функции:

  • Основные функции языка Wiring. Управлять портами GPIO можно точно так же, как и пинами на плате Ардуино: pinMode, digitalRead, digitalWrite, analogWrite. Команда analogRead(А0) позволяет считать значения АЦП. При помощи команды analogWrite (pin, value) можно подключить ШИМ на нужном выходе GPIO. При value=0 ШИМ отключается, максимальное значение достигает константы, равной 1023.С помощью функций attachInterrupt, detachInterrupt можно выполнять прерывание на любом порте GPIO, кроме 16.
  • Тайминг и delay. Используя команды millis и micros можно вернуть мс и мкс, которые прошли с момента старта. Delay позволяет приостановить исполнение программы на нужное время. Также функция delay(…) позволяет поддерживать нормальную работу Wi-Fi, если в скетче присутствуют большие элементы, которые выполняются более 50 мс. Yield() – аналог функции delay(0).
  • Serial и Serial1 (UART0 и UART1). Работа Serial на ESP8266 аналогична работе на ардуино. Запись и чтение данных блокируют исполнение кода, если FIFO на 128 байт и программный буфер на 256 байт заполнены. Объект Serial пользуется аппаратным UART0, для него можно задать пины GPIO15 (TX) и GPIO13 (RX) вместо GPIO1(TX) и GPIO3(RX). Для этого после функции Serial.begin(); нужно вызвать Serial.swap();. Аналогично Serial1 использует UART1, который работает на передачу. Необходимый пин для этого GPIO2.
  • Макрос PROGMEM. Его работа аналогична работе в Ардуино. Позволяет перемещать данные read only и строковые постоянные во flash-память. При этом в ESP8266 не сохраняются одинаковые константы, что приводит к дополнительной трате флеш-памяти.
  • I2C. Перед началом работы с шиной I2C выбираются шины с помощью функции Wire.pins(int sda, int scl).
  • SPI, OneWire – поддерживаются полностью.

Использование esp8266 для связи Ардуино по WiFi

Перед подключением к Ардуино важно помнить, что у ESP8266 напряжение питания не может быть выше 3,6, в то время как на пате Ардуино напряжение равно 5 В. Соединять 2 микроконтроллера нужно с помощью резистивных делителей. Перед подключением модуля нужно ознакомиться с распиновкой выбранного ESP8266. Схема подключения для ESP8266-01 представлена на рисунке.

esp8266 подключение

3,3 В с Ардуино – на Vcc&CH_PD на модуле ESP8266, Земля с Ардуино – к земле с ESP8266, 0 – TX, 1 – RX.

Для поддержки стабильной работы ESP8266 необходим источник постоянного напряжения на 3,3 В и максимальный ток 250 мА. Если питание происходит от конвертера USB-TTL, могут происходить неполадки и сбои в работе.

Работа с библиотекой Wi-Fi для ESP8266 схожа с библиотекой для обыкновенного шилда. Имеется несколько особенностей:

  • mode(m) – для выбора одного из трех режимов: клиент, точка доступа или оба режима единовременно.
  • softAP(ssid) – нужен для создания открытой точки доступа.
  • softAP(ssid, password) – создает точку доступа с паролем, который должен состоять не менее чем из 8 знаков.
  • WiFi.macAddress(mac) и WiFi.softAPmacAddress(mac)– определяет МАС адрес.
  • WiFi.localIP() и WiFi.softAPIP() – определение IP адреса.
  • printDiag(Serial); – позволят узнать данные о диагностике.
  • WiFiUDP – поддержка передачи и приема multicast пакета в режиме клиента.

Работа выполняется по следующему алгоритму:

  • Подключение USB-TTL к USB и к ESP.
  • Запуск Arduino IDE.
  • Выбрать в меню инструменты нужный порт, плату, частоту и размер flash-памяти.
  • Файл — Примеры — ESP8266WiFi — WiFiWebServer.
  • Записать в скетче SSID и пароль сети Wi-Fi.
  • Начать компиляцию и загрузку кода.
  • Дождаться окончания процесса прошивки, отсоединить GPIO0 от земли.
  • Поставить скорость 115200.
  • Произойдет подключение, будет записан адрес IP.
  • Открыть браузер, ввести в адресной строке номер IP/gpio/1
  • Посмотреть монитор порта, если к выходу GPIO2 подключен светодиод, он должен загореться.

NodeMCU на базе esp8266

esp8266 nodemcu

NodeMCU – это платформа, основанная на базе модуля esp8266. Используется для управления схемой на расстоянии при помощи интернета через Wi-Fi. Плата малогабаритная, компактная, стоит дешево, на лицевой стороне имеется разъем для USB. Рядом кнопки для отладки и перезагрузки микроконтроллера. Также установлен чип ESP8266. Напряжение питания – от 5 до 12 В, желательно подавать более 10 В.

Большим преимуществом платы является ее малое энергопотребление. Нередко их используют в схемах с автономным питанием. На плате расположены всего 11 портов общего назначения, из них некоторые имеют специальные функции:

  • D1 и D2 – для интерфейса I2C/ TWI;
  • D5-D8- для интерфейса SPI;
  • D9, D10 – для UART;
  • D1-D10 – могут работать как ШИМ.

Платформа имеет современное API для аппаратного ввода и вывода. Это позволяет сократить количество действий во время работы с оборудованием и при его настройке. С помощью прошивки NodeMCU можно задействовать весь рабочий потенциал для быстрой разработки устройства.

WeMos на базе esp8266

wemos d1 esp8266

WeMos – еще один вид платформы, основанный на базе микроконтроллера esp8266. Соответственно, имеется Wi-Fi модуль, поддерживается Arduino IDE, имеется разъем для внешней антенны. Плата имеет 11 цифровых входов/выходов, которые (кроме D0) поддерживают interrupt/pwm/I2C/one-wire. Максимальное напряжение питания достигает 3,3 В. Также на платформе присутствует USB разъем. Аналоговый вход 1 с максимальным напряжением 3,2В.

Для работы с модулем нужно установить драйвер CH340 и настроить Ардуино IDE под ESP8266. Для этого нужно в меню настройки в строке «дополнительная ссылка для менеджера плат» добавить адрес http://arduino.esp8266.com/stable/package_esp8266com_index.json.

После этого требуется найти пакет esp8266 by ESP8266 и установить его. Затем нужно выбрать в меню инструменты микроконтроллер Wemos D1 R2 и записать нужный скетч.

Выводы по ESP8266

С помощью плат на основе микросхемы ESP8266 вы можете добавить в свои проекты возможности “большого интернета”, сделав их гораздо более интеллектуальными. Дистанционное управление, сбор и анализ данных на сервере, обработка голоса и работа с изображением – все это становится доступным, когда мы подключаем наш проект по WiFi к интернету. В следующих статьях мы подробно рассмотрим то, как можно программировать устройства на базе esp8266, а также уделим внимание таким популярным платам как WeMos и NodeMcu.

Гайд для новичков Arduino

На данной странице находится максимально подробный гайд по началу работы с Arduino, в котором можно найти ответы на все вопросы касательно установки, подключения и загрузки прошивки, а также по работе с моими проектами. Внимательно изучите гайд, прежде чем писать мне на почту или в нашу группу ВК, если у вас что-то не получается, тут есть ответы на все вопросы. Также прилагаю список уроков на этом сайте, где можно найти ещё больше базовой информации:

  • Начало работы
  • Работа с Arduino IDE
  • Первая прошивка, ошибки, FAQ
  • Питание платы

Arduino IDE

Arduino IDE – программа для написания и загрузки прошивки в плату, скачать можно с официального сайта вот здесь (Внимание! Перевод языка страницы в браузере ломает кнопки!) . Перед загрузкой вам предложат пожертвовать на развитие проекта, можно отказаться и нажать JUST DOWNLOAD (только скачать). Либо открываем прямую ссылку на загрузку версии 1.8.13 и сразу качаем файл.

Для работы рекомендуется компьютер с Winodws 7 или выше, либо Linux/MacOS

  • Если у вас Windows XP, придётся установить версию 1.6.13 , более свежие версии будут очень сильно тормозить или не будут работать вообще. Есть ещё одна проблема: некоторые библиотеки не будут работать на старых версиях Arduino IDE, также не будет работать поддержка плат семейства esp8266, поэтому крайне рекомендуется обновить свой компьютер до Windows 7 или выше
  • Установка на Linux из системного репозитория – читать тут
  • Установка на MacOS – читать тут

Для старых версий Arduino IDE, а также для некоторых других программ, понадобится пакет Java JRE. Скачать можно с официального сайта для своей операционной системы.

Установка

Arduino IDE устанавливается как обычная программа, запускам и жмём далее далее далее…

Драйвер

Во время установки Arduino IDE программа попросит разрешения установить драйвера от неизвестного производителя, нужно согласиться на установку всего предложенного.

Обновление

Перед установкой новой версии нужно удалить старую. Ни в коем случае не удаляйте папку установленной IDE из Program Files, удалять нужно через “Установка и удаление программ“, либо запустив файл uninstall.exe из папки с установленной программой. Иначе установщик откажется устанавливать новую программу, так как в системе остались следы от старой. Решение этой проблемы описано в видео ниже. Вкратце о том, как удалить IDE вручную:

  • Папка с программой
    • C:\Program Files (x86)\Arduino\ (64-битная версия Windows)
    • C:\Program Files\Arduino\ (32-битная версия Windows)
    • Документы\Arduino\
    • C:\Пользователи (или Users)\Ваш_пользователь\AppData\Local\Arduino15\

    Удаляем следы из реестра:

    • Открыть редактор системного реестра:
      • Windows 10: Пуск/regedit
      • Предыдущие: Пуск/Выполнить/regedit
      • Инструкция для всех Windows
      • В окне поиска пишем arduino\uninstall
      • Поиск

      Другие проблемы
      • Если перестала запускаться Arduino IDE – удаляем файлик preferences.txt из C:\Пользователи (или Users)\Ваш_пользователь\AppData\Local\Arduino15\
      Портативная версия

      Вместо полной установки программы можно скачать архив с уже “установленной”, на странице загрузки он называется Windows ZIP file. Вот прямая ссылка на 1.8.13. Распаковав архив, получим портативную версию Arduino IDE, которую можно скинуть на флешку и использовать на любом компьютере без установки программы. Но понадобится установить драйвер CH341 для китайских плат, а также драйверы из папки с программой Arduino IDE (подробнее в следующем уроке). Возможно понадобится установить Java.

      Работа на смартфоне

      Писать и загружать прошивку через смартфон тоже можно, понадобится смартфон на Android и приложение ArduinoDroid . Также для тренировки и удобного редактирования скетчей можно использовать CppDroid , но загружать в плату она не умеет.

      Первое подключение

      Осмотр платы
      • Замкнутые пины (вроде бы паяются китайцами вручную)
      • Неприпаянная нога компонента
      • “Торчащие” вверх или под углом компоненты типа резисторов и конденсаторов, припаянные только с одной стороны
      • Компоненты со смещением
      • “Сопля” между ногами компонента

      blank

      blank

      Реакция на подключение питания
      • При подключении USB загорается и горит светодиод PWR
      • Если плата новая и на ней прошит загрузчик (он обязан быть прошит) – однократно мигает светодиод L
      • Примечание: светодиоды могут быть любого цвета
      • На новой плате прошито “мигание светодиодом”, поэтому светодиод L продолжит мигать один или два раза в секунду в зависимости от версии загрузчика
      • При нажатии на кнопку сброса (RESET , единственная кнопка на плате) должен однократно мигнуть светодиод L , сигнализируя о завершении работы загрузчика.

      Драйвер USB контроллера

      CH341

      В своих проектах я использую “Ардуино-совместимые” китайские платы, у которой для подключения по USB используется контроллер CH340/CH341. Чтобы он распознавался компьютером, нужно установить драйвер.

      Скачать драйвер можно по ссылке:

      • FTP сайта
      • Яндекс.Диск
      • Сайт driverslab

      Запускаем и в появившемся окошке нажимаем INSTALL. Готово!

      Если во время установки Arduino IDE вы по какой-то причине пропустили установку драйверов, то их можно установить вручную из папки с программой, расположенной по пути

      • C/Program Files/Arduino/drivers (для 32-х разрядной системы)
      • C/Program Files (x86)/Arduino/drivers (для 64-х разрядной системы).
      • dpinst-x86.exe (для 32-х разрядной системы)
      • dpinst-amd64.exe (для 64-х разрядной системы)

      blank

      Драйвер CH341 для Mac можно скачать по ссылке с моего сайта , либо со страницы источника . Если у вас будут какие-то проблемы с OSX Sierra и выше, читайте вот эту статью .

      В Linux уже встроен необходимый драйвер, но Arduino IDE может отказаться с ним работать: Linux определяет ардуинку как устройство ttyUSB*, обычно это ttyUSB0 (это можно узнать командой dmesg в терминале), то есть в системе появляется интерфейс /dev/ttyUSB0. Чтобы с ним работать, нужны права доступа. Читать и писать на устройство /dev/ttyUSB0 имеет пользователь root и пользователи группы dialout. Работы с правами суперпользователя лучше избегать, поэтому следует занести своего пользователя в группу dialout. Это можно сделать следующей командой (обратите внимание, команда whoami в обратных кавычках)

      sudo usermod -a -G dialout `whoami`

      После этого нужно перелогиниться. Дальше запускаем Arduino IDE и в меню «Инструменты/Порт» ставим галочку напротив /dev/ttyUSB0.

      Вся информация по работе с IDE на данной ОСи есть вот в этой статье

      FT232

      На оригинальных Arduino Nano стоит USB контроллер производства FTDI – FT232, драйвер для всех версий ОС можно скачать с официального сайта (прямая ссылка на инсталлятор для Windows) . Некоторые очень редкие китайцы паяют на свои Наны поддельные FTDI контроллеры, которые буквально выходят из строя после некоторых обновлений Windows. Если вам достался такой экземпляр (я никогда не даю ссылки на такие поделки) – подробности по ситуации читайте здесь . Как восстановить контроллер и сделать рабочий драйвер – читайте здесь .

      CP2102

      На некоторые Arduino-совместимые платы китайцы ставят контроллер USB CP2102. Драйвер на него в большинстве случаев уже есть в системе (на Linux точно есть), если не работает – скачать можно с официального сайта .

      • Прямая ссылка на драйвер для Windows всех версий
      • Прямая ссылка на драйвер для Mac OS

      На Windows установка производится следующим образом: достаём из архива и

      Настройка и прошивка

      Подключение платы

      Плата подключается к компьютеру по USB, на ней должны замигать светодиоды. Если этого не произошло:

      • Неисправен USB кабель
      • Неисправен USB порт компьютера
      • Неисправен USB порт Arduino
      • Попробуйте другой компьютер, чтобы исключить часть проблем из списка
      • Попробуйте другую плату (желательно новую), чтобы исключить часть проблем из списка
      • На плате Arduino сгорел входной диод по линии USB из-за короткого замыкания, устроенного пользователем при сборке схемы
      • Плата Arduino сгорела полностью из-за неправильного подключения пользователем внешнего питания или короткого замыкания

      Компьютер издаст характерный сигнал подключения нового оборудования, а при первом подключении появится окошко “Установка нового оборудования”. Если этого не произошло:

      • См. предыдущий список неисправностей
      • Кабель должен быть data-кабелем, а не “зарядным”
      • Кабель желательно втыкать напрямую в компьютер, а не через USB-хаб
      • Не установлены драйверы Arduino (во время установки IDE или из папки с программой), вернитесь к установке.

      В списке портов (Arduino IDE/Инструменты/Порт) появится новый порт, обычно COM3. Если этого не произошло:

      • См. предыдущий список неисправностей
      • Некорректно установлен драйвер на USB контроллер Arduino
        • Переверните плату и найдите “узкую” микросхему. Если на ней написано CH341 – ставим драйвер по инструкции выше
        • Если написано FT232R – опять же инструкция выше
        • Если ничего не написано – открываем “Диспетчер устройств”, смотрим блок “Другие устройства”. Если при подключении платы к компьютеру там появляется FT232R USB UART – смотрим инструкцию выше
        Выбор и настройка платы (Arduino NANO)
        • Выбираем соответствующую плату в Инструменты\Плата\ Большинство моих проектов сделаны на Arduino Nano. Если вы используете Nano:
          • В микроконтроллер китайских плат зашит “старый” загрузчик, поэтому выбираем Инструменты\Процессор\ATmega328p (Old Bootloader). Если вам по какой-то причине пришлют платы с новым загрузчиком – прошивка не загрузится (будет минутная загрузка и ошибка), можно попробовать сменить пункт Процессор на ATmega328p

          Загрузка прошивки

          “Загрузка” прошивки происходит в два этапа – компиляция и непосредственно загрузка в микроконтроллер. Компиляция – проверка кода на наличие ошибок, её можно запустить, нажав кнопку с символом галочки в верхнем меню программы. Компилировать код можно даже не подключая плату к компьютеру! При нажатии на кнопку с символом стрелочки начнётся компиляция, а затем загрузка скомпилированного кода в плату.

          Вставьте следующий код с полной заменой содержимого в IDE и загрузите его. Должен начать мигать светодиод L на плате, это означает что все программы настроены верно и можно переходить к работе!

          esp8266 (Wemos, NodeMCU)

          ESP8266 – микроконтроллер с WiFi на борту, на его базе сделаны платы Wemos D1 mini, NodeMCU и другие. Китайские платы Wemos и NodeMCU подключаются к компьютеру по USB при помощи бортового USB-TTL преобразователя, причём китайцы паяют CH340 или CP2102 (функционально не имеют отличий), обычно это даже указано на странице товара. Установка драйверов разобрана выше на этой странице.

          Также для работы с esp нужно добавить поддержку плат в Arduino IDE:

          • Запустить Arduino IDE, перейти в Файл/Настройки/
          • В окошко “Дополнительные ссылки…” Вставить http://arduino.esp8266.com/stable/package_esp8266com_index.json
          • Нажать ОК
          • Перейти в Инструменты/Плата/Менеджер плат… Начать вводить в поиске “esp”. Выбрать и установить ESP8266 boards
          • Теперь в списке плат Инструменты/Плата/ появится семейство плат на esp8266! Выбираем соответствующую своей плате конфигурацию.
          • Выбираем порт, к которому подключена плата
          • На четвёртом скриншоте ниже показаны настройки платы по умолчанию, изменены только выделенные красным (плата и порт)

          blank

          blank

          blank

          blank

          Для проверки работоспособности платы (например, Wemos Mini) выбираем стандартные настройки и загружаем тестовый “блинк”. Должен начать мигать светодиод на плате.

          Digispark

          Digispark – плата на базе ATtiny85, загрузка в которую может производиться через бортовой USB. Для работы с Digispark нужно добавить поддержку плат в Arduino IDE:

          • Запустить Arduino IDE, перейти в Файл/Настройки/
          • В окошко “Дополнительные ссылки…” Вставить
            • http://digistump.com/package_digistump_index.json
            • или https://raw.githubusercontent.com/digistump/arduino-boards-index/master/package_digistump_index.json

            “Голые” МК

            Для начала рекомендуется изучить вот эти два урока: первый и второй . У проектов на базе голого микроконтроллера есть два варианта:

            • Если проект основан на ATmega328 (Arduino Nano/Mini) и на плате есть источник тактирования на 16 МГц (резонатор), то микроконтроллер можно просто перепаять с Arduino и загружать прошивку через внешний USB-TTL переходник, как на Arduino Pro Mini. Либо загрузить прошивку, и потом перепаивать – всё будет работать.
              • Если источника тактирования нет – так делать нельзя! Сначала нужно настроить МК на внутреннее тактирование, подключив ISP программатор к плате Arduino и выбрав внутренний источник тактирования в настройках ядра. Подробнее читайте в уроке.

              Установка библиотек

              Библиотека – несколько файлов с кодом, облегчающим работу с датчиками и другими модулями. К моим проектам библиотеки идут в архиве (об этом ниже). Рассмотрим все способы загрузки и установки библиотек.

              Менеджер библиотек

              Большинство Ардуино-библиотек можно установить автоматически из встроенного в программу менеджера библиотек:

              • Скетч/Подключить библиотеку/Управлять библиотеками…
              • Комбинация клавиш Ctrl+Shift+I

              Нужную библиотеку можно найти в поиске по названию и нажать Установка, библиотека будет автоматически установлена в папку с библиотеками. Arduino IDE проверяет обновления библиотек при запуске и предложит обновиться, если найдёт обновления.

              Скачивание с GitHub

              Не все существующие библиотеки есть в менеджере библиотек и скачать их можно только с GitHub. Есть два способа: скачать весь репозиторий и скачать релиз. Весь репозиторий со всеми “лишними” служебными файлами можно скачать одним архивом вот так, нажав Code/Download ZIP

              Если у библиотеки есть релизы – справа будет отмечен последний (свежий) релиз. Нажимаем на него:

              И в новом окне нажимаем Source code (zip) – начнётся загрузка архива. Скачивание релиза более предпочтительно, так как содержит только файлы библиотеки.

              blank

              В обоих случаях библиотека скачается как .zip архив.

              Автоматическая установка

              Скачанный .zip архив можно установить в автоматическом режиме через Скетч/Подключить библиотеку/Добавить .ZIP библиотеку… В открывшемся окне выбрать скачанный архив, библиотека будет установлена по указанному в настройках пути.

              Ручная установка

              Для начала нужно распаковать архив (стандартный архиватор Windows или WinRAR). Чтобы Arduino IDE смогла использовать библиотеку, нам нужно положить её туда, где программа будет её искать. Таких мест три (на примере Windows):

              • Документы/Arduino/libraries/
              • Папка с программой/libraries/
                • C/Program Files/Arduino/libraries/ (Windows 32)
                • C/Program Files (x86)/Arduino/libraries/ (Windows 64)
                • В портативной версии IDE желательно держать библиотеки в Папка с программой/libraries

                Рекомендуется держать все библиотеки в одном месте, чтобы не было путаницы. Лично я устанавливаю все библиотеки в папку с программой (в Program Files), но для этого могут потребоваться права администратора (зависит от версии и настроек Windows). Если у вас возникли с этим проблемы – устанавливайте в Документы/Arduino/libraries/. На скриншотах показана установка скачанной с GitHub библиотеки в папку с программой и в документы. Ставить нужно в одно место, я просто показываю оба варианта.

                Ошибки компиляции

                Возникает на этапе сборки и компиляции прошивки. Ошибки компиляции вызваны проблемами в коде прошивки, то есть проблема сугубо программная. Слева от кнопки “загрузить” есть кнопка с галочкой – проверка. Во время проверки производится компиляция прошивки и выявляются ошибки, если таковые имеются. Ардуино в этом случае может быть вообще не подключена к компьютеру.

                • В некоторых случаях ошибка возникает при наличии кириллицы (русских букв) в пути к папке со скетчем. Решение: завести для скетчей отдельную папочку в корне диска с английским названием.
                • В чёрном окошке в самом низу Arduino IDE можно прочитать полный текстошибки и понять, куда копать
                • В скачанных с интернета готовых скетчах часто возникает ошибка с описанием .h no such file or directory. Это означает, что в скетче используется библиотека , и нужно положить её в Program Files/Arduino/libraries/. Ко всем моим проектам всегда идёт папочка с использованными библиотеками, которые нужно установить. Также библиотеки всегда можно поискать в гугле по .
                • При использовании каких-то особых библиотек, методов или функций, ошибкой может стать неправильно выбранная плата в “Инструменты/плата“. Пример: прошивки с библиотекой Mouse.h или Keyboard.h компилируются только для Leonardo и Micro.
                • Если прошивку пишете вы, то любые синтаксические ошибки в коде будут подсвечены, а снизу в чёрном окошке можно прочитать более детальное описание, в чём собственно косяк. Обычно указывается строка, в которой сделана ошибка, также эта строка подсвечивается красным.
                • Иногда причиной ошибки бывает слишком старая, или слишком новая версия Arduino IDE. Читайте комментарии разработчика скетча.
                • Ошибка недостаточно свободного места возникает по вполне понятным причинам. Оптимизация: статическая память – память, занимаемая кодом (циклы, функции). Динамическая память занята переменными.

                Частые ошибки в коде, приводящие к ошибке компиляции

                • …no such file or directory – компилятор не может найти файл, который используется в коде. Чаще всего это библиотека, которую не установили или установили неправильно
                • expected ‘,’ or ‘;’ – пропущена запятая или точка запятой на предыдущей строке
                • stray ‘\320’ in program – русские символы в коде
                • expected unqualified-id before numeric constant – имя переменной не может начинаться с цифры
                • … was not declared in this scope – переменная или функция используется, но не объявлена. Компилятор не может её найти
                • redefinition of … – повторное объявление функции или переменной
                • storage size of … isn’t known – массив задан без указания размера

                Ошибки загрузки

                Возникает на этапе, когда прошивка собрана, скомпилирована, в ней нет критических ошибок, и производится загрузка в плату по кабелю. Ошибка может возникать как по причине неисправностей железа, так и из-за настроек программы и драйверов.

                • Если неправильно выбран COM порт – прошивка не загрузится с ошибкой avrdude: ser_open(): can’t open device. Вернитесь к пункту “Выбор и настройка платы” этого урока и убедитесь в том, что выбор порта активен и при подключении платы появляется новый.
                • Большинство проблем при загрузке, вызванных “зависанием” ардуины или загрузчика, лечатся полным отключением Ардуины от питания. Потом вставляем USB и по новой прошиваем.
                • Причиной ошибки загрузки может быть неправильно выбранная плата в “Инструменты/Плата”, а также неправильно выбранный процессор в “Инструменты/Процессор”.
                  • Если это Arduino Nano – попробуйте оба, Old и не Old.

                  Предупреждения

                  Помимо ошибок, по причине которых проект вообще не загрузится в плату и не будет работать, есть ещё предупреждения, которые выводятся оранжевым текстом в чёрной области лога ошибок. Предупреждения могут появиться даже тогда, когда выше лога ошибок появилась надпись “Загрузка завершена“. Это означает, что в прошивке нет несовместимых с жизнью ошибок, она скомпилировалась и загрузилась в плату. Что же тогда означают предупреждения? Чаще всего можно увидеть такие:

                  • # Pragma message……. – сообщения с директивой Pragma обычно выводят библиотеки, сообщая о своей версии или каких-то настройках. Это даже не предупреждение, а просто вывод текста в лог.
                  • Недостаточно памяти, программа может работать нестабильно – чуть выше этого предупреждения обычно идёт информация о задействованной памяти. Память устройства можно добивать до 99%, ничего страшного не случится. Это флэш память и во время работы она не изменяется. А вот динамическую память желательно забивать не более 85-90%, иначе реально могут быть непонятные глюки в работе, так как память постоянно “бурлит” во время работы. НО. Это зависит от скетча и в первую очередь от количества локальных переменных. Можно написать такой код, который будет стабильно работать при 99% занятой SRAM памяти.
                  • Предупреждения о несовместимых типах данных. Компилятор не смог привести один тип к другому и сообщает о потенциальных ошибках в ходе выполнения программы. В большинстве случаев ничего плохого не случится, но лучше найти проблемную строку и помочь компилятору преобразовать тип.

                  Частые вопросы

                  • Ардуину можно прошить только один раз? Нет, несколько десятков тысяч раз, всё упирается в ресурс flash памяти. А он довольно большой.
                  • Как стереть/нужно ли стирать старую прошивку при загрузке новой? Память автоматически очищается при прошивке, старая прошивка автоматически удаляется.
                  • Можно ли записать две прошивки, чтобы они работали вместе? Нет, при прошивке удаляются абсолютно все старые данные. Из двух прошивок нужно сделать одну, причём так, чтобы не было конфликтов.
                  • Можно ли “вытащить” прошивку с уже прошитой Ардуины? Теоретически можно, но только в виде нечитаемого машинного кода, в который преобразуется прошивка на С++ при компиляции, т.е. вам это НИКАК не поможет, если вы не имеете диплом по низкоуровневому программированию.
                    • Зачем это нужно? Например есть у нас прошитый девайс, и мы хотим его “клонировать”. В этом случае да, есть вариант сделать дамп прошивки и загрузить его в другую плату на таком же микроконтроллере.
                    • Если есть желание почитать код – увы, прошивка считывается в виде бинарного машинного кода, превратить который обратно в читаемый Си-подобный код обычному человеку не под силу
                    • Вытащить прошивку, выражаясь более научно – сделать дамп прошивки, можно при помощи ISP программатора, об этом можно почитать здесь
                    • Снять дамп прошивки можно только в том случае, если разработчик не ограничил такую возможность, например записав лок-биты, запрещающие считывание Flash памяти, или вообще отключив SPI шину. Если же разработчик – вы, и есть желание максимально защитить своё устройство от копирования – гуглите про лок-биты и отключение SPI

                    ▶Проекты AlexGyver◀

                    1. Установить Arduino IDE и драйверы, как написано в гайде. Если это ваш первый раз – желательно не подключать ничего к новой плате, а загрузить пробную прошивку из гайда и убедиться, что всё загружается и работает. Если после сборки схемы прошивка перестанет загружаться – увы, схема собрана с ошибками и плата уже могла сгореть. Но она работала, мы это проверили =)

                    • Если проект основан на esp8266 или Digispark – устанавливаем поддержку этих плат, как описано в гайде выше.

                    2. Скачать архив со страницы проекта. Ссылка всегда одна, она ведёт на прямую загрузку архива с хранилища GitHub. Когда проект обновляется (об этом может быть написано на странице проекта), ссылка на архив остаётся той же, но в нём будут уже какие-то изменённые файлы, добавлены новые версии прошивки и т.д. Все обновления указаны на странице проекта.

                    3. Распаковать архив. Архив имеет формат .zip, для его распаковки можно использовать встроенные инструменты операционной системы, либо популярный WinRAR. Если не распаковать архив – прошивка откроется неправильно. Я не отличаюсь буйной фантазией и всегда называю папки одинаково, вот что может быть в архиве проекта:

                    • firmware – прошивки для Arduino
                    • software – программы для ПК
                    • libraries – библиотеки
                    • schemes – схемы
                    • PCB – gerber файлы печатных плат
                    • docs – всякие документы
                    • Android – исходники приложения
                    • 3Dprint – модели для печати
                    • processing – программа на Processing

                    4. Установить библиотеки. К прошивкам моих проектов всегда идут библиотеки, необходимые для работы кода. Библиотеки в проектах часто пересекаются, но рекомендуется ставить именно идущую в комплекте с проектом версию, так как более старые или новые могут быть несовместимы.

                    Содержимое папки libraries из архива помещаем в

                    • С/Program Files/Arduino/libraries/ (Windows x32)
                    • C/Program Files (x86)/Arduino/libraries/ (Windows x64)

                    Если возникнут проблемы с доступом к этой папке (на Windows 10), то библиотеки можно положить в

                    • Документы/Arduino/libraries/

                    Примечание: к разным проектам идут разные версии одних и тех же библиотек, они не всегда совместимы. При возникновении ошибок рекомендуется удалить текущие версии и заменить их теми, которые идут в архиве.

                    5. Открыть скетч (так называется файл с программой). При запуске файла скетча автоматически откроется Arduino IDE. Важно: если в папке со скетчем есть несколько файлов – запускаем любой с логотипом Arduino. Остальные файлы должны подтянуться автоматически и образовать вкладки в окне программы. Если запускать скетч прямо из архива – вкладки не откроются и скомпилировать/загрузить программу будет невозможно.

                    Вкладки в Arduino IDE

                    6. Выбрать плату и порт. Выбираем в настройках программы соответствующую плату и порт куда она подключена, как в гайде выше. Важные моменты по настройкам самой платы обычно указано в описании конкретного проекта.

                    • Для проектов на Arduino Nano выбираем Arduino Nano, а также Инструменты\Процессор\ATmega328p (Old Bootloader). Если вам по какой-то причине пришлют платы с новым загрузчиком – прошивка не загрузится (будет минутная загрузка и ошибка), можно попробовать сменить пункт Процессор на ATmega328p
                    • Для проектов на Wemos выбираем (LOLIN)Wemos D1 R2 & mini
                    • Для проектов на NodeMCU выбираем NodeMCU 1.0
                    • В некоторых проектах, например GyverLamp2 (второй версии) для прошивки в esp8266 нужно выбрать плату Generic esp8266, читайте особенности загрузки на странице проекта!
                    • Для проектов на Digispark порт выбирать не надо, читай инструкцию выше

                    blank

                    blank

                    7. Настроить программу. Очень часто в начале кода моих программ можно встретить блок настроек. Настройки обычно имеют вид

                    где цифра отвечает за значение настройки, менять нужно только цифру согласно комментарию.

                    8. Загрузить прошивку. Нажимаем стрелочку в левом верхнем углу окна программы и прошивка загружается. Не загружается? Читаем гайд выше, там описаны все возможные причины.

                    Загружать прошивку желательно до подключения компонентов, чтобы убедиться в том, что плата рабочая. После сборки можно прошить ещё раз, плата должна спокойно прошиться. В проектах с мощными потребителями в цепи питания платы 5V (адресная светодиодная лента, сервоприводы, моторы и проч.) необходимо подать на схему внешнее питание 5V перед подключением Arduino к компьютеру, потому что USB не обеспечит нужный ток, если потребитель его потребует – это может привести к выгоранию защитного диода на плате Arduino.

                    9. Если что-то не работает – читай инструкцию, в ней описан каждый шаг и решение всех проблем. Также в самом начале есть видео, где всё показано ещё более подробно.

                    Заметка для тех, кто не читал инструкцию и получил какую-то ошибку. Вот список самых частых причин:

                    Обзор платы NodeMCU ESP8266 и ее использование в Arduino IDE

                    Интернет вещей (IoT) является одной из самых популярных областей в мире технологий. Физические объекты и цифровой мир связаны сейчас как никогда. Помня об этом, компания Espressif Systems (шанхайская компания по производству полупроводниковых устройств) выпустила крутой микроконтроллер с поддержкой Wi-Fi, ESP8266, по невероятной цене! С помощью него менее чем за 3 доллара можно контролировать и управлять устройством из любой точки мира – идеально подходит практически для любого проекта IoT.

                    Характеристики платы NodeMCU ESP8266 и ее использование в Arduino IDE

                    Модуль ESP-12E

                    Отладочная плата оснащена модулем ESP-12E, содержащим микросхему ESP8266 с RISC микропроцессором Tensilica Xtensa® 32-bit LX106, который работает с регулируемой тактовой частотой от 80 до 160 МГц и поддерживает RTOS.

                    Характеристики ESP-12E

                    • 32-разрядный LX106 от Tensilica Xtensa®
                    • Тактовая частота от 80 до 160 МГц
                    • 128 КБ встроенной оперативной памяти
                    • 4 МБ внешней внешней флеш-памяти
                    • Приемопередатчик Wi-Fi 802.11b/g/n

                    Также данный модуль имеет 128 КБ ОЗУ и 4 МБ флеш-памяти (для хранения программ и данных), достаточных, чтобы справиться с большими строками, которые составляют веб-страницы, данными в JSON/XML и всем, что мы сегодня добавляем на устройства IoT.

                    ESP8266 содержит встроенный приемопередатчик Wi-Fi 802.11b/g/n HT40, поэтому он может не только подключаться к сети Wi-Fi и взаимодействовать с интернетом, но и устанавливать собственную сеть, позволяя другим устройствам подключаться напрямую к нему. Это делает ESP8266 NodeMCU еще более универсальным.

                    Требования к питанию

                    Поскольку диапазон рабочего напряжения ESP8266 составляет от 3 В до 3,6 В, данная плата для поддержания постоянного напряжения на уровне 3,3 В поставляется с LDO стабилизатором напряжения. Он может надежно обеспечивать ток до 600 мА, чего должно быть более чем достаточно, поскольку ESP8266 во время радиочастотных передач потребляет до 80 мА. Выход стабилизатора также выводится на выводы на сторонах платы и обозначен как 3V3. Эти выводы можно использовать для подачи питания на внешние компоненты.

                    Требования к питанию

                    • Рабочее напряжение: от 2,5 до 3,6 В
                    • Встроенный стабилизатор: 3,3 В, 600 мА
                    • Рабочий ток: 80 мА
                    • Потребление в спящем режиме: 20 мкА

                    Питание к ESP8266 NodeMCU подается через встроенный USB-разъем MicroB. В качестве альтернативы, если у вас есть стабилизированный источник напряжения 5 В, можно использовать вывод VIN для непосредственного питания ESP8266 и его периферии.

                    Предупреждение

                    ESP8266 требует 3,3 В для питания и логические уровни 3,3 В для связи. Контакты GPIO не допускают напряжение 5 В! Если вы хотите соединить плату со схемами 5 В (или выше), то необходимо реализовать согласование логических уровней.

                    Периферия и ввод/вывод

                    ESP8266 NodeMCU имеет в общей сложности 17 выводов GPIO, выведенных на разъемы с обеих сторон отладочной платы. Эти выводы могут использоваться для выполнения различных периферийных задач, в том числе:

                    • вход АЦП – канал 10-разрядного АЦП;
                    • интерфейс UART – интерфейс UART используется для загрузки кода по последовательной связи;
                    • выходы ШИМ – выводы ШИМ могут использоваться для регулировки яркости светодиодов или управления двигателями;
                    • интерфейсы SPI, I2C – интерфейсы используются SPI и I2C для подключения всевозможных датчиков и периферийных устройств;
                    • интерфейс I2S – интерфейс I2S используется для цифровой передачи звука.

                    Мультиплексируемые выводы ввода/вывода

                    • 1 канал АЦП
                    • 2 интерфейса UART
                    • 4 выхода ШИМ
                    • Интерфейсы SPI, I2C и I2S

                    В ESP8266 используется функция мультиплексирования выводов (несколько периферийных устройств мультиплексируются на один вывод GPIO). Это означает, что один вывод GPIO может действовать как PWM/UART/SPI.

                    Кнопки и светодиодный индикатор на плате

                    На плате ESP8266 NodeMCU находятся две кнопки. Одна из них, помеченная как RST, расположенная в верхнем левом углу, представляет собой кнопку сброса, которая, конечно же, используется для сброса микросхемы ESP8266. Другая кнопка, FLASH, в левом нижнем углу – это кнопка загрузки, используемая при обновлении прошивки.

                    Кнопки и индикаторы

                    • RST – сброс чипа ESP8266
                    • FLASH – загрузка новой программы
                    • Синий светодиод — программируется пользователем

                    На плате также имеется светодиодный индикатор, который программируется пользователем и подключен к выводу D0 платы.

                    Последовательная связь

                    На плате установлен контроллер USB-UART CP2102 от Silicon Labs, который преобразует USB сигнал в сигнал последовательного порта и позволяет компьютеру программировать и взаимодействовать с микросхемой ESP8266.

                    Последовательная связь

                    • USB-UART преобразователь CP2102
                    • Скорость связи 4,5 Мбит/с
                    • Поддержка управления потоком

                    Если на вашем компьютере установлена старая версия драйвера CP2102, рекомендуем выполнить обновление прямо сейчас.

                    Распиновка ESP8266 NodeMCU

                    С внешним миром ESP8266 NodeMCU соединяют всего 30 выводов. Ниже показана распиновка отладочной платы.

                    Рисунок 6 Распиновка ESP8266 NodeMCU

                    Рисунок 6 – Распиновка ESP8266 NodeMCU

                    Для простоты мы сгруппируем выводы с аналогичными функциями.

                    Выводы питания – на плате расположено четыре вывода питания, а именно: один вывод VIN и три вывода 3.3V. Если у вас есть стабилизированный источник напряжения 5 В, вывод VIN можно использовать для непосредственного питания ESP8266 и его периферии. Выводы 3.3V – это выходы встроенного стабилизатора напряжения. Эти выводы могут использоваться для подачи питания на внешние компоненты.

                    GND – это вывод земли отладочной платы ESP8266 NodeMCU.

                    Выводы I2C используются для подключения всех видов датчиков и периферийных устройств на шине I2C в вашем проекте. Поддерживаются и I2C Master, и I2C Slave. Работа интерфейса I2C может быть реализована программно, а тактовая частота составляет максимум 100 кГц. Следует отметить, что тактовая частота I2C должна быть выше самой низкой тактовой частоты из ведомых устройств.

                    Выводы GPIO На ESP8266 NodeMCU имеется 17 выводов GPIO, которые можно назначать программно на различные функции, такие как I2C, I2S, UART, PWM, дистанционное инфракрасное управление, светодиодный индикатор и кнопка. Каждый включенный вывод GPIO может быть настроен либо на внутреннюю подтяжку к земле или к шине питания, либо установлен на высокоимпедансное состояние. При конфигурировании на вход для генерирования прерываний процессора он может быть настроен на срабатывание либо по фронту, либо по спаду.

                    Вывод ADC подает сигнал на имеющийся в NodeMCU, встроенный 10-разрядный прецизионный аналого-цифровой преобразователь последовательного приближения (SAR ADC). С помощью этого АЦП могут быть реализованы две функции: проверка напряжения питания на выводе VDD3P3 и проверка входного напряжения на выводе TOUT (но не одновременно).

                    Выводы UART ESP8266 NodeMCU имеет 2 интерфейса UART, то есть UART0 и UART1, которые обеспечивают асинхронную связь (RS232 и RS485) и могут обмениваться данными со скоростью до 4,5 Мбит/с. Для связи можно использовать UART0 (выводы TXD0 , RXD0 , RST0 и CTS0 ), который поддерживает управление потоком. UART1 (вывод TXD1 ) поддерживает только сигнал передачи данных, поэтому он обычно используется для печати журнала событий.

                    Выводы SPI ESP8266 имеет два интерфейса SPI (SPI и HSPI), поддерживающих и ведомый (slave), и ведущий (master) режимы. Эти интерфейсы SPI также поддерживают следующие функции SPI:

                    • 4 режима синхронизации передачи SPI;
                    • до 80 МГц и тактовые частоты, полученные делением 80 МГц;
                    • до 64 байт FIFO.

                    Выводы SDIO ESP8266 имеет защищенный цифровой интерфейс ввода/вывода (SDIO, Secure Digital Input/Output Interface), который используется для прямого подключения карт SD. Поддерживаются 4-битный 25 МГц SDIO v1.1 и 4-битный 50 МГц SDIO v2.0.

                    Выводы PWM На плате имеется 4 канала широтно-импульсной модуляции (PWM). Выход ШИМ может быть реализован программно и использован для управления двигателями и светодиодами. Частотный диапазон ШИМ регулируется от 1000 мкс до 10000 мкс, то есть от 100 Гц до 1 кГц.

                    Выводы управления используются, как ни странно, для управления ESP8266. Эти выводы включают в себя вывод включения микросхемы EN , вывод сброса RST и вывод пробуждения WAKE .

                    • Вывод EN – микросхема ESP8266 включена, когда на вывод EN подается высокий логический уровень. При низком логическом уровне микросхема работает на минимальной мощности.
                    • Вывод RST используется для сброса микросхемы ESP8266.
                    • Вывод WAKE используется для вывода чипа из глубокого сна.

                    Платформы разработки для ESP8266

                    Теперь перейдем к интересным вещам!

                    Существует множество платформ разработки, которые могут быть оснащены для программирования ESP8266. Вы можете использовать Espruino – JavaScript SDK и прошивка, эмулирующая Node.js, или использовать Mongoose OS – операционную систему для устройств IoT (рекомендуемая платформа от Espressif Systems и Google Cloud IoT), или использовать комплект разработки программного обеспечения (SDK), предоставляемый Espressif. или любую из платформ, перечисленных на Википедии.

                    К счастью, крутое сообщество ESP8266 сделало выбор IDE на шаг вперед, создав дополнение к Arduino IDE. Если вы только начинаете программировать для ESP8266, мы рекомендуем начать с этой среды разработки, и ее мы опишем в данном руководстве.

                    Это дополнение ESP8266 для Arduino IDE основано на работе Ивана Грохоткова и остальной части сообщества ESP8266. Для получения дополнительной информации смотрите репозиторий GitHub ESP8266 Arduino.

                    Установка ядра ESP8266 на ОС Windows

                    Давайте приступим к установке ядра ESP8266 Arduino.

                    Во-первых, на вашем компьютере должна быть установлена последняя версия Arduino IDE (Arduino 1.6.4 или выше). Если у вас ее нет, рекомендуем сейчас обновиться.

                    Для начала нам нужно обновить менеджер плат с помощью пользовательского URL. Откройте Arduino IDE и выберите ФайлНастройки. Затем скопируйте приведенный ниже URL в текстовое поле Дополнительные ссылки для менеджера плат, расположенное в нижней части окна:

                    Рисунок 7 Установка платы ESP8266 в Arduino IDE с помощью json URL

                    Рисунок 7 – Установка платы ESP8266 в Arduino IDE с помощью json URL

                    Отлично. Затем перейдите к Менеджеру плат, выбрав ИнструментыПлатыМенеджер плат. Там, в дополнение к стандартным платам Arduino, должна быть пара новых записей. Отфильтруйте результаты поиска, введя esp8266. Нажмите на эту запись и выберите Установить.

                    Рисунок 8 Установка ядра ESP8266 в менеджере плат Arduino IDE

                    Рисунок 8 – Установка ядра ESP8266 в менеджере плат Arduino IDE

                    Определения и инструменты для платы ESP8266 включают в себя полностью новый набор gcc, g++ и других достаточно больших скомпилированных двоичных файлов, поэтому загрузка и установка могут занять несколько минут (заархивированный файл весит

                    110 МБ). После завершения установки рядом с записью появится надпись INSTALLED. Теперь можно закрыть менеджер плат.

                    Пример Arduino: мигалка

                    Чтобы убедиться, что ядро ESP8266 Arduino и NodeMCU правильно настроены, мы загрузим самый простой скетч – The Blink!

                    Для этого теста мы будем использовать встроенный светодиод. Как упоминалось ранее в этом руководстве, вывод платы D0 подключен к встроенному синему светодиоду и программируется пользователем. Отлично!

                    Прежде чем мы перейдем к загрузке скетча и игре со светодиодом, мы должны убедиться, что в Arduino IDE выбрана правильная плата. Откройте Arduino IDE и выберите пункт NodeMCU 0.9 (ESP-12 Module) в меню ИнструментыПлата.

                    Рисунок 9 Выбор отладочного модуля NodeMCU в Arduino IDE

                    Рисунок 9 – Выбор отладочного модуля NodeMCU в Arduino IDE

                    Теперь подключите ESP8266 NodeMCU к компьютеру через USB-кабель micro-B. Как только плата будет подключена, ей должен быть назначен уникальный COM-порт. На компьютерах с Windows это будет что-то вроде COM#, а на компьютерах Mac/Linux он будет в виде /dev/tty.usbserial-XXXXXX. Выберите этот последовательный порт в меню Инструменты → Порт. Также выберите скорость загрузки: 115200

                    Рисунок 10 Выбор COM порта в Arduino IDE

                    Рисунок 10 – Выбор COM порта в Arduino IDE

                    Предупреждение

                    Уделите больше внимания выбору платы, выбору COM порта и скорости загрузки. В случае некорректных настроек при загрузке новых скетчей вы можете получить ошибку espcomm_upload_mem.

                    После выполнения всех настроек попробуйте пример скетча, приведенного ниже.

                    После загрузки кода светодиод начнет мигать. Возможно, чтобы ваш ESP8266 начал работать со скетчем, вам придется нажать кнопку RST.

                    Похожие публикации:

                    1. Как сделать div по центру в css
                    2. Как сделать анимацию появления css
                    3. Как сделать блоки в ряд css
                    4. Как сделать видеочат node js

                    ESP8266 и Arduino, подключение, распиновка

                    Привет Хабр. Тема ESP8266, как и IoT(интернет вещей), всё больше набирает популярности, и уже Arduino подхватывает инициативу — добавляя эти Wi-Fi модули в список поддерживаемых плат.
                    Но как же его подключить к ардуино? И возможно как-то обойтись вообще без ардуино? Сегодня именно об этом и пойдёт речь в этой статье.

                    Забегая наперёд, скажу, что будет вторая статья, уже более практическая, по теме прошивки и программирования модуля ESP8266 в среде разработки Arduino IDE. Но, обо всём по порядку.

                    image

                    Этот видеоролик, полностью дублирует материал, представленный в статье.

                    На данный момент, существует много разновидностей этого модуля, вот некоторые из них:

                    image

                    А вот распиновка ESP01, ESP03, ESP12:

                    image

                    * Данную картинку можно посмотреть в хорошем качестве на офф. сайте pighixxx.com.

                    Лично мне, больше всего нравится версия ESP07. Как минимум за то, что тут есть металлический экран (он защищает микросхемы от внешних наводок, тем самым обеспечивает более стабильную работу), своя керамическая антенна, разъём для внешней антенны. Получается, подключив к нему внешнюю антенну, например типа биквадрат, то можно добиться неплохой дальности. К тому же, тут есть немало портов ввода вывода, так называемых GPIO(General Purpose Input Output — порты ввода-вывода общего назначения), по аналогии с ардуино — пинов.

                    Давайте вернёмся к нашим баранам Wi-Fi модулям и Arduino. В этой статье, я буду рассматривать подключение ESP8266(модели ESP01) к Arduino Nano V3.

                    Но, данная информация будет актуальна для большинства модулей ESP8266 и так же разных Arduino плат, например самой популярной Arduino UNO.

                    image

                    Пару слов по ножкам ESP01:

                    Vcc и GND(на картинке выше это 8 и 1) — питание, на ножку Vcc можно подавать, судя по документации, от 3 до 3.6 В, а GND — земля (минус питания). Я видел, как один человек подключал этот модуль к двум AA аккумуляторам (напряжение питания в этом случае было примерно 2.7 В) и модуль был работоспособным. Но всё же разработчики указали диапазон напряжений, в котором модуль должен гарантированно работать, если вы используете другой — ваши проблемы.

                    Внимание! Этот модуль основан на 3.3 В логике, а Arduino в основном — 5 В логика. 5 В запросто могут вывести из строя ESP8266, потому на него нужно отдельно от ардуино подавать питание.

                    — На моей ардуинке есть ножка, где написано 3.3 В, почему бы не использовать её?

                    Наверное подумаете вы. Дело в том, что ESP8266 довольно таки прожорливый модуль, и в пиках может потреблять токи до 200 мА, и почти никакая ардуинка по умолчанию не способна выдать такой ток, разве что исключением является Arduino Due, у которой ток по линии 3.3 В может достигать 800 мА, чего с запасом хватит, в других же случаях советую использовать дополнительный стабилизатор на 3.3 В, например AMS1117 3.3 В. Таких валом как в Китае, так и у нас.

                    image

                    Ножка RST 6 — предназначена «железной» для перезагрузки модуля, кратковременно подав на неё низкий логический уровень, модуль перезагрузиться. Хоть и на видео я этим пренебрёг, но всё же вам советую «прижимать» данную ногу резистором на 10 кОм к плюсу питания, дабы добиться лучшей стабильности в работе модуля, а то у меня перезагружался от малейших наводок.

                    Ножка CP_PD 4(или по-другому EN) — служит, опять же, для «железного» перевода модуля в энергосберегающий режим, в котором он потребляет очень маленький ток. Ну и снова — не будет лишним «прижать» эту ногу резистором на 10 кОм к плюсу питалова. На видео я тупо закоротил эту ногу на Vcc, потому как под рукой не оказалось такого резистора.

                    Ноги RXD0 7 TXD0 2 — аппаратный UART, который используется для перепрошивки, но ведь никто не запрещает использовать эти порты как GPIO(GPIO3 и GPIO1 соотвественно). GPIO3 на картинке почему-то не размечен, но в даташите он есть:

                    image

                    К стати, к ножке TXD0 2 подключен светодиод «Connect», и горит он при низком логическом уровне на GPIO1, ну или когда модуль отправляет что-то по UART.

                    GPIO0 5 — может быть не только портом ввода/вывода, но и переводить модуль в режим программирования. Делается это подключив этот порт к низкому логическому уровню(«прижав» к GND) и подав питание на модуль. На видео я делаю это обычной кнопкой. После перепрошивки — не забудьте вытащить перемычку/отжать кнопку(кнопку во время перепрошивки держать не обязательно, модуль при включении переходит в режим программирования, и остаётся в нём до перезагрузки).

                    GPIO2 3 — порт ввода/вывода.

                    И ещё один немаловажный момент, каждый GPIO Wi-Fi модуля может безопасно выдавать ток до 6 мА, чтобы его не спалить, обязательно ставьте резисторы последовательно портам ввода/вывода на… Вспоминаем закон Ома R = U/I = 3.3В / 0.006 А = 550 Ом, то есть, на 560 Ом. Или же пренебрегайте этим, и потом удивляйтесь почему оно не работает.

                    В ESP01 все GPIO поддерживают ШИМ, так что к нашим четырём GPIO, то есть GPIO0-3 можно подключить драйвер двигателя, аля L293 / L298 и рулить двумя двигателями, например катера, или же сделать RGB Wi-Fi приблуду. Да, да, данный модуль имеет на борту много чего, и для простеньких проектов скрипач Arduino не нужен, только для перепрошивки. А если использовать ESP07 то там вообще портов почти как у Uno, что даёт возможность уже уверенно обходиться без ардуино. Правда есть один неприятный момент, аналоговых портов у ESP01 вообще нет, а у ESP07 только один, ADC зовётся. Это конечно усугубляет работу с аналоговыми датчиками. В таком случае ардуино аналоговый мультиплексор в помощь.

                    image

                    Всё вроде как по распиновке пояснил, и вот схема подключения ESP8266 к Arduino Nano:

                    Видите на Arduino Nano перемычка на ножках RST и GND? Это нужно для того, чтобы ардуинка не мешала прошивке модуля, в случае подключения ESP8266 при помощи Arduino — обязательное условие.

                    Так же если подключаете к Arduino — RX модуля должен идти к RX ардуинки, TX — TX. Это потому, что микросхема преобразователь уже подключена к ножкам ардуино в перекрестном порядке.

                    Так же немаловажен резистивный делитель, состоящий из резисторов на 1 кОм и 2 кОм (можно сделать из двух резисторов на 1 кОм последовательно соединив их) по линии RX модуля. Потому как ардуино это 5 В логика а модуль 3.3. Получается примитивный преобразователь уровней. Он обязательно должен быть, потому что ноги RXD TXD модуля не толерантные к 5 В.

                    image

                    Ну и можно вообще обойтись без ардуино, подключив ESP8266 через обычный USB-UART преобразователь. В случае подключения к ардуино, мы, по сути, используем штатный конвертер интерфейсов usb и uart, минуя мозги. Так зачем тратиться лишний раз, если можно обойтись и без ардуино вообще? Только в этом случае, мы подключаем RXD модуля к TXD конвертора, TXD — RXD.

                    Если вам лениво заморачиваться с подключением, возится с резисторами и стабилизаторами — есть готовые решения NodeMcu:

                    image

                    Тут всё значительно проще, воткнул кабель в компьютер, установил драйвера и программируй, только не забывай задействовать перемычку/кнопку на GPIO0 для перевода модуля в режим прошивки.

                    Ну вот, с теорией наверное всё, статья получилась пожалуй довольно таки большая, и практическую часть, аля прошивка и программирование модуля, я опубликую немного позже.

                    Я, у себя на ютуб канале, открыл целый плейлист посвящённый моим видео по теме этого Wi-Fi модуля. В планах построили машинку, или лодку, на Wi-Fi управлении, где вместо пульта ДУ будет обычный смарт. Но пока что я к этому ещё не пришёл, так что это всего лишь планы на будущее.

                    By Сергей ПоделкинЦ ака MrПоделкинЦ.

                    Уже на подходе плата на базе esp32:

                    image

                    http://www.pighixxx.com/test/2015/12/esp32-pinout/

                    Которая значительно круче чем esp8266, так что нас скоро ждёт бум, как мне кажется, темы IoT(интернет вещей).

                    ESP32 и Ардуино

                    image

                    Случилось то, чего все так долго ждали и о чём так много говорили — новые модули ESP32 стали широко продаваться и пошли в народ. Сегодня мы поговорим об этих модулях с точки зрения непрофессионального пользователя, привыкшего работать с Ардуино и создавать небольшие проекты для домашней автоматизации или просто для удовольствия и самообучения.

                    Работает ли это вообще? Что там с поддержкой этих модулей в Arduino IDE? Стоит ли платить больше или лучше ограничиться ставшим уже привычным ESP8266? Мы постараемся вместе ответить на все эти вопросы, а в конце статьи я дам ссылку на реальное воплощение работы ESP32 с Ардуино — дистрибутив бесплатной версии Arduino Mega Server для платформы ESP32.

                    Спецификации

                    Я не буду здесь подробно останавливаться на спецификациях ESP32, вы без труда найдёте их в Интернет: каждый обзорщик считает своим долгом привести простыню спецификаций в начале обзора ESP32. Скажу только, что они впечатляют и если подходить к делу серьёзно и вдумчиво, то можно потратить не один год на изучение всех возможностей модуля и эксперименты с ним.

                    Оставим это профессионалам (или тем, кто считает себя таковым) и сосредоточимся на практической стороне вопроса, понятной и доступной простому смертному.

                    Цена вопроса

                    Начнём с цены. На данный момент модуль ESP32 в китайских интернет-магазинах стоит 350 рублей и 500 в варианте платы с обвязкой и USB интерфейсом. Это против 100 и 160 рублей для модуля ESP8266, соответственно. Как видим, разница в три с лишним раза, хотя абсолютные значения невелики, каждый, при желании, может позволить себе потратить 350 — 500 рублей на микроконтроллер. Для сравнения, Arduino Mega 2560 в том же Китае стоит 600 рублей, а в России около 1000 (плюс ещё стоимость Ethernet Shield).

                    Осталось только выяснить, стоит ли платить в три раза больше, чем за ESP8266 и что мы за это получим. (Забегая вперёд скажу, что на мой взгляд, безусловно стоит.)

                    Поддержка в Arduino IDE

                    Для того, чтобы что-то сделать с модулем, нужно сначала иметь его поддержку в Arduino IDE. На данный момент поддержка ESP32 в Arduino IDE находится хоть и на начальном, но вполне приличном и работоспособном уровне. Те, кто боится встретить тут непреодолимые трудности, может не беспокоиться — основные функции работают нормально и вы, скорее всего, не заметите никакой разницы по сравнению с работой на других контроллерах.

                    Несколько хуже дела обстоят с драйверами устройств, но это, безусловно, временное явление. Модуль настолько популярен, что поддержка любой периферии неизбежно появится в ближайшее время.

                    Добавление поддержки ESP32 в Arduino IDE

                    Теперь немного практической информации об инсталляции поддержки ESP32 в Arduino IDE. Интернет полон инструкциями на эту тему, вы их также можете в изобилии найти в нём. Замечу только, что все инструкции делятся на «старые», там, где упоминается Python и «новые», где упоминается GIT. Вам, естественно, нужно руководствоваться новыми.

                    Из множества инструкций лучшей можно назвать (как это ни странно) официальную инструкцию от производителя модуля.

                    Которой я и рекомендую пользоваться. Единственное замечание: GIT использовать необязательно, можно просто скачать дистрибутив и распаковать его в нужную директорию.

                    Примечание. Все нижеизложенное касается инсталляции под Windows 7 64-bit, поскольку все эксперименты я производил именно на ней, в других операционных системах пути могут отличаться от указанных.

                    Файлы дистрибутива должны находиться в папке

                    C:\Users\User\Documents\Arduino\hardware\espressif\esp32 

                    где C: — это имя вашего диска с Windows, а User — это имя пользователя в операционной системе (и то и другое у вас может отличаться от указанных).

                    Неочевидные моменты инсталляции ESP32

                    Многие пользователи жалуются, что у них ничего не работает и не появляется поддержка ESP32 в Arduino IDE. Тут дело вот в чём: поскольку драйвера ESP32 только разрабатываются, то несколько изменён порядок расположения системных директорий. В качестве папки для расположения скетчей в настройках Arduino IDE должна быть указана папка

                    C:\Users\User\Documents\Arduino 

                    (с теми же поправками на диск и имя пользователя), а файлы дистрибутива должны располагаться внутри этой папки так, как рекомендует производитель. Если не будет учтён этот момент, то поддержка ESP32 в Arduino IDE не появится и ничего работать не будет.

                    Версии Arduino IDE

                    Часто приходится слышать, что поддержка ESP32 есть только в последних версиях Arduino IDE, это не так — ESP32 прекрасно работает в более ранних версиях, например, дистрибутив Arduino Mega Server для ESP32 разрабатывался в версии 1.6.5 r2.

                    Преимущества ESP32

                    Теперь поговорим о преимуществах ESP32 перед его предшественником, ESP8266. На таких очевидных вещах как мощность процессора и объём оперативной памяти я останавливаться не буду, скажу только, что нужно сильно постараться, чтобы загрузить ESP32 полностью на задачах DIY и домашней автоматизации.

                    Пины

                    Ахиллесовой пятой его предшественника, модуля ESP8266, было (и есть) экстремально малое количество выводов. После работы с такими контроллерами как Arduino Mega и Arduino Due с их десятками цифровых и аналоговых пинов, работа с ESP8266 вызывает недоумение: счёт GPIO идёт буквально на единицы и это сильно ограничивает применение этого модуля в реальных проектах.

                    image

                    ESP32 если не полностью, то в значительной степени лишён этого недостатка. Количество доступных выводов значительно увеличено, появилось также множество аналоговых входов. Полностью свободными и доступными для использования можно назвать 13 выводов

                    GPIO 2, 4, 12, 14, 13, 15, 16, 17, 25, 25, 27, 32, 33 

                    В случае необходимости к ним можно добавить ограниченно функциональные и работающие только на вход

                    GPIO 34, 35, 36, 39 

                    Если пожертвовать некоторыми возможностями и не использовать в конкретных проектах Serial, SPI или I2C, то к этому числу можно добавить ещё 8 пинов

                    GPIO 1, 3, 5, 18, 19, 21, 22, 23 

                    Ну и возможно удастся использовать ещё 6 выводов, которые предназначены для работы с внутренней флеш-памятью (например, если подключить внешнюю SD карту)

                    GPIO 6, 7, 8, 9, 10, 11 

                    Как видим, с ESP8266 нет никакого сравнения — новый модуль выглядит просто отлично по количеству возможных подключений и это очень ценно в реальных проектах, в которых дорог каждый пин.

                    Скорость работы

                    Я уже упоминал мощный процессор, теперь несколько слов нужно сказать о скорости сетевой работы. Я затрудняюсь сказать с чем это связано, возможно с мощным процессором, возможно с оптимизацией сетевого стека, но модуль ESP32 под управлением Arduino Mega Server показал рекордную сетевую производительность.

                    image

                    Загрузка страницы с объёмным кодом CSS и JavaScript и обилием графики занимает всего одну с небольшим секунды — быстрее, чем на любом другом протестированном контроллере, включая проводные контроллеры с W5100 и W5500 Ethernet интерфейсом.

                    Применительно к Arduino Mega Server это снимает все ограничения на использование графики и любых JavaScript библиотек как по размеру, так и их количеству.

                    Прочие достоинства

                    ESP32 это чрезвычайно высокотехнологичное устройство, одно только сухое перечисление доступных возможностей может занять не одну страницу, а перечисление достоинств и возможностей с комментариями займёт целый том. Поэтому я на этом ограничусь, чтобы не загромождать статью и приведу несколько примеров работы с кодом на ESP32 в среде Ардуино.

                    Примеры работы с кодом

                    Энергонезависимая память

                    Это то, что применительно к Arduino Mega мы привыкли называть EEPROM. В ESP32 этой памяти нет как таковой, но у этого модуля есть её аналог и соответствующая библиотека для работы с ней. Называется эта память «NVS» (Non-volatile storage).

                    Но для нас нет никакой разницы — можно точно так же сохранять значения и читать их после выключения и последующего включения контроллера.

                    Пример использования. Подключаем библиотеку:

                    #include

                    Создаём объект prefs

                    Preferences prefs; 

                    Инициализируем хранилище с идентификатором, например, «nvs»:

                    prefs.begin("nvs", false); 

                    false относится в выбору режима чтение/запись, в данном случае и чтение и запись. Сохраняем байт под именем «addr»:

                    prefs.putUChar("addr", 65); 

                    Читаем сохранённый байт:

                    byte b = prefs.getUChar("addr", 0); 

                    Подобным же образом можно сохранять и читать значения любых других типов данных. Теперь удаляем хранилище.

                    prefs.remove("nvs"); 

                    Если разобраться, то это даже проще, чем работа со стандартной энергонезависимой памятью EEPROM на контроллерах Ардуино.

                    AnalogWrite()

                    Ещё одно нововведение, которое может поставить в тупик начинающего пользователя — в ESP32 отсутствует привычная функция AnalogWrite(). В первый момент это очень непривычно, но на самом деле эта функция всего лишь заменена своим более функциональным аналогом.

                    Рассмотрим пример. Начнём с подключения соответствущей библиотеки, хотя библиотекой в полном смысле слова это назвать нельзя, скорее это специализированный файл с описанием нужных функций. Дело в том, что не все функции присутствуют напрямую в Arduino IDE, часть функций доступна в файлах, находящихся в каталоге

                    . \Documents\Arduino\hardware\espressif\esp32\cores\esp32 

                    В данном случае нас интересует файл работы с ШИМ и светодиодами, который мы подключаем следующей инструкцией:

                    #include "esp32-hal-ledc.h" 

                    Далее нам нужно установить номер канала (0), частоту ШИМ (например, 50 Гц) и разрешение (8 бит).

                    ledcSetup(0, 50, 8); 

                    Номера каналов могут устанавливаться в диапазоне от 0 до 15, а разрешение от 1 до 16 бит. При выборе разрешения 8 бит, диапазон данных, управляющих ШИМ, будет находиться в интервале от 0 до 255.

                    Далее нам нужно привязать наш канал (0) к какому-либо выводу GPIO, в данном случае к выводу 22:

                    ledcAttachPin(22, 0); 

                    И нужно не забыть обычным образом настроить 22-й пин на выход.

                    pinMode(22, OUTPUT); 

                    Всё, теперь мы можем управлять, например, яркостью свечения светодиода, просто указывая номер канала и значение ШИМ (яркости) из диапазона от 0 до 255.

                    ledcWrite(0, 50); 

                    Прочие примеры кода на ESP32

                    Дистрибутив Arduino Mega Server, ссылку на который я дам в конце статьи, кроме полностью работоспособной системы являет собой обширный сборник структурированного кода, протестированный и проверенный на работоспособность на модуле ESP32. Вы можете его использовать как обучающее пособие для вхождения в тему программирования под ESP32.

                    Стабильность работы

                    Arduino Mega Server для ESP8266 имеет подтверждённые аптаймы в несколько месяцев и демонстрирует абсолютно стабильную работу и у меня нет никаких причин думать, что у модуля ESP32 могут быть какие-то проблемы со стабильностью. По крайней мере за всё время создания дистрибутива AMS для ESP32 я не наблюдал ни единого сбоя или несанкционированной перезагрузки модуля. Всё работает очень чётко и предсказуемо.

                    Arduino Mega Server для ESP32

                    Это ещё один представитель экосистемы AMS, включающей в себя контроллеры и платы Arduino Mega, Due, 101, M0, AMS Home, ESP8266, Sonoff, ESP32, OLIMEX ESP32-EVB и т. д. Благодаря мощному процессору и быстрой сетевой работе модуля ESP32, интерфейс Arduino Mega Server содержит обилие графики и скриптов и это никак не сказывается на скорости его работы — страницы загружается почти мгновенно.

                    image

                    Всё работает стабильно и предсказуемо, никаких сбоев или неадекватного поведения системы или модуля не выявлено. Ниже приведён лог загрузки AMS, из которого можно узнать некоторые подробности о системе.

                    image

                    Температура модуля, измеряемая встроенным датчиком температуры колеблется от 50 градусов Цельсия при старте до 55 градусов в процессе работы. Во время работы ток потребления модуля составляет около 130 мА.

                    Перспективы

                    Не нужно быть особым экспертом, чтобы предсказать, что сейчас как грибы после дождя начнут появляться платы на ESP32 всевозможных форматов и с разнообразным функционалом. Вот одна из первых ласточек OLIMEX ESP32-EVB, очень интересная плата для которой в ближайшее время выйдет специализированный дистрибутив Arduino Mega Server.

                    image

                    Заключение

                    Вот, собственно и всё, что я могу сказать о новом модуле ESP32 и его работе с Ардуино. Впечатления он оставляет исключительно положительные, мне по крайней мере, было очень приятно и интересно с ним работать. Немного портит картину отсутствие библиотек для поддержки датчиков и периферии, но это временное явление и вскоре с этим всё будет в порядке.

                    Скачать дистрибутив Arduino Mega Server для ESP32 вы можете на странице загрузки официального сайта, вскоре там появится и соответствующая документация, а пока вы можете воспользоваться краткой инструкцией из файла readme.txt, находящегося в дистрибутиве.

                    • Компьютерное железо
                    • Умный дом
                    • Интернет вещей
                    • DIY или Сделай сам

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *