- ESP-WROOM-32: Uploading a program with Arduino IDE
- Introduction
- The hardware
- The code
- The Arduino IDE configuration
- Additional notes
- Special thanks
- Установка ESP32 в Arduino IDE (руководство для ОС Windows)
- Настройка Arduino IDE:
- Первая программа:
- Ссылки
- Программирование модуля ESP32 с помощью Arduino IDE
- Необходимые компоненты
- Основные аппаратные возможности модуля ESP32
- Удаление старых версий плат ESP32 из Arduino IDE
- Подготовка Arduino IDE к программированию ESP32
ESP-WROOM-32: Uploading a program with Arduino IDE
The objective of this post is to explain how to upload an Arduino program to the ESP-WROOM-32 module.
Introduction
The objective of this post is to explain how to upload an Arduino program to the ESP-WROOM-32 module, from DFRobot.
We will cover in more detail the hardware configuration needed to upload a program to the module. You can check in more detail how to enable the support for the ESP32 in the Arduino IDE on this previous post.
Please note that this is a ESP32 module suitable for integration in electronic designs and not a development board for testing/development. Thus, the pin spacing is very small and it requires some special manual soldering skills to be able to use it. Naturally, these kind of spacing is adequate for non-manual soldering procedures.
The hardware
In order to be able to upload programs to this module, we need a Serial-USB converter, so we can communicate with it. I’ve used the one shown here, which allows us to change between 3.3V and 5V operating voltage.
Important: The ESP32 is a 3.3V device and the WROOM module doesn’t do any voltage level conversion. So, the Serial-USB converter to be used must operate at 3.3V. Otherwise, the ESP32 may get damaged.
One thing that we need to take in consideration is that in order to be able to program the ESP32, the GPIO0 must be kept low [1]. Also, for the device to work, the EN pin (chip enable pin) must be connected to VCC, since it operates in an active-high configuration [2].
So, taking the previous points in consideration, figure 1 shows the minimal configuration needed to be able to program the ESP-WROOM-32 module. The other pins of the devices are not shown for simplicity. Also note that I’m assuming that the Serial-USB converter power is being supplied by the USB connection, which is the typical use case.
Figure 1 – Minimum hardware configuration needed to program the ESP-WROOM-32.
Please take in consideration that for the sake of simplicity I’m not following the best practices here, such as including power supply bypass capacitors and other important aspects needed to keep the device working with the best reliability. So please don’t use this hardware configuration in a final design, since it is only suitable for a quick interaction with the module.
Although in the figure we have the IO0 connected to GND, this configuration is only adequate for uploading the program. After that, you need to disconnect it from GND, so the program uploaded runs.
The code
The code for this tutorial will be very simple and consists in a simple “Hello World” message being printed periodically to the serial port. So, we start by opening a serial connection in the setup function, with a baud rate of 115200. You can check more on initiating a serial connection here.
Next, on the main loop function, we will print a simple “Hello World” message. To do so we can call the println method on the Serial object. After that, we do a short delay by calling the Arduino delay function, which receives as input the number of milliseconds to wait.
Check bellow the full source code for this simple program.
The Arduino IDE configuration
In order to be able to upload the code to the Arduino we need to select a suitable uploading configuration in the Tools menu. We can use the same configurations of the FireBeetle-ESP32 board, as shown in figure 2.
Figure 2 – ESP32 FireBeetle board selection in Arduino IDE.
After selecting this board and selecting the correct COM port assigned to the Serial-USB converter, just hit the upload button. The code should now be compiled and uploaded. After a correct upload, you should get an output similar to figure 3 on the IDE console.
Figure 3 – Message after successful upload.
After this, power off the module, disconnect the IO0 pin from GND and power the device on again. Then, open the serial monitor of the Arduino IDE. You should get an output similar to figure 4, where our defined “Hello World” message is being printed each second.
Figure 4 – Output of the “Hello World” program.
Additional notes
You can confirm if your soldering was correctly done before trying to upload your program. If you power on the module, connected to the Serial-USB converter and with IO0 disconnected from GND, a pre-loaded program should be running and printing the detected WiFi networks to the serial console, as shown in figure 5.
Figure 5 – Output of the pre-loaded program.
Also, if you power on the module with the IO0 connected to GND and the Arduino IDE serial monitor previously open, you should get an output similar to figure 6, which indicates that the ESP32 is ready for getting a new program.
Figure 6 – Output of the module when in programming mode.
Special thanks
I would like to leave a special thank you note to my friend Pedro Marques, who helped me soldering this module, since my skills aren’t the best for this kind of pin spacing.
Установка ESP32 в Arduino IDE (руководство для ОС Windows)
Платы ESP 32 оснащены микроконтроллером ESP32-WROOM-32 с интерфейсом Wi-Fi, подключаются к компьютеру через WiFi или USB порт.
О том как установить «Arduino IDE» можно прочитать в статье Wiki — Установка среды разработки Arduino IDE для Windows .
Настройка Arduino IDE:
Писать скетчи под микроконтроллер ESP32 можно в среде разработки «Arduino IDE», но перед загрузкой скетча нужно выбрать тип используемой платы из списка меню «Инструменты» > «Плата», а там по умолчанию нет плат ESP32. Вся настройка сводится к тому, что бы в этом списке меню появились эти платы.
В среде «Arduino IDE» имеется «Менеджер плат» который поможет быстро добавить интересующие платы в список. Для этого нужно выполнить следующие действия:
Откройте «Arduino IDE» и выберите пункт меню: «Файл» > «Настройки»
В открывшемся окне заполните поле «Дополнительные ссылки для Менеджера плат» введя в него строку: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json И нажмите на кнопку «Ok».
Запустите «Менеджер плат» выбрав пункт меню «Инструменты» > «Плата» > «Менеджер плат».
В открывшемся окне «Менеджер плат» выберите пункт «esp32 by Espressif Systems» из списка сборок и нажмите на кнопку «Установка» (при желании можно выбрать версию устанавливаемой сборки).
Дождитесь окончания установки сборки.
После успешной установки сборки, в списке, напротив её названия «esp32 by ESP32 Systems» появится фраза «INSTALLED». Закройте «Менеджер плат» нажав на кнопку «Закрыть».
На этом настройка «Arduino IDE» завершена! Теперь в списке плат есть раздел «ESP32 Arduino».
Первая программа:
Самая первая программа для любой платы под управлением микроконтроллера — это «Hello, World!» (вывод строки) или «Blink» (мигание светодиодом). Данная статья не будет исключением, загрузим скетч для мигания светодиодом.
Для работы с платами ESP 32 нужно в пункте меню «Инструменты» > «Плата» > «ESP32 Arduino» выбрать соответствующую плату. В нашем случае это будет Piranha ESP32.
Так же нужно выбрать COM-порт после подключения платы к компьютеру через USB порт. На рисунке выбран порт «COM10», но Вам нужно выбрать тот порт, который появился у Вас в списке доступных портов после подключения платы. Если после подключения платы новый порт не появился, значит не установлен драйвер для чипа CH340C ссылки на драйверы указаны в конце данной статьи.
Осталось загрузить скетч и проверить его работу.
Скетч «Blink» можно загрузить из базовых примеров Arduino в меню «Файл» > «Примеры» > «01.Basic» > «Blink» . Макрос «LED_BUILTIN» содержит номер вывода к которому подключён встроенный в Piranha ESP32 светодиод. Если Вы используете другую плату, то необходимо указать соответствующий вывод в начале скетча, например:
#undef LED_BUILTIN #define LED_BUILTIN 2
или выбрать плату соответствующую Вашей в пункте меню «Инструменты» > «Плата» > «ESP32 Arduino»
Нажмите левой кнопкой мыши на кнопку загрузки скетча в плату (или на клавиатуре + ). Начнётся компиляция и загрузка двоичного кода в микроконтроллер платы.
В зависимости от конфигурации системы и используемой платы, возможно понадобится перевести плату в режим программирования. Для этого зажмите на плате одновременно RESET и BOOT, а затем отпустите RESET не отпуская BOOT. Через несколько секунд можно отпустить BOOT, начнётся загрузка кода в микроконтроллер платы.
Загрузка завершена!
Ссылки
Программирование модуля ESP32 с помощью Arduino IDE
Ранее на нашем сайте мы уже рассматривали начало работы с модулем ESP32, в котором мы рассматривали его программирование с помощью Arduino IDE. Но на момент написания той статьи в Arduino IDE еще не было официальной поддержки модуля ESP32, поэтому его поддержку в Arduino IDE приходилось добавлять используя инструмент GIT. Теперь же, когда в Arduino IDE есть официальная поддержка модулей (плат) ESP32, в использовании инструмента GIT уже нет никакой необходимости и используя описанный ниже подход вы сможете подготовить Arduino IDE для программирования модуля ESP32.
Необходимые компоненты
Основные аппаратные возможности модуля 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 запятой (,) – на представленном ниже рисунке как раз показан этот случай.