ESP32で遊ぶ


開発環境を作る (5) - Eclipseプロジェクトの新規作成 -

これまでで、ESP-WROOM-32のプログラムをEclipseで開発することが可能であることがわかりました。
今回は、Eclipseのプロジェクトを(インポートではなく)新規作成してLチカしてみたいと思います。

プログラムそのものは、ESP-IDFが提供しているblinkです。あしからず。

プロジェクト作成

それでは、Eclipseを起動して、プロジェクトを作成していきましょう。

  1. Eclipseを起動します。
  2. [ファイル]-[新規]-[プロジェクト]を選択します。

  3. [Cプロジェクト]を選択します。
  4. [次へ]ボタンを押します。

  5. [プロジェクト名]を入力します。
  6. 必要に応じて、[ロケーション]を入力(または参照して選択)します。
  7. [プラットフォームでサポートされている場合のみ、プロダクト・タイプとツールチェーンを表示]のチェックを外します。
  8. [Makefileプロジェクト]-[空のプロジェクト]を選択します。
  9. [Cygwin GCC]を選択します。
  10. [次へ]ボタンを押します。

  11. [完了]ボタンを押します。

  12. プロジェクトを選択してマウスの右ボタンをクリックします。
  13. [新規]-[C/C++ プロジェクトへ変換(C/C++ ネーチャー追加)]を選択します。

  14. [プラットフォームでサポートされている場合のみ、プロダクト・タイプとツールチェーンを表示]のチェックを外します。
  15. [Makefile プロジェクト]を選択します。
  16. [Cygwin GCC]を選択します。
  17. [完了]ボタンを押します。

  18. 以前(開発環境を作る (2))説明したように、Eclipseのプロジェクト毎の設定をします。

プログラムをコーディング

