バックアップのために手元にファイルサーバほしいなと思っていていろいろと探していたらRaspberry Piというものがあることが分かった。
たしかに5年前ぐらいにそんなのがあると聞いたことがあったのだが、ここ5,6年ぐらいコンピュータをいじるのがめんどうくさくなっていてずっとコンピュータはメールとネットだけの利用になっていた。
ところがラズパイを見つけたら、久しぶりにいじってみるかと言う気になったので、以下のものを衝動買いした。
ちょっと高いかなとは思ったのだけど、本体とケースとアダプタ、それにOSが入ったSDカードも付いてくるのでそれを考えたらそれほど高くないと思う。
ちょっと前の自分だったら本体だけを買うのだけど、まあ久しぶりでこの手のものをいじるし、結局あとでいろいろとそろえるのも面倒に思ったのでこれにした。
手元に来てみると、本体は名紙サイズで、ケースに入ってきた。もちろん簡単にケースからも取り外しができる。
とはいっても、基板なのでケースに入れて使うのが無難だろう。
電源のアダプタはUSBのアダプタと言うのか、いわゆるUSBケーブルを繋いで利用する物。だから、手元に転がっているアダプタでもとりあえずだいじょうぶだとは思う。 しかし余り電流量が少ないアダプタだと、ブートの途中で停まってしまってだめと言うこともあるので、それなりの電流量が必要だろう。 ましてやラズパイを使ってモーターを動かすとなるとなおさらである。
本体はマイクロUSBがささる形状。 だから、コンセントがなくても、携帯を充電するモバイルバッテリーでもラズパイを動かすことができる。
OSはマイクロSDカードに入れて使う。最初に書くべきだけど、
そもそもラズパイは小さなコンピュータ、OSは基本的にはLinuxを使う。FreeBSDも使えるみたい。Windowsもあるみたいだ。
とはいっても、どのOSもこのラズパイで動かすためにカスタマイズされているものを利用する。これらをねっとからダウンロードして、Windows等のパソコンでそれらのOSのイメージファイルをSDカードに焼く。
OSのインストールはそれだけ。なので、いわゆるPCにUnix系のOSを入れるより非常に簡単である。
またこの手のマイコンではBIOSと言ういうものがないので、PCのときのようにBIOSが見えないといじれないという心配もない。
上野スターターキットを買えば、すでにSDカードにLinuxが入ってきているので、SDカードを挿入して電源を入れればLinuxが立ち上がる。
ラズパイは手のひらサイズの大きさだけど、いちようHDMI端子もあるのでモニターに直接繋いでも利用できる。
USBポートも4こあるので、キーボードやマウスも繋げられる。なので、直接ラズパイを操作することもできる。
でも、そもそもラズパイはクミコミなどで利用する物なので、一般的にはモニターやキーボードなどを直接繋がずにリモートからLoginして使うのが一般的。このような方法をヘッドレスで利用すると言うらしいが、これは実に視覚障害者向きである。
OSを焼いたSDカードをWindows PCで見てもらえばわかるが、BOOT関係のファイルだけがWindows PCから見ることができる。例えばEドライブに、いくつかファイルが表示されると思う。 このEドライブの直下にsshと言うファイルを作る。中身はなにか書いて有っても空っぽでもかまわない。注意することは拡張子は着けてはだめということだけ。
sshと言うファイル名を予めWindows PCから作って置いて、SDカードをラズパイに指して電源を入れれば、リモートからSSHでアクセスできるようになる。
ラズパイはDHCPでIPアドレスを取得するように設定されているから、ラズパイを立ち上げたらルーターなどのDHCPサーバにアクセスして、ラズパイが取得したと思われるIPアドレスを探す。
それから、sshクライアントであくせすする。WindowsのSSHクライアントはいろいろとあるようだけど、私は最初TeraTermがNVDAで最低限音声で利用できると思ったのでこれを利用したが、Windows上では最近出たOpenSSHがかなり音声が出て使いやすい。Windowsから利用するならばこれを強くお勧めする。
ラズパイの初期IDとPasswordはそれぞれ
pi
raspberry
である。その後suなどでrootになっていろいろとやればよい。
私は最初にやったことは、telnetdとftpdをインストールした。NVDAでOpenSSHを使えば良いとはかいたのだけど、わたくしどうしてもPC98からPCTCPのTELNETやFTPが使いたくてそうした。インストールはかんたんで
apt-get install telnetd
apt-get install ftpd
で入る。これでPCTCPのTELNETなどが使えるようになってめでたしめでたし。
うえではSSHやtelnetでのアクセス方法を書いたが、シリアルコンソールも利用できる。
だが、ちょっと面倒なことがある。一般のシリアルケーブルは使えない。ラズパイにシリアルコンソールでアクセスするためには、専用のケーブルが必要となる。
ラズパイ側の接続には、ラズパイのGPIOピンを利用して接続することになる。
後でちょっと説明するが、ラズパイの3にはGPIOピンが40ほんある。ピンはすぐにわかると思う。
20ほんのピンが2列になっているものがある。そこにシリアルケーブルを接続することになる。
また、ラズパイのGPIOピンは3.3Vなので、PCのシリアルポートとは電圧が違うので、それに合わせるためにICを入れたケーブルが必要となる。手元に、PCのUSBからラズパイに繋ぐタイプのケーブルと、PCの従来の9ピンのシリアルポートに接続するタイプのケーブルを揃えたが、まだ試してないので近々動作報告をしたいと思う。
まあSSHやtelnetが使えればまったく問題ないとは思うけど。
と上では書いた。ところが、上野記述をしてから1花月後、気まぐれにラズパイをWI-FI接続しようと思って設定を始めた。
ところが、これはまだ原因がわからないんだけど、 ラズパイがハングアップしてしまう。電源を入れ直しても有線からもWI-FIからもLOGINができなくなってしまった!これは困った。 ということで、手元にまだ試してなかったUSBでシリアルコンソール接続するためのケーブルでシリアルコンソールを試してみた。
それでなんとかうまく復活できた。
ラズパイでシリアルコンソールを使うためにはまず、config.txtの最後に次の1行を書き込む。
dtoverlay=pi3-miniuart-bt
を書き込む。 config.txtはSDカードをWindowsで見ればすぐに見つかる。sshファイルを作ったところと同じホルダである。
それであとは、シリアルコンソール用のケーブルをGPIOに接続する。
黒(GND)線をGPIOの6ピン
白(RXD)線をGPIOの8ピン
緑(TXD)をGPIOの10ピン
にそれぞれ繋ぐ。きれいに横に3ぼんならぶ形で接続する。赤の線が余る人がいると思うが、これは使用しない。
ボーレートは115200に設定する。9600ではないので中位。
ターミナルソフトはTeraTermを利用した。
ところで、USBからシリアル接続するには、ラズパイとパソコンの間でうまく繋ぐためにICを利用している。USB側のプラグにそのICが組み込まれているのだが、どうやらそのICに2種類あるようだ。 ということで PL2303HX内蔵シリアル変換ケーブル、FTDI USBシリアル変換アダプターVIRTUAL COM PORT DRIVERSのケーブルがあるようだ。私はPL2303HXのものを買った。だけど、wINDOWS8や10で使うにはFTDのものがよいようだ。内にはwIN7しかないのでこれでよい。 接続方法はかわらないはずだ。 予めそれぞれのICに合ったドライバをPCにインストールしておかないとつかえない。ドライバはNET上にあるので適当に探してもらいたい。
これでTeraTermで繋ぎなんとか有線LANが復活できた。具体的にはシリアルコンソールで入って、
ifconfig wlan0 down
これでWIFIのポートを落とす。
ifconfig eth0 192.168.3.100
これで有線LANポートを復活させる。 これでとりあえずtelnetで入って復活である。ただ、なぜwlan0を使ってかたまったのかは不明。
ところで、ラズパイをかったのはいいけど、どんなことができるのと言うことになる。ラズパイは小さなパソコンと思って貰ってかまわない。OSは基本的にLinuxを使う。
まずApacheとかが簡単にはいるので、Webサーバが作れる。Sambaも入るのでファイルサーバやプリントサーバが簡単にできる。まあLinuxで一般的に利用できる物は利用できる。
GPIOピンがあるので、ここにLEDやブザーやモーターなどを繋げば、ラジコンやロボットなども作ることができる。また、各種センサーも繋ぐことができるので、例えばカメラで写真を取ったり、温度や湿度などの測定もできる。
なので、例えば玄関においておいて、カメラで訪問者の写真を取って、結果をメールで送信したり、1時間おきとかもちろんもっと細かくでも良いけど温度や湿度を測って結果をメールで自動配信したり、Webサーバに書き込んだりすることもできる。また、Twitterに結果を送信した理などもできる。
別売りでUSBに繋ぐSIMを入れるドングルがあるので、SIMを入れれば、スマホで遠隔地から操作も可能だし、逆にスマホに情報を送ることも可能。
その他いろいろなことができるので、この辺は検索してもらえればよい。
とりあえず私が試してみたことは、LEDをチャカチャカさせたり、圧電ブザーを鳴らしてみたり、サーボモーターを動かしたぐらいである。手元に部品があまりないので、これからいろいろと揃えてみたいと思っている。
ということで、下にGPIOのピン配置を書いておく。
まずラズパイの本体を横向きに持つ。方向は、USBポートがあるがわを左にして横向きに持って貰いたい。右側にSDカードを入れること炉がある。 するとGPIOピンが手前側になる。ピンは手前側と向こう側と2行になると思う。 手前側の行を、右から2,4,6....40と言うように偶数番号のピンが並ぶ。無効の行が、同じく右から奇数で1,3,5...39ピンとなる。
この位置関係でピンの説明を書く。
ピン配置
Pin1: 3V3
Pin2: 5V
Pin3: SDA/GPIO2
Pin4: 5V
Pin5: GPIO3/SCL1 I2C
Pin6: GND
Pin7: GPIO4/GPCLK0 1 wire
Pin8: GPIO14/UART0_TXD
Pin9: GND
Pin10: GPIO15/UART0_RXD
Pin11: GPIO17
Pin12: GPIO18/PWM_CLK
Pin13: GPIO27/PCM_DOUT
Pin14: GND
Pin15: GPIO22
Pin16: GPIO23
Pin17: 3.3V
Pin18: GPIO24
Pin19: GPIO10/- SPI0_MOSI
Pin20: GND
Pin21: GPIO9/SPI0_MISO
Pin22: GPIO25
Pin23: GPIO11/SPI0_SCLK
*Pin24: GPIO8/SPICS0(またはSPI0_CEO)
Pin25: GND
*Pin26: GPIO7/SPI0_CS1(またはCE1)
Pin27: GPIO0/EEDATA(またはID SD)
Pin28: GPIO1/EECLK(またはID SC)
Pin29: GPIO5
Pin30: GND
Pin31: GPIO6
Pin32: GPIO12
Pin33: GPIO13
Pin34: GND
Pin35: GPIO19
Pin36: GPIO16
Pin37: GPIO26
Pin38: GPIO20
Pin39: GND
Pin40: GPIO21
ところで、ラズパイニは最初からPythonやPerl、GCC等が入っているので、モーターやLED等のコントロールのプログラムはこれで書けるようになっている。とりあえず、PythonでLEDとブザー、モーターを動かしてみた。 それで、これらをcgiで動かすようにしてiPhoneでアクセスして遊んでみた。 LEDは適当に道具箱にころがっていたもの、サーボモーターはたしか双葉のS3003だったと思う。この辺も特に配線などの事も含めて書いて行きたいとおもう。
たしかにこのようにLEDやモーターなどが簡単に動かせるので手軽なのだが、ラジコンを作るとかの用途が搾るならば、ラズパイはかなり大げさだと思う。何度も書くけど、ラズパイは小さなパソコンである。なので、ちょっとモーターを動かす物を作るとかならばPIC等が向いているのだと思う。 そのほうが電力も無駄に使わないし、大きさも重さも小さいのですっきりする。 とはいえ、PIC等では別にプログラムをPIC本体に転送するための道具も必要となる。 ラズパイならば、本体だけですむし、本体の中でプログラムを書くので、PICみたいにクロスコンパイルではないので手軽である。 コンピュータイコールメールとインターネットをするものと思っている人たちなどの教育教育目的で利用するには良いものだと思う。