Модуль ESP8266 замечателен тем, что не требует специального программатора — обновление прошивки производится на том же железе, на котором вы подключаете модуль ESP8266 к компьютеру, т.е. тоже через USB-TTL конвертер (ну или Arduino или RPi). Для обновление прошивки на модуле ESP8266 проделайте следующее:
1. Скачайте новую версию прошивки с нашего сайта из раздела ESP8266 прошивки (вот ссылка на последнюю версию прошивки AT 0.21 SDK 0.9.5 на момент написания этой статьи)
2. Скачайте XTCOM UTIL из раздела ESP8266 Утилиты с нашего сайта
3. Отключите от последовательного порта вашу терминальную программу
4. Отключите питание от модуля ESP8266, подключите GPIO0 к GND, включите питание модуля.
5. Запускайте XTCOM_UTIL для прошивки модуля и загружайте новую прошивку в модуль ESP8266.
Если программа при запуске выдает ошибку, то вам необходимо установить
Microsoft Visual C++ 2005 Redistributable Package (x86)
или
Microsoft Visual C++ 2005 Redistributable Package (x64)
первая ссылка для 32-битных систем, а вторая для 64 разрядных.
Загрузка прошивки в модуль обычно осуществляется на скорости 115200, но режим прошивки модуля поддерживает автоопределение скорости и прошивка может быть осуществлена на скорости от 9600 и выше. Максимальная скорость зависит от многих факторов (вашего USB-TTL конвертера, длины проводов и прочего) и может быть определена экспериментально на конфигурации именно вашего оборудования.
Запускаем XTCOM_UTIL
ESP8266 обновление прошивки через XTCOM_UTIL шаг 1
В меню Tools выбираем Config device
ESP8266 обновление прошивки через XTCOM_UTIL шаг 2
Выбираем последовательный порт, к которому подключен ESP8266, выставляем скорость 115200, жмем Open
ESP8266 обновление прошивки через XTCOM_UTIL шаг 3
Эта картинка просто промелькнет, если программе удастся успешно соединится с модулем в режиме загрузки прошивки. Если вы все же увидите эту картинку и счетчик подключений Try to connect times будет расти, значит что-то пошло не так и лучше начать все заново.
ESP8266 обновление прошивки через XTCOM_UTIL шаг 4
Если все прошло гладко, то получим Connect with target OK!
Жмем OK, закрываем окошко Config Device, в меню API TEST выбираем Flash Image Download
Жмем Browse и выбираем файл прошивки, который хотим загрузить и Download
Начнется процесс прошивки модуля ESP8266
ESP8266 обновление прошивки через XTCOM_UTIL шаг 5
По окончание процесса, если все прошло гладко вы увидите Operation Succeeded
ESP8266 обновление прошивки через XTCOM_UTIL шаг 6
На этом процесс прошивки модуля завершен. Отключайте GPIO0 от GND, передергивайте питание модуля и подключайте свою терминальную программу — наслаждайтесь работой модуля ESP8266 с новой прошивкой.
P.S. Все программы для загрузки прошивки в модуль ESP8266 могут загружать ЛЮБЫЕ прошивки, т.е. как прошивки, основанные на AT командах, так и NodeMCU и прочие.
Обсуждение этой статьи на нашем форуме
The flashing of ESP8266 module will be done using the Windows XTCOM_UTIL application. This application can also read/write registers, flash image download, HSpiFlash image download ands memory image download. I’m going to use «flash image download«, which is in fact the firmware flashing. The XTCOM_UTILITY and the flash image can be downloaded here (alternate link here).
Modules:
RS232 FTDI
ESP8266
Connections:
Warning! ESP8266 does not support 5V on either of its pins.
Connecting the ESP8266 to FT232RL FTDI USB to TTL Serial+Adapter:
- VCC = 3.3V (might require a separate power supply for the ESP8266 module, because the FTDI might not give enough current)
- GND = ground
- CH_PD = Chip enable, connect to +VCC
- RST = Leave floating
- GPIO0 = Normally floating but this needs to be connected to GND when flashing the ESP8266 module
- UTXD = Tx data connect to TX of FTDI
- URXD = Rx data connect to RX of FTDI
Flashing ESP8266 module with XTCOM_UTILITY:
Run the program and go to Tools->Config device. Select the Com port of FTDI adapter (only Com
ports COM1-COM6 are supported — change port in Windows control panel if
necessary). The port used by FTDI adapter is visible in Device Manager. In my case the port was COM2 and the speed was set to 115200. Press Open button to open the COM port and then click Connect.
Go to API TEST->Flash Image Download. Press Browse to select the firmware image and then press the Download button to start flashing.
Flash image file info output when using AT+GMR command:
AT version:0.21.0.0 SDK version:0.9.5
References: tutorial from iot-playground.com, images from stak.com and arduino-info.wikispaces.com
Similar tutorial: developer.mbed.org
Время на прочтение7 мин
Количество просмотров421K
На Хабре уже было пару статей о чипе ESP8266 китайской компании Espressif. Статья №1 и Статья №2. Не так давно я получил плату ESP-01 для проведения тестирования. Кому интересно, прошу под кат.
Мной была заказана самая простая плата с ESP8266 — ESP-01, выглядит она так:
В старой ревизии платы на разьем были выведены только VCC, GND, URXD и UTXD.
В последней ревизии добавились RST, GPIO0, GPIO2 и CH_PD.
Всего есть 11 модификаций плат, различающихся количеством выводов и вариантом исполнения:
ESP-01: PCB antenna, after matching the distance to do about the open 400 meters, easy to use.
ESP-02: SMD package for submission limit, the antenna can be drawn with the IPX header casing.
ESP-03: SMD package, the built-in ceramic antenna technology, all available IO leads.
ESP-04: SMD package, customers can customize the antenna types, flexible design, all the IO leads.
ESP-05: SMD package, only leads to serial and RST pin, small external antenna.
ESP-06: bottom mount technology, leads all the IO ports, with metal shielding shell, can be had FCC CEcertification, recommended.
ESP-07: Semi-hole chip technology, all the IO leads, with metal shielding shell, can be had FCC CE certifiedIPX external antenna, can also be built-in ceramic antenna.
ESP-08: with the ESP-07, except that the antenna is in the form of customers can define their own.
ESP-09: Ultra-small size package, only 10 * 10 mm, four-layer board technology 1M bytes!..
ESP-10: SMD interface, narrow-body design, 10 mm wide, suitable for light with controller.
ESP-11: SMD interface, ceramic antenna, small volume.
Распиновка разъёма ESP-01:
Назначение выводов платы ESP-01 такое:
VCC, GND — питание платы (+3.3В);
URXD,UTXD — выводы RS232 толерантны к 3.3В
RST — Аппаратный сброс (reset)
GPIO0, GPIO2 — выводы GPIO
CH_PD — Chip enable, для работы должен быть подключен к +3.3В.
Для переключения в режим обновления прошивки нужно подать низкий уровень на GPIO0 и высокий на CH_PD.
Для подключения платы ESP-01 к ПК я использовал USB-to-RS232 преобразователь на FT232R с выходами TTL 3.3В, можно использовать например такой.
Питание ESP-01 нужно строго 3.3В, поэтому пришлось воспользоваться DC-DC преобразователем, можно использовать такой.
С базовой прошивкой плата ESP-01 управляется AT командами, поэтому нам потребуется программа-терминал, я использовал CoolTerm.
Возможно 2 варианта использования модуля:
1. Использование платы ESP-01 совместно с доп.микроконтроллером, который будет управлять модулем по UART.
2. Написание собственной прошивки для чипа ESP8266 и его использование как самодостаточного устройства.
Естественно более выгодным является 2-й вариант, тем более потенциал чипа ESP8266 достаточно велик.
Для начала мы попробуем вариант №1, то есть управлять платой ESP-01 через RS232.
Схема подключения очень простая:
Вывод VCC — питание платы (+3.3В);
Вывод GND — общий;
Выводы URXD,UTXD — подключаем к конвертеру USB-to-RS232 (в режиме 3.3В)
Вывод CH_PD — подключаем к питанию платы (+3.3В);
В терминале (CoolTerm) устанавливаем скорость COM-порта 57600. Установить нужно именно такую скорость, т.к. если в чипе ESP8266 стоит старая прошивка (а скорее всего это так и есть), то он будет работать только с такой скоростью порта.
Жмем Connect, вводим команду AT, в ответ должно прийти OK. Если все так, то плата работает, можно двигаться дальше.
Процедура обновления прошивки
Вводим команду AT+GMR — проверка версии AT и SDK, в ответ выдает 0016000902, где 0016 — версия SDK, 0901 — версия AT
На текущий момент (06.11.2014) уже доступна прошивка 0018000902 (Версия SDK — 0018, в версия AT — 0902)
Теперь можно и нужно обновить прошивку:
1. Качаем утилиту XTCOM отсюда.
2. Качаем прошивку ESP_8266_v0.9.2.2 AT Firmware.bin отсюда
3. Отключаем питание платы, вывод GPIO0 соединяем с общим проводом, включаем питание.
4. Запускаем XTCOM_UTIL.exe, переходим в Tools -> Config Device, выбираем COM-порт к которому подключена плата, ставим скорость порта 57600, жмем Open, потом Connect, программа должна сказать «Connect with target OK!», закрываем окно настроек. Переходим в меню API TEST, выбираем (4) Flash Image Download, указываем путь к файлу «ESP_8266_v0.9.2.2 AT Firmware.bin», адрес оставляем 0x00000, жмем DownLoad. Должна начаться загрузка прошивки, по окончании будет выдано сообщение.
5. Отключаем питание платы, вывод GPIO0 отсоединяем от общего провода, включаем питание, запускаем терминал (ВНИМАНИЕ! Меняем скорость порта на 9600), проверяем готовность платы командой AT и версию прошивки командой AT+GMR.
После обновления до версии 0018000902 изменится дефолтная скорость COM-порта с 57600 на 9600, но эту скорость в новой прошивке теперь можно задать командой AT+CIOBAUD. Смотрим AT+CIOBAUD=? доступные скорости и ставим командой AT+CIOBAUD=115200 скорость 115200, в ответ должно выдать ОК. Даем команду на рестарт: AT+RST. Меняем скорость порта в программе-терминал на 115200.
Пример:
AT
OK
AT+CIOBAUD=? +CIOBAUD:(9600-921600)
OK
AT+CIOBAUD=115200 BAUD->115200
OK
Настройка подключения к Wi-Fi
Теперь попробуем подключить нашу плату ESP-01 к Wi-Fi точке доступа.
Выполняем следующие команды:
1. Устанавливаем режим работы Wi-Fi командой:
AT+CWMODE=<mode>
Доступны следующие режимы: 1 — STA, 2 — AP, 3 — BOTH
Пример:
AT+CWMODE=1
OK
2. Смотрим список точек доступа командой: AT+CWLAP
Пример
AT+CWLAP +CWLAP:(3,"WiFi-DOM.ru-0474",-85,"c8:d3:a3:30:17:40",8)
+CWLAP:(4,"Intersvyaz_516C",-89,"2c:ab:25:ff:51:6c",10)
+CWLAP:(4,"pletneva",-96,"f8:1a:67:67:2b:96",11)
+CWLAP:(4,"Test",-69,"64:70:02:4e:01:4e",13)
OK
В скобках указывается: SECURITY, SSID, RSSI, BSSID, CHANNEL
SECURITY может принимать значения:
0 — OPEN, 1 — WEP, 2 — WPA-PSK, 3 — WPA2-PSK, 4 — MIXED (WPA-WPA2-PSK)
3. Подключаемся в нашей AP командой:
AT+CWJAP="SSID","PASSWORD"
Пример:
AT+CWJAP="Test","habrahabr"
OK
Подключение длится 2-5 секунд, после чего в случае успешного выполнения появится OK.
3. Посмотрим какой IP адрес получила наша плата командой: AT+CIFSR
AT+CIFSR 192.168.1.104
OK
Отключение от точки доступа делается командой AT+CWQAP.
Адрес получен, можно двигаться дальше.
Плата ESP-01 может выступать в качестве Soft-AP, для включения этого режима выполняем следующие команды:
1. Отключаемся от точки доступа: AT+CWQAP.
2. Меняем режим работы Wi-Fi командой: AT+CWMODE=2
3. Создаем свою AP командой:
AT+CWSAP="SSID","PASSWORD",CHANNEL,SECURITY
Пример:
AT+CWSAP="Test2","habrahabr",10,4
OK
4. Пробуем подключиться в нашей AP с компьютера. Посмотрим результат:
Как видно на картинке скорость только 54Мбит/с и еще меня смущают адреса DNS серверов, думаю они явно китайские, поставить свои через AT-команды нельзя.
Адрес AP можно узнать командой: AT+CIFSR
Пример:
AT+CIFSR 192.168.4.1
OK
Список клиентов нашей AP можно посмотреть командой: AT+CWLIF
Пример:
AT+CWLIF 192.168.4.101,f4:ec:38:8d:05:62
OK
Настройка режима TCP-сервер
На плате ESP-01 можно запустить TCP-сервер для приема-отправки данных или она может выступать TCP-клиентом для приема-отправки данных на сервер.
Для запуска TCP-сервера выполним следующие команды:
1. Устанавливаем режим передачи командой
AT+CIPMODE=<mode>
mode = 0 — not data mode (сервер может отправлять данные клиенту и может принимать данные от клиента)
mode = 1 — data mode (сервер не может отправлять данные клиенту, но может принимать данные от клиента)
Пример:
AT+CIPMODE=0
OK
2. Устанавливаем возможность множественных соединений:
AT+CIPMUX=<mode>
mode 0 — single connection
mode 1 — multiple connection
Проверить режим соединений можно командой AT+CIPMUX?
Пример:
AT+CIPMUX=1
OK
AT+CIPMUX? +CIPMUX:1
OK
3. Запускаем сервер на порту 8888:
AT+CIPSERVER= <mode>[,<port>]
mode 0 — to close server
mode 1 — to open server
Пример:
AT+CIPSERVER=1,8888
OK
Теперь можно подключиться к ESP-01 и отправить-принять какие-нибудь данные. Для подключения будем использовать утилиту SocketTest
Запускаем java -jar SocketTest.jar, на вкладке Client вводим адрес и порт ESP-01, жмем Connect. Если подключение будет успешным, то в терминале появится сообщение Link и в SocketTest станет активной строка Message и кнопка Send.
Посмотреть список активных подключений к ESP-01 можно командой AT+CIPSTATUS
Пример:
AT+CIPSTATUS STATUS:3
+CIPSTATUS:0,"TCP","192.168.1.100",44667,1
OK
Закрыть активное соединение можно командой
AT+CIPCLOSE=<id>
или все соединения AT+CIPCLOSE без параметров.
Пример:
AT+CIPCLOSE=0
OK
Unlink
4. Отправляем данные с ESP-01 на ПК
Для режима Single connection (+CIPMUX=0) отправка идет так:
AT+CIPSEND=<length>
Для режима Multiple connection (+CIPMUX=1) отправка идет так:
AT+CIPSEND=<id>,<length>
После выполнения AT+CIPSEND нужно ввести текст, завершение ввода и отправка осуществляется по Enter.
Пример:
AT+CIPSEND=0,16 > Ping Habrahabr SEND OK
5. Отправляем тестовое сообщение с ПК:
В терминале появляется строка
+IPD,0,16:Ping Habrahabr
Сообщение принято.
Формат принятых данных такой:
Для режима Single Connection (CIPMUX=0):
+IPD,<len>:<data>
Для режима Multiple Connection (CIPMUX=1):
+IPD,<id>,<len>:<data>
Настройка режима TCP-клиента
Теперь поменяем роли, ПК — сервер, ESP-01 — клиент, пробуем:
1. Рестартуем плату AT+RST
2. Устанавливаем режим передачи командой
AT+CIPMODE=<mode>
mode = 0 — not data mode (клиент может отправлять данные серверу и может принимать данные от сервера)
mode = 1 — data mode (клиент не может отправлять данные серверу, но может принимать данные от сервера)
Пример:
AT+CIPMODE=0
OK
3. Режим соединений ставим Multiple connection: AT+CIPMUX=1
4. На ПК в SocketTest запускаем сервер на порту 8888
5. Запускаем клиента на ESP-01
Для режима Single connection (+CIPMUX=0) формат такой
AT+CIPSTART=<type>,<addr>,<port>
Для режима Multiple connection (+CIPMUX=1) формат такой
AT+CIPSTART=<id><type>,<addr>,<port>
Возможные значения параметров:
id = 0-4
type = TCP/UDP
addr = IP адрес
port= порт
Пример:
AT+CIPMUX=1
OK
AT+CIPSTART=0,"TCP","192.168.1.100",8888
OK
Linked
6. Отправляем данные с ESP-01 на ПК
Для режима Single connection (+CIPMUX=0) отправка идет так:
AT+CIPSEND=<length>
Для режима Multiple connection (+CIPMUX=1) отправка идет так:
AT+CIPSEND=<id>,<length>
После выполнения AT+CIPSEND нужно ввести текст, завершение ввода и отправка осуществляется по Enter.
Пример:
AT+CIPSEND=0,16 > Ping Habrahabr SEND OK
Пример отправки и получения данных:
Полезная документация:
Описание AT-команд (На китайском)
Спецификация на чип ESP8266 (На китайском)
Спецификация на чип ESP8266 (На английском)
Заключение:
Как мы видим, плата успешно справляется с поставленными задачами, а именно — подключение к Wi-Fi в качестве клиента, может выступать в роли Soft-AP, на плате можно поднять TCP-сервер для приема-отправки данных, а можно быть TCP-клиентом.
В данной статье мы рассмотрели работу с платой ESP-01 через RS232, в качестве управляющего контроллера выступал ПК, можно без проблем подключить плату Arduino или любой микроконтроллер с UART и выполнять отправку-прием данных через Wi-Fi сеть между контроллерами или ПК.
В следующей статье (как позволит карма) я попробую рассказать о принципах написания собственных прошивок для чипа ESP8266, тем самым плата ESP-01 будет полностью автономной, ей будет не нужен доп.контроллер для управления всеми параметрами. Мы попробуем подключить к плате различные периферийные устройства.
Буду рад ответить на вопросы, хотя до конца я еще не узучил плату ESP-01.
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
In this tutorial we will show how to update ESP8266 with new firmware.
We use ESP8266 together with Arduino and ESP8266EasyIoT library. The problem is if we do not need correct ESP8266 firmware, because responses to AT commands are different in different firmware versions.
To upload ESP8266 firmware you need FT232RL FTDI USB to TTL Serial+Adapter. Se buying guide for details. Don’t forget to set FTDI programmer to 3.3V.
Connection is following:
- Vcc = 3.3V (needs around 300-400mA peak)
- Gnd = ground
- CH_PD = Chip enable so always +Vcc
- RST = Leave floating or ground to reset
- GPIO0 = Normally floating but this needs to be grounded when you start the update.
- UTXD = Tx data connect to Txd on FTDI/Serial interface
- URXD = Rx data connect to Rx of FTDI/Serial interface
In my case serial USB converter did not provide enough current and updating was impossible. I’ve connected ESP8266 VCC to additional 3.3V power supply (do not connect FTDI serial USB VCC to VCC power supply if you are using additional power supply).
Then we need program to flash ESP8266. I’m using Windows XTCOM_UTIL, but you can find more flashing utilities on internet.
Program can be downloaded here XTCOM_UTIL. Run program and go to Tools->Config device. Select Com port (only Com ports COM1-COM6 are supported — change port in Windows control panel if necessary). Then open port and Connect.
Next go to API TEST->Flash Image Download. Select firmware image and press button Download.
Current EasyIoT8266 Arduino library works with ESP8266 V0.9.5.2 firmware. If you are usning SW serial, set baudrate to 9600 (default is 115200) with AT+CIOBAUD=9600.
See more tutorials at http://iot-playground.com/build
Buying guide
To support this site and EasyIoT framework development please buy in our store.
FT232RL FTDI USB for Arduino or ESP8266 programming. Support 5V and 3.3V
ESP8266 Serial WIFI Wireless Transceiver Module
ESP8266 serial WIFI model ESP-03
ESP8266 serial Port WIFI wireless module ESP-12
ESP8266 ESP-05 Serial WIFI Wireless Transceiver Module
You have no rights to post comments
Choose Config Device under Tools menu to choose the correct port and baudrate for flashing. The port should be the same number as you used in your terminal software. The baudrate I used was also the same (115200).
After setting the COM port number and baudrate click Open.
If everything went ok you should shortly get the message:
After clicking OK the software will try to connect to the module bootloader. On my computer it usually completes in 2-3 tries and gives the following message:
If for some reason it goes on trying (and you don’t get connect with target message), check the connections (especially GPIO0, which should be connected to GND) and if the module is powered on.
Click OK and close the Config Device dialog. Next you can check if the software is communicating with the module by using Read Registers function in API TEST menu.
For example 0x3ff20000 address will read as 0x10000000.
And now to the flashing part. Choose Flash Image Download in API TEST menu.
Flash Image DownLoad dialog will pop up. Click Browse and choose the firmware file that you want to flash. The Program Address Offset should be left as it is. When ready click DownLoad button. The download process will take some seconds.
After the download completes you may test the module with updated firmware. Close the XTCOM_UTILITY software. Power off the module and disconnect the GPIO0 pin from ground. Open the serial port that the module is connected to with a terminal emulation software and power the module on. You should be expecting the “ready” message, but the actual message depends on the new firmware flashed. Note also that depending on firmware version the baudrate you need to set may change.
I used the firmware binary from the link in the beggining of this post, which has the baudrate set to 9600 baud by default. Also the “ready” message is changed.
When you check the version with AT+GMR command you will get the following number:
The advantage of this firmware is that the baudrate of the module can be programmaticaly changed and that it is 9600 by default. This enables us to use it with relatively slow serial port of Arduino. I will write an article on using the module with the new firmware with Arduino shortly.
Pages: 1 2