본문 바로가기

개발자/라즈베리파이4

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

반응형

 

 

라즈베리파이 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(온습도센서) 

 

 

 

반응형

캐어랩 고객 지원

취업, 창업의 막막함, 외주 관리, 제품 부재!

당신의 고민은 무엇입니까? 현실과 동떨어진 교육, 실패만 반복하는 외주 계약, 아이디어는 있지만 구현할 기술이 없는 막막함.

우리는 알고 있습니다. 문제의 원인은 '명확한 학습, 실전 경험과 신뢰할 수 있는 기술력의 부재'에서 시작됩니다.

이제 고민을 멈추고, 캐어랩을 만나세요!

코딩(펌웨어), 전자부품과 디지털 회로설계, PCB 설계 제작, 고객(시장/수출) 발굴과 마케팅 전략으로 당신을 지원합니다.

제품 설계의 고수는 성공이 만든 게 아니라 실패가 만듭니다. 아이디어를 양산 가능한 제품으로!

귀사의 제품을 만드세요. 교육과 개발 실적으로 신뢰할 수 있는 파트너를 확보하세요.

지난 30년 여정, 캐어랩이 얻은 모든 것을 함께 나누고 싶습니다.

카카오 채널 추가하기

카톡 채팅방에서 무엇이든 물어보세요

당신의 성공을 위해 캐어랩과 함께 하세요.

캐어랩 온라인 채널 바로가기

캐어랩