MENU

【IoT】Raspberry piでスイッチを使ってLEDを操作しよう

愛知県稲沢市在住の【中小企業診断士✖️IoTプロフェッショナルコーディネーター】が、ものづくりの楽しさをお伝えする《がちゃラボ》です。

今回は、スイッチを使ってRaspberry pi に繋いだLEDを制御します。IoTシステムを自作する場合に、LEDと並んで良く使われる機器として、磁気センサ(リードスイッチ)があります。工場のIoTや店舗のIoTなんかでも良く使われるセンサで、今回はそのスイッチを使って、簡単にお手軽に、お安くシステムを構築するための基礎をお伝えしていきます。

スマート製品の基礎の基礎、スイッチでLEDを制御する方法をお伝えします。

目次

スイッチを使いRaspberry pi でLEDを制御するために準備するもの

下記ページではLEDを複数点灯・点滅制御する方法をお伝えしましたが、その時に準備した機材に加えて、今回は磁気センサ(リードスイッチ・ドアスイッチセンサー)を準備してください。

磁気センサ(リードスイッチ・ドアスイッチセンサー)は 、電子パーツショップでも買えると思いますが、私は毎回秋月電子通商さんで購入してます。

秋月電子通商さんリンク
http://akizukidenshi.com/catalog/

リードスイッチリンク
http://akizukidenshi.com/catalog/g/gP-13371/

1個あたり数百円で購入することができます。安い安い。

[rakuten id=”sotenco:10054603″ kw=”【楽天市場】ソウテン uxcell マグネットスイッチ 開閉連動スイッチ リードスイッチ NC ノーマルオープン 15-25mm 10セット:ソウテン”]

リードスイッチをRadpberry pi に繋げてみよう

それではこのリードスイッチをRaspberry pi に繋げてみましょう。以下のように、ブレッドボード・抵抗(1kΩ)・リードスイッチを繋ぎ、そしてRaspberry pi の GPIOとも接続します。

上記はRaspberry pi の接続箇所です。リードスイッチからは2本の線が出ていますので、それぞれ
(線①)電源(3.3V)
(線②)抵抗を介してGNDと、抵抗を介さずGPIO
に繋いでください。Raspberry pi には線②の「抵抗を介さずにGPIO」というジャンプワイヤと繋ぎます。

実際の写真だとこんな感じ。

ブレッドボード上では、リードスイッチから出ている2本の線①②を下記の通りに接続します。線①はRaspberry piの3.3Vに接続します。線②はブレッドボード上で2つに分けて、一方はGPIOに繋ぎもう一方は抵抗を介してRaspberry pi のGNDに繋ぎます。

リードスイッチでLEDを制御するためのPythonプログラムの作成

それでは、Pythonでプログラムを作っていきましょう。

以下のようなプログラムを『Thonny Python IDE』で作成してください。今回はRaspberry pi から、信号を出す(出力する)だけでなく、入力することが必要になってきます。

import RPi.GPIO as GPIO             *1)
import time                         *2)

GPIO.setmode(GPIO.BCM)              *3)
GPIO.setup(2, GPIO.OUT)             *4)
GPIO.setup(14, GPIO.IN, pull_up_down=GPIO.PUD_UP)  *5)

while True:                         *6)
    if GPIO.input(14) == 1:         *7)
        GPIO.output(2, GPIO.HIGH)   *8)
    else:                           *9)
        GPIO.output(2, GPIO.LOW)    *10)
    
    time.sleep(0.5)                 *11)

詳細な説明は後ほど。

Pythonのプログラムをテストしよう

先程作ったプログラムをテストしてみましょう。再生ボタンを押して、リードスイッチを付けたり、話したりしてください。

すると、それに反応してLEDが点灯したり、消灯したりすると思います。

Pythonプログラムの説明

では、このリードスイッチを使ったプログラムの中身を解説していきます。

*1) GPIOを制御するためのライブラリをインポート
*2) 待ち時間を設定するためのライブラリとインポート

*3) モードを指定。GPIO02などの役割で制御したい場合には BCM というモードを指定。
*4) LEDを繋いだGPIO02を出力(OUT)と指定
*5) リードスイッチ線②を繋いだ GPIO14 を入力(IN)として指定

*6) ずっと繰り返すために、while True: を記述。

*7) GPIO14 が1だったら、という条件文
*8) LEDをHIGH(点灯)させる

*9) GPIO14 が1以外だった場合
*10) LEDをLOW(消灯)させる

*11) 0.5秒間隔毎に条件判定するよう待ち時間を設定

LEDの場合はOUTPUTとして指定しましたが、リードスイッチの情報を受け取って制御を変えるため、INPUTとして指定しています

これでリードスイッチのオンやオフの情報をRaspberry pi が読み取って、そしてLEDを点灯や点滅できるわけですね。

さいごに

今回はリードスイッチ(磁気センサー、ドアスイッチ)と呼ばれるスイッチを使って、Raspberry pi でLEDを制御しました。

これができると、スマート工場やスマート農場で使われるような、人や物、あと動物?なんかを検知するようなスマートシステム、IoTシステムが構築できるようになります。

数百円のセンサーを使ってるだけなので、非常にコスパが良いですね。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次