Edited at

レッツラズパイ!〜Lチカ&Lピカをマスターしよう編〜


レッツラズパイ!・プロジェクト



  1. レッツラズパイ!〜Raspberry3にOSをインストールしよう〜

    【番外編】レッツラズパイ!〜"ディスプレイなしで"RaspberryPiにOSをインストールしよう編〜

  2. レッツラズパイ!〜Lチカ&Lピカをマスターしよう編〜(これ)

  3. レッツラズパイ!〜Webカメラで監視しちゃうゾ編〜

  4. レッツラズパイ!〜温度センサーとmailgunで検知メールを送ろう編〜

  5. レッツラズパイ!〜Google HomeでLピカさせよう編〜

  6. レッツラズパイ!〜Google Homeに室温を教えてもらおう編〜

  7. レッツラズパイ!〜Lチカボタン編〜

RaspberryPiを始めて触る&IT初心者向けのドキュメントです。私の所属する会社で使う、IT初心者の方のインターンシップ向けのドキュメントとして書きはじめたので、かなり丁寧に書いていますがご了承下さい。


Lピカさせよう


完成形

こんな感じでLEDランプをピカらせましょう


IMG_2960.JPG


準備するもの


  • LEDランプ ×1

  • ジャンパーワイスのメス×オス端子 ×2

  • 抵抗 ×1

  • ブレッドボード ×1

IMG_2959.JPG


配線の前に

配線する前に、今回使用するブレッドボードと、RaspberryPiの本構成について理解しておきましょう


ブレッドボードって?

ブレッドボードは、はんだこてをしなくても簡単に電子回路を組める事を目的とした検証用の電子回路基板のことです。今回使用するブレッドボードはこのように縦に回路がつながっています。

board.jpg


RaspberryPiのピン構成について

今回使うRaspberryPiのピン構成について理解しておきましょう。RaspberryPiにはGPIOと呼ばれる40本のピンが用意されています。どのピンがどんな役割なのかは公式のドキュメントに詳しく記載されています。(参考:GPIO: MODELS A+, B+, RASPBERRY PI 2 B AND RASPBERRY PI 3 B)

今回はひとまず以下のピンの名前と役割を理解しておきましょう。

ピン名
説明

GPIOピン
入出力を制御のピン

GNDピン
電流を逃がすためのピン。マイナス極側と接続する。

3.3V、5.5Vピン
電源のピン

これがどのピンがどんな役割なのかを表した図です。ここで注意してほしいのが、GPIOにはそれぞれ番号が振られていますが、順番がバラバラになっていることです。

gpio-numbers-pi2.png

下の図は、全てのピンに物理的な番号を振った図です。SDカードに一番近いピンが1番ピンとなります。ですので、例えばここでいう7番ピンはGPIO4番ピンとなるので、ごっちゃにならないように気をつけて配線して下さい。本ドキュメントでは、下の図を参照して◯◯番ピンと記載することにします。

physical-pin-numbers.png


実際に配線する

それでは配線します。配線する順番は、まずブレッドボードに配線し、その後ジャンパーワイヤーをRaspberryPiに接続していきます。


ブレッドボード側の配線

配線をさっそくはじめてみますが、配線をする場所によって役割が違いますので慎重に行いましょう。まずは、ブレッドボード側から配線します。分かりやすくするためにブレッドボードに番号を振りました。

IMG_2959A.jpg

下の表を参考にブレッドボードにLED、抵抗、ジャンパーワイヤーをそれぞれ接続していきます。

製品
接続するブレッドボードの場所
補足

LED
F6(+)、F7(-)
長いほうが(+)、短いほうが(-)

抵抗
H3、H6
極性(プラスマイナス)無し

ジャンパーワイヤー
J3、J7
この後、J3→電源、J7→GNDに接続する

LEDをつなぐ時には、プラスとマイナスを間違えないように注意しましょう。足の長い方がプラス、短いほうがマイナスです。

IMG_3419.jpg

以下の配線図を参考にしてください。

配線3.jpg


RaspberryPi側の配線

まず、マイナス側のジャンパーワイヤーをGNDに接続します。今回は6番ピンにマイナスのジャンパーワイヤーを接続しましょう。

