ラズパイとAD変換で光センサ(Cdsセル)を使ってみよう
こんばんは。國松です。
今回は前回、前々回で学んだAD変換を使って光センサの値を読んでいきたいと思います。
光センサ(光検出器)とは
光などの電磁気的エネルギーを検出するセンサ。
Cdsセル(フォトレジスタ)とは
硫化カドミウムを使った化合物半導体です。あたる光の量に従って抵抗値が変化するCdsの性質を利用しています。セルの当たる光が多ければ抵抗値は低くなります。
用意するもの
1.Raspberry Pi3 Model B+ (OsはRaspbian)
2.ブレッドボード
3.光センサ(Cdsセル)
4.LED
5.ジャンパワイヤ
6.ADコンバーター(MCP3002)
光センサの働きはプログラムを組まなくても確かめることができるので早速やっていきたいと思います。
(接続図)
接続が終わったら光センサ(Cdsセル)を覆ったり光を当ててみて下さい。LEDの明るさが変化すると思います。(動画ではちょっとわかりにくですが…)
次にADコンバータを使って光センサの値を読んでいきたいと思います。
(接続図)
使用するコードは半固定ボリュームの値を読んだ時と同じです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | import spidev import time # SPI通信を行うための準備 spi = spidev.SpiDev() #SPI通信を行うオブジェクトを取得 spi.open(0, 0) #通信を開始 spi.max_speed_hz =5000 #debianのバージョンが9.1の場合は必要 # 連続して値を読む while True: try: # SPIで値を読む resp = spi.xfer2([0x68, 0x00]) # 読んだ値を10ビットの数値に変換 value = ((resp[0] * 256) + resp[1]) & 0x3ff print(value) time.sleep(1) except KeyboardInterrupt: break # 通信を終了する spi.close() |
光センサ(Cdcセル)を覆ったり光を当てたりすると値が変化します。
おまけ
gpiozeroライブラリーを使ってみよう。
gpiozeroとはRasoberyy PiのGPIOを制御するシンプルなライブラリーです。
ADコンバータMCP3xxx(MCP3001/3002/3004/3008、MCP3201/3202/3204/3208、MCP3301/3302/3304)をサポートしているのでプログラムが簡単に書けます。
参考サイト
Gpiozero
DIY環境(5ドル!ラズパイ・ゼロ(Raspberry pi Zero)でIoT (8) A-Dコンバータの利用5 MCP3208)
Raspberry pi Zero と ADコンバーター(MCP3008)を使って光センサーにトライ
1 2 3 4 5 6 7 8 9 10 11 12 | from gpiozero import MCP3002 from time import sleep ch1= MCP3002(channel=0) while True: try: value = (ch1.value *3.3)*100 print(round(value,5)) sleep(1) except KeyboardInterrupt: break |