コマンドラインからArduinoの書き込みなどを行う (ino を使う 編)

Arduino ino logo

検証日時

02/13/2015(Fri)

概要

コマンドラインからArduinoの.inoファイルを

  • コンパイル
  • アップロード
  • シリアル通信

を行うときに便利なツールinoのダウンロードと使い方について

環境

PC :: Lenovo ThinkPad X240
Prosessor :: Intel Core i7-4600U (2.10GHz, 4MB, 1600MHz)
RAM :: PC3-12800 DDR3L (8GB)
OS :: Ubuntu 14.04 LTS 64bit
Kernel :: 3.13.0-44-generic
Gazebo :: Version 5.0.1

便利度

MAX

参考

くろねこ日記
Arduino ino

インストール

以下のコマンドを使ってインストールする。

sudo pip install ino

尚、これを行うには、Pythonの環境が必要となります。インストールしていない人は、以下のようにしてインストールしましょう。

sudo apt-get install python -y

これでインストールは完了です。

使い方

  • プロジェクトの生成
ino init
  • ビルド
ino build
  • 書き込み
ino upload
  • シリアル通信
ino serial

尚、他にもコマンドあがるので、

ino -h

で確認しておきましょう。

ということで、さっそくやってみましょう。

mkdir ~/Document/ino_test/
cd ~/Document/ino_test/
ino init

以上のように適当なディレクトリを作ってその中でino initコマンドを実行し、新規プロジェクトを作りましょう。
すると、ディレクトリなどが自動生成されたはずです。確認してみましょう。

tree
.
├── lib
└── src
    └── sketch.ino

2 directories, 1 file

こんな感じになっているはずです。
あとは、./src/sketch.inoを編集し、ビルドや書き込みを行っていきます。

応用

ここで、ちょっと待て、ボードとか、BAUDRATEが変わったらどうするんだ?と思った方、すばらしい。
もちろん、それらを指定することができます。方法としては、

  1. コマンドオプションをつける
  2. 設定ファイルを作る

の2つがあります。

コマンドオプションをつける

まずは1.から見て行きましょう。
例えば、ボードがArduino Mega2560、接続ポートが/dev/ttyACM0あれば、

ino build -m mega2560
ino upload -m mega2560 -p /dev/ttyACM1
ino serial -p /dev/ttyACM1

こんな感じで指定します。因みに、これらのオプションは以下のように、コマンドのあとに-hオプションをつければ確認できます。

ino build -h
usage: ino build [-h] [-m MODEL] [-d PATH] [--make MAKE] [--cc COMPILER]
                 [--cxx COMPILER] [--ar AR] [--objcopy OBJCOPY] [-f FLAGS]
                 [--cflags FLAGS] [--cxxflags FLAGS] [--ldflags FLAGS] [-v]

Build a project in the current directory and produce a ready-to-upload
firmware file.

The project is expected to have a `src' subdirectory where all its sources
are located. This directory is scanned recursively to find
*.[c|cpp|pde|ino] files. They are compiled and linked into resulting
firmware hex-file.

Also any external library dependencies are tracked automatically. If a
source file includes any library found among standard Arduino libraries or
a library placed in `lib' subdirectory of the project, the library gets
built too.

Build artifacts are placed in `.build' subdirectory of the project.

optional arguments:
  -h, --help            show this help message and exit
  -m MODEL, --board-model MODEL
                        Arduino board model (default: uno)
                        For a full list of supported models run:
                        `ino list-models'
  -d PATH, --arduino-dist PATH
                        Path to Arduino distribution, e.g.
                        ~/Downloads/arduino-0022.
                        Try to guess if not specified
  --make MAKE           Specifies the make tool to use. If a full path is not
                        given, searches in Arduino directories before PATH.
                        Default: "make".
  --cc COMPILER         Specifies the compiler used for C files. If a full
                        path is not given, searches in Arduino directories
                        before PATH. Default: "avr-gcc".
  --cxx COMPILER        Specifies the compiler used for C++ files. If a full
                        path is not given, searches in Arduino directories
                        before PATH. Default: "avr-g++".
  --ar AR               Specifies the AR tool to use. If a full path is not
                        given, searches in Arduino directories before PATH.
                        Default: "avr-ar".
  --objcopy OBJCOPY     Specifies the OBJCOPY to use. If a full path is not
                        given, searches in Arduino directories before PATH.
                        Default: "avr-objcopy".
  -f FLAGS, --cppflags FLAGS
                        Flags that will be passed to the compiler. Note that
                        multiple (space-separated) flags must be surrounded by
                        quotes, e.g. `--cppflags="-DC1 -DC2"' specifies flags
                        to define the constants C1 and C2. Default:
                        "-ffunction-sections -fdata-sections -g -Os -w".
  --cflags FLAGS        Like --cppflags, but the flags specified are only
                        passed to compilations of C source files. Default: "".
  --cxxflags FLAGS      Like --cppflags, but the flags specified are only
                        passed to compilations of C++ source files. Default:
                        "-fno-exceptions".
  --ldflags FLAGS       Like --cppflags, but the flags specified are only
                        passed during the linking stage. Note these flags
                        should be specified as if `ld' were being invoked
                        directly (i.e. the `-Wl,' prefix should be omitted).
                        Default: "-Os --gc-sections".
  -v, --verbose         Verbose make output

さて、これでコマンドにオプションを指定して実行する方法がわかりました。
ここで、いちいちめんどくせぇと思った方、センスありすぎぃ !

設定ファイルをつくる

ということで、2.のini.inoに記述する方法をご紹介します。
プロジェクトを作成したディレクトリに、ini.inoというファイルを作成し、以下のように入力してください。

[build]
board-model = mega2560

[upload]
board-model = mega2560
serial-port = /dev/ttyACM1

[serial]
serial-port = /dev/ttyACM1

これは、ボードがArduino Mega2560、接続ポートが/dev/ttyACM0の場合の設定ファイルです。
board-modelとか、serial-portという変数名は、それぞれのコマンドのヘルプを参照すれば書いてあるやつです。(buildの場合は上記のヘルプの結果を見れば解ると思います。)
因みに、ファイル構造はこんなかんじです。

.
├── ini.ino
├── lib
└── src
    └── sketch.ino

2 directories, 2 files

これで完了です。あとはビルドするなりなんなりすればOKです。

シリアル通信について

シリアル通信の方法を記述するのを忘れていましたorz inoはシリアル通信の表示に、picocomというものを使用しているので、インストールしていないのであれば、以下のようにして、インストールしましょう。

sudo apt-get install picocom -y

基本的には、ino serialコマンドで、シリアル通信を開始します。 その後、停止したくなったら、Ctrl-a Ctrl-kで終了します。 以上が、シリアル通信の使い方です。

Published: February 13 2015

blog comments powered by Disqus