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

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

NOOBS のインストール

QR2408

QR2408

NOOBS (New Out of Box Software) を使って Raspbian をインストールする方法を紹介する。

 

NOOBS とは?

NOOBS(New Out of Box Software) を利用することで1枚のSDカードで複数の OS をインストールし、利用することができる。

 

NOOBS のインストール

(1) SD カードの準備

SDカードをフォーマットし、NOOBS のファイルをコピーする。
(NOOBS の場合、ファイルのコピーだけなので OS イメージの書き込みに dd などのツールは不要です。)

SDカードのフォーマット

・Mac OS X の場合
SDカードをマウント後に、ディスクユーティリティで「MS-DOS(FAT)」フォーマットでSDカードを消去する。

・Mac OS X 以外の場合
以下の URL を参考にSDカードをフォーマットする。
https://github.com/raspberrypi/noobs/blob/master/README.md#how-to-format-an-sd-card-as-fat

 NOOBS ダウンロード

以下の URL から NOOBS の zip ファイルをダウンロードする。
今回は NOOBS (offline and network install) を選択した。

http://www.raspberrypi.org/downloads

SDカードの準備

ダウンロードした NOOBS の zip ファイルを展開して、展開したファイルをSDカードにコピーする。

 

(2) OS インストール

Raspberry Pi の電源を入れる前に、本体に SD カードを挿し、LAN ケーブル、HDMI ケーブルとディスプレイを接続する。次に、USB キーボード、マウスを接続し、最後に電源ケーブルを接続して起動する。

起動後に OS の選択画面が表示される。ここでは Raspbian を選択し、インストールする。

NOOBS: OS 選択画面

NOOBS: OS 選択画面

NOOBS: Raspbian インストール

NOOBS: Raspbian インストール

 

(3) Raspbian の起動

OS インストールが完了すると、Raspbian が起動する。
Raspbian が起動後は通常のインストールと同様に初期設定や各種設定を行う。

Raspberry Pi のインストール〜各種ログインまで

 

(4) NOOBS の起動

別の OS をインストールするには、OS 起動時に [Shift] キーを押下で NOOBS を起動する。

 

Raspberry Pi のカメラモジュールで写真や動画を撮影する

QR2315

QR2315

Raspberry Pi の Camera Board を使って写真や動画を撮影してみました。
コマンドで写真や動画を撮影できるので WiringPi と組み合わせるなどいろいろ応用ができそうです。

camera-module

カメラモジュール

 

カメラモジュール概要

Raspberry Pi HDカメラ

Raspberry PiモデルA又はBに最適の高精細ビデオカメラです。

Omnivision 5647センサ、焦点固定モジュールに内蔵
5メガピクセルセンサ
内蔵IRフィルタ
静止画像の解像度: 2592 x 1944
最大動画解像度: 1080 p
最大フレームレート: 30 fps
サイズ: 20 x 25 x 10 mm
フラットリボンケーブルによるRaspberry Piコンピュータボード上の15ピンMIPIカメラシリアルインターフェイス(CSI)コネクタS5への接続

Raspberry Pi のカメラモジュールはRSオンラインから購入できます。
http://jp.rs-online.com/web/p/video-modules/7757731/

 

カメラモジュールの接続

カメラモジュールは HDMI と Ethernetポートの間にあるコネクタに接続します。

コネクタの両側を指でつまんで持ち上げるとカバーを開くので、カメラモジュールのケーブルをコネクタに差し込みます。コネクタがささった状態でカバーを押し込むとケーブルとコネクタが固定されます。

カメラモジュールの向きやコネクタの取り扱い方は以下のページの動画が参考になります。
Camera | Raspberry Pi

connect-cameramodule

カメラモジュールの接続

 

準備

古いバージョンの Raspbian だとカメラモジュールを利用できないので Raspbian を最新版にアップデートします。

$ sudo apt-get update
$ sudo apt-get upgrade

 

カメラモジュールの有効化

カメラモジュールはデフォルトでオフになっているので、 raspi-config で機能を有効化します。

$ sudo raspi-config

Enable Camera -> Enable

カメラモジュールを有効にしたら raspi-config を完了して再起動します。

カメラモジュールを有効化すると raspistill や raspivid といったコマンドを利用できるようになります。

 

写真/動画のサンプル

画像

raspistill コマンドを使って画像(JPEG形式)を保存します。

$ raspistill -o image.jpg

動画

raspivid コマンドを使って動画(H264形式)を保存します。

$ raspivid -o video.h264

 

rpi-cameramodule-sample

ドアノブが映り込むくらい綺麗に写真が撮れました :-)

 

参考URL

 

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