Arduinoでシリアル通信

Mac(開発機)とArduinoの間は、USBケーブルで接続されている。USBケーブルは電源の供給だけではなく、シリアル通信という通信手段を用いた情報のやりとりが可能である。

以下のプログラムはシリアル通信を行い、LEDのON/OFFをコントロールするものである。



#define LED_PIN 13

void setup(){
  pinMode(LED_PIN, OUTPUT);
  Serial.begin(9600);
}

void loop(){
  int inputchar;
  inputchar = Serial.read();  //シリアル通信で読み込む

  if(inputchar != -1){  //読み込んだ値が-1でなければ以下を実行
    switch(inputchar){
      case 'o':      //oを読み紺んだ場合
      Serial.print("LED ON");
      Serial.println("");    //改行
      digitalWrite(LED_PIN, HIGH);
      break;
      case 'p':      //pを読み込んだ場合
      Serial.print("LED OFF");    //改行
      digitalWrite(LED_PIN, LOW);
      break;
    }
  }
}

ビルド&アップロードをしたら、Tools > Serial Monitor をクリック。窓にoやpを入力すると、それに応じてLEDの点灯をコントロールすることができる。



IDEを用いないで、InoとpicocomによりSerial通信をターミナル上で行う。

#作業ディレクトリ作成
$ mkdir Serial_ino
$ cd Serial_ino

#プロジェクトの生成
$ ino init

#デフォルトでsrc/に生成されるプロトタイプのスケッチを消去
$ rm src/sketch.ino

#新たにスケッチを作成
$ vim src/Serial.ino

#ビルド
$ ino build

#アップロード
$ ino upload

#Serial Monitorとしてpicocomというアプリケーションを使用する。Macportsからインストール。
$ sudo port selfupdate
$ sudo port install picocom

#シリアル通信を実行
$ ino serial


'o'や'p'を入力すると、リアルタイムに通信が行われ、LEDの点滅に反映されるのが楽しい。

【参考文献】
高橋隆雄『たのしい電子工作 Arduinoで電子工作をはじめよう』秀和システム 2013
Massimo Banzi (著), 船田 巧 (翻訳)『Arduinoをはじめよう 第2版』2012



Ino コマンドラインからArduinoのスケッチをビルドとアップロードするツール―その2


今回は、Inoを用いてスケッチをビルドし、アップロードを行ってみたいと思う。
まず、IDEで同様のことを行うときに、どのようなファイルが生成するのかを見てみたいと思う。

まず、以下のようにプログラムを書いて、ファイルを適当なディレクトリに保存
#このとき生成したファイルを調べる
$ ls /Users/kappa/Documents/1403/Blinking_LED/
Blinking_LED.ino

arduinoのスケッチは.inoという拡張子のファイルがその実体のようである。

ならば、vimで編集した.inoのファイルをinoを用いてビルドすることが可能なはず。
まずは、適当にディレクトリを作って、その中にvimでスクラッチを作成。


それではビルドを行う。まずはボード指定。どのようなボードが登録されているか確認。デフォルトがUnoになっているので、特にいじらなくてよさそう。
$ ino list-models

万が一Uno以外のものであれば、-mのオプションをつけて、ボードの種類を指定すればよい。
例: ino build -m nano  

それでは実際にビルドを行う。

おっと、プロジェクトがないと言っている。インターネットで調べたところ、プロジェクトというもの(実体はディレクトリの集合)を作成しなくてはならないようだ。

それでは気をとりなおして、カレントディレクトリを空にした後に、ino initを入力。

ここで、先ほどBlinking_LED.inoを作成。
プロジェクトのルートディレクトリにおいて、以下のコマンドを実行。
$ ino build

かなり長いログがでたということは、それだけ様々な処理をやってくれている証拠。頼もしい。
ビルドして、生成したファイルは.build以下に存在する。
$ ls -al

最終的なビルドによる成果物は、ビルドのログの一番最後に出てくるfirmware.hexであろう。
このファイルは、Blinking_LED_Ino/.build/uno以下に存在する。


最後に、arduinoにアップロードを試みる。
$ ino upload

無事、基板上のLEDが点滅した。


IDEと違い、慣れ親しんだコマンド上で様々な作業ができる点はとても良い。IDEを使っていて、遮蔽された感じがいやだったが、このツールも結局はsrcディレクトリにスケッチをおいて、ドキュメントルートでino init, ino build, ino uploadとコマンドを三回うつだけだ。その意味ではIDEとやっていることに大差はないが、生成してくるファイルをlinuxコマンドで逐一確認できる点は学習効果が高いように感じる。

参考文献にはシリアル通信についても記述があるので、参考にしていずれやってみたいと思う。

【参考文献】
Massimo Banzi (著), 船田 巧 (翻訳)『Arduinoをはじめよう 第2版』2012

Ino コマンドラインからArduinoのスケッチをビルドとアップロードするツール―その1

