中の人2号のブログ的なメモ」カテゴリーアーカイブ

中の人2号が思いついたことを綴るかもです。

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 と電子工作を組み合わせで他にもいろいろ応用できそうですね! :)

Raspberry Pi でボタンを押して tweet する

QR1542

QR1542

GPIO にボタンを接続し、GPIO の値を読んでボタンが押されたら用意しておいたテキストを tweet するシェルスクリプトを作成した。

コードは GitHub にアップしてあります。
https://github.com/e-ark/RPi-HelloWorldSuite/blob/master/button-tw.sh

GPIO を制御をしながら tw を使うときの注意点

tw の設定はホームディレクトリの .tw.yml にあるためGPIO を制御してるときに root になっていると root のホームディレクトリの .tw.yml を探して設定がないためエラーが発生する。

以下のように pi ユーザーで tw を実行すると解決する。

$ sudo -u pi tw –pipe

 

Raspberry Pi 対応のディストリビューションたち (QR586)

QR586

QR586

いろいろな OS があるが以下のページに Raspberry Pi 用のディストリビューションがまとまっている。
「Raspbian “wheezy”」、「FreeBSD」、「NetBSD」、「Gentoo Linux」など。

 

 

Raspberry Pi 対応のLinux ディストリビューション一覧
RPi Distributions – eLinux.org

 

Linuxディストリビューション他に Raspberry Pi に「Firefox OS」をインストールすることもできる。
インストール方法は以下のURLが参考になる。

https://github.com/dynamis/firefoxos/wiki/raspberrypi

 

Rails on Raspberry Pi

QR320

QR320

Raspberry Pi で Ruby on Rails を動かしてみた。

今回は DB に sqlite を利用したが、もちろん Raspberry Pi 上で MySQL や PostgreSQL も動作する。また、RVM も利用することができる。

インストール

Ruby のインストール

ついでに bundler もインストールしておく。

$ sudo apt-get install ruby
$ sudo gem install bundler

バージョンの確認

$ ruby -v
ruby 1.9.3p194
$ gem -v
1.8.23

続きを読む

Raspberry Pi の CUI から tw でツイートする

QR302

QR302

Ruby で書かれた CUI Twitter クライアントの tw を使って Raspberry Pi の CUI から tweet してみた。

Tw: Twitter client on Ruby.(http://shokai.github.com/tw/)

Tweet はもちろん。自分のTLの表示やリストの表示、DMの送信、複数アカウントも対応している。

インストール

  • tw のインストール

$ sudo gem install tw

  • 認証の設定(PIN番号認証)
    tw コマンドを実行するとtwitterの認証画面に移動する。
    表示されたPINをターミナルに入力する。

$ tw

PINが表示される

PINが表示される

ターミナルでPINを入力する

ターミナルでPINを入力する

 

  • Tweet する

$ tw hello world by tw on Raspberry Pi

  • 自分の Tweet を確認する

$ tw @taketo1113

tw-user

以下のようにパイプで tweet できるので RPi の GPIO からセンサーの値を読み出して自動でツイートするとかも簡単に実装できそう。

$ echo Hello World > tw –pipe

おまけ

Raspberry Pi から Crowy を使ってツイート

Crowy on Raspberry Pi

Crowy on Raspberry Pi

電子回路設計ツール Fritzing を使ってみた

QR275

QR275

回路図を描くときにどのツールを使って書くか迷ったことはないだろうか?

今回は、オープンソースの電子回路設計ツール Fritzing を紹介する。

Fritzing は Windows/Mac/Linux で動作し、回路図の設計からシミュレーションまでできる。
ライセンスはツールのソースコードには GPLv3、ドキュメントや図などには CC ライセンスが適用されている。

“Fritzing” というとツール以外にコミュニティーやプリント基板加工サービス(Fritzing Fab)もあるのだが、今回は電子回路設計ツールを紹介する。

Fritzing(http://fritzing.org/)

インストール

以下のURLから各自の環境に合わせてファイルをダウンロードする。

ダウンロード(http://fritzing.org/download/)

Mac の場合は dmg ファイルがダウンロードできるので、ダウンロードしたファイルを展開してできた Fritzing ディレクトリをそのまま Application ディレクトリにコピーすればインストールは完了する。

使い方

配置したいパーツを右上のパーツから選択してブレッドボードのウィンドウにドラッグ&ドロップするだけで配線できる。
作成した回路図は各種ファイルに書き出すことも可能だ。

fritzing-arduino

Fritzing 編集画面

fritzing-output

各種ファイルへの書き出し

使い方については Fritzing のサイトの “Getting Started” や “Tutorials” がとても参考になった。

Learning – Fritzing(http://fritzing.org/learning/)

Raspberry Pi パーツ

Adafruit の Fritzing Library を使うことで Raspberry Pi のパーツを利用することができる。
以下の URL からファイルをダウンロードして Fritzing の [ファイル] -> [開く] から必要な .fzpz ファイルを開けばパーツウィンドウにパーツが追加される。

GitHub | adafruit / Fritzing-Library

fritzing-raspberrypi

Raspberry Pi パーツ(Adafruit)