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);
}