はじめに
「優しいIT」という理念の基、ITコンサルタントをしている亀井亮介と申します!
現在、仕事では要求分析・要件定義を中心に上流工程をしていますが、プログラムも書きます!
優しいIT活動の一環として「教育用ようにプログラミング可能なPCを安価に提供する」理念の「Raspberry Pi 3(通称ラズパイ)」の紹介をします!
今回は、暗くなったらLEDを光らせます!防犯装置や農作物の光の管理に応用できそうですね!
ラズパイマガジン-2016年8月号 特集1 電子工作12の基本パターン ②暗くなったらLEDを点灯するを参考にしていますが、だいぶアレンジしています。
(ラズパイマガジンでは暗さの閾値を半固定抵抗を使っていますが、こちらはA/Dコンバータを使い明るさを取得し、プログラムの引数で閾値を設定しています。)
手順
- 配線
- プログラム illuminance_led.py
- プログラムを動かす
1. 配線
テキスト版
ラズパイ側から
- ラズパイ 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 https://github.com/RyosukeKamei/raspberrypi3.git
# 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. プログラムを動かす
$ 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+PHP)
Dockerを利用しApacheにPHP環境 + Eclipseを連携
Dockerを利用したFuelPHP開発環境構築
Docker利用したFuelPHP開発環境の初期設定とscaffoldを利用してCRUDスケルトン作成
FuelPHPのデータベースマイグレーション