ESP32でAmazon FreeRTOSを使用してLEDをチカチカさせてみた

Posted on Tue 19 March 2019 in JP

はじめに

ESP32でAmazon FreeRTOSを使ってLEDチカチカさせる手順についてまとめます。

下記の公式ドキュメント等を参照してESP32にfirmwareの転送しMQTTのPublishができていることを前提としています。

Espressif ESP32-DevKitC と ESP-WROVER-KIT の開始方法

デモのesp32_devkitc_esp_wrover_kitに手を加える形でLチカを実現します。

ESP32でのGPIOの操作について

ESP32向けの公式ライブラリとしてESP-IDFが用意されています。 ESP-IDFはAmazon FreeRTOSに組み込まれているので、これを利用してGPIOを操作します。

ESP-IDFを使用したGPIOの操作に関しては、ESP-IDFのリファレンス(API Reference - Peripherals API - GPIO & RTC GPIO)に説明があります。

また、サンプルコードもGitHub(ESP-IDF GPIO Sample)で公開されています。

回路構成

GPIO4を制御してLEDをチカチカさせることにします。 GPIO4とGNDの間にLEDと抵抗を入れてつなぎます。抵抗の大きさは適当です。

コードの修正

esp32_devkitc_esp_wrover_kitのコードの修正を行います。 書き換え対象は、amazon-freertos/demos/espressif/esp32_devkitc_esp_wrover_kit/common/application_code/main.c です。

元々のサンプルコードはDEMO_RUNNER_RunDemos()でMQTTの通信を行っていましたが、そこをコメントアウトしてかわりにLチカのコードを追加します。

変更前

  /* Run all demos. */
  DEMO_RUNNER_RunDemos();

変更後

  /* Run all demos. */
  //DEMO_RUNNER_RunDemos();

  gpio_set_direction(GPIO_NUM_4, GPIO_MODE_OUTPUT);
  int cnt = 0;
  while (true) {
      gpio_set_level(GPIO_NUM_4, cnt++ % 2);
      vTaskDelay(1000 / portTICK_PERIOD_MS);
  }

実行結果

Lチカ

AWS