Raspberry Piで遊ぶ。
私が買ったのは、「Raspberry Pi 2 Model B」という最新のものだ。オライリー・Make:PROJECTSシリーズの「Raspberry Piをはじめよう」で解説されているのは古い方の「Raspberry Pi モデルA」「同B」なので、少しづつ合わないところがあるが、ごく細部を除いては、特に気にする必要はない。細部の違いが影響してくるのは、よほど高度なことをやる場合だ。
今さら私が述べ立てることではないと思うが、私と同じような人で、Rasberry Piのことを知らない、という人に向けて書けば、結局はこうだ。
- Raspberry Piは、GPIOインターフェイスボードを積んだ普通のPCだと思えばよい。
- 普通のPCなので、Linux系OS以外にも、Windows10なども使える。だが、成果物のほとんどはRaspbianというLinuxディストリビューション上で得られているので、OSにはRaspbianを選択しておくのが無難。
- 前記GPIOは、普通にファイルに見えるので(と言っても、/devの下にデバイスファイルがあるわけではない;もちろん、シンボリックリンクでそういうふうにすることはできるが)、標準出力でファイルを開け、書いて閉じれば、それでGPIOにつないだ電子工作をコントロールできる。
- Arduinoに比べると、ロジックが正=3.3Vであること、アナログ入力がないことなどが違う。解説書「Raspberry Piをはじめよう」にも、
「最初にRaspberry Piのニュースが流れたとき、それがArduinoキラーになるのではないかと多くの人が考えました。値段はたいして違わないのに、Piはずっと大きなCPUパワーを持っています。だったらArduinoを使う理由はもうない、というわけです。しかし、やがて両者は補完的な関係にあることが分かってきました。以下のような状況を考えると、ArduinoとPiを組み合わせるメリットが見えてきます。- Arduinoの豊富なライブラリと作例を活用したい。
- すでにうまく動いているArduinoプロジェクトにCPUパワーを追加して、もっと高度なことがしたい。
- 5Vで動作する回路を扱いたいが、Piは3.3V動作で、5V入力に対応しない。
- 誰かがプロトタイピングの過程で少しばかり無茶をしてチップがダメージを受けた時(Arduinoのピンにモーターを直結している人を見たことがあります)、Arduinoならば数百円以下でスペアのチップを買って自分で交換することもできるが、Piでそれをするのはほぼ不可能。
- 3Dプリンタ用コントローラのように高精度なリアルタイム処理を必要とするものを作るとき、リアルタイムOSとは言えないRaspbianよりも、命令サイクルを計算できるマイクロコントローラのほうが要求に適う可能性が高い
」
(p.88冒頭から引用)
……等とある。 - Linuxなので、使い始めるにはとりあえずrootを把握して、ユーザを作ればよい。作りつけのユーザもあるが、私のようなおっさんは、まず
「# useradd -g pi toshio ; passwd toshio ; mkdir /home/toshio ; chown toshio:pi /home/toshio」
……なんてことをやらないと落ち着かないのである。 - さまざまな作例等はPythonの利用が想定されているので、さまざまな作品例のマネがしたければPythonを使えばよいが、前記したように「普通のLinuxマシン」なので、PerlだろうがCだろうが、おっさん系の言語も全部使えるから、私のようなおっさんは自分が使いたい言語を使えばよい。
なので、例えば、「Raspberr Piをはじめよう」の102ページあたりに載っている最初のLチカの例は、次のような方法でも再現できる。
#!/usr/bin/perl # perl2LED # perlでLチカ # 27.8.16(日) # 佐藤俊夫 # open(GPIO25, ">/sys/class/gpio/gpio25/value"); GPIO25->autoflush(1); while(){ print GPIO25 1; sleep(1); print GPIO25 0; sleep(1); }
……などとPerlで書き、「gpio25」をユーザ空間にエクスポートして、
# ./perl2LED
とやると、LEDが1秒おきにチカチカするのである。
「ユーザー作ったりとか」への1件のフィードバック