次に、プラス側を直接電源に接続していきます。電流が強すぎるとLEDが壊れてしまう危険があるので、3.3Vの1番のピンを使用します。

以下の配線図を参考にしてください。

haisen.jpg

おめでとうございます。LEDランプが点灯しましたね。これでLピカは完了です。


Lチカさせよう


完成形

IMG_3427.MOV.gif

Lチカは名前の通り、LEDランプをチカチカさせることです。どうやってチカチカさせるかというと、電流を流したり、止めたりと、入出力を制御することでチカチカを実現します。入出力を制御するためには、RaspberryPi本体からGPIOに対して、入出力をするためのプログラム(コマンド)を実行します。


GPIOの入出力設定を理解する

まず、ブレッドボードの配線はそのままで、Raspberry PiのGPIOポートのプラス側を、1番ピン(3.3V電源)からとなり3番ピン(GPIO2)に差し替えます。GPIOはデフォルトが通電状態ですので、差し替えてもLEDランプは点灯しています。

IMG_3426.JPG

次にGPIOポートを使用する準備をしていきます。TeraTerm等でRaspberry PiにSSH接続しましょう。

$ ssh pi@(RaspberryPiのIP)

SSH接続ができたら、GPIOポートを開放するため以下のコマンドを実行してください。

$ echo 2 > /sys/class/gpio/export

GPIO2を解放すると、/sys/class/gpio/gpio2というディレクトリが作成されます。このディレクトリの中にGPIOを制御するための様々なファイルがあります。下記コマンドでgpio2というディレクトリがあるか確認してください。

$ ls -la /sys/class/gpio/

次に、この「gpio2」が、入力と出力のどちらを行なうかを指定していきます。入出力を設定するのは「direction」です。以下のコマンドを実行してください。

$ echo out > /sys/class/gpio/gpio2/direction

今回は信号を発信する側=出力なので「out」を指定します。コマンドを実行するとLEDが消灯します。これで個別に制御できるようになります。

出力の値は「value」に設定します。「1」を設定すると電流が流れてLEDが点灯します。消灯させる場合は「0」を設定して電流の流れを止めます。以上のことをふまえて、以下のコマンドを一行ずつ実行してください。

$ echo 1 > /sys/class/gpio/gpio2/value #点灯

$ echo 0 > /sys/class/gpio/gpio2/value #消灯

「gpio2」の制御を今度は終了させます。以下のコマンドを実行して終了させてください。

$ echo 2 > /sys/class/gpio/unexport

「export」の反対で「unexport」ですね。これを実行すると「gpio2」のディレクトリが消去されます。確認してみましょう。

$ ls -la /sys/class/gpio/


Lチカプログラムを作成してみる

続いて、今度は自動でLチカさせる設定をします。まずはプログラムを書くための適当なディレクトリを作成し、シェルスクリプト(lchika.sh)を作成します。

$ mkdir -p $HOME/work && cd $_

$ touch lchika.sh

自動でLチカをするプログラムを作成します。vim等のエディタで下記プログラムをコピペして作成して下さい。

$ vim lchika.sh

#-------以下をコピペ-------#

#!/bin/sh
echo 2 > /sys/class/gpio/export
sleep 1
echo out > /sys/class/gpio/gpio2/direction
sleep 1
echo 1 > /sys/class/gpio/gpio2/value
sleep 1
echo 0 > /sys/class/gpio/gpio2/value
sleep 1
echo 1 > /sys/class/gpio/gpio2/value
sleep 1
echo 0 > /sys/class/gpio/gpio2/value
sleep 1
echo 1 > /sys/class/gpio/gpio2/value
sleep 1
echo 2 > /sys/class/gpio/unexport

さっそく先程作成したプログラムを実行してLチカをさせてみましょう!以下のコマンドを実行してください。

$ . lchika.sh

チカッ、チカッとすれば成功です。これであなたもLチカマスターですね♪

IMG_3427.MOV.gif

Lチカ&Lピカをマスターしよう編は以上です。お疲れ様でした♪次回はレッツラズパイ!〜Webカメラで監視しちゃうゾ編〜です♪


追記

pythonでもチカらすことができます。

RaspberryPi3でPythonを使ってLチカさせる