こんにちは。
今回は「Raspberry Piを触ってみよう」です。
実はかなり前にRaspberry Piがどんなものか触ってみたいと思って、とりあえず一番安かった「Raspberry Pi Zero」(1200円くらい)を買ってみてました。
当時はMathematicaやProcessingを少しいじってどの程度の速度で動くのか試しただけでしたが、せっかくブログを始めたので記事にしようと思ってまた引っ張り出してみた次第です。
(ちなみに速度はかなり遅いですが、お試しで買う分には問題ないです。やりたいことがあってRaspberry Piを買うのであれば3や4が良いと思います。)
Raspberry Piの準備
まずはRaspberry Piを動かせるようにします。
買って電源をつければすぐ使えるかというとそうではありません。
本ブログのようにRaspberry Piを"小さいパソコン"として使うならば、OSを入れたmicroSDを差し込み、ディスプレイやマウス、キーボードを接続してから、本体にUSBで給電することで電源がつき、Raspberry Piが起動します。
OSのインストール
microSDには、OSの情報が入った「イメージ」と呼ばれるファイルを入れておきます。
といっても簡単、「Raspberry Pi Imager」というソフトを以下からダウンロードし、これを起動してOSの種類と書き込むmicroSDを選択して「WRITE」を押せば勝手にやってくれます。
以前は自分で3 GBくらいのファイルをダウンロードしてmicroSDに入れていた記憶があったのですが、今はかなり楽になっていると感じます。
あとはお好みでディスプレイ、マウス、キーボードを接続し、USBから給電すれば緑色のランプがついて、起動します。
起動するとウィンドウが出て言語設定やアップデートの確認などをするのでそれに従って進んでいけば完了です。
Processingのインストール
続いて、Processingを入れます。
画面上部にある「>_」のような記号が書かれた「LXTerminal」を開き、
$ wget https://github.com/processing/processing/releases/download/processing-0255-3.2.3/processing-3.2.3-linux-armv6hf.tgz
でProcessingをダウンロード、
$ tar xvzf processing-3.2.3-linux-armv6hf.tgz
でファイルを展開し、インストールは完了です。
起動は、
$ cd processing-3.2.3/ $ ./processing
でできます。
最新版の4.0や3.5.4でも入れられるのかと試してみましたが、うまくできず。
3.2.3でも十分だということで諦めました。
別のサイト( Raspberry PiとProcessingで画像処理入門 - karaage. [からあげ])には3.5.3を入れるコードがあり、こちらも実行はできましたが、3.5.3よりも3.2.3の方がProcessingの起動が早かったので、3.2.3を入れることにしました。
Raspberry Piの公式サイト(Introduction to Processing - What you will need | Raspberry Pi Projects)には、
$ curl https://processing.org/download/install-arm.sh | sudo sh
と打ってインストールするとありますが、自分の環境ではできませんでした。
実際に触ってみる
以上で準備はできたので、実際にprocessingを使ってみます。
基本的にパソコンで動くコードはRaspberry Piでも動くと思うので触れずに、Raspberry Piを使うことでできるようになった「GPIO」に触れてみます。
「GPIO」は「General-Purpose Input/Output」のことで、大げさに言えばSociety 5.0で言っているような「サイバー空間とフィジカル空間を繋ぐもの」と表現できます。
要するに、人間が物理的にスイッチを押したときに、その信号が伝わってコンピュータ上で処理が走る、というような感じです。もちろん逆もあり得ます。
とりあえず触ってみるだけなので、詳細は省略します。
それでは、ハードウェア界の「Hello, world!」であろう、「Lチカ」をやってみます。
「Lチカ」は「LEDをチカチカさせること」を指します。
この例では、ウィンドウ上でクリックがされたらLEDのオン・オフを切り替えるという処理をしています。
import processing.io.*; //ライブラリをインポート boolean ledOn = false; //LEDは最初はオフ void setup(){ GPIO.pinMode(17, GPIO.OUTPUT); //GPIO17を出力に使う } void draw(){ if(ledOn == true){ //LEDがオンなら background(255, 0, 0); //背景を赤く GPIO.digitalWrite(17, GPIO.HIGH); //GPIO17から出力 }else{ //LEDがオフなら background(0, 0, 0); //背景を黒く GPIO.digitalWrite(17, GPIO.LOW); //GPIO17からの出力を止める } } void mouseClicked(){ //マウスでクリックしたとき ledOn = !ledOn; //LEDのオン・オフを逆に }
配線は、
「GPIO17」は「17番のGPIOピン」を指し、「(ピン全体で見て)17番のピン」ではないので注意です。
(初めそれに気づかず、3.3 V電源の17番ピンにつなげていたため、LEDがつきっぱなしになってしまっていました…)
一応「回路」なので、GPIO17だけでなく、GNDの役割をするピンにもつなげなければなりません。
今回は20番ピンにつなげておきました。
GPIOの出力は3.3 Vです。
まとめ
ここまででRaspberry PiでProcessingを使う準備をし、少しだけGPIOに触れてみました。
今後、もう少し詳しくピン関係の話題をブログ化してみようと思います。
ではまた次回。