ESP8266 стал воистину «народным» в мире дешевых интернет вещей. Встречайте ему достойную замену 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 отдельно отладочную плату без модуля
Назначение выводов отладочной платы можно посмотреть здесь
Все для программирование есть у производителя, в его разделе на GITHUB
Там же есть ESP32 CORE для Arduino IDE
Установка под Windows очень проста:
— Устанавливаем Arduino IDE (если еще не установлена)
— Скачиваем архив с последней версий Core ESP32
— Распаковываем архив в папку:
C:/Users/[YOUR_USER_NAME]/Documents/Arduino/hardware/espressif/esp32
После это в Board Manadger появляется поддержка ESP32
Инструкции по установке в LINUX и MAC OS лежат на страничке проекта
Подключаем отладочную плату с ESP32 к USB и, если установлен драйвер на CP2102, то видим отладочный COM порт в системе. Если нет, ставим драйвер, как например это описано здесь
Запустив монитор порта на 115200 видим загрузку системы
Библиотек портировано еще очень мало
В каталогах example лежат примеры. Давайте займемся программированием.
Подключение к WiFi
С запуском веб-сервера из примера тоже проблем не составила. Правда удобных классов для HTTP-сервера в библиотеках нет, и весь HTTP-протокол реализуется вручную на лету. Но перенос библиотек ESP8266 дело времени. Да и самому можно заняться на досуге.
Сенсорные кнопки
Давайте посмотрим как работают TOUCH сенсоры.
Подключаем пару проводков с площадками к выводам T1 и T2
После этого функции touchRead(T1) и touchRead(T2) возвращают значение больше 25, если прикоснуться к площадкам и 0-2 если не прикасаться.
Как работать с кнопками я подробно описывал
Программа работы с двумя сенсорными кнопками и подавлением дребезга
Работа со встроенными датчиками температуры и Холла
Кто то считает Arduino IDE огрызком нормальной системы разработки. Позвольте не согласится. Arduino IDE это довольно примитивный редактор + среда G++ для микроконтроллеров. А CORE ESP32 содержит версию SDK и никто не мешает пользоваться им напрямую.
Температура ядра выдается в фаренгейтах и ее не сложно перевести в градусы цельсия, а вот что показывает датчик холла и есть ли он на самом деле я не разобрался. По крайней мере, на магнит выдача значений никак не реагировала.
Подключение OLED дисплея по I2C
По настоящему сильная сторона Arduino это гигантское количеством готовых библиотек. Нормально заработали библиотеки SSD1306 и GFX от Adafruit для OLED дисплея I2C
Код также содержит I2C сканер, определяющий все устройства на шине.
NTP часы на дисплее TM1637
Попробуем написать какую нибудь законченную программу для ESP32. Пусть это будут часы с синхронизацией времени в интернете по NTP, которую я уже описывал для ESP8266
Подключаем индикатор к GPIO22 и GPIO23, ESP32 соединяется с интернетом и на дисплее получаем точное время для Перми
Выводы
Жаль что в этом обзоре нельзя обьять все. За кадром остались и работа с Bluetooth и обновление прошивки по воздуху и работа с аналоговыми выходами и многое другое.
Но ведь это только начало!
Безусловно, ESP32 несмотря на свою не дозревшую программную часть, железка очень интересная. Да и по деньгам она уже не слишком кусается. Лично я буду ее пробовать использовать в различных проектах. А значит, будут и новые обзоры.
Хороший обзор.Спасибо. А работу с BLE пробывали? У меня что то не взлетело.
Нет пока. Ищу с чем бы применить
Датчик хола работает.
Вот данные с 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
Реагирует на магнит/удар пальцем по крышке гр..чипа…)))
Но мой модуль жутко греется =(
Приобрел esp32. Но к сожалению не могу запустить…
Возникла ошибка при загрузке http://arduino.esp8266.com/package_esp8266com_index.json
exit status -1
Ошибка компиляции для платы ESP32 Dev Module.
Возможно где то ошибка у разработчиков в автоматической установке пакета
Попробуйте его вручную поставить, как я в статье описывал
У меня не находит файл в папке \espressif\esp32\tools\esptool.exe
У Вас ест такой?
Заработало. Больше вопросов нет. Спасибо!
народ, а для чего этот микро контроллер, в чего можно применить, что сделать никто ничего не показывает
Хочу собрать контроллер (термостат) в дом. Только вот нужно будет прицепить 7 температурных датчиков и 6 нагрузок (исполнительные механизмы) с возможностью расширения до 10 датчиков и 10 нагрузок.
Возможно ли все это повесить на ESP32? Везде описаны примеры и конструкции с 1 или 4 датчиками. Поэтому такой вопрос возник.
Возможно, но ESP32 избыточно. Там и обычной ардуины/ESP8266 за глаза
DS18B20 возможно на одной шине 10 датчиков. У них адреса уникальные
Доброго времени суток. А не пробовали с модуля данные в uart отправлять? Нигде не могу примеров найти обмена данными по uart, где только уже не искал. Задумка такая: на RS-485 висит пара десятков AVR, у каждого «свои» символы, на которые он «отзывается. Хотелось бы всем этим безобразием со смартфона управлять…
Конкретно в этом проекте нет. А так ничего сложного не вижу. Только нужно прошивки с двух сторон реализовывать с протоколом обмена
Ага, вот, интерпретатор накопал наконец-то тут… https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_ru. Пытаюсь разобраться)…
Я считаю, что интерпретатор в микроконтроллерах — зло
Си++ не намного сложнее Lua, а функциональность совсем другая
Куда подключать батарейку для rtc? Сколько не гляжу пина VBAT не вижу.
Вопрос по подключению периферии — не могу найти либы для шаговика.
Добрый день. Кто может помочь мне с разработкой простого софта для esp32? Естественно не бесплатно. Тут уж как договоримся. Или может посоветуете куда обратиться
Вкусное на потом оставляет?
Здравствуйте. Не могу свою ESP32 подключить к wifi как описано в этой статье…
Заливал wifi сканер точку видит… делаю вывод что модуль wifi работает.
Что может быть?
Трудно сказать. Ошибка в названии точки доступа (большие/маленькие буквы проверьте), неисправность ESP32, несовместимость ESP и роутера (к сожалению, встречал и такое, правда на WSP8266)