본문 바로가기

Computer/Linux

라즈베리파이로 DHT22 와 BH1750 센서를 사용해서 온도 습도 조도 출력하기

온습도센서(dht22)의 핀번호는 9번이고, 조도센서(BH1750) 는 I2C를 이용해서 측정된다.


조도센서 설치관련     http://blog.heeseop.com/426

온습도센서 설치관련     http://blog.heeseop.com/420


#180224 아래 사진 DHT22가 파랑이고 BH1750가 노랑임, 뒤바꼈음







연월일시분초 온도 습도 조도 순서대로  | 를 기준으로 표시하게하는 스크립트



20160422164301 |24.5|46.4| 169.2 



#!/usr/bin/python

import Adafruit_DHT as dht

import datetime

import smbus

import time

import datetime


wtime = datetime.datetime.now().replace(second=0, microsecond=0)

stime = datetime.datetime.today().strftime("%Y%m%d%H%M%S")


h,t = dht.read_retry(dht.DHT229)


DEVICE     = 0x23 # Default device I2C address


POWER_DOWN = 0x00 # No active state

POWER_ON   = 0x01 # Power on

RESET      = 0x07 # Reset data register value



CONTINUOUS_LOW_RES_MODE = 0x13


CONTINUOUS_HIGH_RES_MODE_1 = 0x10


CONTINUOUS_HIGH_RES_MODE_2 = 0x11

ONE_TIME_HIGH_RES_MODE_1 = 0x20

ONE_TIME_HIGH_RES_MODE_2 = 0x21

ONE_TIME_LOW_RES_MODE = 0x23


bus = smbus.SMBus(1)  # Rev 2 Pi uses 1


def convertToNumber(data):

  return ((data[1] + (256 * data[0])) / 1.2)


def readLight(addr=DEVICE):

  data = bus.read_i2c_block_data(addr,ONE_TIME_HIGH_RES_MODE_1)

  return convertToNumber(data)


lt = round(readLight(),1)



print stime,'|{0:0.1f}|{1:0.1f}|'.format(t, h),lt