月別アーカイブ: 2013年4月

Raspberry Pi から Arduino を制御する(Firmata編)

QR1751

QR1751

Raspberry Pi から Arduino を制御する方法にはいくつかありあますが、今回は Arduino Firmata を使った制御方法を紹介します。

Firmata とは、Arduino のようなマイクロコントローラとホストマシン間での通信のための汎用プロトコルです。
Firmata を使うと Arduino に接続したホストマシンからシリアル経由で Arduino を制御するコマンドを送って Arduino を制御することができます。

Firmata を Arduino に書き込む

Arduino で Firmata を使うために Arduino に Firmata 用のスケッチを書き込む必要があります。
ここでは Arduino IDE のサンプルプログラムの Firmata 用のスケッチ「StandardFirmata」を利用します。

以下からサンプルを開いて、スケッチを Arduino に書き込みます。

Arduino IDE -> [File] -> [Examples] -> [Firmata] -> [StandardFirmata]

Arduino IDE | Firmata - StandardFirmata

Arduino IDE | Firmata – StandardFirmata

Raspberry Pi から Arduino を制御する

Raspberry Pi から Arduino に Firmata でコマンドを送るために、arduino_firmata という Ruby のライブラリを使います。
Arduino Firmata on Ruby

arduino_firmata のインストール

pi$ gem install arduino_firmata

(注) gem を使うために Ruby のインストールが必要です。以下のように apt-get で ruby と ruby-dev をインストールしてください。

pi$ sudo apt-get install ruby
pi$ sudo apt-get install ruby-dev

arduino_firmata の使い方

デジタル値の書き込み(GROVE – LED)

Raspberry Pi と Arduino を画像のように USB で接続しました。
GROVE のシールドを使って GROVE の LED を接続しています。

Raspberry Pi と Arduino を接続(GROVE - LED)

Raspberry Pi と Arduino を接続(GROVE – LED)

13番ピンに LED を接続して以下のコマンドを実行すると、13番ピンが “H” になり LED が点灯します。

pi$ arduino_firmata “digital_write 13, true” –arduino=/dev/ttyUSB0

アナログ値の読み取り(GROVE – 温度センサ)

GROVE のシールドを使って GROVE の温度センサを接続しています。

DSC_0002

Raspberry Pi と Arduino を接続(GROVE – 温度センサ)

以下のコマンドで温度センサのアナログ値を取得できます。

pi$ arduino_firmata “analog_read 0” –arduino=/dev/ttyUSB0

arduino-firmata – analog-read の実行結果

取得した温度の値を補正するスクリプトを書いてみました。
以下のスクリプトを実行すると取得した温度のアナログ値から温度(摂氏)に変換します。
(小数の計算に bc コマンドを使っているので bc コマンドを apt-get install しておく)

#!/bin/sh

analog=`arduino_firmata “analog_read 0” –arduino=/dev/ttyUSB0`

resistance=`expr \( 1023 – $analog \) \* 10000 / $analog`
temperature=`echo 1 / \( l\( $resistance / 10000 \) / 3975 + 1 / 298.15 \) – 273.15 | bc -l`

echo $temperature

参考URL

 

ディスプレイに表示中の X の画面をリモートで操作する方法

QR1742

QR1742

Raspberry Pi でディスプレイに表示中の X の画面をリモートで操作する方法を紹介します。
x11vnc という表示中の X の画面に接続できる VNCサーバを使っています。

Raspberry Pi を使ってデモをするときに重宝しそうです。

x11vnc のインストール(@RPi)

pi$ sudo apt-get install x11vnc

VNCサーバ起動(@RPi)

pi$ x11vnc -display :0 -usepw -forever

VNCクライアントから接続(@PC)

vnc://pi@IPアドレス:5900

参考URL

Raspberry Pi Model B の納期(2013/04/22)

QR1704

QR1704

Raspberry Pi Model B を 5台購入しました。

日本のRSオンラインで在庫を持つようになったみたいで、以下のような流れで注文してから3日で手元に届きました。

 

 

  • 2013/04/19(Fri) 注文(RSオンライン(JP))
  • 2013/04/22(Mon) 配送

Raspberry Pi 購入

Raspberry Pi Model B は1日50台ほど売れているみたいなのでほしい人はお急ぎを! :-)

在庫確認(RSオンライン)

Raspberry Pi Weather station

QR1715

QR1715

天気予報をディスプレイに表示する記事の紹介です。

[kontroller]: Raspberry Pi Weather station

 

 

Yahoo の天気フィードの API から wget を使って情報を取得、シェルスクリプトでパースした結果をディスプレイに表示しています。

  1. Grabs the weather data from Yahoo weather feed.
  2. Extracts key weather data from the xml feed, and
  3. Displays the data to the LCD.

Web の API と電子工作を組み合わせで他にもいろいろ応用できそうですね! :)