ラズパイでLチカ

ラズパイでは定番というか鉄板

Lチカというのは、LEDをチカチカさせるという意味。
ラズパイはミニチュアのパソコンであるとも言えるが真骨頂はGPIO。
GPIOで外部の電子機器をコントロールする。
手始めというより一番最初に皆がする(かどうか)のがLチカ。

その前にケースを変えた

左がキットで付属していたケース。右が今回購入したケース。
左のケースは色も黒で、ラズパイのマークを掘り抜いて空気穴にしていたり格好良いのだが、比較してわかるように肝心のGPIOやカメラモジュールなどへのアクセスが悪いというよりできない。
蓋を開けた状態で接続するのを前提にしているが、GPIOはケースの壁に非常に近くて、ほとんど不可能に近い。
右のケースは、GPIOを含む全てのモジュールにアクセスするための窓が開いており、透明のなんと言うことは無いケースだが機能的である。

パーツセット

LEDをチカチカさせるには抵抗とLEDが1個あれば良い。
だが、GPIOと接続するには、抵抗とLEDを接続するには・・・永久的なものなら、半田付けという手もあるが、しばらくは実験的なもので有り抜き差しが容易である必要がある。
それで、ケーブルやボードなどをセットにした”パーツセット”をアマゾンで購入した。

¥3000程度の品である。抵抗からLED,平行ケーブルブレッドボードそして説明書CD(英語・・・)日の字液晶、スィッチまでほとんど揃っている。
しかし、これは本体のGPIOからふらっとケーブルでブラッドボードに引き出して使用することを前提としており、1~2本をGPIOから引き出してLチカをする程度の場合に大仰である。そしてGPIOから引き出すためのオスメスコードが付いていない。
それで、オスメスコードと小さなブレッドボードのセットをまた購入した。
¥500くらいだった。

配線

なんて大げさなものではなく、ブレッドボードは縦線が繋がっているので、縦線上に差し込めば、接続になるので、回路(なんてものじゃ無い)を考えながら差し込んでいくだけ。

プログラム

配線が終えたら、本体を接続して、LEDをチカチカさせるプログラムを書く。
勿論、プログラムはラズパイのOSをインストールした(されていたのだが)際に導入されていたPythonを使っていく。
Pythonを使う第2弾になる(かな)

私は、ラズパイのGPIOの取り扱いについて”RaspberryPiで学ぶ電子工作”と言う本をAMAZONで購入して使っているが、GPIOを利用するライブラリにRPi.GPIOを使っているが、他にgpiozeroというライブラリがありgpiozeroの方が使いやすそうだが、事前にインストールする必要がある(と資料に記されていた)

Pyhon(IDLE)を立ち上げる前にgpiozeroのインストールをやってみたが、すでに組み込まれているとメッセージが出た。
ただし、これはキットで購入した際に導入していたものかもしれないし、心機にgpiozeroを試す際には確認した方がよさそうである。

あとはgpiozeroの例題は山ほどあるので、ググって参考にさせて貰った。
+電源はGPIO22番ピンGPIO25に接続したので、それに合わせた。

このプログラムを保存してF5で実行すると、

1秒毎に点滅を繰り返す。
終了するのは、CTRL-C。

しかしながら、while:文の途中で止まるので、LEDが点灯しっぱなしで止まることもある。
キーボードの割り込みに対してwhile文を終了させ、最後にLEDをoffにして終了すれば、何処で止めても最後にはLEDは消灯で終わる。

タクトキーを使う

これまでの実験はON・OFFを繰り返すものだが、パーツセットにはタクトキーといって押している間はONになるキースィッチがある。
これを使って装置を少しグレードアップしてみる。
今度は回路が少し複雑になるので、ブレッドボードには+線と-線が付属したものに変更した。

回路は頭の通り。
スィッチを押すとGPIO-24がONになるのを検出し、その結果をGPIO-25の出力をHIGHにしてLEDを光らせる。
そんなことをせずに

この回路でも押している間LEDは光るのだが、全くGPIOは使用されておらず乾電池とLEDでもできることなので、今回はGPIOで検出と出力を使った回路としている。

import RPi.GPIO as GPIO
from time import sleep
GPIO.setmode(GPIO.BCM)
GPIO.setup(25,GPIO.OUT)
GPIO.setup(24,GPIO.IN)

try:
   while True:
       if GPIO.input(24) == GPIO.HIGH:   //GPIO-24 がHIGHなら
           GPIO.output(25,GPIO.HIGH)     //GPIO-25 をHIGHにして光らせる
       else:                             //そうでなければ
           GPIO.output(25,GPIO.LOW)      //消灯
       sleep(0.01)

except KeyboardInterrupt:     //キーボード割り込みなら
pass                           //終了

GPIO.cleanup()               //GPIO をリセット

プログラムは上記の通り

結果は

押してないときは消灯

押している間は点灯

となる。
ま、他愛も無いと言えばそれまでのラズパイを使って、Pythonでプログラムを書いてという両者の練習の第一弾である。

最近は、小学校でもScratchなどの初級プログラミングを教えているとか、このラズパイとパーツキットにはこれ以外にも写真でお見せしたようにADコンバータ、サーボモーター、各種センサーなど揃っており、格安のWEBカメラのコントロールも可能である。
大人には物足りないかもしれないが、まず自分でやってみて子供に教えてやればおとうさんヒーローになれるかも。

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です