ESP32 WROOM DevKit v1: распиновка, схема подключения и программирование
ESP32 DevKit — это универсальная платформа для разработки IoT-решений.
Программирование на C++
После выполненных действий плата ESP32 DevKit готова к программированию через Arduino IDE.
Подробности о функциях и методах работы ESP32 на языке C++ читайте на ESP32 Arduino Core.
Примеры работы для Arduino
ESP32 может подключиться к Wi-Fi сети, создать собственную точку доступа, представляться сервером и клиентом, формировать GET и POST запросы. Также микроконтроллер имеет два АЦП и датчик Хола.
Пример WebClient
После подключения к Wi-Fi микроконтроллер напишет в COM порт ответ от сервера.
Пример Analog WebServer
ESP32 имеет 15 аналоговых пинов. Выведем через веб-интерфейс значения с 36, 39 и 34 пина.
Когда микроконтроллер подключится к Wi-Fi сети, в монитор порта будет выведен IP-адрес веб-страницы с данными. Получить к ней доступ можно из локальной сети, перейдя по указанному IP-адресу. Скопируйте IP-адрес из монитора порта и вставьте в адресную строку браузера. Если вы подключены к той же локальной сети, что и ESP32, то вы увидите веб-интерфейс.
Пример blink WebServer
Создадим WEB-сервер на порту 80. С помощью веб-интерфейса будем мигать светодиодами на 16 и 17 пинах.
При переходе по IP-адресу из монитора порта, выводится веб-страница с кнопками.
Программирование на JavaScript
Подробнее о функциях и методах работы ESP32 на языке JavaScript читайте документацию на Espruino.
Элементы платы
Мозг платформы
Платформа для разработки ESP32 DevKit основана на модуле ESP32-WROOM с чипом ESP32-D0WDQ6 от Espressif.
Чип ESP32-D0WDQ6
Чип ESP32-D0WDQ6 — выполнен по технологии SoC (англ. System-on-a-Chip — система на кристалле), в которую входит 2-ядерный 32-битный процессор Tensilica Xtensa LX6 с блоками памяти ROM на 448 КБ и SRAM на 520 КБ. В кристалле также расположены беспроводные технологии Wi-Fi/Bluetooth, радио-модуль, датчик Холла и сенсор температуры.
Для работы с чипом необходима внешняя Flash-память и другая электронная обвязка. Кристалл ESP32-D0WDQ6 является основой на базе которой выпускаются модули с необходимой периферией: например ESP32-WROOM или ESP32-WROVER .
Модуль ESP32-WROOM
ESP32-WROOM — модуль с чипом ESP32-D0WDQ6, Flash-памятью на 4 МБ и всей необходимой обвязкой, которые спрятаны под металлическим кожухом. Pins SCK/CLK, SDO/SD0, SDI/SD1, SHD/SD2, SWP/SD3 and SCS/CMD, namely, GPIO6 to GPIO11 are connected to the integrated SPI flash integrated on the module and are not recommended for other uses.
Рядом с кожухом расположена миниатюрная антенна из дорожки на верхнем слое печатной платы в виде змейки. Металлический кожух экранирует компоненты модуля и тем самым улучшает электромагнитные свойства.
Модуль является основной, на которой выполняются промышленные устройства или отладочные платы, например: ESP32 DevKit или ESP32-Sense Kit .
USB-UART преобразователь
Преобразователь USB-UART на микросхеме CP2102 обеспечивает связь модуля ESP32-WROOM с USB-портом компьютера. При подключении к ПК — платформа ESP32 DevKit определяется как виртуальный COM-порт.
Разъём micro-USB
Разъём micro-USB предназначен для прошивки и питания платформы ESP32 DevKit с помощью компьютера.
Светодиодная индикация
Имя светодиода | Назначение |
---|---|
ON | Индикатор питания платформы. |
LED | Пользовательский светодиод на 2 пине микроконтроллера. При задании значения «высокого уровня» светодиод включается, при «низком» – выключается. |
Кнопка EN
Кнопка предназначена для ручного сброса программы — аналог кнопки RESET обычного компьютера.
Кнопка BOOT
Кнопка служит для ручного перевода модуля в режим прошивки:
Регулятор напряжения
Линейный понижающий регулятор напряжение AMS1117-3.3 обеспечивает питание микроконтроллера. Выходное напряжение 3,3 вольта с максимальным током 1 А.
Распиновка
Пины питания
Порты ввода/вывода
В отличие от большинства плат Arduino, родным напряжением ESP32 DevKit является 3,3 В, а не 5 В. Выходы для логической единицы выдают 3,3 В, а в режиме входа ожидают принимать не более 3,3 В. Более высокое напряжение может повредить микроконтроллер!
Будьте внимательны при подключении периферии: убедитесь, что она может корректно функционировать в этом диапазоне напряжений.
Интерфейсы
Каждый пин ввода-вывода платформы поддерживает аппаратные интерфейсы.
Описание микроконтроллера ESP32
Микроконтроллер ESP32, вышедший на рынок WiFi осенью 2015 года, представляет собой выдающееся устройство, и не только благодаря своей низкой цене. Espressif ESP32 — высокоинтегрированный, совмещённый (Wi-Fi + Bluetooth) чип, выполненный для решений, требующих минимальных показателей энергопотребления.
ESP32 разработан для носимой электроники и приложений интернета вещей, выполнен в супер-миниатюрном корпусе 6 х 6 мм, требующий для интеграции около 10-ти внешних компонентов. Он обладает хорошим функционалом и многообещающими возможностями. Совмещение в одном чипе WiFi и Bluetooth, двух процессорных ядер и богатого набора периферии может сделать ESP32 лидером в своем сегменте. ESP32 обещает снова совершить революцию в мире IoT, как в свое время совершил его младший брат ESP8266.
ESP32 получил значительный прирост в производительности по сравнению со своим предшественником ESP8266. Вычислительная мощность возросла в четыре раза. У ESP32 есть два ядра, каждый из которых работает на частоте 160 МГц. Второе ядро сделает жизнь разработчика проще. Так, например, одно ядро может взять на себя задачи реального времени по работе с графикой или управлению двигателями, а второе может обрабатывать коммуникационные протоколы и в целом отвечать за связь. Благодаря этому вам меньше придется думать о распределении времени между задачами.
Характеристики ESP32
ESP32 поддерживает весь стек протоколов стандартов Wi-Fi 802.11n и BT4.2, обеспечивая данный функционал через интерфейсы SPI/SDIO или I²C/UART.
Чип Espressif ESP 32 может работать в качестве центрального процессора (поддержка Open CPU) и как подчинённое устройство (slave device), управляемое микроконтроллером.
Отличительные особенности:
CPU: Xtensa Dual-Core 32-bit LX6, 160 MHz или 240 MHz (до 600 DMIPS)
Memory: 520 KByte SRAM, 448 KByte ROM
Flash на модуле: 1, 2, 4… 64 Мб
Wireless:
- Wi-Fi: 802.11b/g/n/e/i, до 150 Mbps c HT40
- Bluetooth: v4.2 BR/EDR и BLE
Peripheral interfaces:
- 12-bit SAR ADC до 18 каналов
- 2 × 8-bit DAC
- 10 × touch сенсоров
- Temperature сенсор
- 4 × SPI
- 2 × I²S
- 2 × I²C
- 3 × UART
- 1 host (SD/eMMC/SDIO)
- 1 slave (SDIO/SPI)
- Ethernet MAC с поддержкой DMA и IEEE 1588
- CAN 2.0
- IR (TX/RX)
- Motor PWM
- LED PWM до 16 каналов
- Hall sensor
- Ultra low power analog pre-amplifier
Security:
- IEEE 802.11 безопасность WFA, WPA/WPA2 и WAPI
- Secure boot
- Flash encryption
- 1024-bit OTP, включая до 768-bit под задачу
- Cryptographic движок: AES, SHA-2, RSA, ECC, RNG
Распновка чипа ESP32:
(Скачать в PDF)
в ESP32 есть JTAG интерфейс на ножках IO12, IO13, IO14, IO15.
ESP32 также доступен в виде модуля:
Распиновка модуля WROOM32:
Модуль WROOM-32 может поставляться со специальной отладочной платой:
Эта плата позволяет быстро программировать модуль благодаря встроенному адаптеру USB-TTL. На ней также расположены кнопки программирования и сброса, а также регулятор напряжения для питания микроконтроллера ESP32 напряжением 3.3 В. Также плата дает удобный доступ к выводам модуля, шаг между которыми довольно узок, чтобы без проблем работать с ними. Шаг же между выводами платы составляет 2.54 мм, что является стандартом для DIP-корпусов, с которыми удобно работать обычному радиолюбителю без специальных инструментов.
Распиновка отладочной платы ESP32:
Средства разработки ESP32
Программные средства разработки (программный комплект разработчика, SDK) состоят из:
- Компилятора. Компилятор для Xtensa LX106 входит в пакет компиляторов GNU Compiler Collection. Поскольку компилятор имеет открытые исходные тексты, то в разных SDK могут содержаться разные сборки этого компилятора, немного отличающиеся поддерживаемыми опциями.
- Библиотек для работы с периферией контроллера, стеков протоколов WiFi, TCP/IP.
- Средств загрузки исполняемого файла в память программ микроконтроллера.
- Опциональной IDE.
Espressif свободно распространяет свой комплект разработчика. В этот комплект входит компилятор GCC, библиотеки Espressif и загрузочная утилита XTCOM. Библиотеки поставляются в виде скомпилированных библиотек, без исходных текстов. Espressif поддерживает две версии SDK: одна на основе RTOS, другая на основе обратных вызовов (callback).[2]
Помимо официальной SDK существует ряд проектов альтернативных SDK. Эти SDK используют библиотеки Espressif или предлагают собственный эквивалент библиотек Espressif, полученный методами реверсинжиниринга.
- «esp-open-sdk». Улучшенная версия SDK от Expressif. Содержит GCC компилятор и некоторые библиотеки Expressif. Только Линукс. По-русски немного здесь.
- «Unofficial Development Kit» Михаила Григорьева. В комплект входит Windows-инсталлятор, компилятор GCC собственной сборки с интеграцией с графической IDE Eclipse, актуальные комплекты библиотек и документации Espressif, некоторые утилиты. Имеется русскоязычный форум.
- «Arduino IDE for ESP8266» — дополнение к IDE Arduino, позволяющее программировать ESP8266 так же легко как любые другие модули Ардуино. При этом доступен сетевой функционал ESP8266. Компилятор GCC, загрузчик прошивки ESPTool. Подробное русскоязычное описание процесса установки и доступного API здесь, пример работы здесь.
- «GNU toolchain for esp8266». Имеет возможность интеграции в Visual Studio.
- «ESP8266 GCC Toolchain» Макса Филиппова.
- «Sming»[6] — проект добавления Arduino совместимых библиотек поверх стандартных библиотек Espressif, но без препроцессора Ардуино (то есть программирование идет на чистом Си).
На оффсайте сейчас можно найти ссылки на два SDK:
» ESP31_RTOS_SDK — SDK для ESP31B, построена на FreeRTOS.
» Espressif IDF (IoT Development Framework) — Official development framework for ESP32.
Хоть это и не очевидно с описания на сайте, но для релизной версии нам подходит только ESP-IDF. Есть инструкции по установке для linux, windows, macos.
В итоге можно сказать, что микроконтроллер ESP32 получился отличным для своего сегмента рынка. В таком дешевом устройстве столько функционала не умещал, наверное, еще никто. Но на данный момент ESP32 пока еще слишком молод и не оброс тем уровнем поддержки, который характерен сегодня для ESP8266. Документации, примеров и поддерживаемых сред не так уж и много.
Введение в плату разработки ESP32
В этой статье мы познакомим вас с новым микроконтроллером ESP32. У всех нас есть некоторое представление о платах разработки Arduino и о том, как они широко используются. Но что касается платы разработки ESP32 (более старая версия этой платы — ESP8266), то она имеет много преимуществ по сравнению с платами разработки Arduino.
Итак, давайте подробно обсудим этот микроконтроллер. Мы рассмотрим его характеристики, ключевые особенности, распиновку ESP32, питание этой платы, предпочтение перед Arduino и протестируем простейший код «мигающий светодиодный», который может работать на этом микроконтроллере. Итак, приступим.
Если вы хотите приобрести плату для разработки ESP32, вы можете приобрести ее по следующей ссылке: ESP32
Введение в плату разработки ESP32
ESP32 относится к серии маломощных и недорогих микроконтроллеров. Он имеет интегрированный двухрежимный Bluetooth и Wi-Fi. Он особо нацелен на обеспечение универсальности и надежности в большом количестве приложений.
Некоторые приложения, в которых широко используется этот микроконтроллер: декодирование MP3, кодирование голоса и потоковая передача аудио. ESP32 имеет USB порт, поэтому мы можем сказать, что это устройство Plug And Play, т.е. просто подключите кабель, и ваше устройство будет подключено, и вы сможете программировать его так же, как платы Arduino. Подробнее о программировании этой платы мы поговорим позже.
Сравнение ESP32 с Arduino
Если мы сравним этот микроконтроллер с платами Arduino, то у нас есть одно большое преимущество этого микроконтроллера перед платами Arduino — это Wi-Fi. Хотя Wi-Fi можно использовать со многими платами Arduino, но эта функция добавляется посредством установки шилдов или дополнительных модулей. Если мы прикрепим шилд Wi-Fi к нашей плате Arduino, то мы сможем получить доступ к интернету, а иначе это невозможно.
ESP32 поставляется со встроенным модулем Wi-Fi. То же самое касается и Bluetooth, который доступен в Arduino в виде некоторых модулей. Что же касается ESP32, то эта функция уже интегрирована. Поэтому, если мы заинтересованы в использовании Wi-Fi и Bluetooth, то эта плата окажется дешевле по сравнению с платами Arduino, поскольку для Ардуино нужно будет дополнительно приобрести эти отдельные модули Wi-Fi и Bluetooth.
Ключевые характеристики ESP32
- Встроенный модуль Wi-Fi стандарта 802.11
- Модуль Wi-Fi работает в диапазоне частот 2,4 ГГц — 2,5 ГГц
- Три режима работы: 1. Точка доступа. 2. Клиент. 3. Точка доступа + станция
- Двухъядерный 32-битный микропроцессор
- Рабочее напряжение 3,3 В
- Тактовая частота от 80 МГц до 240 МГц
- Память SRAM составляет 512 КБ
- Память ПЗУ составляет 448 КБ
- Поддерживается внешняя флэш-память объемом до 32 МБ
- Максимальный ток на каждом контакте составляет 12 мА, но рекомендуется использовать 6 мА.
- Плата имеет 36 контактов ввода/вывода общего назначения
- Контакты ввода/вывода общего назначения имеют функции PWM, I2C и SPI
- Доступна версия Bluetooth 4.2 и версия Bluetooth с низким энергопотреблением (BLE).
- Рабочее напряжение от 2 до 3,6В
- Ток потребления глубокого сна 2,5 мкА
- 10-электродная емкостная сенсорная поддержка
- Аппаратное шифрование для AES, ECC, RSA — 4096, SHA2
- Встроенная антенна на печатной плате или разъем IPEX для внешней антенны
- Диапазон рабочих температур от -40 ° C до + 125 ° C.
Технические характеристики выводов ESP32
Ниже представлена распиновка ESP32:ESP32 поддерживает функцию мультиплексирования выводов, то есть мы можем решать к каким из 28 контактов ввода/вывода подключать периферийные устройства. Это означает, что от нас зависит будет тот или иной вывод действовать как MISO, RX, SCLK, MOSI, TX, SCL, SDA и т.д.
Однако выводы аналогово-цифрового преобразователя (АЦП) и цифро-аналогового преобразователя (ЦАП) статичны.
- Каналов АЦП: 18
- Каналов ЦАП: 2
- SPI: 3
- UART: 3
- I2C: 2
- ШИМ: 16
- I2S: 2
Датчики в ESP32
- Датчик холла
- Кварцевый генератор частотой 32 кГц
- Аналоговый усилитель со сверхнизким уровнем шума
- 10 емкостных сенсорных выводов
Питание платы разработки ESP32
Чтобы запитать плату разработки ESP32, мы можем использовать либо порт USB, либо LiPo аккумулятор. Если мы используем оба этих устройства на нашей плате, то контроллер заряда, который уже присутствует на плате, будет заряжать нашу LiPo батарею.
На плате также присутствует стабилизатор напряжения 3,3В, который обеспечивает ток 600 мА. Во время РЧ-передачи плата может потреблять до 250 мА. Входные/выходные контакты общего назначения не могут выдерживать напряжение 5 В. Поэтому, если нам нужно подключить к нашей плате напряжение 5 В, мы должны использовать конвертер уровней.
Программирование ESP32
Для программирования платы ESP32 можно использовать Arduino IDE. Но для этого мы должны установить некоторые драйверы и библиотеки, чтобы сделать его совместимым в Arduino IDE. Поэтому ниже приводится краткое объяснение по поводу драйверов и библиотек.
Установка драйверов для ESP32
Самое первое и важное при программировании этой платы — это установка драйверов CP210x USB — UART. В зависимости от вашей операционной системы установите соответствующие драйверы.
Установка библиотек для ESP32
Вы можете установить библиотеки для ESP32 с помощью GitHub. После установки всех этих драйверов и библиотек плата готова к программированию.
Вы можете использовать Терминал в MAC или командную строку в операционной системе Windows для установки этих библиотек с GitHub.
После того, как вы закончите установку необходимых драйверов и библиотек, вам необходимо перезапустить Arduino IDE. После перезапуска Arduino IDE вы увидите несколько плат, добавленных в меню инструментов Arduino IDE. Выберите подходящую плату.
Итак, первая программа, которую мы собираемся обсудить, — это мигание светодиода. Весь код для мигания светодиода написан в Arduino IDE.
В комплект разработчика ESP32 встроен светодиод, который подключен к общему выводу ввода/вывода 2. Еще одна вещь, которую нам нужно проверить перед написанием своего кода, — это убедиться, что встроенный светодиод в плате разработки ESP32 поддерживается Arduino IDE.
Если он распознается Arduino IDE, тогда мы можем писать свой код, в противном случае вам нужно сделать его распознаваемым Arduino IDE, используя следующий фрагмент кода
К каждой плате ESP32 подключен внутренний светодиод, но они подключены к разным входным/выходным контактам общего назначения. В нашем случае внутренний синий светодиод подключен к входному выходу общего назначения. Итак, давайте напишем код.
Программный поток каждого кода, который мы пишем в Arduino IDE, заключается в том, что сначала мы инициализируем переменные. Переменные могут быть локальными или глобальными. Мы не будем вдаваться в подробности этих локальных и глобальных переменных.
После инициализации переменных вызывается функция настройки setup(), которая используется для присвоения значений инициализированным переменным, а затем вызывается функция основного цикла loop(). Функция setup() вызывается только один раз, в то время как loop() выполняется непрерывно.
Если мы хотим снова вызвать функцию настройки setup(), мы должны повторно запустить нашу программу или перезапустить плату разработки, либо с помощью кнопки на плате, либо путем отключения и повторного подключения нашей платы.
Итак, если мы посмотрим на наш код, помня о перечисленных выше пунктах, то видим что мы сначала инициализировали наш встроенный светодиод на входном/выходном контакте общего назначения 2. После инициализации мы объявляем этот вывод как выход. Затем переходим в основной рабочий цикл, который будет выполняться бесконечно, пока мы не отключим нашу плату или не остановим выполнение этой программы.
В loop() мы сначала включаем светодиод с помощью функции DigitalWrite, установив HIGH. Затем мы ждем 1 секунду. Далее выключаем светодиод, назначив DigitalWrite значение LOW и снова ждем 1 секунду. После этого цикл повторяется сначала.