ラズパイでは定番というか鉄板
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カメラのコントロールも可能である。
大人には物足りないかもしれないが、まず自分でやってみて子供に教えてやればおとうさんヒーローになれるかも。