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

Raspberry Pi で arduino IDE を動かしてみる

QR1934

QR1934

Raspberry Pi に arduino IDE をインストールして、Raspberru Pi 上でコンパイルしたスケッチを arduino に転送して実行してみた。

 

 

インストール

arduino 関連のパッケージを apt-get でインストールする。

$ sudo apt-get install arduino arduino-core aruino-mk

arduino IDE 起動

$ arduino

問題なくインストールできれいれば以下のように arduino IDE が起動する。

arduino IDE 起動

arduino IDE 起動

 

スケッチのコンパイルと転送

ここでは arduino IDE に入っているスケッチのオンボードのLチカのサンプルを実行する。

まずは、Raspberry Pi に arduino をUSBで接続して、マイコンボードの種類とシリアルポートを指定する。

arduino IDE: マイコンボードの選択

arduino IDE: マイコンボードの選択

arduino IDE: シリアルポートの選択

arduino IDE: シリアルポートの選択

arduino IDE に入っているスケッチのオンボードのLチカのサンプルを開く。

arduino IDE: Lチカのサンプルスケッチ

arduino IDE: Lチカのサンプルスケッチ

スケッチのコンパイルと転送には10秒ほど時間がかかる。

転送が完了すると、arduino のオンボードのLEDが点灯する。

arduino IDE: Raspberry Pi + arduino

arduino IDE: Raspberry Pi + arduino

Raspberry Pi で Processing を動かしてみる

QR1924

QR1924

 

 

 

JDK のインストール

sudo apt-get install librxtx-java openjdk-6-jdk

Processing のダウンロード

現時点(2013/05/17)の最新版を利用した。

$ wget https://processing.googlecode.com/files/processing-2.0b8-linux64.tgz

ダウンロードしたファイルを展開する。

$ tar zxvf processing-2.0b8-linux64.tgz
$ mv processing-2.0b8 ~/
$ cd ~/processing-2.0b8

リンクの変更

JAVA SDK の参照を変更する。

$ rm -rf java
$ ln -s /usr/lib/jvm/java-6-openjdk-armhf java

RXTXcomm.jarの差し替え

$ rm modes/java/libraries/serial/library/RXTXcomm.jar
$ cp /usr/share/java/RXTXcomm.jar modes/java/libraries/serial/library/

Processing の起動

$ ./processing

 

いくつかのサンプルプログラムを試したところ、動作するものと動作しないものが合った。
libEGL ライブラリを参照できないようで OpenGL を使うサンプルが動作しない(?)ような印象。

Github の issue にあがってるからそのうちなんとかなるかなぁ。
Raspberry Pi View topic – libEGL missing/erroneous links to GLESv2

参考URL

 

WiringPi が version 2 にアップデート

QR1909

QR1909

WiringPi が version 2 にアップデートされ analogRead/analogWrite の機能が追加されました。
アップデートを git で最新版のソースを pull してそのままビルドでできるのは Raspberry Pi ならではの簡単さです :-)

 

アップデート方法

現在のバージョンの確認方法

以下のコマンドでバージョンを確認できます。
バージョンが 1.xx となっている人は引き続き最新版ダウンロードの手順でアップデートできます。

pi$ gpio -v

gpio version: 1.12
Copyright (c) 2012 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty

This Raspberry Pi is a revision 2 board.

最新版ダウンロード

git で最新版のダウンロードができます。以前の作業ディレクトリが残っている人は作業ディレクトリに移動して git pull するだけです。作業ディレクトリが残っていない人は「WiringPi のインストール」と同様に git clone してください。

$ cd wiringPi
$ git pull origin

ビルド

$ ./build

アップデートの確認

バージョンが 2.xx になっていればアップデート完了です。

pi$ gpio -v
gpio version: 2.03
Copyright (c) 2012-2013 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty

This Raspberry Pi is a revision 2 board.

 参考URL

Raspberry Pi で CGI(bash)を動かす

QR1891

QR1891

ブラウザから GPIO の制御をする準備として、bash スクリプトで簡単な CGI プログラムを実装してみました。
ここでは Apache のインストールから簡単な CGI プログラムを動かす方法を紹介します。

Apache のインストール

apt-get で apache をインストールします。

$ sudo apt-get install apache2

CGI

以前紹介した tw や gpio コマンドをそのままブラウザから実行するためにCGI プログラムをシェルスクリプト(bash)で実装しています。

 

apt-get でインストールした Apache のデフォルトの設定では、/usr/lib/cgi-bin/ のディレクトリにおいたファイルは CGI プログラムとして実行されます。
なお、このディレクトリの設定は /etc/apache2/sites-available/default で定義されています。

追記: CGI を利用するための設定

・.cgi ファイルを CGI スクリプトとして実行する

