2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Raspberry Pi 3でpythonを使い暗くなったらLEDを光らせる!

Last updated at Posted at 2016-08-13

はじめに

「優しいIT」という理念の基、ITコンサルタントをしている亀井亮介と申します!
現在、仕事では要求分析・要件定義を中心に上流工程をしていますが、プログラムも書きます!
優しいIT活動の一環として「教育用ようにプログラミング可能なPCを安価に提供する」理念の「Raspberry Pi 3(通称ラズパイ)」の紹介をします!

今回は、暗くなったらLEDを光らせます!防犯装置や農作物の光の管理に応用できそうですね!
ラズパイマガジン-2016年8月号 特集1 電子工作12の基本パターン ②暗くなったらLEDを点灯するを参考にしていますが、だいぶアレンジしています。
(ラズパイマガジンでは暗さの閾値を半固定抵抗を使っていますが、こちらはA/Dコンバータを使い明るさを取得し、プログラムの引数で閾値を設定しています。)

手順

  1. 配線
  2. プログラム illuminance_led.py
  3. プログラムを動かす

1. 配線

回路の写真を参考までに、こんな感じというイメージになれば
Raspberry Pi 3でpythonを使い暗くなったらLEDを光らせる!回路.jpg

動画にもしました
動画解説クリック→

テキスト版
ラズパイ側から

  • ラズパイ 1番ピン(3.3V) - ADコンバーター 8 Vdd - 照度センサー 左側
  • ラズパイ 19番ピン(MOSI) - ADコンバーター 5 MOSI
  • ラズパイ 21番ピン(MISO) - ADコンバーター 6 MISO
  • ラズパイ 23番ピン(SCLK) - ADコンバーター 7 CLK
  • ラズパイ 24番ピン(CE0) - ADコンバーター 1 CS
  • ラズパイ 6番ピン(GND) - ADコンバーター 4 Vss
  • ラズパイ 16番ピン(GPIO23) - LEDのプラス側 - LEDのマイナス側 - 抵抗(100Ω)

ADコンバーターから(差分だけ)

  • ADコンバーター 2番ピン(CH0) - 照度センサー 右側 - 抵抗(10kΩ) - GND

2. プログラム illuminance_led.py

GitHubにソースをアップしているので、お好きにお使いください。

gitでcloneする
$ git clone https://github.com/RyosukeKamei/raspberrypi3.git
illuminance_led.py
# GPIOを制御するライブラリ
import wiringpi
# タイマーのライブラリ
import time
# 引数取得
import sys

# GPIO定義 LED
led1_pin = 23 # 16番端子

# GPIO初期化
wiringpi.wiringPiSetupGpio()
wiringpi.pinMode( led1_pin, 1 )

# MCP3002(A/Dコンバータ)を接続したチャンネルを指定
SPI_CH = 0

# 読み込み対象のMCP3002(A/Dコンバータ)のアナログ入力チェンネルを指定
READ_CH = 0

# 明るさの閾値を引数指定
param = sys.argv
set_illuminance = int(param[1])

# SPI初期化
wiringpi.wiringPiSPISetup( SPI_CH, 1000000 )

while True:
    # LEDを消灯
    wiringpi.digitalWrite( led1_pin, 0 )

    # MCP3002(A/Dコンバータ)に送るデータを作成
    buffer = 0x6800 | ( 0x1800 * READ_CH )
    buffer = buffer.to_bytes( 2, byteorder='big' )

    # SPIを使ってCH0の値を取得
    wiringpi.wiringPiSPIDataRW( SPI_CH, buffer )

    # 値が2バイトに分かれて送られるので、1つの値にまとめる
    illuminance_value = ( buffer[0] * 256 + buffer[1] ) & 0x3ff

    # 明るさの閾値と照度を出力
    print ("明るさのしきい値 : " + str(set_illuminance) )
    print ("照度 : " + str(illuminance_value) )

    # 明るさの基準値を超えたら「明るい」下回ったら「暗い」と表示
    if ( illuminance_value > set_illuminance ):
        print ("明るいのでLEDを消灯")
        wiringpi.digitalWrite( led1_pin, 0 )
    else:
        print ("暗いのでLEDを点灯")
        wiringpi.digitalWrite( led1_pin, 1 )

    # 1秒ずつ検出
    time.sleep(1)

3. プログラムを動かす

動かしている様子を動画に収めました。
動画解説クリック→

明るさの閾値を500に設定
$ sudo python3 illuminance_led.py 500

サイトマップ

Raspberry Pi 3 (ラズパイ)セットアップ

Raspberry Pi 3インストール→無線LAN→日本語入出力→Macから操作

Raspberry Pi 3 にDockerを乗せてPython+MySQL環境を構築!

RaspberryPi3(ラズパイ)にDockerをインストール
RaspberryPi3(ラズパイ)にDockerでPython+bottle+MySQL環境構築する!【簡単構築編】
RaspberryPi3(ラズパイ)にDockerでPython+bottle+MySQL環境構築する!【試行錯誤編】

Raspberry Pi 3でエアコン一体型パソコン「airpi」を作る!

Raspberry Pi 3でエアコン一体型パソコン「airpi」を作る!

Raspberry Pi 3 (ラズパイ)とpythonで遊ぼう

Raspberry Pi 3でプログラミングをする Node-REDと普通にプログラミング
Raspberry Pi 3でpythonを使いLEDを光らせる(Hello World)
Raspberry Pi 3でスイッチの状態を検出する
Raspberry Pi 3でpythonを使いサーボモータを動かす
Raspberry Pi 3でpythonを使いモータードライバーを使いモータを制御する!
Raspberry Pi 3でpythonを使いスライドスイッチを検出する!
Raspberry Pi 3でpythonを使い磁石スイッチを検出する!
Raspberry Pi 3でpythonを使い温度を検出する!
Raspberry Pi 3でpythonを使いブザーを鳴らす!
Raspberry Pi 3でpythonを使いA/Dコンバーターでアナログ信号を検出する!
Raspberry Pi 3でpythonを使い「明るさ」を検出する!
Raspberry Pi 3でpythonを使い「温度(A/Dコンバーターを利用)」を検出する!
Raspberry Pi 3でpythonを使い「7セグメントLED」に出力する!
Raspberry Pi 3でpythonを使いスイッチ制御でLEDを光らせる!
Raspberry Pi 3でpythonを使い暗くなったらLEDを光らせる!

テスト駆動開発を重点においた規則

コーディング規則「優しいコードを書こう」(FuelPHP)
命名規則「3ヶ月後の自分自身に優しく、チームに優しく、まだ見ぬメンバーに優しく」

Docker+PythonでWebアプリケーション開発

Docker上のCentOSにPython3と、関連ライブラリpip, virtualenvとフレームワークDjango, bottle, Flaskのインストール!これらをまとめたDockerfile付き!

開発しやすい環境構築(Docker+PHP)

Dockerを利用しApacheにPHP環境 + Eclipseを連携
Dockerを利用したFuelPHP開発環境構築
Docker利用したFuelPHP開発環境の初期設定とscaffoldを利用してCRUDスケルトン作成
FuelPHPのデータベースマイグレーション

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?