Arduinoのスケッチがコンパイルされてアップロードされる過程は、IDEにより遮蔽されている。しかし、興味がわいてしまう。また、提供されているIDEが若干使いにくい(ex. UNIXのショートカットキーが使用不可)ので、コマンドラインから、スケッチのコンパイルと転送をしたいとお考えの方も多いようだ。

Arduinoのスケッチのコンパイル過程は以下のサイトが詳しい。
http://isisredirect2hard.blogspot.jp/2012/03/arduino-sketch.html
これらを詳細に理解して、makefileを使ってmakeをすれば、望みのバイナリファイルを作成することは可能であろう。
アップロードに関してはこちら(http://wwwowwowww.cocolog-nifty.com/record/arduino-duemilanove-328.html)にある方法を用いれば、コマンドラインから可能であろう。

原理を理解でき、そして慣れ親しんだコマンドラインからの操作ですべてがすまされるこの方法は魅力的であろう。しかし、若干の煩雑さを伴う。コマンドラインだけですべてを処理したいという欲求をかなえるだけなら、Ino(http://inotool.org/)と呼ばれる便利なツールがあるようだ。

Inoはmakefileを自動的に作ってくれるので、ユーザーの手間が省ける(Ino is based on make to perform builds. However Makefiles are generated automatically and you’ll never see them if you don’t want to.)。また、アップロードもコマンドラインで可能である。

Inoは現在、LinuxとMacにのみ対応しているようである(Limitation)。

それではInoのインストールの方法を紹介する。

OS X 10.9ではデフォルトでpythonとeasy_installが入っているので、インストールは簡単である。

#Inoをインストール
$ sudo easy_install ino

#Inoの実行ファイルへのパスを確認
$ which ino
/usr/local/bin/ino

#Inoの実体を確認(pythonスクリプトである)
$ less /usr/local/bin/ino

#ヘルプを開く
$ ino -h


PCボードとマイコンボード

最近、日経Linuxなどのコンピュータ雑誌を見ているとお目にかかる機会が増えたRaspberry PiやArduinoだが、これらの分類はどのように行われているのだろうか。

格安ボードには大きく「PCボード」と「マイコンボード」の二つに分けられる。

#PCボード
Linuxが動く程度に大きな容量のメモリと能力のあるCPを積んだボード。普段使用するPCと同じく、OSが稼働するため、スタンドアロンで様々な処理が可能である。OSが介在するため、きめ細かいI/Oの制御にはマイコンボードに比べて劣る。
・Raspberry Pi http://www.raspberrypi.org
・BeagleBone Black http://beagleboard.org
・Cubieboard http://cubieboard.org
・Wandboard http://www.wandboard.org

#マイコンボード
メモリやCPU(マイクロコンピュータ)が非力(省エネ)、OSが動作せず、アプリケーションが直接ハードウェアを操作する。きめ細かいI/Oの制御が可能。
・Arduino http://arduino.cc
・mbed https://mbed.org

PCボードにしてもマイコンボードにしてもここに挙げた以外にも種類がある上、それぞれ特徴があるので、しっかりと吟味した上で購入したい。
【参考文献】
『格安pcボードで始める電子工作超入門』日経BP社 2014

Arduinoのことはじめ

MacbookにArduino IDEをインストールし、動作テストを行う。

#1.Arduino IDEのインストール
Arduino公式ホームページのダウンロードページ(http://arduino.cc/en/Main/Software#toc2)からArduino 1.0.5をダウンロードし、インストールした。

#2.シリアルポートの設定
Tools > Serial Portで/dev/cu.usbmodemで始まる項目を選択。

#3.Arduinoの内臓のLEDを点滅させるためのプログラムを作成(テストプログラム)
まずは、Arduinoを接続して以下のプログラムを作成

void setup()
{
  pinMode(13, OUTPUT);
}

void loop()
{
  digitalWrite(13, HIGH);
  delay(500);
  digitalWrite(13, LOW);
  delay(500);
}

作成が終了したら、IDEの左上にあるチェックマーク(Verify)をクリック。うまく行けば、"Binary sketch size: 1,076 bytes (of a 32,256 byte maximum)"と表示される。これで、チェックは終了。アップロードは→のボタンをクリックでOK。アップロードの時に、コンパイルが実行され、生成した実行ファイルがArduino本体にUploadされる。すると、LEDの点滅が開始される。


このプログラムについて簡単に説明。Arduinoの基盤にあらかじめ貼付けられているLEDに対応するPINの番号は13。void setup()内で13ピンをOUTPUTモードにしておいて、後は無限ループで点灯、待つ、消灯、待つを繰り返す。これにより、肉眼的にはLEDが点滅して見える。



ちなみに以下のように、点滅の部分をコメントアウトすると、当然だが13ピンのLEDは点灯したままとなる。

void setup(){pinMode(13, OUTPUT);}
void loop(){
digitalWrite(13, HIGH);
/*delay(500);
digitalWrite(13, LOW);
delay(500);*/
}

【参考文献】
高橋隆雄『たのしい電子工作 Arduinoで電子工作をはじめよう』秀和システム 2013
Massimo Banzi (著), 船田 巧 (翻訳)『Arduinoをはじめよう 第2版』2012