Как установить esptool на windows 10

Обновлено: 06.07.2024

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

Как известно, SoC ESP8266 построен на базе процессора Xtensa LX106 фирмы Tensilica, если кому-то интересно, то в сети есть статья про конфигурируемые процессоры этой фирмы. Компания Espressif предоставляет полную документацию, а так же компилятор и среду разработки для SoC ESP8266 только после подписания партнерского соглашения и не со всеми подряд, на мое письмо они так и не ответили. Немного погуглив можно найти утекший в сеть официальный компилятор, среду разработки, основанную на Eclipse, множество документации и лицензии, но это не наш путь. Мы будем использовать неофициальный компилятор на основе Crosstool-NG

В этой статье я расскажу как собрать компилятор под Ubuntu Linux, а так же мы попробуем написать простейшую прошивку. Основной упор я сделаю на работу с компилятором под Windows, а так же настройку среды Eclipse для написания прошивок для ESP8266.

Часть 1: Сборка компилятора под Ubuntu Linux, настройка SDK, сборка стандартных примеров и прошивок.

Установка среды сборки

Для 32-разрядной Debian (Linux) выполняем:
Для 64-разрядной Debian (Linux) выполняем:
Далее:
USER меняем на логин текущего пользователя.

После этого можно откинуться на спинку кресла минут на 40-50 и попить кофе. Если все завершится без ошибок, то можно двигаться дальше.


Добавляем библиотеки libc, libhal и заголовочные файлы в SDK


Установка ESP image tool

ESP tool можно собрать из исходников,
для Linux можно скачать здесь
для Debian/Ubuntu здесь
Готовый пакет для Ubuntu качаем отсюда

Установка ESP upload tool


Сборка примеров прошивок

Скачиваем и собираем примеры blinky и basic_example:
Если все шаги были сделаны правильно, то сборка пройдет без ошибок и в каталоге firmware появятся 2 файла прошивки 0x00000.bin и 0x40000.bin

Скачиваем и собираем пример базовой прошивки AT:

Для правильной сборки AT прошивки необходимо отредактировать базовый Makefile в строке
LIBS = c gcc hal pp phy net80211 lwip wpa main
добавить линковку библиотеки upgrade, итоговая строка будет выглядеть так
LIBS = c gcc hal pp phy net80211 lwip wpa upgrade main
после этого прошивку можно собрать командой make

Cобираем пример прошивки IoT:

Так же как и для AT прошивки, для правильной сборки IoT прошивки необходимо отредактировать базовый Makefile в строку
MODULES = driver user
нужно добавить дополнительные модули, итоговая строка будет выглядеть так
MODULES = driver user json ssl upgrade lwip
а в строку
LIBS = c gcc hal pp phy net80211 lwip wpa main
добавить линковку библиотеки json, итоговая строка будет выглядеть так
LIBS = c gcc hal pp phy net80211 lwip wpa main json
после этого прошивку можно собрать командой make

Для того чтобы прошить плату ESP-01 нужно использовать команду make flash
Не забываем, что для переключения в режим обновления прошивки нужно подать низкий уровень на GPIO0 и высокий на CH_PD.
Чтобы понять, что делает make flash стоит открыть любой Makefile и найти строку flash:
после подстановки всех аргументов получаем команду прошивки SoC:

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

Часть 2: Установка компилятора под Windows, настройка SDK, сборка стандартных примеров и прошивок.

Т.к. моя основная ОС под которой я работаю 90% времени это Windows, то разработка в Linux меня не сильно интересовала.
Ниже я расскажу, как установить и настроить компилятор и SDK в Windows, а так же как настроить среду разработки Eclipse для комфортной разработки прошивок в ней.
Рассматривать процесс сборки компилятора под Windows я не буду, т.к. это довольно сложная процедура, она намного сложнее сборки в Linux.
Дабы избавить Вас от всех тонкостей и нюансов, я подготовил рабочий комплект Espressif DevKit, включающий в себя компилятор, последнюю версию SDK, стандартные примеры прошивок, а так же мои собственные примеры прошивок.

