ハロー ブログ

日々のつぶやき @c2c2c2c221

ESP32クラスタを構築する (chatGPTに聞いてみた)

ESP32クラスタを構築するためには、以下のようなソフトウェアライブラリが利用できます。

ESP-MDF(ESP32 Mesh Development Framework)

github.com

ESP-MDFは、ESP32マイクロコントローラを使用してメッシュネットワークを構築するためのフレームワークです。ESP-MDFは、ESP32のメッシュ機能を最大限に活用し、複数のESP32デバイスを相互に接続することができます。 Arduino-ESP32 Arduino-ESP32は、Arduino IDEを使用してESP32マイクロコントローラをプログラミングするためのライブラリです。このライブラリを使用することで、ESP32クラスタを構築することができます。また、このライブラリは、ESP32のWiFiBluetooth機能をサポートしています。 FreeRTOS FreeRTOSは、RTOS(Real-Time Operating System)の1つで、多数のプロセッサを同時に実行することができます。ESP32は、FreeRTOSをサポートしており、ESP32クラスタを構築するために使用することができます。 MicroPython MicroPythonは、Pythonをベースにしたマイクロコントローラ用の実装であり、ESP32でも使用することができます。MicroPythonを使用することで、ESP32クラスタを構築することができます。 これらのソフトウェアライブラリを使用することで、ESP32クラスタを構築し、多数のデバイスを相互接続することができます。

SP32-S3は、Espressif Systemsが開発したWiFiBluetooth低消費電力マイクロコントローラーです。ESP32-S3は、ESP32よりも小型化されており、より高速な処理能力を持っています。

ESP32-S3クラスタを構築するためには、ESP-MDFを利用することができます。ESP-MDFは、ESP32-S3にも対応しており、ESP32-S3を使用してクラスタを構築することができます。ただし、ESP32-S3には、ESP32のように複数のコアが搭載されていないため、ESP32と比べてクラスタの性能はやや劣る可能性があります。

ESP32-S3は、WiFiBluetooth Low Energyの通信速度が向上しており、低消費電力ながら高性能な通信が可能です。また、ESP32-S3には、AI加速器が搭載されており、機械学習のような処理も高速に行うことができます。

ESP32-S3クラスタを構築するためには、ESP-MDFを使用することが推奨されます。ESP-MDFは、ESP32-S3のメッシュネットワーク機能を最大限に活用することができ、ESP32-S3クラスタの構築を容易にします。また、ESP-MDFは、マルチコア処理にも対応しているため、ESP32-S3の高速な処理能力を最大限に活用することができます。

ESP32-S3 のコア数は? ESP32-S3は、1つのCPUコアを搭載しています。これは、従来のESP32と比較して、コア数が減っています。一方で、ESP32-S3は、CPUクロックを高速化し、命令実行速度を向上させることで、高速な処理を実現しています。また、ESP32-S3には、AI加速器が搭載されており、機械学習のような高速な処理を実現することができます。

→これは誤っている。

CPU and On­Chip Memory • ESP32-S3 series of SoCs embedded, Xtensa® dual-core 32-bit LX7 microprocessor, up to 240 MHz

  • 384 KB ROM
  • 512 KB SRAM
  • 16 KB SRAM in RTC
  • ESP32-S3-WROOM-1-N16R8:16 MB (Quad SPI)、8 MB (Octal SPI)

2022年2月現在、Espressif SystemsはESP32-S3に関するいくつかのバグを修正するためのアップデートをリリースしています。最新バージョンには、以下のような修正が含まれています。

1.リセット時の不安定性 一部のESP32-S3デバイスでは、電源オン時やリセット時に不安定になる問題が報告されていました。最新のアップデートでは、この問題が修正されています。 2.DMA転送エラー 一部のESP32-S3デバイスでは、DMA(Direct Memory Access)転送時にエラーが発生することがありました。最新のアップデートでは、DMA転送の安定性が向上し、エラーが発生する可能性が低くなっています。 3.メモリリーク 一部のESP32-S3デバイスでは、メモリリークが発生することがありました。最新のアップデートでは、メモリ管理が改善され、この問題が修正されています。 4.SPIフラッシュ書き込みエラー 一部のESP32-S3デバイスでは、SPIフラッシュにデータを書き込む際にエラーが発生することがありました。最新のアップデートでは、SPIフラッシュへの書き込みの安定性が向上し、エラーが発生する可能性が低くなっています。 Espressif Systemsは、ESP32-S3に関する問題を積極的に修正しており、新しいアップデートがリリースされることも期待されます。最新のバージョンにアップデートすることで、ESP32-S3デバイスの安定性を向上させることができます。

ESP32クラスターのサンプルプログラムとして、以下のようなものがあります。

マトリックス乗算 マトリックス乗算は、複数の行列を掛け合わせる計算です。ESP32クラスターを使用して、大きな行列の乗算を高速に実行することができます。

以下は、2つの3x3行列の乗算を行うサンプルプログラムです。

include "freertos/FreeRTOS.h"

include "freertos/task.h"

include "esp_system.h"

include "esp_spi_flash.h"

include "driver/gpio.h"

include "esp_log.h"

static const char *TAG = "main";

define LED_GPIO_PIN 2

