Этой публикацией я начинаю цикл уроков о программировании микроконтроллеров ESP32 в программной среде ESP-IDF. В первом уроке расскажу о параметрах и функциональных возможностях ESP32 на примере отладочной платы DevKit V1.
Список уроков Следующий урок
Еще в 2015 году компания-разработчик микроконтроллера ES8266 выпустила новое устройство также ориентированное на работу с беспроводными технологиями – серию микроконтроллеров ESP32. От предшественника новые устройства отличаются невообразимыми параметрами и функциональными возможностями. Они являются идеальными элементами для создания устройств, поддерживающих IoT технологии (Интернет Вещей), т.е. подключение всего к Интернету.
В настоящее время контроллеры ESP32 стали вполне доступными. Отладочную двухъядерную плату на АлиЭкспресс можно купить всего за 350 руб.
Времени мало, но я не могу пройти мимо такой перспективной темы. По мере возможности, по остаточному принципу буду писать уроки ESP32. Речь идет о программировании не в среде Ардуино, а с помощью программных средств компании-производителя ESP32. Информации на эту тему очень мало.
Общие сведения.
ESP32 – это серия недорогих высокопроизводительных микроконтроллеров с низким энергопотреблением и интегрированными интерфейсами Wi-Fi и Bluetooth.
Серия разработана компанией Espressif Systems. В ней используется процессорное ядро Tensilica Xtensa LX6 в одноядерном и двухъядерном вариантах.
Микроконтроллеры ESP32 обладают настолько широкими функциональными возможностями, таким количеством периферийных интерфейсов, что обычно к ним применяется терминология ”система ESP32”.
Можно бесконечно расхваливать возможности ESP32, перечислять его интерфейсы, удивляться степени интеграции. Я сразу перейду к конкретному устройству.
В уроках буду использовать плату ESP DevKit V1 (аналог ESP32 DevKitC V4). Я купил эту плату на АлиЭкспресс всего за 340 руб вместе с доставкой. И это за плату. Модуль стоит еще дешевле.
Иерархия аппаратных узлов.
Поясню, чем отличаются аппаратные, конструктивно законченные элементы, с которыми мы будем работать.
Есть микроконтроллер (микросхема), например ESP32-D0WDQ6. Он обеспечивает большую часть функциональных возможностей системы, но для применения требует дополнительных компонентов.
Добавили к нему FLASH-память, генератор, блокировочные конденсаторы и прочие внешние компоненты. Установили их на маленькую печатную плату, прикрыли крышкой – получился модуль. В нашем случае модуль ESP-WROOM-32.
На модуль достаточно подать питание и уже можно использовать WiFi или Bluetooth. Если подключить внешние сигналы, то уже будет готовая система.
Еще удобнее использовать плату. У меня это ESP DevKit V1.
Примерно как на платах Ардуино добавились следующие функциональные и конструктивные возможности.
- Конвертер USB/UART CP210X, позволяющий подключаться к стандартному USB компьютера.
- Аппаратные цепи, обеспечивающие загрузку FLASH микроконтроллера от компьютера в автоматическом режиме.
- Стабилизатор напряжения питания модуля.
- Кнопки сброса и загрузки.
- Светодиоды.
- Внешние сигналы микроконтроллеры выведены на края платы.
Т.е. в минимальном варианте достаточно подключить плату ESP32 к USB компьютера. Через него плата получает питание, загружается резидентная программа, производится отладка.
Плата ESP DevKit V1.
В плате установлен модуль ESP-WROOM-32.
В модуле используется микроконтроллер ESP32-D0WDQ6.
Эти элементы определяют функциональные возможности и параметры платы.
- Процессорная часть:
- ядро Tensilica Xtensa LX6;
- два ядра;
- 32 разряда;
- производительность до 600 MIPS (миллионов инструкций в сек);
- сопроцессор с ультранизким энергопотреблением.
- ядро Tensilica Xtensa LX6;
- Память:
- 448 KB ROM для загрузчика и функций ядра;
- 520 KB SRAM для данных и команд;
- 16 KB SRAM в RTC (квази энергонезависимая память);
- 4 MB FLASH - память программы.
- Беспроводные интерфейсы:
- Wi-Fi: 802.11 b/g /N;
- Bluetooth: v4.2 BR/EDR и BLE.
- Часы и таймеры:
- внутренний генератор 8 мГц;
- внутренний RC-генератор;
- внешний генератор 40 мГц;
- внешний генератор 32 кГц для RTC;
- 2 группы таймеров, включая 2x64 бит таймеры и сторожевой таймер в каждой группе;
- RTC таймер (часы реального времени);
- RTC сторожевой таймер.
- Периферийные интерфейсы:
- 34 программируемых универсальных портов ввода/вывода;
- 12ти разрядный АЦП, до 18 каналов;
- 2 x 8 битных ЦАП;
- 10 портов для подключения емкостных датчиков;
- 4 x SPI;
- 2 x I2S;
- 2 x I2C;
- 3 x UART;
- 1 хост контроллер SD/eMMC/SDIO;
- 1 слейв контроллер SDIO/SPI;
- Ethernet MAC interface с выделенным DMA и IEEE 1588 поддержкой;
- CAN 2.0;
- ИК порт;
- ШИМ для двигателей;
- ШИМ для светодиодов до 16ти каналов;
- датчик Холла.
- Безопасность:
- безопасная загрузка;
- шифрование FLASH;
- 1024-битный ключ, до 768 бит для клиентов;
- криптографическое аппаратное ускорение:
- AES;
- хеширование SHA-2;
- RSA;
- ECC;
- генератор случайных чисел (RNG).
Функциональная схема микроконтроллера выглядит так.
Скорее, это перечисление основных компонентов микроконтроллера.
Применение ESP32.
В технической документации ESP32 есть глава “Применение (не полный список)”.
Действительно, микроконтроллер с такими потрясающими возможностями и такой низкой ценой может быть использован где угодно. Но производитель – компания Espressif Systems, прежде всего, выделяет предназначение ESP32 для создания IoT устройств.
IoT (Internet of Things), в переводе “Интернет Вещей” – это концепция подключения всего к интернету, что позволит управлять этим всем через интернет. Действительно, наличие интегрированных интерфейсов WiFi и Bluetooth, высокая производительность и низкая цена делают ESP32 идеальными контроллерами для IoT технологий.
Высокая производительность позволяет использовать ESP32 в системах обработки изображений и речи в реальном времени. Домашняя автоматика, умный дом, контроль здоровья, сельское хозяйство, промышленность, робототехника, игрушки … Всего не перечислить.
Распиновка и элементы платы.
Назначение выводов платы показано на этой схеме.
А здесь показано назначение элементов платы.
Электрические характеристики ESP32.
Мы собираемся создавать реальные устройства. А значит подключать к микроконтроллеру какие-то сигналы, подавать на него питание, эксплуатировать устройства в определенных климатических условиях. Значит важно знать минимальный набор электрических характеристик контроллера. Я посчитал, что на первом этапе необходимо знать следующие параметры.
Питание.
Напряжение питания модуля – 3,3 В, но на плате установлен стабилизатор AMS1117-3.3. В документации на плату DevKit все время фигурирует напряжение внешнего питания 5 В. Я не понимаю, почему нельзя подавать большее напряжение. AMS1117-3.3 допускает питание до 20 В, но надо еще учитывать мощность рассеивания на стабилизаторе.
Питание USB развязано от внешнего питания платы диодом Шоттки. Значит можно запитывать плату от внешнего источника и одновременно подключать к USB.
Средний потребляемый ток – 80 мА, но источник питания должен допускать пиковые нагрузки до 0,5 А.
Температура окружающей среды -40 +85 °C. Это для платы. У микроконтроллера -40 +125 °C.
Параметры входов/выходов.
Обозначение | Параметр | Мин. значение |
Типовое значение |
Макс. значение |
Ед. изм. |
VIH | Входное напряжение высокого уровня | 0,75*VDD | - | VDD+0,3 | В |
VIL | Входное напряжение низкого уровня | - 0,3 | - | 0,25*VDD | В |
IIH, IIH | Входной ток высокого и низкого уровня | - | - | 50 | нА |
VOH | Выходное напряжение высокого уровня | 0,8*VDD | - | - | В |
VOL | Выходное напряжение низкого уровня | - | - | 0,1*VDD | В |
IOH | Выходной ток высокого уровня | - | 40 | - | мА |
IOL | Выходной ток низкого уровня | - | 28 | - | мА |
RPU, RPD | Сопротивление подтягивающего резистора | - | 45 | - | кОм |
Отметим, что
- нельзя на входы подавать напряжение выше 3,3.
- Нагрузочная способность выходов микроконтроллера довольно высокая для подобных устройств.
Документацию по аппаратной части ESP2 можно посмотреть по этой ссылке.
Там же есть принципиальная схема платы DevKitC.
В следующем уроке будем устанавливать среду программирования ESP32.
Список уроков Следующий урок