日々ブログ

日々のくらしの中で思ったこと

【プログラミング】ラズベリーパイのLチカがWayInTop だとめちゃくちゃ楽だった

巣ごもりの準備として、 電子回路の入門キットを購入したんですが、 めちゃくちゃ便利になっていますね。
数年前は、自分でLED買ったり、抵抗買ったりブレッドボード揃えたりとLチカしたいだけなのにめちゃくちゃ大変だったんですがね😅

f:id:xinformation:20220126003952p:plain

Lチカって?

電子工作の基本中の基本として扱われているところです。
英語で言うところの、「This is a pen. 」みたいなやつですね。
特に意味はないけど、学習の始まりみたいなものです。
やることはLEDを点灯するだけなのですが、やることが多いので、初心者のつまずきポイントだったりします。
実際、私も学生時代にやったことはあるんだけど、面倒くさかったですね。
具体的には、下のような手順ですかね。

  1. ラズベリーパイへのRaspbianイメージの書き込みとインストール
  2. GPIO機能の有効化
  3. 電子回路を組む
  4. ラズベリーパイ上でLEDを点灯するプログラムを実行する

WayInTopキット

ラズベリーパイの電子工作キットを作成しています。
使い方のマニュアルはイマドキっぽくgithubから閲覧可能ですよ。
エラーへの対処方法など丁寧に解説されており、私もまだ学習の途中ですけど、 困らずに進められていますよ~。

楽天で頼むとこんな感じで届きます。 こういう手書きフォントは好きだったり。 f:id:xinformation:20220125234348p:plain

計算はしていないけど、単価で買うと安上がりなんだろうか。
自分でパーツを選んだりする手間を考えると個人的には「買い」かな。


初歩的な内容に注力

基本的に手順とその内容が書かれており、スムーズに動かせるようようになっています。 その反面、その他の応用方法などはとくに解説されていないので、深堀りしたい人には物足りないかも。
深堀りした内容が入ると結局混乱するだけだからそれでも全く問題はないんですけどね。
あくまで、初心者の入門向けなので、この「キットじゃないとできないこと!」みたいな特色はないと思います。
普通のことを簡単にやるためのキットで、そのためにたくさんの図や解説がついていてとてもわかり易いです。
とりあえず、回路を組んでプログラミングして動かすというところ学ぶのには丁度良い教材だと思います。
ちなみに、こういうのをしっかりとしたセミナーに参加して学ぶと数万円は飛びますからね😅
それを考えると安いものですな。
git hubにテキストは公開されているので、それを見るだけでも勉強になるはず。

github.com

早速Lチカをやってみた

早速キットを使って、Lチカをやってみました。

接続図

接続図はこんな感じ。 制御ピンから抵抗を通って、LEDに電流が流れる構成ですね。 抵抗はLEDに電流が流れすぎるのを防ぐ役割を担っています。 公式のドキュメントから拝借しました。 f:id:xinformation:20220126002554p:plain

プログラムはgithubから入手

プログラムはgithubから入手できます。
単純にGPIOのセットアップをして、制御する簡単なものなのですが、 実例があるだけで安心感が違う。
このプログラムを関数じゃなくて、クラス化するだけでもプログラミング力は上がるはず。

import RPi.GPIO as GPIO
import time

ledPin = 11    # RPI Board pin11

def setup():
    GPIO.setmode(GPIO.BOARD)       # Numbers GPIOs by physical location
    GPIO.setup(ledPin, GPIO.OUT)   # Set ledPin's mode is output
    GPIO.output(ledPin, GPIO.LOW) # Set ledPin low to off led
    print ('using pin%d'%ledPin)

def loop():
    while True:
        GPIO.output(ledPin, GPIO.HIGH)  # led on
        print ('...led on')
        time.sleep(1)   
        GPIO.output(ledPin, GPIO.LOW) # led off
        print ('led off...')
        time.sleep(1)

def destroy():
    GPIO.output(ledPin, GPIO.LOW)     # led off
    GPIO.cleanup()                     # Release resource

if __name__ == '__main__':     # Program start from here
    setup()
    try:
        loop()
    except KeyboardInterrupt:  # When 'Ctrl+C' is pressed, the child program destroy() will be  executed.
        destroy()
Lチカ!

Lチカ!しました。
読みながら、回路くんでプログラム実行るだけで行けましたね。
画像なのが申し訳ないですが、実際は1秒ごとに点滅しています。

f:id:xinformation:20220126003416p:plain

ファイル転送はsshがオススメ

公式ドキュメントには、ラズパイへのファイル転送としてFilezillaがオススメされていますが、 単純に、sshとSCPで十分と思います。
自分はvscodessh接続で作業してました。
vscode だと、コーディングとファイル転送と、ターミナル操作を1手にできるので、 オススメです。
sshの有効化設定は下記の記事を見てくださると嬉しいです。

xinformation.hatenadiary.com

GPIOの拡張プラグがめちゃくちゃ便利

私はこのキットで使うまで使ったことがなかったのですが、 GPIOの拡張プラグがなかなかに便利です。 ラズパイのGPIOピンは単にピンが並んでいるのですが、それぞれのピンに役割が違います。 電流を流すピンだったり、信号を制御するピンといった感じですね。 このプラグをつけるまでは、「ラズパイのドキュメンを見ながらこの位置のピンの役割は・・・」と調べていましたが、 ボードにピンの役割が書かれているのでその手間が省けかなり作業効率が上がりました。 ブレッドボードに直接挿せるのもGOOD👍
GPIOピンからジャンパ線を張り巡らせると、訳がわからなくなりますからね😱

f:id:xinformation:20220126001936p:plain