ESP-IDFを使ってみる

ESP32-H2開発ボード

Espressif Systemsから2021年8月に、こちらの公式アナウンスが 公開されました。
ESP32-Cシリーズと同じRISC-VコアのSoCですが、CPU周波数が96MHzに抑えられています。
低消費電力を目的としているのかもしれません。
esp-idf v4.4.2では既にターゲットとして設定されています。
$ idf.py set-target
Usage: idf.py set-target [OPTIONS]
                         {esp32|esp32s2|esp32c3|esp32s3|linux|esp32h2}
Try 'idf.py set-target --help' for help.

Error: Missing argument '{esp32|esp32s2|esp32c3|esp32s3|linux|esp32h2}'. Choose from:
        esp32,
        esp32s2,
        esp32c3,
        esp32s3,
        linux,
        esp32h2

注目すべきはIEEE 802.11(無線LAN)ではなく、IEEE 802.15.4をサポートしてることです。
IEEE 802.15.4は、2.4GHz帯の周波数帯を用いて、通信速度250kbps、ノード数約6万個、通信距離100m、
最大パケットサイズ127バイトの特徴を持っています。
無線LANと比較すると通信速度は遅く、パケットサイズも小さいのですが、低消費電力であり、
単三形乾電池で1年程度稼働させることができるみたいです。

IEEE802.15.4=Zigbeeとして紹介しているページも有りますが、IEEE802.15.4とZigbeeはサポートするレイヤが 違います。
詳しくはこ ちらなどに紹介されていますが、IEEE802.15.4をサポートしていても、Zigbeeはサポートしない実装が可能です。
EthernetでのTCP/IPの実装とよく似ています。



こ ちらにZboss Zigbee 3.0 Stackが公開されています。
サンプルコードなどが無いので、使い方が良く分かりません。

こ ちらにESP-Zigbee-SDKが公開されています。
サンプルコードがこ ちらに公開されています。
サンプルコードの一部は公式サンプルとして公開されています。



Espressif Systemsの公式ページの Products>SoCsにESP32-H2が追加されています。
それに伴い、こ ちらにESP32-H2のDataSheetが公開されています。
同じRISCチップのESP32-C3との比較です。
CPUクロックは、これまでのESP32の中で最も低い値です。
ROM、SRAMの容量はESP32-S2と同じです。
MCPWM、PCNTのサポートが追加されています。
また、PARLIOは今までのどのSoCにもない機能です。

ESP32-C3 ESP32-H2
CPU 32-bit RISC-V single-core processor, up to 160MHz 32-bit RISC-V single-core processor, up to 96MHz
Memory 384 KB ROM
400 KB SRAM
128 KB ROM
320 KB SRAM
Wi-Fi Supports 20 MHz, 40 MHz bandwidth in 2.4GHz band
1T1R mode with data rate up to 150 Mbps

IEEE 802.15.4
Supports 250 Kbps data rate in 2.4 GHz band and OQPSK PHY
Supports Thread 1.1 (and the later versions in draft)
Supports Zigbee 3.0
Supports Matter
Supports other application-layer protocols (HomeKit, MQTT, etc)
Advanced Peripheral Interfaces • 22 × programmable GPIOs
• 2 × 12-bit SAR ADCs, up to 6 channels
• 1 × temperature sensor
• 3 × SPI
• 2 × UART
• 1 × I2C
• 1 × I2S
• Remote control peripheral, with 2 transmit channels and 2 receive channels
• LED PWM controller, up to 6 channels


• General DMA controller, with 3 transmit channels and 3 receive channels
• 1 × TWAI controller (compatible with ISO 11898-1)
• Full-speed USB Serial/JTAG controller
• 19 × programmable GPIOs
• 1 × 12-bit SAR ADCs, up to 5 channels
• 1 × temperature sensor
• 3 × SPI
• 2 × UART
• 1 × I2C
• 1 × I2S
• Remote control peripheral, with 2 transmit channels and 2 receive channels
• LED PWM controller, up to 6 channels
• Motor control PWM (MCPWM)
• Pulse count controller (PCNT)
• General DMA controller, with 3 transmit channels and 3 receive channels
• 1 × TWAI controller (compatible with ISO 11898-1)
• Full-speed USB Serial/JTAG controller
• Event task matrix (ETM)
• Parallel IO (PARLIO) controller



最初の公式発表では、ESP32-C6にはIEEE 802.15.4の機能は有りませんでした。
IEEE 802.15.4は、このSoCだけが使える予定でした。
最終的に、ESP32-C6にもIEEE 802.15.4の機能が搭載されたので、このSoCの特徴は一気に失われてしまいました。

esp-idfにはESP32-C6/H2専用のサンプルが幾つか付属していますが、H2だけで使えるサンプルは1つだけです。
Analog ComparatorはESP32-H2だけが持っている機能です。
APIリファレンスはこ ちらに有ります。
$ grep -rn  "Supported Targets" * | grep ESP32-H2   | grep -v "ESP32-C6" | grep -v "ESP32 "
peripherals/analog_comparator/README.md:1:| Supported Targets | ESP32-H2 |

H2用のサンプルのほとんどがC6やS3でも動きます。
$ grep -rn  "Supported Targets" * | grep ESP32-H2 | grep "ESP32-C6" | grep -v "ESP32 " | grep -v "ESP32-C3"
openthread/ot_rcp/README.md:1:| Supported Targets | ESP32-C6 | ESP32-H2 |
openthread/ot_cli/README.md:1:| Supported Targets | ESP32-C6 | ESP32-H2 |
peripherals/rmt/stepper_motor/README.md:1:| Supported Targets | ESP32-C6 | ESP32-H2 | ESP32-S3 |
peripherals/timer_group/gptimer_capture_hc_sr04/README.md:1:| Supported Targets | ESP32-C6 | ESP32-H2 |
peripherals/ledc/ledc_gamma_curve_fade/README.md:1:| Supported Targets | ESP32-C6 | ESP32-H2 |
peripherals/temperature_sensor/temp_sensor_monitor/README.md:1:| Supported Targets | ESP32-C6 | ESP32-H2 |
peripherals/parlio/simple_rgb_led_matrix/README.md:1:| Supported Targets | ESP32-C6 | ESP32-H2 |
zigbee/esp_zigbee_rcp/README.md:1:| Supported Targets | ESP32-C6 | ESP32-H2 |
zigbee/light_sample/HA_on_off_switch/README.md:1:| Supported Targets | ESP32-C6 | ESP32-H2 |
zigbee/light_sample/HA_on_off_light/README.md:1:| Supported Targets | ESP32-C6 | ESP32-H2 |

続く....