かべぎわブログ

技術的なことについてかけたらいいな…

RaspberryPiと光センサで部屋が暗くなったらLEDを点灯させる

今回はRaspberryPiと光センサ(フォトレジスタ)をつかって部屋が暗くなったらLEDを点灯させてみたいと思います。

配線図

f:id:kabegiwakun:20170906193423p:plain

かなり複雑です。
コードとあわせて後ほど説明します。

(参考)ADコンバータのピン機能表(参考)

f:id:kabegiwakun:20170825202229p:plain

MCP3008 8チャネル 10ビット A/Dコンバータ(SPI接続)

MCP3008 8チャネル 10ビット A/Dコンバータ(SPI接続)

各ピンはそれぞれ以下のような機能を持っています。

  • VDD - 電源
  • VREF - 基準電圧入力
  • AGND - アナログアース(GND)
  • CLK - シリアルクロック
  • Dout - シリアルデータアウト
  • Din - シリアルデータイン
  • CS/SHDN - チップセレクト/シャットダウン入力
  • DGND - デジタルアース
  • CH0~7 - アナログ入力

くわしくは以下から
http://akizukidenshi.com/download/ds/microchip/mcp3008.pdf

コード

RaspberryPi

かんたんな説明

まず、光センサというのはどういったものかというと、光の強弱で抵抗の値を変化させるセンサです。またの名を光抵抗器といいます。
これはアナログな値なので、RaspberryPiで利用する際はあいだにADコンバータをかませます。
0が暗く、4095が最も明るい値としてRaspberryPiでは認識されます。

さて、コードの説明をしていきます。
重要なのは60行目のif文です。
部屋の明るさが1500を下回っていたならLEDを点灯、そうでなければ消灯しています。
(1500としたのは私の部屋の明るさが3200くらいだったのでその半分くらい…といったかんじで設定しています。)

実際に動かしてみたところ


RaspberryPiと光センサで部屋が暗くなったらLEDを点灯させる

部屋を暗くするとLEDが点灯するのがわかるとおもいます。
また、光センサを手で抑えて暗くしても点灯します。

まとめ

今回はLEDを点灯させただけでしたが、部屋の明るさを検知して部屋の電気がつけっぱなしになっていたら通知するなど、いろいろ夢が広がりますね!