/etc/apache2/mods-available/mime.conf 219行目のコメントアウトをはずす。

AddHandler cgi-script .cgi

・docroot で cgi を利用できるようにする

/etc/apache2/sites-available/default を編集して /var/www/ の設定に「 +ExecCGI」を追記する。

<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews +ExecCGI
AllowOverride None
Order allow,deny
allow from all
</Directory>

・Apache を再起動する

$ sudo /etc/init.d/apache2 restart

CGIプログラムのサンプル

Hello World

以下の内容で helloworld.cgi を作成します。

$ cd /usr/lib/cgi-bin/
$ sudo emacs helloworld.cgi

helloworld.cgi の内容

#!/bin/bash

echo “Content-type:text/html”
echo “”

echo Hello World!

次の URL にブラウザでアクセスすると「Hello World!」と文字が表示されます。

http://[ipアドレス]/cgi-bin/helloworld.cgi

helloworld.cgi

http://[ipアドレス]/cgi-bin/helloworld.cgi

日付を表示する

以下の内容で date.cgi を作成します。

#!/bin/bash

echo “Content-type:text/html”
echo “”

date

次の URL にブラウザでアクセスするとアクセスした日付が表示されます。

http://[ipアドレス]/cgi-bin/date.cgi

date.cgi

http://[ipアドレス]/cgi-bin/date.cgi

 

固定IPアドレスを割り振る方法

QR1514

QR1514

Raspberry Pi に固定IPアドレスを割り振る方法を紹介する。
Raspbian ではデフォルトで DHCP に設定されているため、IPアドレスを固定にして、DNS サーバを指定する必要がある。

IPアドレスの割り振り

/etc/network/interfaces を変更して、IPアドレスを割り振る。

#iface eth0 inet dhcp
iface eth0 inet static
address    192.168.2.100
netmask    255.255.255.0
gateway    192.168.2.1

上記の例では、DHCPクライアントを利用する設定をコメントアウトし、192.168.2.100 の IPアドレスを割り振るなどの設定した。
各自のネットワーク環境に合わせて設定してもらいたい。

DNSサーバの指定

/etc/resolv.conf を変更して、DNSサーバを指定する。

nameserver 192.168.2.2

ネットワーク設定の反映

以下のコマンドでネットワーク設定を反映する。

$ sudo /etc/init.d/networking reload

参考URL

 

WiringPi gpio コマンドの使い方

QR1875

QR1875

WiringPi の gpio コマンドの使い方を紹介する。

GPIO をファイルとして扱う場合は管理者権限が必要だったが、gpio コマンドで GPIO を制御する場合は管理者権限は必要ない。
このため GPIO を CGI 経由で制御する場合などにも応用することができる。

WiringPi をインストールしておく。インストール方法は「WiringPi のインストール」を参照。

GPIO の値の変更

$ gpio [-g] write <pin> 0/1

GPIO の値の読み出し

$ gpio [-g] read <pin>

<pin> の配置は以下のページを参照
Raspberry Pi | Wiring | Pins | Gordons Projects

gpio コマンドでは GPIO の値の変更や読み出し以外に、pwm を扱ったり、I2C や SPI のドライバを読み込んで /dev/ のファイルとしてアクセスしたりすることができる。
The GPIO utility | Gordons Projects

 

GPIO の値の読み出し/変更のサンプル

以前「GPIOをシェルスクリプトで制御する(QR516)」でシェルスクリプトで GPIO を制御する方法を紹介しました。
ここでは GPIO をファイルとして扱う方法を紹介しましたが、今回は同じサンプルを WiringPi の gpio コマンドを使って実装してみました。

WiringPi gpio コマンドを使うサンプル

$ gpio -g mode 4 out

$ gpio -g write 4 1
$ gpio -g read 4
1

$ gpio -g write 4 0
$ gpio -g read 4
0

$ gpio -g mode 4 down

ファイルとして扱ったサンプル

# echo “4” > /sys/class/gpio/export
# echo “out” > /sys/class/gpio/gpio4/direction

# echo 1 > /sys/class/gpio/gpio4/value
# cat /sys/class/gpio/gpio4/value
1

# echo 0 > /sys/class/gpio/gpio4/value
# cat /sys/class/gpio/gpio4/value
0

# echo “4” > /sys/class/gpio/unexport

参考URL

 

WiringPi のインストール

QR1870

QR1870

WiringPi とは、Raspberry Pi の GPIO を Arduino のように制御するためのライブラリです。
もともとは C 言語で実装されていましたが、Ruby、Python、PHP、Perl など言語でも実装されています。

各種言語の WiringPi | GitHub

 

WiringPi をインストールすると gpio というコマンドもインストールされます。
このコマンドを使ってシェルスクリプトで GPIO を制御することができます。

WiringPi のインストール

ソースのダウンロード

