1. Raspberry Pi を始めよう 現在出回っている Raspberry Pi

白井ゼミ資料
2014-06-03
1. Raspberry Pi を始めよう
現在出回っている Raspberry Pi は2種類(type A と type B)---B の方が 拡張性がある
ここで使用するもの:
 Raspberry Pi Type B --- 512MB メモリ
 USB ケーブル(タイプ A オス- マイクロタイプ B オス、電源供給のため)
 USB 充電器(タイプ A メス)---出力は 5V(定格), 1A 以上
 モニタ(ディスプレイ) --- HDMI ケーブルも必要
 キーボード --- USB で接続する (BlueTooth アダプタにより BlueTooth 接続も可能)
 マウス --- USB で接続する(BlueTooth アダプタにより BlueTooth 接続も可能)
 USB ハブ --- セルフパワー方式が望ましい(RaspberryPi の USB は供給電流が小さい)
 LAN ケーブル (WiFi アダプタでも可)
 SDHC カード(class10, 4GB 以上、Raspbian などの OS をインストールしてあること---そのた
めに Windows パソコンに win32diskimager をインストールしておく)
 オプション: ウェブカメラ、BlueTooth アダプタ、WiFi アダプタ、マイク、スピーカー、モーター
ドライブシールド
参考: ビデオ端子の区別: VGA から左がアナログ、DVI と HDMI はディジタル
Raspberry Pi には電源スイッチは存在しない。電源供給用の USB ケーブルを繋いだら、スイッチ
がはいり、LED が点灯する。
注意: 電源が入った状態で、HDMI や USB ケーブルを抜き差ししないこと。とくに HDMI ケーブ
ルを抜き差しすると、Raspberry Pi が壊れる可能性がある (壊した場合は弁償してください。参考
価格: 4,530 円)
(1) SD カードには予め Raspbian OS を入れてある
Raspbian とは UNIX OS の一種である Linux の Debian ディストリ ビューションの
Raspberry 版、という意味。わけがわからなくなったかもしれないが、要するに Android や iOS の仲
間と思って良い---Microsoft Windows とはかなり違うので、使い方やその哲学を学ぼう
(2) システムの起動
Raspberry Pi に、モニタ、キーボード、マウス、LAN ケーブル、電源ケーブルをつなぐ。すると起
動する。メッセージがいろいろ出た後に、
raspberrypi login:
というメッセージがでる。そこで、 pi とキーボードから入力して改行キーを押すと
Password:
というメッセージがでる。そこでは、 raspberry とキーボードから入力して改行キーを押す。これ
が成功すると、
pi@raspberrypi ~ $
というメッセージが出る。出ない時は、login からやり直し。
---これは、ユーザー名 pi、パスワード raspberry としてシステムを使える状態にした、ということを意
味する。この過程を login という。
ここで、Linux/UNIX のコマンドを知らないと、何もできない。そのためまず知らなければならないこと
は2つ:
startx
と
exit
である。 startx が成功すると、Microsoft Windows の起動画面に似た状態、つまり画面にクリックで
きるアイコンが並ぶ(X Window という)。また exit はログアウトを意味し、login からのやり直しとな
る。
(2) システムの停止
電源を落とすにはあとで述べる方法以外に(以下をせずに電源ケーブルを抜かないこと)
sudo halt
とする。このおまじないは、sudo がスーパーユーザー(Super User、Microsoft Windows の admin)とし
て命令を実行すること、halt は、システムを停止(halt)させる、ということを意味する。
白井ゼミ資料
2014-06-03
2. Raspberry Pi のプログラミング
前節では、Raspberry Pi の起動方法を学んだ。login してから、startx コマンドを実行すると、次のよう
な画面になるはず:
Windows と同様、この画面に出ているアイコンはマウスでクリックして起動する。
この中で特に知っておかなければならないものは次の4つ:
Midori --- このシステムのウェブブラウザ
WiFi Config --- (WiFi アダプタが接続されていれば)WiFi 環境の構成
LXTerminal --- Windows の「コマンドプロンプト」相当。Raspberry Pi ではこれを多用する
Shutdown --- システム終了時、電源エーブルを外す前にこのアイコンをクリックし待つ
ちなみに、LXTerminal を起動すると、次のような画面になる:
次は、この LXTerminal で実行できるコマンドの主要なものの説明と演習を行う。
演習1. Raspberry Pi に、キーボード、マウス、ディスプレイ、LAN ケーブルを接続する。最後に
USB マイクロタイプ B にケーブルを挿し、電源につないで Raspberry Pi を起動する。起動したら、
LXTerminal を立ち上げてみよ。
Linux では(Microsoft Windows や Apple iOS と異なり)殆どの作業は、このターミナルに対してコマ
ンドを打ち込むことで行う。ここでコマンドの名前と意味、それに作業用ディレクトリなど Linux のファ
イルシステムについて学ぶことにしよう。
1)最初のコマンド: ls
まずは ls コマンドを打ち込んでみよう(p.37)。(ls は L と S の小文字---Linux では大文字と小文
字を区別するので注意)
すると、Desktop や ocr_pi.png や python_games という語が表示されたことでしょう。
これは、「現在の(current)ディレクトリにあるファイルやディレクトリが表示された」ものです。つまり ls
とは、今いるディレクトリに何があるかを調べるために使うコマンドなのでした。ちなみに、「今いるデ
ィレクトリ」とは ls により中身が表示されるディレクトリのことで、「作業用ディレクトリ (working
directory)」と言います。
さて、ディレクトリとはなんでしょうか?これは Microsoft Windows の「フォルダ」と同じものです。た
だ、Linux では、もっと体系的で統一されたものになっています。
まずシステム全体は / (スラッシュ一個)からなるディレクトリの下にあります。これをルート(root)デ
ィレクトリといいます。あとで見るように、すべてのディレクトリやファイルの「親元」です。その下には、
usr や home などのディレクトリがあります。それらは、 /usr とか /home のように表されます。またこ
れらはその下にいろいろなディレクトリを含みます。例えば /usr というディレクトリの下には、local
や bin というディレクトリがあります。これらは、 /usr/local とか /usr/bin という名前で参照できます。
ちょっとややこしいですが、/ はディレクトリとディレクトリをつなく記号でもあります。ここで、/usr/local
を例にとると、これは /usr というディレクトリの中のディレクトリです。このとき、/usr を親ディレクトリ、
もしくは「上」のディレクトリといいます。/usr からみると/usr/local は「子」もしくは「下」のディレクトリに
なります。このようにディレクトリに親子関係があるシステムをディレクトリ階層といいます。そしてこの
ディレクトリ階層はしばしば木構造で表されます(普通の木と違って、根(root)が上にあります):
図 1. Linux のディレクトリ階層を「木構造」で表示したもの
さて、それでは、LXTerminal を起動して、見えているディレクトリはなんでしょうか?
白井ゼミ資料
2014-06-03
これを調べるには、 pwd というコマンドを使います。pwd とは、 print working directory の頭文
字をとったもので、これから意味は明らかですよね。
演習 2 (a) pwd を実行した結果を書け。なお、立ち上げた直後の作業用ディレクトリのことをホー
ムディレクトリ、もしくは単にホーム(home)と言います。
(b) 図 1 に示した木構造ではホームはどれか、マークせよ。
2) ディレクトリを渡り歩く
Linux での仕事は Microsoft Windows とはかなり異なります。まず LXTerminal を起動し、作業
用ディレクトリを適切なものに設定し、その中のファイルを編集し、コンパイル(Microsoft でいうビル
ドに相当)し、ファイルを呼び出して実行する、というのが標準的な作業です。つまり、「アイコンをク
リック」というプログラムの起動方法はあまり使いません(プログラムを作る方としては、Linux のやり方
の方が簡単なのです)。
そのためには、まず、編集や実行の対象となるファイルがあるディレクトリを、作業用ディレクトリに
設定しなければなりません。そのために使われるのが cd (p.38)コマンドです。cd は change
directory(ディレクトリを変更する)の頭文字です。cd の使い方には大雑把にいって、3通りの方法
があります。
(1) 今の作業用ディレクトリの中にあるディレクトリを、新たな作業用ディレクトリに設定する
例えば、今の作業用ディレクトリに src というディレクトリがあったとします。なお、src があるか
どうかは ls コマンドで確認できますし、それがディレクトリであるかどうかは ls で表示される色で区別
できます---青色がディレクトリです。その src ディレクトリを新たな作業用ディレクトリにするには、
cd src
というコマンドを実行します(最後に改行を忘れないこと)。配布した英文資料では cd ./src のよ
うに、「./ 」がつけられていますが、この2つは同じことを意味します(ので、気にしないでください)。
このようなディレクトリの指定方法を相対パスといいます。この「相対」とは次に述べる「絶対」の反対
語です。そしてこの意味は、src として指定されたディレクトリが(同じ名前のディレクトリやファイルが
他所にもあるかもしれませんが)、今の作業用ディレクトリの下にあることを意味しています。
(2) 次は、絶対パスによる指定です。LinuxOS には、/usr/bin というディレクトリがあります。それ
を作業用ディレクトリに指定するには次のようなコマンドを実行します:
cd /usr/bin
相対パスとの違いは、ディレクトリの指定に / から始まる名称を書いていることです。このように、ル
ート(/)からはじめて、どのディレクトリの中に指定したディレクトリがあるかという道筋を全部書く(いわ
ば住所を地球、日本国からはじめて、愛知県、名古屋市、昭和区、というように全部書く方式、と思
ってください)のが絶対パスです。ちなみにパス(path)とは道、という意味です。
相対パスが今いるところからどうやって道をたどると対象とするディレクトリにたどり着けるか、を書
いたものであるのに対し、絶対パスは必ずルートからのたどり方を書いたものです。
ここで、相対パスだと「子」のディレクトリや「孫」のディレクトリを指定するのはできるのはわかりまし
たね。しかし「親」はどうやって指定したらよいでしょうか?
相対パスで「親」のディレクトリを指定するには「..」と書きます。ドットを2つ並べたものです。
(注意:半角文字を常に使ってください)。今、/home/pi が作業用ディレクトリであるとします。そこか
ら相対パス方式で、/usr/bin を作業用ディレクトリにするには、今述べたように
cd ../../usr/bin
と書きます。 図1をみながら考えてみましょう。最初の..で作業用ディレクトリが /home となります。
次の .. でルートになります。そこから usr/bin と指定すればよい、というわけです。
言い換えれば相対パスは作業用ディレクトリを基点とした、絶対パスはルート(/)を基点としたファイ
ルやディレクトリの指定の方法というわけです。
(3) 3番目の cd の使い方は、次のようなものです:
cd
この結果については次の演習で確かめることにしましょう。
演習 3 以下をこの順に答えよ(実行せよ)。
(a) 今の作業用ディレクトリを /home/pi とする。そうなっていなかったら、cd コマンドを用いてそう
せよ。また、実際に作業用ディレクトリが /home/pi であることを確かめよ(今までのコマンドを用
いて)。
(b) ls コマンドにより表示された単語と色を記録せよ。
(c) file * を入力/実行し、その表示と (b) の結果を比較せよ。そこから、ls で表示された色の
意味を推定せよ。この結果から推測できるように、file とは指定されたファイルの属性を示すコマ
ンドで、*は、そこにあるすべてのファイルを意味する。
(d) ../../lib を作業用ディレクトリとせよ(本当にそうなっていることを確かめよ)。そのためのコマン
ドを答えよ。図1にそのディレクトリの位置を書き込め。また、作業用ディレクトリを変更した後、そ
こにあるディレクトリの個数を答えよ。
(e) /usr/include/X11 を作業用ディレクトリとせよ(本当にそうなっていることを確かめよ)。そのため
のコマンドはどのようなものか?
(f) cd コマンドを実行し、その結果、作業用ディレクトリが何になったかを答えよ。
3) 今まで見たように、ディレクトリはとても重要なものです。仕事や種類によってファイルを分類して、
何が入っているか、どういう作業に関係しているかが分かるような名前をつけたディレクトリを作る
ことは、作業効率にとても影響します(これは、コンピュータ上の作業だけではなく、日常生活でも
同じです)。今までは、すでにあるディレクトリについて見てきました。ここでは、新しくディレクトリ
を作ったり、消したり、すでにあるディレクトリのコピーの方法を見ていきます。
演習 4 以下をこの順に答えよ(実行せよ)。
(a) /home/pi を作業用ディレクトリとする。そこにどういうディレクトリやファイルがあるかをメモす
る。
(b) mkdir testDir を入力、改行する。作業用ディレクトリにあるディレクトリやファイルにどのよ
うな変化があったかを答えよ。
白井ゼミ資料
2014-06-03
(c) mv testDir sampleDir を入力、改行する。作業用ディレクトリにあるディレクトリやファイル
にどのような変化があったかを答えよ。
(d) sampleDir を作業用ディレクトリとせよ。そのためにどのようなコマンドを実行すればよいか?
(e) ls コマンドでどのような表示がされるか、またそれはなぜかを答えよ。
(f) echo "sample" > test1 を入力、改行する。作業用ディレクトリにあるディレクトリやファイ
ルにどのような変化があったかを答えよ。
参考: > は「ファイルのリダイレクション」といい、echo コマンドの結果をファイルに書き込む、
という操作を表す。ファイルのリダイレクションには > 以外にも数種類ある。
(g) cp test1 test2 を入力、改行する。作業用ディレクトリにあるディレクトリやファイルにどのよ
うな変化があったかを答えよ。
(h) cat test2 を入力、改行する。何が表示されたか、またそれはどうしてか考えよ。
(i) rm test1 を入力、改行する。作業用ディレクトリにあるディレクトリやファイルにどのような変
化があったかを答えよ。
演習 4 を行って予想できたかと思いますが、そこで使われたコマンドの説明を下に書きます。い
ずれも Linux では基本的なコマンドです。
コマンド名
意味
mkdir 名前
「名前」という新たなディレクトリを作業用ディレクトリの下に作る(make dir)
mv 名1 名2 「名1」というファイル/ディレクトリの名前を「名2」に変更する(move)
cp 名1 名2
「名1」というファイルの中身をコピー(copy)したファイルを作り「名2」とする
cat 名前
「名前」というファイルの中身をディスプレイに表示する
rm 名前
「名前」というファイルを削除する(remove)
ここまでは、ファイルとディレクトリの違いをはっきり書いてきませんでした。ここでは、ファイルとはテ
キストやプログラムなどをさし、ディレクトリとは下にいろいろなファイルやディレクトリを作れる「フォル
ダ」をさすものとします。基本的にはファイルのコピーや削除という操作コマンドは、ディレクトリのコ
ピーや削除のためのコマンドとしても使えますが、コマンドに対してパラメタ(余分な引数)が必要で
す。ここでは –r というパラメタを紹介します。この r は再帰的(recursive)を表すもので、簡単にいえ
ば「繰り返し実行」を意味します。このパラメタはディレクトリのコピーと削除などに使えます。
演習 5 演習4を行っているものとする。以下をこの順に答えよ(実行せよ)。
(a) 演習 4 で作成した sampleDir を作業用ディレクトリとせよ。
(b) 作業用ディレクトリを、その親のディレクトリに変更せよ。そのためのコマンドはなにか?
(c) cp –r sampleDir testDir を入力、改行せよ。作業用ディレクトリにあるディレクトリやファイル
にどのような変化があったかを答えよ。
(d) rm sampleDir を入力、改行せよ。どのようなメッセージが出たか?
(e) rm –r sampleDir を入力、改行せよ。どのようなメッセージが出たか?
ここでメッセージが表示されるような場合は、 コントロールキーを押しつつ C を入力し(これはコ
ントロール C と言い、コマンドの強制停止を意味する)、改めて rm –rf sampleDir を入力、改
行せよ。作業用ディレクトリにあるディレクトリやファイルにどのような変化があったかを答えよ。
参考: 作業用ディレクトリの中にあるファイルやディレクトリ名は先頭の1,2文字を打ってから tab キ
ーを押すと、その名前を補完してくれる。また、上下矢印キーでは前のコマンドを再利用でき、左右
矢印キーを使って、LXTerminal に打ち込むコマンドの簡単な編集ができる。
3) Raspberry Pi でファイルを作る、編集する、セーブする (p.41)
ここまでで、Raspberry pi に login し、ディレクトリ間を渡り歩き、どんなファイルがどこにあるかを見る
ことができるようになった。次には、プログラムを書き、Raspberry pi を使って、カメラ操作したり、音を
出すなどをさせることが目標になる。
そのためにファイルを編集することを考えよう。Microsoft Windows ではファイル編集のために
Notepad や TeraPad、Word のようなプログラムがある。これらは Linux では使えないが、それと同等
か、なかにはそれよりも優れたものがある。おすすめは Emacs というシステムであるが、これは残念
ながら使いこなすのには時間がかかる(使いこなせるようになったら、もやはエキスパートといえよ
う)。
その代わり、Raspberry pi には nano とか vim, gedit というプログラムが用意されている。
演習 6
nano エディタを用いて my_file.txt を作ってみよう。それには LXTerminal で
nano my_file.txt
と入力(改行)する。すると別ウィンドウが開いて、ファイルの編集モードになる。ここでマウスで位
置指定ができないので、矢印キーを使うことに注意。またエディタを終了させたり、書き込んだも
のをファイルにセーブするには、コントロールキーと英文字との組み合わせのコマンドで行う。ど
のようなコマンドがあるかは、開いたウィンドゥに示されている。例えば、^G はコントロールキーを
押しつつ G(小文字でよい)を入力することを意味し、ヘルプメッセージが表示される。これを参
考にして、
This is my first text file in Raspberry Pi.
という内容のファイルを作り、my_file.txt にセーブせよ。また、ウィンドゥに示された nano のコマン
ドの一覧を作り、その意味を書け。
4) ネットワーク
Arduino とは異なり、Raspberry Pi はそれだけでひとつのコンピュータとしての機能をほぼ備えてい
る。ネットワークが最初から使えるのもその現れである。ネットワーク機能により、他のコンピュータか
ら Raspberry Pi を操作することも、またその逆も可能になる。あとで見るように、Raspberry Pi に備え
たウェブカメラを通していろいろなコンピュータやスマートフォンから Raspberry Pi が置かれた環境を
監視したり、Raspberry Pi にメッセージを送って、いろいろな操作を行わせる、ということが容易にな
る。さらに WiFi アダプタを使えば無線によって LAN につなぐことができ、さらに応用の可能性が広
がる。
白井ゼミ資料
2014-06-03
白井研究室の環境では、(1)Chukyo Wireless LAN に接続し、ウェブブラウザで中京大学のアカウ
ントによる認証と、(2)白井ゼミ LAN(sirai-lab)に接続(LAN 接続時にだけパスワード認証)、の二通
りの接続方法がある。
どちらも DHCP (Dynamic Host Configuration Protocolo)により IP アドレスが割り振られる。ただ白
井ゼミ LAN の方がネットワークを通したいろいろな作業をしやすい環境にしてあるので、将来的に
はこちらを使用したほうが良いだろう。
演習7. 有線により Raspberry Pi をネットワークに接続せよ。そして次の作業を行え。
(1) Raspberry Pi に割り振られた IP アドレスを答えよ。また、そのネットのネットマスクをゲートウェ
イを答えよ。この IP アドレスはプライベートアドレスか、グローバルアドレスか?また、このプライ
ベートとグローバルの違いはどのようなものか?
(2) 上の問題にすぐ答えられなかったひとののために(できた人には別途口頭で質問する):
ifconfig と netstat というコマンドについて調べ、(1)の答えを見つけよ。
参考: WikiPedia で IP アドレスを調べてみると良い。
演習 8. WiFi アダプタにより Raspberry Pi をネットワークに接続せよ。そして演習 7 と同じ問題に
答えよ。
演習 9. Linux では、システム更新もコマンドによって行う。ただし、それにはスーパーユーザーとし
てコマンドを実行しなければならない。また Microsoft Windows と異なり、ほとんどの場合、システム
の立ち上げ直しは必要ではない。次のコマンドを実行せよ。また、それぞれは何をやっているかを
調べて答えよ。
sudo apt-get update
sudo apt-get upgrade
続けてよいか、Y/N と聞かれたら、Y もしくはリターンキーを押すこと
演習 10. Raspberry Pi を立ち上げるたびに異なる IP アドレスが割り当てられるのが困る場合がある。
その場合には、ネットワーク環境によっては静的(static)な IP アドレスを割り当てることができる。
Chukyo Wireless LAN ではこれはできないが、白井ゼミ LAN では可能である。それには
/etc/network/interfaces
という名前のファイルを編集する。
iface eth0 inet dhcp
の部分を以下のように修正する(注意: address の*は白井から指定がある、80 以上の数)。
iface eth0 inet static
address 192.168.11.*
netmask 255.255.255.0
gateway 192.168.11.1
上記を実行し、立ち上げ直して、LAN に接続できることを確かめよ。