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はサポートするレイヤが 違います。
詳しくはこ ちらなどに紹介されていますが、EthernetでのTCP/IPの実装とよく似ています。
下位のレイヤーとしてIEEE802.15.4を利用するプロトコルには、Zigbeeの他にMatterやThreadなどが有ります。



こ ちらに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 802.11 b/g/n

Bluetooth Bluetooth 5.0/Bluetooth Mesh
Bluetooth 5.0/Bluetooth Mesh
IEEE 802.15.4
IEEE Standard 802.15.4-2015 compliant
Advanced Peripheral Interfaces • 22 or 16 × 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 |

続く....