.. _01_pre2022:

事前準備 (2022年度：arduino-cli + VSCode)
==============================================

`M5StickC Plus <https://www.switch-science.com/catalog/6470>`_ に、プログラムを書き込むには、
おもに以下の方法があります。

1. Arduino IDE
#. arduino-cli (Command-Line Interface) 
#. PlatformIO 

2021年度は1. の方法を用いましたが、初期設定が若干面倒なのと、エディタの編集機能が弱いので、今年は arduino-cli を用いる方法を推奨します。
ただし、arduino-cli はビルドと書き込みのみで、ファイル編集ができませんので、別途エディタとして Visual Studio Code を導入します。
余力がある人は、Visual Studio Code に Arduino拡張機能を追加して設定すると、ボタン一つで書き込みできる（Arduino IDEに近い）操作感を得ることができます。

.. note::  M5StickC Plusは、2017年に発売されたM5StickC の後継版です。ディスプレイサイズと解像度、バッテリ容量が向上しています。また、ブザーも追加されているため、簡単な音を本体のみで鳴らすことができます。

.. note::  UIFlowという、Webベースのブロックプログラミング環境もありますが、本実験では柔軟性と拡張性を重視し、Arduino/arduino-cli を使用します。Arduino/arduino-cli ではC言語でプログラムを記述します。

以下、こまかいですが、

1. arduino-cli のインストール
#. arduino-cli でボード情報とライブラリのインストール
#. サンプルファイルのコンパイルと転送
#. Visual Studio Code のインストール
#. Arduino拡張機能の追加と設定

の順に、説明します。

(1) arduino-cli のインストール
----------------------------------------------------------------------------

`arduino-cli <https://arduino.github.io/arduino-cli/0.21/installation>`_ をインストールします。

Windows の場合
~~~~~~~~~~~~~~~~~

1. `Git for Windows <https://gitforwindows.org>`_ をインストールしてください。Setup時にいろいろ訊かれますが、すべてそのまま「Next」を押して進めて大丈夫です。
#. Git Bash を起動して、ターミナルに以下のコマンドを入力してください（:numref:`fig_cli_inst` ）。（この下の灰色のテキストエリアの右端の四角アイコンを押すと、コマンドをコピーできます。） ::

	curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | sh

.. _fig_cli_inst:

.. figure:: img/22_0323_144455.png
   :scale: 90%
   :alt: arduino-cli インストールコマンド実行後の画面（例）
   :name: f_cli_inst

   arduino-cli インストールコマンド実行後の画面（例）



Mac の場合
~~~~~~~~~~~~~~~~~~

1. `Homebrew パッケージマネージャ <https://brew.sh/index_ja>`_ をまだ入れていない場合は、インストールしてください。ターミナルを開き、以下のコマンドを実行します。 :: 

	/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"    


#. 続けて、ターミナルで、以下のコマンドを実行してください。 ::　

	brew update
	brew install git arduino-cli




(2) arduino-cli でボード情報とライブラリのインストール
----------------------------------------------------------------------------------------------------

.. _writetom5: 

(3) サンプルファイルのコンパイルと書き込み
----------------------------------------------------------------------------------------------------

1. ここで (2) と (3) を行う準備として、サンプルファイルと設定ファイルを `三浦の Git リポジトリ <https://git.istlab.info/miura250/M5StickCPlus_FactoryTest2022>`_ からダウンロードします。ターミナル (or Git Bash) で以下のコマンドを実行してください。 ::　

	git clone https://git.istlab.info/git/miura250/M5StickCPlus_FactoryTest2022.git
	cd M5StickCPlus_FactoryTest2022   
	ls -al 
    
（cd のあとのフォルダ名が長いので、途中でTabキーを押して補完することをおすすめします。）
``ls -al`` の結果は、:numref:`fig_factory2022` のようになります。


.. _fig_factory2022:

.. figure:: img/22_0323_151537.png
   :scale: 90%
   :alt: サンプルファイルの中身を確認
   :name: f_factory2022

   サンプルファイルの中身を確認


2. 以下のコマンドを入力すると、(2) arduino-cli でM5StickCPlusの開発をするための準備として、「ボード情報とライブラリのインストール」 を行います。 :: 

	./setup.sh 

.. note:: setup.sh は事前準備のときの 1回だけ実行すればOKです。その後、ライブラリが必要となり、追加でダウンロードするときは、arduino-cli lib install XXXX コマンドを実行してください。


3. 以下のコマンドを入力すると、(3) のサンプルファイル（FactoryTest2022）の「コンパイル」 を行います（:numref:`fig_compileupload`）。 :: 

	./compile.sh

.. warning::  **M5StickCPlus本体がない事前準備の段階で、できるのは、ここまでです。** 以下の「書き込み」は、本体をUSB接続したあとで、行う作業になります。**次のステップとして、(4)のVisual Studio Code のインストール に進んでください。**


4. 以下のコマンドを入力すると、(3) の「書き込み」 を行います（:numref:`fig_compileupload`）。 **ただし「書き込み」は、M5StickCPlus本体をUSB接続していないと失敗します。** :: 

	./upload.sh

.. note:: 今後、ソースコード(ここでは、FactoryTest2022.ino)を編集していくと、「コンパイル」と「書き込み」 を頻繁に実行することになります。その場合、以下のように && でつなげて1回のコマンド入力でも実行できます。 :: 

	./compile.sh && ./upload.sh 



.. _fig_compileupload:

.. figure:: img/22_0323_154834.png
   :scale: 80%
   :alt: コンパイルと書き込み(upload)を行っている様子
   :name: f_compileupload

   コンパイルと書き込み(upload)を行っている様子



(4) Visual Studio Code のインストール
--------------------------------------------------------------------------------------------

Windows の場合は、Microsoft Store で、Visual Studio Code のインストールができます。Mac の場合は、`インストーラー <https://code.visualstudio.com/download>`_ でダウンロードしてください。

(5) Arduino拡張機能の追加と設定
--------------------------------------------------------------------------------------------

必須ではないですが、できれば次のページを参考に、  `Arduino拡張機能の追加と設定 <https://ss.istlab.info/presens/dview/361/1cd086be8751d458a35b9ccec79a6b20#>`_ をしておくとよいでしょう。

この設定をしておくと、ソースコード編集→保存→右上のボタン　で、書き込みができます。

.. note:: この設定をしない場合でも、(3) のコマンドライン（またはシェルスクリプト）を修正・実行すれば、書き込みができます。