Итак приступим:
1. Cкачиваем (148Mb) и устанавливаем мой комплект Espressif-ESP8266-DevKit-v2.2.1-x86.exe (актуален на 15.11.2016)
2. Скачиваем и устанавливаем Java Runtime x86 или x64 (Например: jre-8u111-windows-x64.exe для Windows x64)
3. Скачиваем и устанавливаем Eclipse Neon x86 или Eclipse Neon x64 для разработки на С++. Распаковываем архив в корень диска С.
4. Скачиваем и устанавливаем MinGW. Запускаем mingw-get-setup.exe, в процессе установки выберите режим без GUI, то есть уберите галочку ". also install support for the graphical user interface".
5. Скачиваем набор моих скриптов для автоматизации установки доп.модулей для MinGW. (актуален на 15.10.2016)
6. Запустите из моего набора файл install-mingw-package.bat. Он скачает с моего сайта закэшированые архивы пакетов для mingw, примерно 90 Mb и установит основные модули для MinGW. Скачивание заранее готового набора файлов пакетов для MinGW гарантирует, что все они будут установлены, иногда сервера, где лежат пакеты MinGW становятся недоступными и необходимые пакеты не ставятся и поэтому сборка прошивок может проходить с разного рода фокусами.
7. Запустите Eclipse из каталога c:\eclipse\eclipse.exe
8. В Eclipse выберите меню File -> Import -> General -> Existing Project into Workspace, в строке Select root directory выберите каталог C:\Espressif\examples\ESP8266 и импортируйте рабочие проекты.
Далее справа в Make Target выберите нужный проект, например hello-world и запустите цель all на сборку,
при этом в окне Console должен отобразиться ход сборки, если все сделано правильно, то будет примерно такая картина:


Это значит, что прошивка для ESP8266 собрана и находится в каталоге C:\Espressif\examples\hello-world\firmware
Для прошивки ESP8266 используйте цель flash, предварительно отредактировав файл сборки проекта Makefile, строка
ESPPORT ?= COM2
, где после COM цифра 2 указывает номер COM-порта к которому подключена плата с ESP8266.

Недавно хотел загрузить в esp8266 прошивку управления умного дома, для интеграции с Apple Home Kit, но перепробовав много вариантов, ни одна так и не заработала. Причину не мог найти долго, пока не ковырял другой проект, и заметил, что при загрузке прошивки, осталась wi-fi точка от предыдущей прошивки.

Сначала пройдём в раздел загрузки питона на windows, и нажмём заветную клавишу загрузки.

python windows установка


После завершения запускаем командную строку Windows CMD, и простой командой проверяем корректность установки.


Как видите, строка ответила, что у нас установлена версия Python 3.7.4. Теперь нужно установить утилиту esptool, для этого воспользуемся следующей командой


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


Теперь подключаем нашу плату ESP8266, и проверяем на каком порту она находится. Сделать это проще всего через диспетчер устройств. У меня это COM3


Теперь подставим в следующую команду номер порта, можно смело запускать процедуру удаления содержимого флэш памяти esp8266


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

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

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

Для начала скачаем следующие визуальные инструменты:

  1. Flash Download Tools,
  2. ESPlorer,
  3. nodemcu-flasher (Nodemcu firmware programmer)

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

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

Для этого, если у нас ещё не установлен Python, или установлена старая версия, то необходимо его установить.

Скачиваем и устанавливаем последнюю версию интерпретатора с официального сайта Python


Также надо будет установить галку для прописывания пути в переменные среды, чтобы наш Python запускался из любого места




то тогда перезагружаемся и проверяем ещё раз.

Если всё нормально, то продолжаем дальше.

Дальше надо будет установить утилиту esptool. Для этого используем следующую команду


Ниже мы видим совет обновить pip (инсталлятор пакетов). Ну, раз просят, давайте попробуем обновить


Теперь у нас ещё и обновлённый pip.

В принципе, я пробовал деинсталлировать после этого esptool, а затем его установить заново, ничего не изменилось, поэтому этого делать не обязательно.

Проверим доступность esptool, узнав его версию


Теперь, когда инструмент установлен, мы можем начать с ним работу.

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

Официальная прошивка от Espressif для пользования AT-интерпретатором состоит из нескольких файлов и адреса заливки их во FLASH-память ESP8266 зависят от объёма данной памяти, а также её организации.

Откроем мануал по использованию AT-команд и мы увидим в нём для нашего объёма FLASH-памяти следующую картину


Давайте считаем всю нашу FLASH-память из модуля.

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


Чтобы считать или записать прошивку, сначала нужно наш модуль перевести в данный режим.

