개발자/라즈베리파이4

라즈베리파이 4 Adafruit DHT11 DHT22 온도 습도 센서 문제

지구빵집 2021. 11. 11. 14:15
반응형

 

 

라즈베리파이 4 Adafruit DHT11 DHT22 온도 습도 센서 문제 

 

테스트 환경은 라즈베리4, 라즈비안os, 파이썬 3.7이다. 각각 정확한 버전은 잘 모르겠다. 환경설정은 준비되었다 하고 아래를 참고하여 온습도센서 라이브러리를 다운받을 수 있다. 

 

깃허브 사이트 다운과 참고

 

연결도는 아래와 같다.

 

라즈베리파이 4와 dht11 연결도

 

 

계속 문제가 생긴 이유는 메세지가 뜨고 Read error 발생하고, 응답없는 이유는 라즈베리파이 4 여서다.

 

cannot import name 'Beaglebone_Black_Driver' from 'Adafruit_DHT' 에러가 뜬다면 아마 라즈베리4일 것이다.

 

아래 명령대로 하면 잘 된다. 

이전 것들을 다 지운다

$ sudo rm -rf Adafruit_Python_DHT/  

 

라즈베리파이로 깃 파일을 카피한다. 

 

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

 

GitHub - adafruit/Adafruit_Python_DHT: Python library to read the DHT series of humidity and temperature sensors on a Raspberry

Python library to read the DHT series of humidity and temperature sensors on a Raspberry Pi or Beaglebone Black. - GitHub - adafruit/Adafruit_Python_DHT: Python library to read the DHT series of hu...

github.com

 

폴더를 바꾸고 

$ cd Adafruit_Python_DHT/ 

$ sudo python3 setup.py install 

 

아래 파일을 열어서 밑에 설명대로 코드를 수정한다.

$sudo nano /usr/local/lib/python3.7/dist-packages/Adafruit_DHT/platform_detect.py  

 

테스트 코드는 dht11test4.py 이고 소스는 아래에 있다.

 

import time
import Adafruit_DHT

sensor = Adafruit_DHT.DHT11

pin = 4

try:

    while True :

        h, t = Adafruit_DHT.read_retry(sensor, pin)

        if h is not None and t is not None :
            print("Temperature = {0:0.1f}*C Humidity = {1:0.1f}%".format(t, h))
        else :
            print('Read error')
            time.sleep(100)
except KeyboardInterrupt:
    print("Terminated by Keyboard")

finally:
    print("End of Program")

실행한다.

$python3 dht11test4.py 

 

결과는 아래와 같이 아름다운 화면을 보여준다.

 

pi@raspberrypi:~ $ python3 dht11test4.py
Temperature = 29.0*C Humidity = 22.0%
Temperature = 29.0*C Humidity = 22.0%
Temperature = 29.0*C Humidity = 22.0%
Temperature = 29.0*C Humidity = 22.0%
Temperature = 29.0*C Humidity = 22.0%
Temperature = 29.0*C Humidity = 22.0%

 

아래는 라즈베리4가 나오면 Adafruit측에서도 라즈베리4에 대한 업데이트를 해줘야하는데 작성일 기준 아직 업데이트가 안되었다. 각 라즈베리마다 칩셋명이 있는데 라즈베리4의 칩셋명이 BCM2711이다. 해당 칩셋명을 추가하기 위해 아래와 같이 vim 또는 nano를 통해 해당 라이브러리를 접근한뒤  

 

다음 파일을 열어서 sudo nano /usr/local/lib/python3.7/dist-packages/Adafruit_DHT/platform_detect.py 

111번째 줄에 아래와 같이 라즈베리4에 대한 칩셋 코드를 추가한다. 

 

참고 링크에 있음.

 

아 참~ 왜 이렇게 힘드냐. ㅠ.ㅠ

 

참고

[Python] 라즈베리4 Adafruit DHT11/21/22(온습도센서) 

 

 

 

반응형