ESP32 — новый модуль от ESPRESSIF

002ESP8266 стал воистину «народным» в мире дешевых интернет вещей. Встречайте ему достойную замену ESP32.
Краткое описание, программирование в Ardiono IDE, примеры читайте в этом обзоре


Начну пожалуй с характеристик ESP32, взятых из официального даташита:

Память и ЦПУ

  • Двухядерный 32-битный микропроцессор Xtensa LX6 160-240МГц
  • ОЗУ — 520Кб
  • ПЗУ — 448Кб
  • Дополнительно RTC таймер с 16Кб ОЗУ
  • Внешняя флэш память 4-16Мб
  • Питание 2.2 — 3.6В

 

WiFi и Bluetooth

  • WiFi 802.11n 2.4Гц с максимальной скоростью 150Мбит/сек
  • WPA)/WPA2/WPA2-Enterprise/Wi-Fi Protected Setup (WPS
  • Bluetooth v4.2 BR/EDR and BLE

Периферия

  • 12- битная АЦП на 18 портах
  • 8-битная ЦАП на 2 портах
  • 10-портов в режиме сенсорных кнопок
  • Встроенный температурный датчик
  • 4 x SPI
  • 2 x IS1
  • 2 x I2C
  • 3 x UART
  • 1 host (SD/eMMC/SDIO)
  • 1 slave (SDIO/SPI)
  • Ethernet MAC interface with dedicated DMA and IEEE 1588 support
  • CAN 2.0
  • IR (TX/RX)
  • Motor PWM
  • LED PWM up to 16 channels
  • Hall sensor
  • Ultra-low-noise analog pre-amplifier

Защита

  • IEEE 802.11 standard security features all supported, including WFA, WPA/WPA2 and WAPI
  • Secure boot
  • Flash encryption
  • 1024-bit OTP, up to 768-bit for customers
  • Cryptographic hardware acceleration:
    – AES
    – HASH (SHA-2) library
    – RSA
    – ECC
    – Random Number Generator (RNG)

Энергопотребление

  • Максимальный ток при передаче WiFi — 160-260мА
  • Потребление без включенного WiFi и Bluetooth — 20мА
  • LightSleep — 0.8мА
  • DeepSleep — до 10мкА
  • Режим гибернизации с активным RTC — 5мкА

Я заказал отладочную плату на ESP-WROOM-32 с 16Мб флэша, USB/UART на CP2102 и прошитым загрузчиком. (Даташит на нее) за $8.22. Цена на сам модуль начинается от $5. Еще за $0.5 можно купить терминальную платку, а за $4 отдельно отладочную плату без модуля

001 002 100 101 102

Назначение выводов отладочной платы можно посмотреть здесь

esp32_pinmap

Все для программирование есть у производителя, в его разделе на GITHUB
Там же есть ESP32 CORE для Arduino IDE
Установка под Windows очень проста:
— Устанавливаем Arduino IDE (если еще не установлена)
— Скачиваем архив с последней версий Core ESP32
— Распаковываем архив в папку:
C:/Users/[YOUR_USER_NAME]/Documents/Arduino/hardware/espressif/esp32

После это в Board Manadger появляется поддержка ESP32

arduino

Инструкции по установке в LINUX и MAC OS лежат на страничке проекта

Подключаем отладочную плату с ESP32 к USB и, если установлен драйвер на CP2102, то видим отладочный COM порт в системе. Если нет, ставим драйвер, как например это описано здесь

Запустив монитор порта на 115200 видим загрузку системы

start1 start2

Библиотек портировано еще очень мало

arduino-lib

В каталогах example лежат примеры. Давайте займемся программированием.

Подключение к WiFi

wifi

С запуском веб-сервера из примера тоже проблем не составила. Правда удобных классов для HTTP-сервера в библиотеках нет, и весь HTTP-протокол реализуется вручную на лету. Но перенос библиотек ESP8266 дело времени. Да и самому можно заняться на досуге.

Сенсорные кнопки

Давайте посмотрим как работают TOUCH сенсоры.
Подключаем пару проводков с площадками к выводам T1 и T2touch

После этого функции touchRead(T1) и touchRead(T2) возвращают значение больше 25, если прикоснуться к площадкам и 0-2 если не прикасаться.
Как работать с кнопками я подробно описывал

Программа работы с двумя сенсорными кнопками и подавлением дребезга

Работа со встроенными датчиками температуры и Холла

Кто то считает Arduino IDE огрызком нормальной системы разработки. Позвольте не согласится. Arduino IDE это довольно примитивный редактор + среда G++ для микроконтроллеров. А CORE ESP32 содержит версию SDK и никто не мешает пользоваться им напрямую.

Температура ядра выдается в фаренгейтах и ее не сложно перевести в градусы цельсия, а вот что показывает датчик холла и есть ли он на самом деле я не разобрался. По крайней мере, на магнит выдача значений никак не реагировала.

temp

Подключение OLED дисплея по I2C

По настоящему сильная сторона Arduino это гигантское количеством готовых библиотек. Нормально заработали библиотеки SSD1306 и GFX от Adafruit для OLED дисплея I2C

Код также содержит I2C сканер, определяющий все устройства на шине.

201

NTP часы на дисплее TM1637

Попробуем написать какую нибудь законченную программу для ESP32. Пусть это будут часы с синхронизацией времени в интернете по NTP, которую я уже описывал для ESP8266

Подключаем индикатор к GPIO22 и GPIO23, ESP32 соединяется с интернетом и на дисплее получаем точное время для Перми

205

Выводы

Жаль что в этом обзоре нельзя обьять все. За кадром остались и работа с Bluetooth и обновление прошивки по воздуху и работа с аналоговыми выходами и многое другое.
Но ведь это только начало!
Безусловно, ESP32 несмотря на свою не дозревшую программную часть, железка очень интересная. Да и по деньгам она уже не слишком кусается. Лично я буду ее пробовать использовать в различных проектах. А значит, будут и новые обзоры.

c1

Полезные ссылки

Англоязычное сообщество esp32

Ветка по ESP32 на форуме ESP8266

Очень серьезные технический документ по ESP32

Вы можете оставить отзыв или трекбек со своего сайта.

20 комментариев на «ESP32 — новый модуль от ESPRESSIF»

  1. alexhi:

    Хороший обзор.Спасибо. А работу с BLE пробывали? У меня что то не взлетело.

  2. Приобрел esp32. Но к сожалению не могу запустить…
    Возникла ошибка при загрузке http://arduino.esp8266.com/package_esp8266com_index.json
    exit status -1
    Ошибка компиляции для платы ESP32 Dev Module.

    • Alexey:

      Возможно где то ошибка у разработчиков в автоматической установке пакета
      Попробуйте его вручную поставить, как я в статье описывал

  3. У меня не находит файл в папке \espressif\esp32\tools\esptool.exe
    У Вас ест такой?

  4. Заработало. Больше вопросов нет. Спасибо!

  5. народ, а для чего этот микро контроллер, в чего можно применить, что сделать никто ничего не показывает

  6. Peter:

    Хочу собрать контроллер (термостат) в дом. Только вот нужно будет прицепить 7 температурных датчиков и 6 нагрузок (исполнительные механизмы) с возможностью расширения до 10 датчиков и 10 нагрузок.
    Возможно ли все это повесить на ESP32? Везде описаны примеры и конструкции с 1 или 4 датчиками. Поэтому такой вопрос возник.

  7. MegaVT:

    Доброго времени суток. А не пробовали с модуля данные в uart отправлять? Нигде не могу примеров найти обмена данными по uart, где только уже не искал. Задумка такая: на RS-485 висит пара десятков AVR, у каждого «свои» символы, на которые он «отзывается. Хотелось бы всем этим безобразием со смартфона управлять…

  8. mishapk:

    Куда подключать батарейку для rtc? Сколько не гляжу пина VBAT не вижу.

  9. Алексей:

    Вопрос по подключению периферии — не могу найти либы для шаговика.

  10. Алексей:

    Добрый день. Кто может помочь мне с разработкой простого софта для esp32? Естественно не бесплатно. Тут уж как договоримся. Или может посоветуете куда обратиться

  11. Виктор:

    Здравствуйте. Не могу свою ESP32 подключить к wifi как описано в этой статье…
    Заливал wifi сканер точку видит… делаю вывод что модуль wifi работает.
    Что может быть?

    • Alexey:

      Трудно сказать. Ошибка в названии точки доступа (большие/маленькие буквы проверьте), неисправность ESP32, несовместимость ESP и роутера (к сожалению, встречал и такое, правда на WSP8266)

Ваш отзыв

Вы должны войти, чтобы оставлять комментарии.