void app_main() { // GPIOを初期化 gpio_pad_select_gpio(LED_GPIO_PIN); gpio_set_direction(LED_GPIO_PIN, GPIO_MODE_OUTPUT);

// メインタスクを開始
xTaskCreatePinnedToCore(main_task, "main_task", 2048, NULL, 1, NULL, 1);

}

void main_task(void *pvParameter) { ESP_LOGI(TAG, "Starting main task...");

while (1)
{
    // LEDを点滅
    gpio_set_level(LED_GPIO_PIN, 1);
    vTaskDelay(100 / portTICK_PERIOD_MS);
    gpio_set_level(LED_GPIO_PIN, 0);
    vTaskDelay(100 / portTICK_PERIOD_MS);
}

}

このサンプルプログラムでは、app_main()関数でメインタスクを開始し、xTaskCreatePinnedToCore()関数を使用して、2番目のコアにタスクを割り当てます。main_task()関数は、割り当てられたコアで実行されます。

main_task()関数では、LEDを点滅させるために、gpio_set_level()関数を使用してGPIOの状態を変更し、vTaskDelay()関数を使用して遅延を発生させます。

このプログラムをESP32に書き込んで実行すると、2つのLEDが点滅し、2つのESP32コアが同時に動作していることが確認できます。

ESP32SとESP 32S3の比較

ESP32SとESP32S3は、両方ともEspressif Systemsによって設計されたWi-FiおよびBluetooth無線通信用のマイクロコントローラーで、両者はいくつかの点で類似していますが、いくつかの重要な点で異なります。

プロセッサー: ESP32Sはデュアルコアの32ビットプロセッサーを搭載しており、最大クロック速度は240 MHzです。一方、ESP32S3はシングルコアの32ビットプロセッサーを搭載しており、最大クロック速度は240 MHzです。 メモリ: ESP32Sは520 KBのSRAMと448 KBのROMを搭載しています。ESP32S3は最大の520 KBのSRAMと最大の2 MBのフラッシュメモリを搭載しています。 Wi-Fi: ESP32Sは802.11b/g/nをサポートしています。一方、ESP32S3は802.11b/g/nおよび802.11a/acをサポートしており、より高速なWi-Fi通信が可能です。 Bluetooth: ESP32SとESP32S3は、両方ともBluetooth 4.2およびBluetooth Low Energy(BLE)をサポートしています。ただし、ESP32S3は、最大転送速度が2倍速くなったBluetooth 5.0にも対応しています。 パッケージ: ESP32SはQFNパッケージで提供されます。一方、ESP32S3はQFNおよびQFN+PSRAMパッケージの両方で提供されます。 その他の機能: ESP32SとESP32S3は、両方ともカメラインタフェース、SPI、I2C、UART、ADC、DAC、PWM、およびタイマーなどの周辺機能を備えています。ただし、ESP32S3はより高度なセキュリティ機能を備えており、セキュアブート、フラッシュ暗号化、およびハードウェアセキュリティモジュール(HSM)などをサポートしています。 総合的に言うと、ESP32S3はより高速で高度なセキュリティ機能を備え、より大きなメモリ容量を持つため、より高度なアプリケーションに適しています。一方、ESP32Sは低消費電力で、小型のIoTデバイスに適しています。

ロビのマイコンには、STマイクロエレクトロニクスのSTM32F2が使われていて、メーカーのサイトから技術資料や開発に必要なソフトは入手できます。 開発環境を接続するために必要な信号は、ピン未実装のCN11に出ているのでSTM8/STM32プログラマー ST-Link V2を秋月電子あたりで購入してくれば、オンボードデバッグできます。

ただ、書き込まれているファームウエアは読み出しロックがかかっているので、読み出すことはできません。

ファームウエアを全て消去して、読み出し書き込み可能な状態に戻すことはできるので、I2Cでリンクされている音声認識ボードなど他の基盤の動作を解析して、1からファームを書けば自由に扱うことは可能です。

上記の文章は、ある製品(ロビ)のマイコンについて説明しています。

ロビのマイコンには、STマイクロエレクトロニクスのSTM32F2が使われており、技術資料や開発に必要なソフトウェアはメーカーのサイトから入手できるとのことです。また、開発環境を接続するためには、ピン未実装のCN11から出る信号を使用して、STM8/STM32プログラマー ST-Link V2を購入する必要があるようです。

ただし、現在書き込まれているファームウェアは、読み出しロックがかかっているため、読み出すことができないとのことです。ただ、ファームウェアを全て消去して、読み出し書き込み可能な状態に戻すことができるため、I2Cでリンクされている音声認識ボードなど他の基盤の動作を解析し、新しいファームウェアを1から書き込むことで自由に扱えるようになるとのことです。

壊れない?

製品のマイコンや周辺機器を操作する場合、誤った操作を行うと故障の原因となる可能性があります。また、不適切な回路や設計、電源の問題、外部からの環境的な要因なども故障の原因となり得ます。

したがって、製品やマイコンの操作に関しては、十分な知識や技術を持った人が行うことが望ましいです。また、必要な場合にはメーカーのサポートに相談することも重要です。

ただし、正しく操作を行い、適切な手順に従って作業を進める限り、故障のリスクは低くなります。また、必要に応じてバックアップを取ることや、操作の前にマイコンを解析することなども、故障のリスクを減らす上で役立ちます。