Ранее на нашем сайте мы уже рассматривали начало работы с модулем ESP32, в котором мы рассматривали его программирование с помощью Arduino IDE. Но на момент написания той статьи в Arduino IDE еще не было официальной поддержки модуля ESP32, поэтому его поддержку в Arduino IDE приходилось добавлять используя инструмент GIT. Теперь же, когда в Arduino IDE есть официальная поддержка модулей (плат) ESP32, в использовании инструмента GIT уже нет никакой необходимости и используя описанный ниже подход вы сможете подготовить Arduino IDE для программирования модуля ESP32.
Необходимые компоненты
- Модуль ESP32 (купить на AliExpress) (Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158).
- Arduino IDE.
- Кабель для программирования micro USB.
Основные аппаратные возможности модуля ESP32
При внешнем взгляде на модуль ESP32 видно, что он по размеру немного больше чем модуль ESP8266-01 и его контакты расположены более удобно на его плате. Внешний вид модуля ESP32 показан на следующем рисунке.
Как вы можете видеть из представленного рисунка, "сердцем" модуля является 32-битный микропроцессор. Далее кратко рассмотрим назначение основных элементов модуля.
Micro-USB jack: данный разъем используется для подключения модуля ESP32 к компьютеру с помощью USB кабеля. С его помощью можно программировать модуль с компьютера, а также осуществлять последовательную связь.
Кнопка EN: это кнопка сброса модуля ESP32. Нажатие этой кнопки прекращает выполнение кода программы, которая запущена в модуле.
Кнопка загрузки (Boot Button): эта кнопка используется для загрузки программы в модуль ESP32. Ее необходимо нажимать после нажатия кнопки загрузки программы в Arduino IDE. Когда эта кнопка нажата вместе с кнопкой EN, модуль переходит в режим загрузки прошивки (firmware). Не экспериментируйте с этим режимом если вы не понимаете суть происходящих при этом процессов.
Светодиод красного цвета (Red LED): данный светодиод сигнализирует о том, что на модуль подано питание.
Светодиод синего цвета (Blue LED): данный светодиод подключен к контакту GPIO модуля. Его можно включать/выключать в программе. На некоторых клонированных китайских модулях ESP32 этот светодиод может быть также красного цвета.
Контакты ввода/вывода (I/O pins): данные контакты могут выполнять функции цифрового ввода/вывода, аналогового ввода/вывода, ШИМ (PWM), IIC, SPI, ЦАП (DAC) и многое. Более подробно про назначение данных контактов вы можете прочитать в даташите на модуль ESP32.
ESP-WROOM-32: "сердце" модуля ESP32. Это 32-битный микропроцессор, разработанный компанией Espressif systems.
Основные технические характеристики модуля ESP32 представлены в следующей таблице.
Число ядер процессора | 2 |
Архитектура | 32 бита |
Wi-Fi | есть |
Bluetooth | есть |
RAM (ОЗУ) | 512 KB |
FLASH | 16 MB |
Число контактов | 30-38 (в зависимости от модификации модуля) |
Коммуникационные протоколы | SPI, IIC, I2S, UART, CAN |
Каналы АЦП | 18 |
Разрешение АЦП | 12 бит |
Каналы ЦАП | 2 |
Разрешение ЦАП | 8 бит |
Далее перейдем к подготовке среды Arduino IDE к работе с модулем.
Удаление старых версий плат ESP32 из Arduino IDE
Если вы подключаете свой модуль ESP32 к Arduino IDE, то данный пункт статьи можно полностью пропустить. Если же вы ранее добавляли поддержку плат ESP32 в Arduino IDE с помощью инструмента GIT (к примеру, как описано в данной статье), то вам необходимо будет удалить каталог Espresiff из каталога Arduino. Пользователи операционной системы Windows могут найти этот каталог по адресу Documents/Arduino/hardware. Удалите данный каталог Espresiff прежде чем переходить к выполнению других пунктов статьи.
Подготовка Arduino IDE к программированию ESP32
Шаг 1. Скачайте дистрибутив Arduino IDE по адресу https://www.arduino.cc/en/Main/Software, после чего установите его. Если у вас Arduino IDE уже установлена, то убедитесь что у вас свежая ее версия.
Шаг 2. Откройте Arduino IDE и в ней выберите пункт меню Files -> Preferences, в открывшемся окне найдите поле “Additional Boards Manager URLs:” (выделено красной рамкой на рисунке ниже).
Шаг 3. Это поле может быть пустым или оно может содержать некоторую информация если до этого вы в Arduino IDE работали с модулем ESP8266.
Если это поле пустое, то просто добавьте в него строку: https://dl.espressif.com/dl/package_esp32_index.json.
Если это поле уже содержит другой URL, то добавьте в него наш необходимый URL, разделив эти два URL запятой (,) – на представленном ниже рисунке как раз показан этот случай.
1 2 |
https://dl.espressif.com/dl/package_esp32_index.json, http://arduino.esp8266.com/stable/package_esp8266com_index.json |
После этого нажмите OK.
Шаг 4. Выберите пункт меню Tools -> Boards -> Board Managers чтобы открыть окно менеджера плат (Board manager), в открывшемся окне выполните поиск ESP32. Если в предыдущем окне был вставлен правильный URL, то на экране вы должны увидеть картину, показанную на рисунке ниже, после этого нажмите на кнопку Install и ваша плата (ESP32) будет установлена в Arduino IDE.
Шаг 5. Убедитесь в том, что у вас есть активное интернет соединение и подождите пока установка полностью завершится. Этот процесс может занять до нескольких минут и зависит от скорости вашего интернет соединения.
Теперь наша Arduino IDE подготовлена к программированию модуля ESP32.
Программирование ESP32 с помощью Arduino IDE
Шаг 1. Подключите ваш модуль ESP32 к компьютеру с помощью кабеля micro-USB. Убедитесь в том, что на модуле загорится светодиод красного цвета – это будет свидетельствовать об успешной подаче питания на модуль.
Шаг 2. Откройте Arduino IDE, в ней выберите пункт меню Tools -> Boards и в нем выберите плату ESP32Dev как показано на следующем рисунке.
Шаг 3. Откройте диспетчер устройств в Windows и в нем посмотрите COM порт, к которому подключен модуль ESP32. В нашем случае, как показано на следующем рисунке, он подключен к порту COM 8.
Шаг 4. Вернитесь снова в Arduino IDE и в ней в пункте меню Tools -> Port выберите COM порт, к которому подключен модуль ESP32. После этого вы должны увидеть как в правом нижнем углу появится информация о том, с каким COM портом вы работаете.
Шаг 5. Загрузите в модуль программу для мигания светодиодом (Blink Program) чтобы убедиться в том, что ваши программы будут корректно загружаться из Arduino IDE в ваш модуль ESP32. После загрузки данной программы встроенный светодиод модуля должен начать мигать с интервалом 1 секунда.
1 2 3 4 5 6 7 8 9 10 |
int LED_BUILTIN = 2; void setup() { pinMode (LED_BUILTIN, OUTPUT); } void loop() { digitalWrite(LED_BUILTIN, HIGH); delay(1000); digitalWrite(LED_BUILTIN, LOW); delay(1000); } |
Как видите, эта программа мигания светодиодом для модуля ESP32 очень похожа на аналогичную программу для платы Arduino, отличие заключается лишь в том, что в плате Arduino ее встроенный светодиод подключен к контакту 13, а в модуле ESP32 он подключен к контакту 2.
Шаг 6. Для загрузки кода программы в модуль нажмите на кнопку upload в Arduino IDE, после этого вы в ее консоли должны увидеть процесс загрузки программы в модуль как показано на следующем рисунке – это будет свидетельствовать о том, что все идет нормально.
Примечание: для некоторых модулей во время загрузки программы необходимо удерживать кнопку загрузки (Boot button) чтобы процесс загрузки прошел без ошибок.
Также вы можете загрузить в модуль ESP32 другие примеры программ и посмотреть на их работу. Эти примеры программ вы можете найти в Arduino IDE в пункте меню File -> Example -> ESP32.
Исходный код программы (скетча)
1 2 3 4 5 6 7 8 9 10 |
int LED_BUILTIN = 2; void setup() { pinMode (LED_BUILTIN, OUTPUT); } void loop() { digitalWrite(LED_BUILTIN, HIGH); delay(1000); digitalWrite(LED_BUILTIN, LOW); delay(1000); } |
Здравствуйте
Существует ли гайд по переделке сктчей под ардуино на esp32? Или список различий со стороны кода
Добрый день. К сожалению, не могу подсказать, не занимался данным вопросом.
Доброго времени суток, у меня почему то не скомпилился Ваш вариант кода. Пришлось заменить 1 строку с
int LED_BUILTIN = 2; на #define LED_BUILTIN 2 и только после этого заработало - чертовщина какая то, честное слово. В чём может быть причина? На Ваш взгляд. Может криво встала сама Arduino IDE, либо подключить какую нибудь стандартную библиотеку, там порыться в настройках самой IDE. Мне самому очень любопытно!
Добрый вечер. Честно говоря, не знаю. Но в программах для плат Ардуино обычно номера контактов все таки задавались через define. Я уже не помню почему именно тут было решено использовать int. Может быть, с типами данных какая то нестыковка и Arduino IDE не хочет чтобы для обозначения номера контакта (а их количество номеров очень ограничено, хватило бы и однобайтовой переменной) использовалась переменная типа int
Пробывал и byte и const int, то же самое. Но я Вас понял, спасибо за ответ!
Да не за что, заходите к нам еще
А я эту строку просто закомментировал. Ибо компилятор сообщил о двойном объявлении. И всё скомпилировалось.
Ну тоже как вариант. Спасибо за подсказку
Здравствуйте,я так и не понял почему мне стоит всегда удерживать boot при компилации,хочется всетаки исправить такую проблему,ибо не удобно с таким работать,связано ли это с прошивкой?
Добрый день. Так заложено производителем этих модулей, но на некоторых моделях модулей можно не удерживать кнопку. Возможно, смена прошивки на более новую устранит эту проблему (хотя вы первый кто об этом написал, больше вроде никто не жаловался), но я не изучал данный вопрос. Не могу здесь помочь, к сожалению
Здравствуйте, можете помочь в написании скетча с датчиком MQ-3 на ESP32 модуле?
Добрый день. Есть похожий проект на Ардуино. Он вам не подойдет? Скетч для ESP32 будет почти такой же
Нужна помощь В написании кода ВЕБ сервера ESP 32
Добрый вечер. К сожалению, пока не могу помочь, очень сильно занят
admin-new можно ли как то с вами связать? например по почте. если пару вопросов по esp32, оплачу
Я написал вам на почту, которую вы указали в своем комментарии
официальный сайт программу не загружает пока нет пожертвований у меня во всяком случае длальше этого окна дело не сдвинулось
Добрый вечер, вы какую программу имеете ввиду?
Ардуино проект бесплатный!!! Единственное неудобство скачивания с ОФ сайта это ссылка высылаемая на почту.
всё это похоже на сумасшествие я делаю как вы говорите но ничего не получается даже есп32 в разделе менеджер план не появляется. похоже мы так сильно отстали, что даже то что рекомендовано для любителей нам не даётся. думаю я в бешенстве потратил на этого робота тысяч пять но эта хрень так и не работает уже месяц
Лучше использовать arduino ota
Почему вы так думаете?
Добрый день!
Будет ли работать ESP32 Arduino IDE с Windows 7, 32 bits?
Спасибо
Добрый вечер.
На ее официальном сайте (https://www.arduino.cc/en/software) есть информация что на Windows 7 она работает, также она работает на 32-битной Linux. Но работает ли она на 32-битной Windows 7, честно говоря, не знаю и лично не пробовал. Но почему бы вам не попробовать ее скачать и поставить? Она же сравнительно немного весит
Работает с ограничениями только в версиях 1.*.* а вот начиная с 2.*.* уже не поддерживается! Проверил лично, при чём от версии винды не зависит, что 7, что 10 (на 11 винду 32 битную версию не стал проверять)
Хорошо, спасибо вам за конструктивный комментарий