1. HOME
  2. テックブログ
  3. 知識ゼロからラズパイを使った開発インターンの講師になる

知識ゼロからラズパイを使った開発インターンの講師になる

私は先週行われた自社の開発インターン「ラズパイを使ってAIスピーカーを作成してみよう」に講師として参加しました。開発向けインターンを開催するに当たって、ラズパイの知識がゼロだった自分が講師となって教えれるまで成長できたと実感しています。
今回はラズパイの簡単な実践方法と併せて、講師になって学んだことや感じたこともお伝えできればと思います。

(超音波センサーに1m以内まで近づいたら、AIスピーカーを受け付け状態に出来るようにしてみました。)

1.知識ゼロの状態でラズパイを知る

私はラズパイ(RaspberryPi)の知識が本当に無かったので、最初に名前を聞いた時は何かのツールだと思いこんでおりました。
実物を見て説明を受けてみると、これは「小さなコンピューター」なんだと実感。こんなに小さいのに、アイデア次第であらゆる機能を実現することが出来ることに驚きました。今、注目されているIoT開発を気軽に体験できますし、業務効率化にもつながるのではないでしょうか。
今回はこのラズパイを実際に使って回路を組んだりプログラムを組んだりして、青色のLEDライトを点灯させてみましょう。

2.実際に回路を組んで動かしてみた

まず回路を実際に組む場合に、理解していないといけないことがあります。
それは、電流の流れる方向です!
ご存知の方も沢山いらっしゃるかと思いますが、電流は+から-へ流れます。これがイメージ出来ているのと出来ていないのとでは、回路を組むスピードに大きく差が生まれます。実際に作成した回路図を例に上げて説明していきたいと思います!

※LEDを点滅させる回路図

写真の部分で緑色で繋がっている部分があると思いますが、これは電流が流れる向きになります。
この回路図からいくと

赤い線(+)から電流が流れて ▶︎ オレンジのジャンパー ▶︎ 青色のLEDライト ▶︎ 抵抗を挟んで黒色の線(-)に流れる

といった動きで青色のLEDライトが光ります。覚えていただきたいこととしては「電流は+から-へ流れ、流れる方向は緑でつながっている部分」でOKです。回路に関しては以上になります。

LEDを点滅させることが目的なので、上記の回路図をPython言語を使って制御していきたいと思います!
この言語は初めてでしたが、書き方が分かりやすく初心者の方でも組みやすいと感じました。実際に実装したコードは以下になります。

import RPi.GPIO as GPIO
from time import sleep
 
LED = 23
 
GPIO.setmode(GPIO.BCM)
GPIO.setup(LED,GPIO.OUT,initial=GPIO.LOW)
 
try:
    while True:
        GPIO.output(LED, GPIO.HIGH)
        sleep(1)
        GPIO.output(LED, GPIO.LOW)
        sleep(1)
except KeyboardInterrupt:
    pass
     
GPIO.cleanup()

何をしているかといいますと、GPIO23番を出力に設定して

LEDを点ける ▶︎ 1秒待機 ▶︎ LEDを消す ▶︎ 1秒待機 ▶︎ LEDを点ける ▶︎ (ループ)

といった動きになっております。回路図もふまえて説明すると、

赤い線(GPIO23番) ▶︎ LEDを点ける ▶︎ 1秒待機 ▶︎ LEDを消す ▶︎ 1秒待機 ▶︎ 黒色の線(-)へ流れる

となります。
これで、LEDの点滅が実装できます!

3.自分なりにプログラムを組む際のコツを考えてみた

しかし、これだとプログラム初心者の方に説明する時に伝わらない部分もあるかと思います。なので、よりイメージが付きやすいように一手間加えてあげます。

import RPi.GPIO as GPIO
from time import sleep
# LEDのGPIO番号を設定する
LED = 23
 
# BCMで設定する(GPIO.setmode)
GPIO.setmode(GPIO.BCM)
# LEDを出力として設定する(GPIO.setup)
GPIO.setup(LED,GPIO.OUT,initial=GPIO.LOW)
 
try:
    while True:
        # LEDを点ける
        GPIO.output(LED, GPIO.HIGH)
        # 1秒待機
        sleep(1)
        # LEDを消す
        GPIO.output(LED, GPIO.LOW)
        # 1秒待機
        sleep(1)
# Ctrl + C で中断します
except KeyboardInterrupt:
    pass
     
# 終了処理
GPIO.cleanup()

何を変更したかといいますと、それぞれの処理の上に「コメント(説明文)」を追加しただけです。こうすることで、「この行でこういうことを行っているんだ」とイメージ出来るかと思います。
なぜコメント行を追加したのかと言いますと、プログラムを他人に伝える際に、どうやったら自分がやりたいことが伝わるのだろうと悩むことがあると思います。私も新入社員の頃は、自分が実装したいことを相手に上手く伝える事ができずに悩んでいた時期がありました。実装方法を調べようとしても、どうやって調べたらいいのか調べ方すら分からないことが多々ありました。

・調べ方がわからない
・コードを見て理解しようとしても分からない
・聞き方が分からない

最初の頃は、分からないことだらけだと思います。そこで、自分の経験からどうやったらいいのか考えた結果….「日本語の方が馴染んでいるから、まずはやりたい事を日本語でコメント化して組んでみる」でした。
こうすると、相手に見せたときも伝わりやすくなりますし初心者の方にも分かりやすくなります。なので、初心者の方が困っていたら「まずは、やりたいことをコメントのみで実装してみて」と教えるようにしてみてはどうでしょうか?それに対して、実装するのに使う関数や変数については「こういったものを使うといいよ」とアドバイスしてあげれば良いかと思います。

まとめ

・まずはコメントのみで組んでみる!
・実装に必要なものはアドバイスをいただく or アドバイスをしてあげる!
・アドバイスしていただいた内容を調べてみる!

もし、プログラムに関して悩まれている方がいましたらご参考にしていただけると嬉しいです。

ファブリカコミュニケーションズで働いてみませんか?

あったらいいな、をカタチに。人々を幸せにする革新的なサービスを、私たちと一緒に創っていくメンバーを募集しています。

ファブリカコミュニケーションズの社員は「全員がクリエイター」。アイデアの発信に社歴や部署の垣根はありません。

“自分から発信できる人に、どんどんチャンスが与えられる“そんな環境で活躍してみませんか?ご興味のある方は、以下の採用ページをご覧ください。

◎ 新卒採用の方はこちら
◎ キャリア採用の方はこちら

この記事を書いた人

岩本 拓己
インターネットサービス事業本部 プロダクト開発本部 第2開発グループ
岩本 拓己

おすすめの記事