본문 바로가기

Computer/Linux

라즈베리파이 온도 습도 센서 DHT22 AM2302 연결




#gpiopin 4번을 추가

sudo nano /boot/config.txt

dtoverlay=w1-gpio,gpiopin=4

#gpiopin=4 << 여기서 4는 GPIO4번핀 가리킴



#온도 센서를 기본 모듈에 추가

sudo nano /etc/modules

w1-gpio

w1-therm

 

#reboot을 통해 설정값을 적용

$sudo reboot

 

#Module 설치

git clone https://github.com/adafruit/Adafruit_Python_DHT.git

[git 이 설치되어 있지 않은경우 sudo apt-get install git]

cd Adafruit_Python_DHT

sudo apt-get update

sudo apt-get install build-essential python-dev python-openssl

sudo python setup.py install


#테스트

cd examples

sudo ./AdafruitDHT.py 2302 4


마지막에 4는 핀넘버


#재부팅

sudo reboot -h 0


#실행 py 언어 (temp.py) 로 저장

import Adafruit_DHT as dht

import datetime


wtime = datetime.datetime.now()


h,t = dht.read_retry(dht.DHT22, 4)

print wtime, 'Temp={0:0.1f}*C  Humidity={1:0.1f}%'.format(t, h) 



# 작동여부 Test

sudo python temp.py

예) 2016-02-17 20:40:02.125806 Temp=22.4*C Humidity=34.6%



Crontab 실행 후 아래 입력

crontab -e


#예제1 - 매 10분마다 온도를 기록

*/10 * * * * sudo python /var/www/html/temp.py >> /var/www/html/temp.txt



#예제2 - 매 10분마다 온도를 기록하는데, 파일명 뒤에 오늘의 날짜를 연월일 순서로 기입, 예를들어 temp-20160219.txt 로 생성

*/10 * * * * sudo python /var/www/html/temp.py >> /var/www/html/temp/temp-`/bin/date +\%Y\%m\%d`.txt

# 일반적으로 일월년을 불러들이는 명령어는 date +%Y%m%d  인데, % 앞에 "\"를 붙여야 인식이 되었다.

# 명령어 시작과 끝은 ` 를 붙여야했다 (키보드 왼쪽위 "~" 자리에 있음)




Crontab 세팅

*/10 * * * * sudo /usr/bin/python /home/pi/temp.py


temp.py script



import Adafruit_DHT as dht

import datetime

import urllib2



wtime = datetime.datetime.now()


h,t = dht.read_retry(dht.DHT22, 4)

#print wtime, 'Temp={0:0.1f}*C  Humidity={1:0.1f}%'.format(t, h)


rt = round(t,1)

rh = round(h,1)


thingspeakurl = 'https://api.thingspeak.com/update?api_key=API키&field1={}&field2={}'.format(rt, rh)

contents = urllib2.urlopen(thingspeakurl).read()


telegramurl = 'https://api.telegram.org/bot봇ID/sendMessage?chat_id=@채널키&text=%EC%98%A8%EB%8F%84={}%20%20%EC%8A%B5%EB%8F%84={}'.format(rt,rh)

contents = urllib2.urlopen(telegramurl).read()