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

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

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

  1. alexhi:

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

    • Alexey Alexey:

      Нет пока. Ищу с чем бы применить

      • imakofix:

        Датчик хола работает.
        Вот данные с serial монитора:
        Temp=50C hal=1
        Temp=50C hal=9
        Temp=50C hal=4
        Temp=51C hal=0
        Temp=50C hal=2
        Temp=51C hal=65530
        Temp=50C hal=65535
        Temp=51C hal=0
        Temp=50C hal=5
        Temp=50C hal=3

        Реагирует на магнит/удар пальцем по крышке гр..чипа…)))
        Но мой модуль жутко греется =(

Ваш отзыв