Эта статья поможет вам настроить рабочее окружение для начала разработки приложений для микроконтроллера Espressif ESP32. Здесь на простом примере показано, как использовать ESP-IDF (Espressif IoT Development Framework), включая конфигурирование проекта с помощью «menuconfig», компиляцию ESP-IDF и загрузку прошивки в ESP32 с помощью IDE Eclipse в операционной системе Windows. Вся информация в данной статье бралась из официальной документации ESP-IDF, но с моими небольшими дополнениями.
Что для этого нужно:
- ПК, с операционной системой Windows (я использовал Windows 10 Pro x64, для других ОС смотрите оф. документацию)
- Toolchain (набор инструментов для компиляции и генерации кода) для создания приложения для ESP32
- ESP-IDF, который по существу содержит API для ESP32 и скрипты для работы с Toolchain
- Текстовый редактор для написания программ (проектов) на языке C/C++ (Eclipse)
- Сама плата ESP32 и USB-кабель для подключения к ПК (я использовал ESP32 DevKitC с AliExpress)
Подготовка среды разработки состоит из трех основных этапов:
- Установка Toolchain
- Получение ESP-IDF из GitHub
- Конфигурирование проекта и настройка IDE Eclipse
После настройки среды вы будете готовы начать самую интересную часть — разработку приложения. Этот процесс можно суммировать в четыре этапа:
- Конфигурация проекта и написание кода
- Компиляция проекта и создание приложения
- Прошивка приложения
- Мониторинг/Отладка приложения
Установка Toolchain
В Windows нет встроенной среды «make», поэтому для установки Toolchain вам понадобится GNU-совместимая среда. Для этого можно использовать среду MSYS2. Вам не нужно постоянно использовать эту среду (вы можете использовать Eclipse или какой-либо другой интерфейс), но она необходима для входа в меню настройки приложения menuconfig, о чём пойдёт речь далее. Для загрузки MSYS2 перейдите по следующей ссылке. Затем разархивируйте zip-файл в C: (или в другое место, но это руководство предполагает C:), у вас должен появится каталог C:msys32 с предварительно подготовленной средой. Далее откройте окно терминала запустив C:msys32mingw32.exe. Среда в этом окне является оболочкой bash. В каталоге C:msys32 есть каталог home, который в свою очередь содержит каталог с именем пользователя. Собственно он и является текущим в открытом терминале. Этот каталог будет использоваться для хранения наших файлов. Далее создайте каталог с именем esp, который будет по умолчанию предназначен для разработки приложений ESP32. Для этого запустите следующую команду оболочки:
mkdir -p ~/esp
Для перехода в созданный каталог:
cd ~/esp
Окно оболочки MSYS32 (mingw32.exe) |
Загрузка ESP-IDF из GitHub
Помимо Toolchain (которая содержит программы для компиляции и сборки приложения), вам также нужны специальные API/библиотеки ESP32. Они предоставляются Espressif в репозитории ESP-IDF. Чтобы получить его, откройте терминал, находясь в каталоге ~/esp, и клонируйте его с помощью команды git clone:
git clone --recursive https://github.com/espressif/esp-idf.git
ESP-IDF будет загружен в ~/esp/esp-idf.
Добавление IDF_PATH в профиль пользователя
Программа toolchain обеспечивает доступ к ESP-IDF с использованием переменной среды IDF_PATH. Эта переменная должна быть настроена на вашем ПК, иначе проекты не будут компилироваться. Для этого нужно добавить скрипт и указать IDF_PATH в профиле пользователя. Скрипты пользовательского профиля содержатся в каталоге C:/msys32/etc/profile.d/. Они выполняются каждый раз, когда вы открываете окно MSYS2.
- Создайте новый файл скрипта в каталоге C:/msys32/etc/profile.d/. Назовите его export_idf_path.sh.
- Определите путь к каталогу ESP-IDF. Он специфичен для вашей конфигурации системы и может выглядеть примерно так: C:msys32homeuser-nameespesp-idf
- Добавьте команду экспорта в файл скрипта, например:
export IDF_PATH="C:/msys32/home/user-name/esp/esp-idf"
Не забудьте заменить обратные косые черты в исходном пути Windows (должно быть так как в примере с использованием «/«).
- Сохраните этот файл скрипта
- Закройте окно MSYS2 и затем откройте снова. Проверьте установлен ли IDF_PATH выполнив команду:
printenv IDF_PATH
Если всё настроено верно, то консоль должна вывести путь к папке ESP-IDF:
Путь IDF_PATH |
Старт проекта
Теперь вы готовы подготовить свое первое приложение для ESP32. Чтобы понять как происходит создание приложения, мы выполним это из командной строки MSYS32 (создание приложения с помощью Eclipse описано ниже). Чтобы начать быстро, мы будем использовать проект get-started/hello_world из каталога примеров в IDF. Но если вы будете создавать своё приложение с нуля, то производитель рекомендует использовать шаблон esp-idf-template, который остаётся лишь настроить под свои нужды. Вы также можете найти ряд других проектов с примерами в каталоге ESP-IDF. Итак, скопируйте get-started/hello_world в каталог ~/esp:
cd ~/esp cp -r $IDF_PATH/examples/get-started/hello_world .
Подключение ESP32 к ПК
Узнаём порт подключения
Проверьте список идентифицированных COM-портов в Диспетчере устройств Windows. Отключите ESP32 и подключите его обратно, чтобы проверить, какой порт исчез из списка, а затем снова отобразится. На приведенном ниже рисунке показан серийный порт для ESP32 DevKitC:
ESP32 DevKitC и его номер порта в диспетчере устройств |
Конфигурирование порта с помощью menuconfig
Это обязательный шаг конфигурации проекта без выполнения которого вы не сможете загрузить приложение в свой ESP32. Итак, находясь в терминальном окне, перейдите в каталог проекта hello_world, набрав cd ~/esp/hello_world. Затем запустите утилиту конфигурации проекта menuconfig:
cd ~/esp/hello_world make menuconfig
Если предыдущие шаги были выполнены правильно, отобразится следующее меню:В меню перейдите в Serial flasher config > Default serial port, чтобы настроить имя последовательного порта, на котором работает подключенный ESP32. По умолчанию он называется как в Linux /dev/ttyUSB0:Его нужно изменить на COM3 (номер тот который отображался в диспетчере устройств):Подтвердите выбор, нажав enter, сохраните конфигурацию, выбрав < Save > и затем выйдите из приложения, выбрав < Exit >. Вот несколько советов по навигации в menuconfig:
- Используйте клавиши со стрелками «вверх» и «вниз» для перемещения по меню.
- Используйте клавишу «Enter», чтобы перейти в подменю, клавишу «Escape», чтобы выйти.
- Используйте клавишу «?» чтобы увидеть справку. Клавиша «Enter» выходит справки.
- Используйте клавишу «пробела» или «Y» и «N» для включения (Yes) и отключения (No) элементов конфигурации с флажками ‘[*]’
- Введите «/ «для поиска элементов конфигурации.
В настоящее время утилита menuconfig не поддерживается в Eclipse IDE. По этому, перед началом работы с проектом необходимо выполнить описанные выше шаги.
Создание и загрузка приложения в ESP32
Теперь вы можете создавать и запускать приложение. Выполните в консоли:
make flash
Наконец, окончательный модуль будет сброшен, и приложение «hello_world» запустится. Сразу хочу сказать, что выполнение команды make flash может занять от 5 до 10 минут (зависит от конфигурации вашего ПК), но это только при первом запуске.
Monitor
Monitor можно использовать для отладки и просмотра состояния приложения. Чтобы убедиться, что приложение «hello_world» действительно запущено, введите make monitor. Эта команда запускает приложение IDF Monitor:
Запуск IDF Monitor |
Hello World в консоли |
Для выхода из monitor нажмите сочетание клавиш Ctrl+] Если вместо сообщений выше вы видите случайный мусор, похожий на:
e���)(Xn@�y.!��(�PW+)��Hn9a/9�!�t5��P�~�k��e�ea�5�jA ~zY��Y(1�,1 �� e���)(Xn@�y.!Dr�zY(� jpi�|�+z5Ymvp...
или монитор выходит из строя вскоре после загрузки, ваша плата, скорее всего, использует 26-мегагерцовый кристалл, а ESP-IDF принимает значение по умолчанию 40 МГц. Выйдите из монитора, вернитесь к menuconfig, измените ESP32_XTAL_FREQ_SEL на 26 МГц, затем снова создайте и загрузите приложение в ESP32. Данный параметр находится в меню Component config –> ESP32-specific –> Main XTAL frequency. Также причина может быть в неправильной установке скорости COM порта (по умолчанию 115200), которую можно изменить в том же menuconfig.
Установка и настройка IDE Eclipse
- Загрузите установщик Eclipse для windows с eclipse.org.
- Если у вас не установлено Java SE Runtime Environment, то возможно, при запуске установщика Eclipse, вам предложат это сделать
- При запуске установщика Eclipse выберите «Eclipse for C/C++ Development» (в других местах вы увидите, что это называется CDT).
- Eclipse использует поддержку Makefile в ESP-IDF. Это означает, что вам нужно начать с создания проекта ESP-IDF. Вы можете использовать проект idf-template из github или открыть один из примеров в поддиректории примеров esp-idf.
- Далее запустите Eclipse, выберите «File» -> «Import…«
- В появившемся диалоговом окне выберите «C/C++« -> «Existing Code as Makefile Project» и нажмите «Next«.
- На следующей странице в «Existing Code Location» введите путь к каталогу вашего проекта IDF. Не указывайте путь к самому каталогу ESP-IDF (который настраивается позже). Указанный каталог должен содержать файл с именем «Makefile» (проект Makefile).
- На той же странице в разделе «Toolchain for Indexer Settings» снимите флажок «Show only available toolchains that support this platform«.
- В появившемся расширенном списке выберите «Cygwin GCC«. Затем нажмите «Finish«.
Примечание: вы можете видеть предупреждения в пользовательском интерфейсе, что Cygwin GCC Toolchain не найден. Это нормально, мы собираемся настроить свойства проекта в Eclipse, чтобы он видел наш Toolchain.
Свойства проекта
- Новый проект появится в проводнике проектов слева. Щелкните правой кнопкой мыши по имени проекта и в открывшемся контекстном меню выберите «Properties» (свойства проекта).
- На странице свойств нажмите на «C/C++ Build» (верхний уровень)
- Снимите флажок «Use default build command» и в поле build command введите:python ${IDF_PATH}/tools/windows/eclipse_make.py
- Ниже под «C/C++ Build» перейдите на страницу «Environment«:
- Нажмите на кнопку «Add…» и введите имя BATCH_BUILDи значение (value) 1.
- Нажмите на кнопку «Add…» и введите имя IDF_PATH. Значение должно содержать полный путь к каталогу ESP-IDF. Этот путь должен записываться с использованием знака деления «/«, а не обратной косой черты ««. Пример правильной записи: C:/msys32/home/Oleksii/esp-idf.
- Далее необходимо отредактировать значение переменной PATH. Можно либо в конец, после точки с запятой, либо удалить имеющиеся значение и уже в пустое поле добавить следующее значение:C:msys32usrbin;C:msys32mingw32bin;C:msys32optxtensa-esp32-elfbin(Если вы устанавливали msys32 в другую директорию то вам нужно будет отредактировать пути).
- Нажмите на «C/C++ General» и в раскрывшемся списке нажмите на «Preprocessor Include Paths, Macros, etc.«
- Перейдите на вкладку «Providers«
- В отображаемом списке свойств, нажмите на «CDT GCC Built-in Compiler Settings Cygwin«. Ниже, в поле «Command to get compiler specs«, удалите всё значение и вставте:xtensa-esp32-elf-gcc ${FLAGS} -E -P -v -dD «${INPUTS}»
- Далее в том же списке свойств, нажмите на «CDT GCC Build Output Parser» и ниже, в поле «Compiler command pattern» удалите всё значение и вставте:xtensa-esp32-elf-((g?cc)|([gc]++)|(clang))
На этом конфигурация проекта закончена. Далее для того чтобы вы могли, в интерфейсе Eclipse, выполнять команды очистки, сборки и загрузки проекта в ESP32, необходимо выполнить следующее:
- Слева, в проводнике проектов, нажмите правую кнопку мыши по имени проекта (убедитесь что вы выбрали именно корневой каталог, а не внутренний)
- В открывшемся контекстном меню выберете «Build Targets» -> «Create…«
- В поле «Target name» введите «flash«. Остальные опции оставте по-умолчанию.
- Теперь для компиляции и загрузки своего приложения вы можете использовать «Project» -> «Build Target» -> «Build» (Shift+F9)
Команда flash далеко не единственная которую можно использовать в работе. Для получения полного списка команд выполните в терминале msys32 (предварительно перейдя в папку проекта) команду make help. В результате вы увидете весь список поддерживаемых команд:
Список поддерживаемых комманд приложением make |
Стоит выделить только те которые будут вам полезны:
- all — создаёт (компилирует) полное приложение с bootloader и таблицей разметки
- flash — выполняет загрузку всех файлов приложения в память ESP32
- clean — очищает проект от скомпилированных файлов (может быть полезна если ваш проект был скомпилирован вне Eclipse)
- erase_flash — очищает память ESP32
- app — создаёт (компилирует) только пользовательское приложение
Это всё что необходимо сделать для начала работы с ESP32, ESP-IDF и Eclipse в операционной системе Windows 10.
Микроконтроллер ESP32 – это одна из самых доступных и мощных платформ для создания умных ардуино-проектов с поддержкой WiFi. Придя на смену ESP8266, этот чип дал новые возможности для разработчиков, хотя по-прежнему остались старые проблемы с поддержкой и документацией. В этой статье вы найдете описание характеристик, распиновку микросхемы, примеры программирования с помощью Arduino IDE
Описание микроконтроллера ESP32
Фирма Espressif выпустила мощный недорогой микроконтроллер ESP32 летом 2016 года. Устройство представляет собой систему на кристалле, построенную по технологии TSMC 40 нм, с Wi-Fi и Bluetooth контроллерами. Оно оснащено двухъядерным 32-битным процессором, который работает на частотах 80, 160 или 240 МГц. Также в систему интегрированы антенные коммутаторы, радиочастотные компоненты, фильтры, усилители, модули управления питанием. Подключается ESP32 к компьютеру через обычный USB провод.
Характеристики чипа
Технические характеристики ESP32:
- Двух- или одноядерный 32-битный процессор Tensilica Xtensa LX6;
- Тактовая частота – 160 или 240 МГц;
- 520 Кб SRAM;
- Максимальный ток потребления 260 мА, в спящем режиме – 10 мА;
- Стандарты беспроводной связи – Wi-Fi: 802.11 b / g / N, Bluetooth: v4.2 BR/EDR and BLE;
- Наличие датчиков температуры, Холла, тач-сенсоров;
- Инфракрасное дистанционное управление;
- Можно подключать двигатели и светодиоды через ШИМ разъем;
- Стандарт IEEE 802.11 с поддержкой WFA, WPA/WPA2 и WAPI;
- Возможность безопасной загрузки;
- Шифрование флэш диска.
Также в модуле традиционно присутствует встроенное управление энергопитанием. Для этого используются линейный регулятор, индивидуальное питание для RTC (ядро низкого энергопотребления), пробуждение по таймеру или сенсорному датчику.
Программирование модуля ESP32 может производиться на самых разных платформах, и средах, вот небольшой список наиболее популярных вариантов:
- Arduino IDE;
- Espressif IoT Development Framework;
- Espruino;
- PlatformIO;
- Pymakr IDE.
Большинство проектов реализуется на Arduino IDE и Espruino.
Использование ESP 32
Хоть плата ESP32 появилась недавно, она уже активно используется в коммерческих проектах, связанных с мобильными приложениями, электроникой и задачами IoT. Например, на ее базе построен светодиодный браслет IoT группы Alibaba. Он представляет собой живой беспроводной экран, в котором каждый браслет работает как пиксель. Также на основе микроконтроллера реализована биометрическая система отслеживания посещаемости и проекты, связанные с анализом климатических условий. Имея плату ESP32 и датчики температуры, влажности и давления, можно самостоятельно собрать метеостанцию. ESP32 используется в музыкальных плеерах, помощниках с голосовым управлением, аудиогарнитуре.
Распиновка ESP32
Микроконтроллер оснащен 48 контактами плюс 1 большой тепловой контакт, которые обладают разными функциями. Выводы микросхемы:
- 18 каналов 12-разрядного АЦП;
- 10 GRIO портов;
- 3 SPI;
- 3 UART;
- 2 I2C;
- 16 ШИМ выводов;
- 2 8-битных ЦАП вывода;
- 2
Расположение выводов зависит от производителя. Например, есть плата ESP32 DEVKIT V1 DOIT, у которой 36 контактов. Распиновка представлена на рисунке ниже.
Одним из самых популярных модулей является ESP-WROOM-32. Распиновка также приведена на картинке.
К портам GRIO 0, 4, 2, 15, 13, 12, 14, 27, 33 и 32 подключены сенсорные выводы. Они могут использоваться для вывода ESP32 из глубокого сна. Они фиксируют любое изменение электрического заряда.
Порты с 34 по 39 используются только для ввода информации. На них отсутствуют подтягивающие резисторы, поэтому их нельзя использовать как выходы.
На некоторых платах отображаются контакты 6-11. Они подсоединены к к интегрированной SPI flash. Их не используют в проектах.
Есть различные версии платы ESP32 размерами 5х5 мм или 6х6 мм. Также на основе ESP32 существуют модули SMT для интегрирования в другие платы.
Отличия esp32 от esp8266
Платформы ESP8266 и ESP32 произведены одной компанией Espressif. Микроконтроллер ESP32 отличается от своего предшественника улучшенными характеристиками, увеличенным функционалом и большим объемом памяти. Стоимость нового прибора дороже примерно в 2 раза.
Важным преимуществом ESP32 является более быстрый Wi-Fi и Bluetooth. В ESP32 установлен более мощный процессор, позволяющий реализовывать сложные проекты. Эта платформа подходит для приложений, в которых требуется интернет или новые интерфейсы. Для более дешевых разработок используется ESP8266.
Объем памяти у нового устройства ESP32 увеличен – 512 Кб против 160 Кб ESP8266. Также ESP32 отличается большим количеством выводов GRIO. К нескольким контактам на ESP32 прикреплены емкостные сенсорные датчики и датчик температуры. На обоих устройствах контакты GRIO можно использовать по-разному. ESP32 имеет 18 12-битных АЦП каналов. У его предшественника есть всего 1 10-битный вывод АЦП.
Мощность процессора значительно влияет на скорость работы. Модуль ESP32 показывает рекордную производительность по сравнению с предшественником ESP8266. Загрузка страницы с длинным скетчем и множеством графики занимает секунды.
Из недостатков ESP32 можно выделить отсутствие библиотек для поддержки сенсоров и малое количество драйверов. Это связано с тем, что плата появилась в продаже недавно. Но учитывая все преимущества микроконтроллера и его перспективы, эта проблема будет решена уже в ближайшее время.
Настройка Arduino IDE для работы с ESP32
Изначально изделия от компании Espressif поставляются с прошивкой, позволяющей работать с помощью AT команд. Это не всегда удобно, поэтому лучше программировать плату в привычной среде разработки – Arduino IDE.
Чтобы начать создавать проекты на ESP32, сначала нужно иметь его поддержку в среде разработки Arduino IDE. Поддержка в настоящий момент находится на начальном, но работоспособном уровне. Проблемы могут возникнуть с драйверами устройств, но из-за популярности модуля вскоре будет поддерживаться вся периферия.
В первую очередь нужно скачать Arduino IDE и официальную инструкцию с сайта https://github.com/espressif/arduino-esp32. Нужно загрузить файлы дистрибутива и поместить в папку C:UsersUserDocumentsArduinohardwareespressifesp32.
Так как плата ESP32 новая и поддержка в среде разработки Ардуино появилась недавно, то могут возникнуть сложности с установкой. Это связано с тем, что драйвера только разрабатываются и изменен порядок расположения системных директорий. Все скетчи должны быть расположены в папке C:UsersUserDocumentsArduino. Файлы дистрибутива должны быть размещены внутри этой папки, как советует производитель. Если этого не учесть, то поддержка в Ардуино ESP32 будет отсутствовать.
После установки можно открыть Arduino IDE. Затем нужно перейти в настройки и в менеджере плат выбрать нужную. Теперь можно прошивать модуль.
Проверка модуля и подключение к Arduino IDE
Чтобы произвести проверку работоспособности модуля, можно собрать проект с мигающим светодиодом. Для подключения потребуются:
- Модуль ESP32;
- Источник питания на 3 В;
- Кнопка;
- Резисторы;
- USB кабель для подключения к компьютеру;
- Провода;
- Светодиод;
- USB-TTL конвертор.
Собирается это все согласно схеме ниже.
Затем нужно загрузить тестовый код, прописав в нем номер COM порта, к которому подключен модуль, и тип платы. После загрузки скетча должен замигать светодиод.
Настройка официальной среды разработки ESP-IDF (Espressif IoT Development Framework)
Среду ESP-IDF можно установить на Windows. Для этого нужно:
- Скачать с официального сайта среду разработки;
- Распаковать архив, поместить его на диск C;
- Затем появится каталог msys32, в который нужно перейти и запустить программу mingw32.exe;
- Появится окно терминала, где нужно создать каталог с именем esp;
- Нужно перейти в созданный каталог;
- Подключить необходимые библиотеки с помощью команды git clone –recursive https://github.com/espressif/esp-idf.git;
- Затем устанавливаются пакеты Python командой python -m pip install –user -r $IDF_PATH/requirements.txt.
После этого можно начинать работу. В каталоге esp-idfexamples есть различные примеры скетчей для работы с модулем.
Используемые источники:
- https://web-and-diy.blogspot.com/2018/03/esp32-esp-idf-eclipse-ide-windows.html
- https://arduinomaster.ru/platy-arduino/esp32-arduino-raspinovka-arduino-ide/