続いて、プログラムをコーディングしていきたいと思います。
GitHubには、プロジェクトのテンプレートが公開されてますので、こちらをダウンロードしてきても良いのですが、今回はサンプルを参考にして作っていきます。

  1. プロジェクトのルートフォルダにMakefileファイルを作成します。
    1. プロジェクト ルート を右クリックして[新規]-[ファイル]を選択します。

    2. [ファイル名]にMakefileを入力します。
    3. [完了]ボタンを押します。

    4. エディタで、次の内容を入力します。
      #
      # This is a project Makefile. It is assumed the directory this Makefile resides in is a
      # project subdirectory.
      #
      
      PROJECT_NAME := blink
      
      include $(IDF_PATH)/make/project.mk
      
      
  2. プロジェクトのルートフォルダにmainフォルダを作成します。
    1. プロジェクト ルート を右クリックして[新規]-[フォルダー]を選択します。

    2. [フォルダー名]にmainを入力します。
    3. [完了]ボタンを押します。

  3. プロジェクトのmainフォルダにcomponent.mkファイルを作成します。
    1. mainフォルダを右クリックして[新規]-[ファイル]を選択します。

    2. [ファイル名]にcomponent.mkを入力します。
    3. [完了]ボタンを押します。

    4. エディタで、次の内容を入力します。
      #
      # "main" pseudo-component makefile.
      #
      # (Uses default behaviour of compiling all source files in directory, adding 'include' to include path.)
      
      
  4. プロジェクトのmainフォルダにKconfig.projbuildファイルを作成します。
    1. mainフォルダを右クリックして[新規]-[ファイル]を選択します。

    2. [ファイル名]にKconfig.projbuildを入力します。
    3. [完了]ボタンを押します。

    4. エディタで、次の内容を入力します。
      menu "Example Configuration"
      
      config BLINK_GPIO
          int "Blink GPIO number"
      	range 0 34
      	default 5
      	help
      		GPIO number (IOxx) to blink on and off.
      
      		Some GPIOs are used for other purposes (flash connections, etc.) and cannot be used to blink.
      
      		GPIOs 35-39 are input-only so cannot be used as outputs.
      
      endmenu
      
      
  5. プロジェクトのmainフォルダにblink.cファイルを作成します。
    1. mainフォルダを右クリックして[新規]-[ソース・ファイル]を選択します。

    2. [ファイル名]にblink.cを入力します。
    3. [完了]ボタンを押します。

    4. エディタで、次の内容を入力します。
      /* Blink Example
      
         This example code is in the Public Domain (or CC0 licensed, at your option.)
      
         Unless required by applicable law or agreed to in writing, this
         software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
         CONDITIONS OF ANY KIND, either express or implied.
      */
      #include <stdio.h>
      #include "freertos/FreeRTOS.h"
      #include "freertos/task.h"
      #include "driver/gpio.h"
      #include "sdkconfig.h"
      
      /* Can run 'make menuconfig' to choose the GPIO to blink,
         or you can edit the following line and set a number here.
      */
      #define BLINK_GPIO CONFIG_BLINK_GPIO
      
      void blink_task(void *pvParameter)
      {
          /* Configure the IOMUX register for pad BLINK_GPIO (some pads are
             muxed to GPIO on reset already, but some default to other
             functions and need to be switched to GPIO. Consult the
             Technical Reference for a list of pads and their default
             functions.)
          */
          gpio_pad_select_gpio(BLINK_GPIO);
          /* Set the GPIO as a push/pull output */
          gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT);
          while(1) {
              /* Blink off (output low) */
              gpio_set_level(BLINK_GPIO, 0);
              vTaskDelay(1000 / portTICK_PERIOD_MS);
              /* Blink on (output high) */
              gpio_set_level(BLINK_GPIO, 1);
              vTaskDelay(1000 / portTICK_PERIOD_MS);
          }
      }
      
      void app_main()
      {
          xTaskCreate(&blink_task, "blink_task", configMINIMAL_STACK_SIZE, NULL, 5, NULL);
      }
      
      
  6. セーブします。
    1. ツールバーの[すべて保存]ボタンを押します。

  7. mingw32.exeを起動します。
  8. カレントディレクトリをプロジェクト ルートに移動します。
    $ cd /e/MyDocuments/Project/esp32/blink/ ↵
    
  9. make menuconfigを実行します。
    $ make menuconfig ↵
    
  10. シリアルポートを設定します。
    1. ↑↓キーで[Serial flasher config]を選択します。
    2. ←→キーで[Select]を選択してEnterキーを押します。

    3. ↑↓キーで[Default serial port]を選択します。
    4. ←→キーで[Select]を選択してEnterキーを押します。

    5. ポート名を入力します。
    6. ←→キーで[Ok]を選択してEnterキーを押します。

    7. ←→キーで[Exit]を選択してEnterキーを押します。

  11. LEDを制御するGPIOポートを設定します。
    Kconfig.projbuildで指定している値を変更できます。
    1. ↑↓キーで[Example Configuration]を選択します。
    2. ←→キーで[Select]を選択してEnterキーを押します。

    3. ↑↓キーで[Blink GPIO number]を選択します。
    4. ←→キーで[Select]を選択してEnterキーを押します。

    5. LEDの制御に使用するGPIOのポート番号を入力します。
    6. ←→キーで[Ok]を選択してEnterキーを押します。

    7. ←→キーで[Exit]を選択してEnterキーを押します。

  12. シリアルポートに出力するLogのレベルを変更します。
    この設定はオプションです。
    1. ↑↓キーで[Component config]を選択します。
    2. ←→キーで[Select]を選択してEnterキーを押します。

    3. ↑↓キーで[Log output]を選択します。
    4. ←→キーで[Select]を選択してEnterキーを押します。

    5. ↑↓キーで[Default log vervosity]を選択します。
    6. ←→キーで[Select]を選択してEnterキーを押します。

    7. ↑↓キーで出力するログのレベルを選択します。
    8. ←→キーで[Select]を選択してEnterキーを押します。

    9. ←→キーで[Exit]を選択してEnterキーを押します。

    10. ←→キーで[Exit]を選択してEnterキーを押します。

  13. menuconfigを終了します。
    1. ←→キーで[Exit]を選択してEnterキーを押します。

    2. ←→キーで[Yes]を選択してEnterキーを押します。

  14. Eclipseでクリーンしてビルド、そしてビルド flashします。

動かしてみます

動作確認ができました。