Arduino UNO R4で始めるTOPPERS RTOS開発

# Arduino UNO R4で始めるTOPPERS RTOS開発

[Arduino UNO R4](https://docs.arduino.cc/hardware/uno-r4-minima)でマルチタスクを体験できる`Arduino_TOPPERS_ASP-renesas_uno`を試す手順を紹介しようと思います。

Arduinoの開発環境はいくつかありますが、まずは[Arduino IDE 2](https://docs.arduino.cc/software/ide-v2)を使いWindows環境で説明します。

そのあと、[Arduino CLI](https://arduino.github.io/arduino-cli/0.35/)と[Visual Studio Code](https://code.visualstudio.com/Download)で同じ事を行ってみたいと思います。

## Arduino IDE 2でスケッチ例の実行

`Arduino IDE 2`をインストールします。この記事ではユーザーごとにインストールした場合で説明します。

`Arduino IDE 2`が起動したら、`Arduino UNO R4`向けの環境をボードマネージャからインストールします。
左側の白い領域の二番目のアイコンがボードマネージャで、これをクリックします。検索窓で`R4`と入力すると`Arduino UNO R4`が表示されるので、インストールします。

![ボードマネージャ](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242320/f7519b16-76c8-0de1-0fe8-a0a86f9aa43a.png)


`Arduino UNO R4`をPCとUSB接続します。
上側の緑の領域にある「ボードを選択」をクリックして表示される一覧に「Arduino UNO R4」が現れるので選択します。

![ボードを選択](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242320/ab9d1509-aadd-5dec-604f-8314fe77adca.png)

次にTOPPERS/ASP Arduino UNO R4 ライブラリ（TA2LIB）を下記のサイトからzip形式でダウンロードします。

<https://github.com/toppers/Arduino_TOPPERS_ASP-renesas_uno>

![ZIP形式でダウンロード](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242320/fd767c6a-aecf-82a4-374d-f47736c8fe71.png)

`Arduino IDE 2`の画面のメニューから、「スケッチ」→「ライブラリをインクルード」→「ZIP形式のライブラリをインストール」を選択し、ダウンロードしたZIPファイル`Arduino_TOPPERS_ASP-renesas_uno-master.zip`を選択します。

![ZIP形式のライブラリをインストール](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242320/9456ee80-0897-fbee-19ca-b4b6a0d63d97.png)

用意されているスケッチ例を試してみます。メニューから「ファイル」→「スケッチ例」→「ToppersASP-renesas_uno」→「ToppersASP_Blink」を指定します。

![スケッチ例](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242320/8cee2d3a-1322-ff0f-0120-b924ee739fda.png)

コードが表示されたら、上側の緑の領域にある「→」アイコンの書き込みボタンを押して、ビルドと書き込みを行います。書き込みが終わったら、右上の虫眼鏡アイコンのシリアルモニタボタンを押します。

![シリアルモニタ](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242320/79689457-2afb-c87c-615d-0f4d37a555f3.png)

シリアルモニタに文字が流れ、`Arduino UNO R4`のLEDが点滅すると思います。

![実行](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242320/3b42726a-6ff9-8392-8c05-6f62c8563461.png)

これで、`Arduino IDE 2`でスケッチ例の実行ができました。

## Arduino CLIを使ってみる

`Arduino IDE`は使いやすいのですが、Arduino以外にも組み込み開発スキルの幅を広げたいと思った方は、`Arduino CLI`から入ってみるのはどうでしょう？

`Arduino CLI`は`Arduino IDE`の機能をコマンドラインから使えるようにしたもので、コマンドを呼び出すビルドツールの`Makefile`などから使えるようになります。`Makefile`はTOPPERS OSのビルドでも使用しています。
コマンドラインでの開発方法を知ることは、他のコマンドとの組み合わせが出来るようになるので、知っていて損はないと思います。

開発にはコードの編集も必要なので、コマンドラインが使えるコードエディタ`Visual Studio Code`も使って、`Arduino IDE`と同じ事をしてみたいと思います。

まず、`Visual Studio Code`をインストールします。
作業用のフォルダを作成して、`Visual Studio Code`でフォルダを開きます。この作業用のフォルダを以後ワークスペースと呼びます。

次に下記の拡張機能をインストールします。識別名で検索すると確実です。

![Japanese Language Pack for Visual Studio Code](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242320/a64d1764-4c47-f88d-0ec4-7a874753c660.png)

- Japanese Language Pack for Visual Studio Code：

    識別名「`ms-ceintl.vscode-language-pack-ja`」

    `Visual Studio Code`を日本語表示にします。必須ではありませんが、この記事では日本語の表示で説明していきます。

![Serial Monitor](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242320/6a6f47fe-091b-ef37-3f41-0a9e4d4a9c38.png)

- Serial Monitor:

    識別名「`ms-vscode.vscode-serial-monitor`」

    `Arduino UNO R4`とUSBシリアル通信を行うのに使用します。

![C/C++](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242320/fcc36ae6-60bc-7b63-e19c-fd37cc010ad4.png)

- C/C++：

    識別名「`ms-vscode.cpptools`」

    C/C++全般の開発に使用します。この記事ではコードの編集は行わないのですが、ArduinoのスケッチはC++のコードになっているので、インストールしておきます。

次に`ARDUINO CLI`を使えるようにします。システムにインストールする必要がない実行ファイル一つで動作するものとなっているので、ワークスペースに置いて使うことにします。

下記のサイトから`Windows exe 64bit`をダウンロードし、`tools`フォルダを作成し、ダウンロードしたZIPファイルの中身を展開しておきます。

<https://arduino.github.io/arduino-cli/0.35/installation/>

`Visual Studio Code`のターミナルで`arduino-cli`が使えるように、ワークスペースの設定で`tools`フォルダに`PATH`を通します。
`F1`キーを押して、「基本設定：ワークスペース設定を開く」を選択します。`preferences`の途中まで入力すると表示されると思います。
「設定の検索」に「env」と入力して、`Terminal > Integreted > Env: Windows`の`settings.jsonで設定`をクリックします。

![ワークスペース設定を開く](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242320/83ecee30-72e4-3682-d322-422e3001021e.png)

開かれたファイル`settings.json`を下記のように編集します。

```json
{
    "terminal.integrated.env.windows": {
        "PATH": "tools;${env:PATH}"
    }
}
```

保存したら`Ctrl+@`を押してターミナルを開きます。`arduino-cli`と入力すると実行されると思います。パスが通っていることが確認できました。

![ワークスペース設定を開く](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242320/88a55a42-51e3-64c7-afb4-21ce7973a85d.png)

ここまでの操作で、このワークスペースで`Arduino IDE`が使える様になりました。`Visual Studio Code`でこのフォルダを開けば`arduino-cli`を使えます。

`Arduino IDE 2`でインストールしたボードやライブラリと共有しているようなので、先ほどの操作で完了しているのですが、同じ操作を行うコマンド入力例を一通り書いておきます。

- スケッチの作成

  ```ps
  arduino-cli sketch new ToppersASP_Blink
  ```

  新しく`ToppersASP_Blink`というフォルダと、その下に`ToppersASP_Blink.ino`ファイルが出来ます。

- ボードのインストール

  ```ps
  arduino-cli core install arduino:renesas_uno
  ```

- ライブラリのインストール

  TOPPERS/ASP Arduino UNO R4 ライブラリ（TA2LIB）を下記のサイトからzip形式でダウンロードします。

  <https://github.com/toppers/Arduino_TOPPERS_ASP-renesas_uno>

  次のコマンドでインストールします。`{/path/to/}`の所は書き換えてください。

  ```ps
  arduino-cli lib install --zip-path {/path/to/}Arduino_TOPPERS_ASP-renesas_uno-master.zip
  ```

- ボードの一覧

  ```ps
  arduino-cli board list
  ```

  何も接続していないと、`No boards found.`と表示されます。
  `Arduino UNO R4`を接続していると、下記のように表示されます。

  ```text
  シリアルポート Protocol タイプ               Board Name            FQBN                       Core
  COM3    serial   Serial Port (USB) Arduino UNO R4 Minima arduino:renesas_uno:minima arduino:renesas_uno
  ```

- スケッチ例のコピー

  下記のコマンドでスケッチ例が表示されます。

  ```ps
  arduino-cli lib examples
  ```

  `Examples for library ToppersASP-renesas_uno`を探してパスを覚えておき、中身をワークスペースの`ToppersASP_Blink`フォルダにコピーします。

  下記の`$env:USERPROFILE`はPowerShell向けで、コマンドプロンプトなら`%USERPROFILE%`です。

  ```ps
  copy $env:USERPROFILE\Documents\Arduino\libraries\ToppersASP-renesas_uno\examples\ToppersASP_Blink\* ToppersASP_Blink
  ```

- スケッチのコンパイル

  ```ps
  arduino-cli compile -b arduino:renesas_uno:minima ToppersASP_Blink
  ```

- ボードへのアップロード

  下記の`COM3`の部分は、ボードの一覧で表示されたシリアルポートの値で書き換えてください。

  ```ps
  arduino-cli upload -b arduino:renesas_uno:minima -p COM3 ToppersASP_Blink
  ```

- シリアルモニタの表示

  `Visual Studio Code`の「ターミナル」と同じ領域にある、別のタブ「シリアル モニター」に切り替えて、「Port」を変更し「Start Monitoring」を押します。

  ![フォルダ構成](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242320/baa57573-a0e6-df64-7244-2d2a0e879b99.png)

これで、IDEと同じ事ができました。

`Makefile`について紹介しましたが、下記に`Arduino CLI`を使った`Makefile`がありましたので紹介します。

<https://github.com/digiampietro/arduino-makefile>

Windowsの標準状態では`Makefile`を使うことが出来ませんが、msysやWSLを使うことで`Makefile`を使うことができ、`Visual Studio Code`でも使うことが出来ますので、機会があったら記事を書きたいと思います。

<https://www.msys2.org/>