Делается это в с помощью наших двух кнопок в следующем порядке

  1. Нажимаем и удерживаем кнопку сброса (RESET),
  2. Нажимаем и удерживаем кнопку прошивки (FIRMWARE),
  3. Отпускаем кнопку сброса (RESET),
  4. Отпускаем кнопку прошивки (FIRMWARE).

После данных действий наш модуль должен быть переведен в режим загрузки (выгрузки) прошивки.

Теперь, чтобы считать всю FLASH-память нашего ESP и сохранить её в файл, в командной строке мы вводим следующую строку


Пойдёт процесс считывания. В командной строке мы не устанавливаем скорость обмена, она выставится по умолчанию. Как установить скорость, мы разберёмся в уроке, когда будем прошивать контроллер.

Теперь об остальных параметрах в строке

После того, как процесс считывания закончится, мы видим, что в нашей папке появился файл с дампом FLASH-памяти


В следующей части нашего урока мы выделим из считанного байта FLASH-памяти модуля ESP-01 файлы прошивки.

Различные модули ЕSP8266 можно приобрести здесь Модули ЕSP8266

Переходник USB to TTL можно приобрести здесь ftdi ft232rl


Эта статья начинает курс уроков по программированию микроконтроллеров с помощью языка Micropython. Это сравнительно новый язык программирования, но уже успевший завоевать популярность. Будучи представленным в 2013-м году в качестве проекта на Kikstarter, в 2020 он доступен на довольно внушительном списке плат и включает в себя множество библиотек для работы с различными модулями.

В данный момент - Micropython поддерживается следующими платами:

  • PyBoard - официальная плата для Micropython, её можно купить в официальном магазине. Недавно выпущены новые версии, с поддержкой Wi-Fi и Bluetooth.
  • WiPy - плата для разработки IoT устройств от компании pycom
  • ESP8266/ESP32 - самые популярные платы для создания различных устройств, с подержкой Wi-Fi, а в случае ESP32 ещё и Bluetooth
  • STM32F4 Discovery board - одна из плат на основе STM32
  • Espruino Pico - плата со встроенным USB-коннектором, разработанная компанией ESPruino

Кроме этого, у американской компании Adafruit существует собственная сборка Micropython - CircuitPython, но она доступна лишь на её фирменных платах, которые не поставляются в Россию.

Устанавливаем Micropython

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

Для проверки что установка прошла успешно нужно ввести в терминале команду esptool.py -h или, если вы используете Windows - esptool.exe -h . Вы увидите всю подсказку по данному модулю.


Процесс установки Micropython-a аналогичен установке Espruino: скачать с сайта прошивку и установить её с помощью esptool , не забыв перед установкой отформатировать плату. При использовании команд - помните, что порт и имя файла прошивки может отличаться.

Для разработки с использованием Micropython уже существует достаточно много IDE, однако на мой взгляд самой удобной является Mu. Это IDE, которая позволяет работать не только с ESP32/ESP8266 но и с другими платами, поддерживающими Micropython.


Здесь есть и встроенная REPL, и функционал для загрузки и редактирования файлов, и автокомплит. В настройках IDE необходимо выбрать только тип платы, программа сама найдёт это устройство среди доступных портов.



Первая программа

Поговорим немного о синтаксисе. Если вы уже умеете программировать на Python - то никаких сложностей не возникнет, нужно только обратить своё внимание на модули предназначенные для работы с "железом"

Если вы не знакомы, то не пугайтесь, в процессе чтения примеров вы увидите, что синтаксис прост и понятен. Несколько синтаксических правил для понимания:

  • Блоки кода разделяются не фигурными скобками, как в C++, а отступами(Tab-ами)
  • Для подключения библиотек используется конструкция import name_of_library

Традиционно, первой программой для микроконтроллеров является программа Blynk - моргание встроенным в практически любую плату светодиодом.

В данном уроке используется плата на основе ESP8266 - WeMod D1 Mini, на ней встроенный светодиод связан с GPIO2.

Для начала, необходимо импортировать библиотеки: from machine import Pin - самая популярная строка в программах на Micropython, в ней мы подключаем возможность управления пинами, библиотека time отвечает за работу со временем.

После этого необходимо связать GPIO2 с нашей переменной, и указать режим работы - Pin.OUT .

Затем в бесконечном цикле включать и выключать, то есть подавать сигнал равный 0 или 1 на наш пин, не забывая делать между этим паузу в одну секунду.

Заключение

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

Читайте также: