Mac環境でPlatformIO IDEを用いてハードウェアコーディングをする時の環境セットアップについて

ArduinoやM5Stackのコーディングの際に、PlatformIO IDEという開発統合環境を使って開発をしてみました。
<img width="1920" alt="スクリーンショット 2019-06-27 16.13.47.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412023/9cea1ac4-16f6-240d-e103-48f39637d12d.png">

これまで、Arduinoの開発を行う時にはArduino IDEを用いていました。お馴染みのこの画面です。
<img width="498" alt="スクリーンショット 2019-06-27 15.12.57.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412023/3e2154c4-4e5c-32eb-9270-49d1830fb46f.png">
Arduino IDEを使っていて特に大きな不満はなかったのですが、チームでコーディングを行う際に、さまざまな利点があるということで、PlatformIO IDEを使って開発をしてみました。PlatformIO IDEの利点を紹介しつつ、Arduino UNOでLチカ（LEDを点灯させる基本的なプログラム）を行うまでの流れを説明したいと思います。
# PlatformIO IDEとは？
マイクロソフト社のソースコードエディタであるVisualStudioCode（以下VSCode）や、オープンソースのテキストエディタであるAtomの拡張機能で、ArduinoやM5Stackを始めとするハードウェアプログラミングに適しています。なおこの記事では、ソースコードエディタにVSCodeを使っています。
<img width="1212" alt="スクリーンショット 2019-06-27 15.11.07.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412023/c27c12c5-07ba-c175-308f-e915d480ed2d.png">
これはArduino IDEと比較して、以下の利点があります。
###コーディングが楽になる
自分はこれが特に便利だと思ったのですが、検証か書き込みボタンを押さないとデバッグが行えないArduino IDE環境と異なり、コーディングをしている時に変数や関数の補完、そしてデバッグをしてくれます。
<img width="545" alt="スクリーンショット 2019-06-27 15.17.03.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412023/eca18c47-3797-e31a-cb1b-33b5289d786b.png">
###ターミナルやシリアルモニタなど、様々な機能を1画面で見られる
Arduino IDEの場合は、シリアルモニタやターミナル画面が別ウインドウでしか表示できませんが、PlatformIO IDEの場合はそれを１画面で見られます。図のように、複数のプロジェクトの画面を開くことも可能です。
![Qiita.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412023/353d5462-da7d-e933-c1be-e4395110fef9.png)
###CUIを用いて作業ができる
上の図からも分かるように、VSCode内でターミナルを開けるので、コーディングをチームで行う際に、Git管理をするのが楽になります。また、コマンドラインを用いてArduinoへプログラムの書き込みをしたり、ライブラリのインストールなどを行うことも可能です。
#PlatformIOをインストールしてみる
ということで、VSCode、PlatformIOをインストールし、Arduinoにプログラムを書き込んでみましょう！
＊この時のPC環境はmacOS Mojave, バージョン10.14.4でした。
###VisualStudioCodeをインストールする
始めに、VisualStudioCodeをインストールします。公式ホームページhttps://code.visualstudio.com からDownload for Macをクリックしてダウンロードして下さい。
<img width="1165" alt="スクリーンショット 2019-06-27 16.25.26.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412023/e421a5fd-5cff-ff7c-a7a2-8801b4dc4360.png">
###PlatformIO IDEをインストール
VSCodeをインストールしたら、PlatformIO IDEをインストールします。
VSCodeを開き、左側にあるアイコンのうち、赤枠で囲ったEXTENSIONSのアイコンをクリックし、PlatformIOと入力して、インストールを行なって下さい。
![アセット 1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412023/1cef6791-0e10-e318-3318-0fa586d91d33.png)
これで環境のセットアップは完了です。続いて、新しいプロジェクトを作成して、エルチカのプログラムを書いてみましょう。
###プロジェクトを作成し、ボードを選択する
![アセット 2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412023/d9297f6f-4f30-b0f5-6b1c-5a18095766cb.png)
PlatformIO IDEをインストールすると、VSCodeを起動する際に自動的に、PIO Homeというタブが開かれるようになります。
このタブの中にある、New Projectというボタンをクリックして下さい。
<img width="590" alt="スクリーンショット 2019-06-27 16.53.36.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412023/eb835614-8c76-1f70-d6ce-d0b0c07ac786.png">

続いて、Nameにプロジェクト名を、Board欄から、Arduino UNOなど、自分が使うマイコンボードを選択して下さい。
Finishをクリックすると、プロジェクトが作成されます。
###ファイル構造について
プロジェクトが作成されると、このような図が出てくるかと思います。
![アセット 4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412023/195b5df0-d9a0-de19-ce55-dd28d9a224d8.png)
枠線で囲った部分が、作成したLEDBlinkプロジェクト内のファイルになりますが、Arduinoに比べ、やたら沢山のフォルダがありますね・・・
まずは、ArduinoIDEで編集してきた.inoファイルの代わりに、srcフォルダ内にあるmain.cppファイルを編集すればOKと考えて下さい。
ちなみにプロジェクトを再度開く際には、platformio.iniファイルをVSCodeで開くとプロジェクトごと開くことができます。

ここに、Lチカのプログラムを書き込んでみます。今回はArduinoUNOに内蔵されているLEDを点灯させるため、以下のようなプログラムを書きました。
<img width="667" alt="スクリーンショット 2019-06-27 16.57.34.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412023/9b0ab402-1da6-aa7e-afa1-05e80f72e59a.png">
###スケッチを書き込み
スケッチを書き終えたら、Arduino UNOをMacに接続して、プログラムを書き込みます。
![アセット 5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412023/1dc024ba-602c-4be9-4aa5-81e035bf9246.png)
画面左下にある右矢印アイコンをクリックすると、書き込みが始まります。USBポートは、選択しなくても自動的にArduinoUNOのポートを認識して書き込んでくれます（これがすごく便利！）。
書き込みが始まるとターミナルが開き、書き込み状況を表示してくれます。
緑色でSUCCESSと表示されれば、書き込みは成功です！
書き込みが成功していれば、下図枠内のArduino内蔵LEDが点灯しているはずです。
![アセット 6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412023/a9324a8b-db7a-8e4c-9c1c-f3c4c3cf0ae1.png)


# その他豆知識
###Arduino IDEで使ってきたinoファイルを引き継いで使いたい
プロジェクトを使ってみて分かる通り、PlatformIO IDEでは、Arduino IDEで使用してきた.inoファイルではなく、.iniファイルやmain.cppファイルから構成されます。そのため、今までArduino IDEで使ってきたファイルをPlatformIO IDEで使うために必要な手順を説明したいと思います。

始めに、PIOHome画面を開き、Import Arduino Projectボタンをクリックします。
<img width="1168" alt="スクリーンショット 2019-06-27 17.14.46.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412023/f2af8ae6-d92b-97ee-791e-048e73fb1afb.png">
そして、ボードの種類を選択し、開きたい.inoファイルのフォルダを指定してから、Importボタンをクリックします。
ここで、Use libraries installed by Arduino IDEをクリックするようにして下さい。Arduino IDEでインストールしていたライブラリを、PlatformIO内で再インストールすることなく使用することができるようになります。
<img width="589" alt="スクリーンショット 2019-06-27 17.16.05.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412023/8ae1f21a-24c1-0ee3-8eed-8689228431e8.png">
これで、プロジェクトが作成されました。inoファイルは、srcフォルダ内に配置されます。
あとはmain.cppファイルの時と同様、ファイルを編集して書き込みを行うだけです。

###必要なライブラリを追加でインストールしたい
追加でライブラリをインストールしたい場合には、一度PIOHomeを開き、Librariesタブを開きます。ここからキーワードを入力して、必要なライブラリをインストールできます。
<img width="1162" alt="スクリーンショット 2019-06-27 17.21.30.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412023/38672c5e-4f2b-37e7-a994-d6c913e3cfea.png">
同様に、Boardsタブからはボードの追加を、Devicesタブからは認識されているデバイスの確認ができます。この辺りはほとんど、Arduino IDEでの操作と同じですね。

なお、ライブラリのインストールなどは、コマンドラインで行うこともできます。こちらのサイト https://qiita.com/hotchpotch/items/4777979835cf04453e2e などを参照して下さい。