ESP32: знакомимся, пишем и запускаем первую прошивку
Содержание
- Характеристики ESP32
- Настройка среды разработки
- Пишем Hello World
- Собираем и заливаем на плату
- Отладка
Всем привет. Несколько дней назад мне достался экземпляр ESP32 Demo Board V2, о чем я сразу радостно заявил у себя на FB. Конечно, ведь получить его сейчас не очень просто: первая партия (штук 600), которая поступила на продажу на Seeed Studio разлетелась за считанные часы!
Но как разработчик и hardware интегратор Open-Source библиотеки для Blynk, я часто получаю ранний доступ к различным девайсам. Blynk позволяет быстро прототипировать и строить iOS/Android Apps для интернета вещей, используя drag’n’drop блоки прямо на телефоне.
Плата, которая попала мне в руки, выглядит вот так:
ESP32 обещает снова совершить революцию в мире IoT, как в свое время совершил его младший брат ESP8266 (и я искренне надеюсь, что так и будет). Если Вы раньше ничего не слышали о ESP8266 — читайте, например здесь и здесь (ну и гугл).
Что же собой представляет новый ESP32? Даже с первого взгляда понятно, что это очень мощная платформа. Например, Иван Грохотков (разработчик поддержки Arduino для ESP8266) опубликовал фото игры DOOM на ESP32:
Характеристики ESP32
- Wi-Fi: 802.11b/g/n/e/i, до 150 Mbps c HT40
- Bluetooth: v4.2 BR/EDR и BLE
- 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
- IEEE 802.11 безопасность WFA, WPA/WPA2 и WAPI
- Secure boot
- Flash encryption
- 1024-bit OTP, включая до 768-bit под задачу
- Cryptographic движок: AES, SHA-2, RSA, ECC, RNG
Более детальная (и практически полная) информация есть на офф. сайте Espressif Systems. ESP32 будет доступен (как минимум) в нескольких видах:
» Модуль ESP-WROOM-32 ($5 ?)
» Модуль AI-Thinker ESP3212, похожий на ESP-12F ($6.9). На ESP3212 нет ножек для SD-card, в отличии от WROOM-32.
Чип ESP32-D0WDQ6 ($2.8 ?) | Datasheet
- D: Dual-core
- 0: No internal flash
- W: Wi-Fi
- D: Dual-mode Bluetooth
- Q: Quad Flat No-leads (QFN) package
- 6: 6 mm × 6 mm package body size
Осторожно! Практически все упоминания о ESP32 до 09.2016 на самом деле о ESP31B, что вообще не то же самое.
Настройка среды разработки
На оффсайте сейчас можно найти ссылки на два SDK:
» ESP31_RTOS_SDK — SDK для ESP31B, построена на FreeRTOS.
» Espressif IDF (IoT Development Framework) — Official development framework for ESP32.
Хоть это и не очевидно с описания на сайте, но для релизной версии нам подходит только ESP-IDF. Есть инструкции по установке для linux, windows, macos.
У меня 64-bit Ubuntu Linux. Сначала скачал компилятор:
Должна появиться папка xtensa-esp32-elf . Потом скачал esp-idf (в той же папке /opt/Espressif ):
Должна появиться папка esp-idf .
Пишем Hello World
Espressif подготовил для нас темплейт проект, так что начать очень просто:
Можно попробовать запустить чисто темплейт, но мне это показалось неинтересным. Я чуть-чуть дописал main/app_main.c , чтоб помигать светодиодом. Вот что получилось.
Собираем и заливаем на плату
Чтоб собрать проект, сначала надо настроить окружение:
Теперь подключаем плату, включаем питание, и смотрим на каком порту она появилась (у меня это /dev/ttyUSB3). Запускаем конфигуратор:
Надо зайти в «Serial flasher config» и установить «Default serial port» на порт платы. Можно еще посмотреть другие настройки.
Все, сохраняем и выходим.
Если все хорошо, заливаем на плату:
Подключаемся к плате используя Putty (screen, или другой эмулятор терминала). Передергиваем питание, и видим:
Если подключить светодиод к IO18 , то он тоже мигает. Значит, наш код работает!
Отладка
Еще одна хорошая новость — в ESP32 есть JTAG интерфейс на ножках IO12, IO13, IO14, IO15 . Я попробую использовать его для отладки программ. Но об этом уже в следующей статье.
Ну что ж, осталось только дождаться наличия ESP32 в магазинах, стабилизации SDK (надеюсь, оно будет изначально намного стабильнее, чем ESP8266). Функция Bluetooth тоже пока не доступна. В скором времени (по моим данным, очень скоро) должны появиться бета-поддержка Arduino IDE и MicroPython, чуть потом Espruino и что-то похожее на NodeMCU.
Источник: