愛知県稲沢市在住の【中小企業診断士✖️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システムが構築できるようになります。
数百円のセンサーを使ってるだけなので、非常にコスパが良いですね。
コメント