Esp32 первые шаги

Мы уже рассмотрели простейшее приложение для IoT SoC модулей на базе ESP8266. Сегодня я получил модули DoIt ESP32 DEVKIT V1 модули, на базе нового кристалла ESP32, так что будем пробовать его.

Верх

Низ

Характеристики ESP32

SoC ESP32 обладает существенно улучшенными характеристиками по сравнению со своим предшественником, но и стоит дороже. Так что, что именно применять - каждый решает сам.

  • CPU: Xtensa Dual-Core 32-bit LX6, 160 MHz или 240 MHz (до 600 DMIPS)
  • Memory: 520 KByte SRAM, 448 KByte ROM
  • Flash на модуле: 1, 2, 4… 64 Мб

Wireless:

  • Wi-Fi: 802.11b/g/n/e/i, до 150 Mbps c HT40
  • Bluetooth: v4.2 BR/EDR и BLE

Peripheral interfaces:

  • 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

Security:

  • IEEE 802.11 безопасность WFA, WPA/WPA2 и WAPI
  • Secure boot
  • Flash encryption
  • 1024-bit OTP, в том числе до 768-bit под задачу
  • Cryptographic: AES, SHA-2, RSA, ECC, RNG

Диаграмма

Документация

Pinout

Приложение

Создаём проект через PlatformIO:

mkdir esp32-intro
cd esp32-intro
pio init -b esp32doit-devkit-v1 --ide vscode

Создаём в каталоге src файл Main.cpp со следующим содержимым (да, это тот самый блинкер):

#include <Esp.h>

void setup() {
    pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
    digitalWrite(LED_BUILTIN, HIGH);
    delay(100);
    digitalWrite(LED_BUILTIN, LOW);
    delay(900);
}

И в файл platformio.ini в секцию [env:esp32doit-devkit-v1] дописывам параметр с указанием скорости загрузки:

upload_speed = 921600

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

Соберём наше приложение:

pio run

И загружаем:

pio run -t upload

Вообще не обязательно давать две отдельных команды. Вызов команды pio run -t upload самостоятельно пересоберёт приложение при необходимости. Я даю две команды исключительно для того, что бы посмотреть на время загрузки приложения в плату.

В ходе загрузки выводится достаточно подробный лог.

[Fri Sep 29 11:52:53 2017] Processing esp32doit-devkit-v1 (platform: espressif32; upload_speed: 921600; board: esp32doit-devkit-v1; framework: arduino)
-------------------------------------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
Collected 15 compatible libraries
Looking for dependencies...
No dependencies
Looking for upload port...
Auto-detected: /dev/ttyUSB0
Uploading .pioenvs/esp32doit-devkit-v1/firmware.bin
esptool.py v2.1-beta1
Connecting........_
Chip is ESP32D0WDQ6 (revision 1)
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Configuring flash size...
Auto-detected Flash size: 4MB
Flash params set to 0x022f
Compressed 10464 bytes to 7012...
Wrote 10464 bytes (7012 compressed) at 0x00001000 in 0.1 seconds (effective 1044.7 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 122...
Wrote 3072 bytes (122 compressed) at 0x00008000 in 0.0 seconds (effective 8280.8 kbit/s)...
Hash of data verified.
Compressed 8192 bytes to 47...
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.0 seconds (effective 35367.7 kbit/s)...
Hash of data verified.
Compressed 356880 bytes to 177296...
Wrote 356880 bytes (177296 compressed) at 0x00010000 in 3.2 seconds (effective 891.6 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting...
==== [SUCCESS] Took 8.46 seconds ====

Из лога видно интересное новвоведение в загрузчике: прошивка передаётся в упакованном виде, что солидно ускоряет процесс передачи данных и как сдедствие общую скорость загрузки.

 
comments powered by Disqus