git clone で最新版のソースをダウンロードします。

$ git clone git://git.drogon.net/wiringPi

ビルド

git clone でできたディレクトリに移動してビルド用のスクリプトを実行します。

$ cd wiringPi
$ ./build

動作確認

バージョンの表示
(インストールしたバージョンが表示されます。)

$ gpio -v

gpio version: 1.12
Copyright (c) 2012 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty

This Raspberry Pi is a revision 2 board.

 

すべての GPIO のピンの値を出力

$ gpio readall
+———-+——+——–+——+——-+
| wiringPi | GPIO | Name   | Mode | Value |
+———-+——+——–+——+——-+
|      0   |  17  | GPIO 0 | IN   | Low   |
|      1   |  18  | GPIO 1 | IN   | Low   |
|      2   |  27  | GPIO 2 | OUT  | Low   |
|      3   |  22  | GPIO 3 | IN   | Low   |
|      4   |  23  | GPIO 4 | IN   | Low   |
|      5   |  24  | GPIO 5 | IN   | Low   |
|      6   |  25  | GPIO 6 | IN   | Low   |
|      7   |   4  | GPIO 7 | IN   | Low   |
|      8   |   2  | SDA    | ALT0 | High  |
|      9   |   3  | SCL    | ALT0 | High  |
|     10   |   8  | CE0    | IN   | Low   |
|     11   |   7  | CE1    | IN   | Low   |
|     12   |  10  | MOSI   | IN   | Low   |
|     13   |   9  | MISO   | IN   | Low   |
|     14   |  11  | SCLK   | IN   | Low   |
|     15   |  14  | TxD    | ALT0 | High  |
|     16   |  15  | RxD    | ALT0 | High  |
|     17   |  28  | GPIO 8 | IN   | Low   |
|     18   |  29  | GPIO 9 | IN   | Low   |
|     19   |  30  | GPIO10 | IN   | Low   |
|     20   |  31  | GPIO11 | IN   | Low   |
+———-+——+——–+——+——-+

参考URL

 

Raspberry Pi で IPv6 を有効にする

QR1795

QR1795

Raspberry Pi で IPv6 を有効化する方法を紹介します。
Raspbian ではデフォルトで IPv6 が無効になっているので IPv6 を使うためには設定を変更する必要があります。

 

 

/etc/modules に “ipv6” という行を追加する。

$ sudo emacs /etc/modules

 

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with “#” are ignored.
# Parameters can be specified after the module name.

ipv6

設定変更後に Raspberry Pi を再起動すると IPv6 が有効になる。

IPv6 を有効化した後の ifocnfig 結果

pi@raspberrypi ~ $ ifconfig
eth0      Link encap:イーサネット  ハードウェアアドレス b8:27:eb:44:f8:28
inetアドレス:192.168.2.2 ブロードキャスト:192.168.2.255  マスク:255.255.255.0
inet6アドレス: fe80::ba27:ebff:fe44:f828/64 範囲:リンク
UP BROADCAST RUNNING MULTICAST  MTU:1500  メトリック:1
RXパケット:126 エラー:0 損失:0 オーバラン:0 フレーム:0
TXパケット:96 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:1000
RXバイト:15527 (15.1 KiB)  TXバイト:12794 (12.4 KiB)

lo        Link encap:ローカルループバック
inetアドレス:127.0.0.1 マスク:255.0.0.0
inet6アドレス: ::1/128 範囲:ホスト
UP LOOPBACK RUNNING  MTU:16436  メトリック:1
RXパケット:0 エラー:0 損失:0 オーバラン:0 フレーム:0
TXパケット:0 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:0
RXバイト:0 (0.0 B)  TXバイト:0 (0.0 B)

IPv6 を有効化する前の ifocnfig 結果

pi@raspberrypi ~ $ ifconfig
eth0      Link encap:イーサネット  ハードウェアアドレス b8:27:eb:44:f8:28
inetアドレス:192.168.2.2 ブロードキャスト:192.168.2.255  マスク:255.255.255.0
UP BROADCAST RUNNING MULTICAST  MTU:1500  メトリック:1
RXパケット:592 エラー:0 損失:0 オーバラン:0 フレーム:0
TXパケット:398 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:1000
RXバイト:71834 (70.1 KiB)  TXバイト:54398 (53.1 KiB)

lo        Link encap:ローカルループバック
inetアドレス:127.0.0.1 マスク:255.0.0.0
UP LOOPBACK RUNNING  MTU:16436  メトリック:1
RXパケット:0 エラー:0 損失:0 オーバラン:0 フレーム:0
TXパケット:0 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:0
RXバイト:0 (0.0 B)  TXバイト:0 (0.0 B)

参考URL

How do I enable or use IPv6? | RaspbianFAQ – Raspbian