「ArduinoIDEで足りないライブラリがあったら、自動でダウンロードしてくれたらいいのに」
と思ったことはありませんか?
自分はArduinoIDEのためにライブラリをダウンロードする度に思っていました。
そんな中、PlatformIOというビルドツールの存在を知ったので試してみたところ、自分が求める機能が備わっていました。
本家のreadmeに書いてある内容ではありますが、リンクのメモも兼ねて、自分が試した内容を共有します。
使ったもの
- Arduino Nano
- PC
PlatformIOとは
IoTのプラットフォームを目指して作られている、開発ツールです。
インストール
本家のインストールに関するドキュメントを参考にしながら、自分が行った操作を説明します。pythonのインストール
platformioのインストールは、「pip」というpythonのライブラリ管理ツールを使うのが楽です。2019.10.02追記 platformioは以前(記事執筆(2017.07.12)時点)はpython2系しか動きませんでしたが、python3系でも利用できるようになったので、最新のpython3の利用をお勧めします。
最新のpython3.xをインストールしてください。
https://www.python.org/downloads/
ubuntuの場合は、下記のコマンドでpythonとpipをインストールできます。
sudo apt install python3-pip
下記のコマンドで、python3のpipが利用できること確認してください。
pip3 --version
pipでplatformioをインストール
pipコマンドでplatformioをインストールします。sudo pip3 install -U platformio
インストールできたら、下記のコマンドでバージョンを確認できます。
platformio --version
platformioインストール時に短縮コマンドとしてpioも設定されます。
platformioコマンドとpioコマンドは、どちらを使ってもplatformioの機能を呼び出せます。
pio --version
タイピング量が少なくなると嬉しいので、この解説のコマンドにはpioを利用しています。
Linuxの設定
本家のreadmeにも明記されているように、Linuxを使っている場合は設定が追加で必要です。下記のコマンドでdialoutグループに自分を追加する必要があります。
sudo usermod -a -G dialout ${USER}
udev rulesを設定する必要があります。
readmeに指定されるファイルudev rulesの設置は、ubuntuの場合、下記のコマンドで行えます。
cd /etc/udev/rules.d sudo wget https://raw.githubusercontent.com/platformio/platformio-core/develop/scripts/99-platformio-udev.rules sudo udevadm control --reload-rules
プロジェクトの作成
本家のプロジェクトのはじめ方に関するドキュメントを参考にしました。setting-up-the-project
platormioのプロジェクト用にディレクトリを作り、中に入ります。
mkdir platformio_sample cd platformio_sample
プロジェクト作成コマンドを実行します。
今回はArduino Nanoを使うので、下記のコマンドを実行します。
初めて実行する場合は、ツールチェーンのダウンロードなどがあるため、時間がかかります。
pio init --board nanoatmega328
使えるボードの種類は、下記のサイトで確認できます。
http://platformio.org/boards
下記のコマンドでもボードの種類を確認できます。
pio boards
プログラムの作成・実行
前の手順で空のプロジェクトを作ったので、Lチカのプログラムを書いて、実行してみます。プログラムはplatformio initコマンドでできたsrcディレクトリの中に、main.cppという名前て作成します。
src/main.cpp
#include "Arduino.h" void setup() { pinMode(LED_BUILTIN, OUTPUT); } void loop() { digitalWrite(LED_BUILTIN, HIGH); delay(1000); digitalWrite(LED_BUILTIN, LOW); delay(1000); }
Aduino NanoをPCに接続し、platformioのプロジェクトディレクトリ内で下記のコマンドを実行すると、プログラムがビルドされて、Arduinoに送信されます。
pio run --target upload
Arduino NanoのLEDが1秒間隔で点滅します。
ライブラリに依存したプログラムの作成・実行
ここからがplatformioが便利だと個人的に思う機能の説明です。自分がArduino用に作ったSomeSerialというシリアルクラスのラッパーライブラリの利用を例にして説明します。
この操作は、ライブラリマネージャのクイックスタートを参考にしました。
librarymanager/quickstart.html
まず、mainをSomeSerialを使うプログラムに書き換えます。
1秒ごとに115200bpsで「hi 今の時間(ms)」を送信するプログラムです。
src/main.cpp
#include "Arduino.h" #include "SomeSerial.h" SomeSerial mySerial(&Serial); void setup() { mySerial.begin(115200); } void loop() { mySerial.print("hi "); mySerial.println(millis()); delay(1000); }
次に、プロジェクトディレクトリにあるplatformio.iniに対して、SomeSerialに関する情報を追加します。
platformio.ini
lib_deps = SomeSerial
上記の設定を終えてビルドコマンドを実行すると、SomeSerialをダウンロードしてからビルドとアップロードをしてくれます。
pio run --target upload
platformioのdevice monitorでArduinoからのシリアル通信内容を確認すると、期待通の情報が送信されていることを確認できます。
pio device monitor -b 115200
まとめ
platformioを使うと、ビルド時に足りないライブラリを自動的にダウンロードしてくれることが分かりました。複数人数で共有するプロジェクトでライブラリを多用する場合、platformioを使えばArduinoIDEよりも管理が楽になりそうです。
共有する情報は以上です。
更新履歴
2018.06.06pythonとpipのインストールコマンドを「sudo apt install python-pip」に変更しました。
pip installコマンドにsudoを追加しました。
2019.10.02
platformioがpython3系でも扱えるようになっていたので、pythonのインストール手順をpython2.7から3系向けに変更しました。
0 件のコメント :
コメントを投稿