- DHT11 센서 개요 :
- 전제 조건 :
- Raspberry Pi에 Adafruit LCD 라이브러리 설치 :
- Raspberry Pi에 Adafruit DHT11 라이브러리 설치 :
- 회로도 :
- DHT11 센서 용 Python 프로그래밍 :
- Raspberry Pi를 사용하여 습도 및 온도 측정 :
온도 및 습도는 모든 환경에서 모니터링되는 가장 일반적인 매개 변수입니다. 온도와 습도 를 측정 하기 위해 선택할 수있는 수많은 센서가 있지만 가장 많이 사용되는 센서 는 적절한 측정 범위와 정확도로 인해 DHT11 입니다. 또한 단일 핀 통신으로 작동하므로 마이크로 컨트롤러 또는 마이크로 프로세서와의 인터페이스가 매우 쉽습니다. 이 튜토리얼에서는 인기있는 DHT11 센서를 Raspberry Pi 와 인터페이스하고 16x2 LCD 화면에 온도 및 습도 값을 표시하는 방법 을 알아 봅니다. 우리는 이미 IoT Raspberry Pi Weather Station을 구축하는 데 사용했습니다.
DHT11 센서 개요:
DHT11 센서는 다음 사양으로 상대 습도 및 온도를 측정 할 수 있습니다.
온도 범위: 0-50 ° C 온도 정확도: ± 2 ° C 습도 범위: 20-90 % RH 습도 정확도: ± 5 %
DHT11 센서는 모듈 형태 또는 센서 형태로 제공됩니다. 이 튜토리얼에서 우리는 센서의 모듈 형태를 사용하고 있습니다. 두 가지의 유일한 차이점은 모듈 형태의 센서에는 필터링 커패시터와 센서의 출력 핀에 연결된 풀업 저항이 있다는 것입니다. 따라서 센서 만 사용하는 경우이 두 구성 요소를 추가해야합니다. 또한 Arduino와 인터페이스하는 DHT11을 배우십시오.
DHT11 센서 작동 방식:
DHT11 센서는 파란색 또는 흰색 케이스와 함께 제공됩니다. 이 케이스 안에는 상대 습도와 온도를 감지하는 데 도움 이되는 두 가지 중요한 구성 요소가 있습니다. 첫 번째 구성 요소는 한 쌍의 전극입니다. 이 두 전극 사이의 전기 저항은 수분 유지 기판에 의해 결정됩니다. 따라서 측정 된 저항은 환경의 상대 습도에 반비례합니다. 상대 습도가 높을수록 저항 값이 낮아지고 그 반대의 경우도 마찬가지입니다. 또한 상대 습도는 실제 습도와 다릅니다. 상대 습도는 공기 중 온도를 기준으로 공기 중 수분 함량을 측정합니다.
다른 구성 요소는 표면 장착 NTC 서미스터 입니다. NTC라는 용어는 음의 온도 계수를 나타내며 온도가 증가하면 저항 값이 감소합니다.
전제 조건:
Raspberry Pi가 이미 운영 체제와 함께 플래시되고 인터넷에 연결할 수 있다고 가정합니다. 그렇지 않은 경우 계속하기 전에 Raspberry Pi 시작하기 자습서를 따르십시오.
또한 터미널 창이나 Python 프로그램을 작성 및 실행하고 터미널 창을 사용할 수있는 다른 응용 프로그램을 통해 pi에 액세스 할 수 있다고 가정합니다.
Raspberry Pi에 Adafruit LCD 라이브러리 설치:
온도 및 습도 값은 16 * 2 LCD 디스플레이에 표시됩니다. Adafruit는이 LCD를 4 비트 모드에서 쉽게 작동 할 수있는 라이브러리를 제공하므로 터미널 창 Pi를 열고 아래 단계에 따라 Raspberry Pi에 추가하겠습니다.
1 단계: 아래 줄을 사용하여 Raspberry Pi에 git을 설치합니다. Git을 사용하면 Github의 모든 프로젝트 파일을 복제하고 Raspberry pi에서 사용할 수 있습니다. 라이브러리는 Github에 있으므로 해당 라이브러리를 pi로 다운로드하려면 git을 설치해야합니다.
apt-get install git
2 단계: 다음 줄은 라이브러리가있는 GitHub 페이지에 연결됩니다. Pi 홈 디렉터리에서 프로젝트 파일을 복제하는 줄을 실행하기 만하면됩니다.
git clone git: //github.com/adafruit/Adafruit_Python_CharLCD
3 단계: 아래 명령을 사용하여 디렉터리 줄을 변경하고 방금 다운로드 한 프로젝트 파일로 이동합니다. 명령 줄은 다음과 같습니다.
cd Adafruit_Python_CharLCD
4 단계: 디렉토리 안에 setup.py 라는 파일이있을 것 입니다. 라이브러리를 설치하려면이를 설치해야합니다. 다음 코드를 사용하여 라이브러리를 설치하십시오.
sudo python setup.py 설치
즉 , 라이브러리가 성공적으로 설치되어야합니다. 이제 마찬가지로 Adafruit에서도 제공되는 DHT 라이브러리 설치를 진행하겠습니다.
Raspberry Pi에 Adafruit DHT11 라이브러리 설치:
DHT11 센서는 단선 시스템의 원리로 작동합니다. 온도 및 습도 값은 센서에 의해 감지되고 출력 핀을 통해 직렬 데이터로 전송됩니다. 그런 다음 MCU / MPU의 I / O 핀을 사용하여 이러한 데이터를 읽을 수 있습니다. 이러한 값을 읽는 방법을 이해하려면 DHT11 센서의 데이터 시트를 읽어야하지만 지금은 간단하게 유지하기 위해 라이브러리를 사용하여 DHT11 센서와 통신합니다.
DHT11 라이브러리 그리고 Adafruit 의해 제공뿐만 DHT11, DHT22 다른 하나의 와이어의 온도 센서에 사용될 수있다. DHT11 라이브러리 설치 절차는 LCD 라이브러리 설치 절차와 유사합니다. 변경되는 유일한 줄은 DHT 라이브러리가 저장된 GitHub 페이지의 링크입니다.
터미널에 4 개의 명령 줄을 하나씩 입력하여 DHT 라이브러리 를 설치합니다.
git clone
cd Adafruit_Python_DHT sudo apt-get install build-essential python-dev sudo python setup.py install
완료되면 두 라이브러리가 모두 Raspberry Pi에 성공적으로 설치됩니다. 이제 하드웨어 연결을 진행할 수 있습니다.
회로도:
DH11과 Raspberry pi를 연결 하는 전체 회로도 는 아래에 나와 있으며 Fritzing을 사용하여 구축되었습니다. 연결을 따르고 회로를 만드십시오.
LCD와 DHT11 센서 는 모두 + 5V 공급으로 작동하므로 Raspberry Pi의 5V 핀을 사용하여 둘 다에 전원을 공급합니다. DHT11 센서의 출력 핀에 1k 값의 풀업 저항이 사용됩니다. 모듈을 사용하는 경우이 저항을 피할 수 있습니다.
10k 의 트리머 포트가 LCD의 Vee 핀에 추가되어 LCD의 대비 수준을 제어합니다. 그 외에는 모든 연결이 매우 간단합니다. 그러나 프로그램에서 필요하므로 핀을 연결하는 데 사용하는 GPIO 핀을 기록해 두십시오. 아래 차트를 통해 GPIO 핀 번호를 파악할 수 있습니다.
차트를 사용하고 회로도에 따라 연결하십시오. 브레드 보드와 점퍼 와이어를 사용하여 연결했습니다. DHT11 모듈을 사용했기 때문에 Raspberry Pi에 직접 연결했습니다. 내 하드웨어는 다음과 같습니다.
DHT11 센서 용 Python 프로그래밍:
DHT11 센서에서 온도와 습도 값 을 읽어 LCD에 표시 하는 프로그램을 작성해야합니다. LCD 및 DHT11 센서 용 라이브러리를 모두 다운로드 했으므로 코드는 매우 간단합니다. 파이썬 전체 프로그램은 이 페이지의 끝에서 찾을 수 있습니다,하지만 당신은 프로그램이 어떻게 작동하는지 이해하는 것이 더 읽을 수 있습니다.
우리는 필요 가 LCD 라이브러리와 DHT11 라이브러리를 가져 그와 관련된 기능을 사용하는 우리의 프로그램에. 이미 Pi에 다운로드하여 설치 했으므로 다음 줄을 사용하여 가져올 수 있습니다. 또한 지연 기능을 사용하기 위해 시간 라이브러리 를 가져옵니다.
가져 오기 시간 # 지연 생성을위한 가져 오기 시간 가져 오기 Adafruit_CharLCD를 LCD로 가져 오기 #LCD 라이브러리 가져 오기 가져 오기 Adafruit_DHT # 센서 용 DHT 라이브러리 가져 오기
다음으로 센서가 연결된 핀 과 사용되는 온도 센서 유형 을 지정해야합니다. 여기서는 DHT11 센서를 사용하고 있으므로 sensor_name 변수 는 Adafruit_DHT.DHT11에 할당됩니다. 센서의 출력 핀은 Raspberry Pi의 GPIO 17에 연결되어 있으므로 아래와 같이 17을 sensor_pin 변수에 할당합니다.
sensor_name = Adafruit_DHT.DHT11 # 우리 는 DHT11 센서를 사용하고 있습니다 sensor_pin = 17 # 센서는 Pi의 GPIO17에 연결됩니다.
마찬가지로 LCD가 연결된 GPIO 핀도 정의해야합니다. 여기에서는 LCD를 4 비트 모드 로 사용하고 있으므로 pi의 GPIO 핀에 연결하기위한 4 개의 데이터 핀과 2 개의 제어 핀이 있습니다. 또한 백라이트를 제어하려는 경우 백라이트 핀을 GPIO 핀에 연결할 수 있습니다. 그러나 지금은 그것을 사용하지 않기 때문에 0을 할당했습니다.
lcd_rs = 7 #LCD의 RS가 PI의 GPIO 7에 연결됨 lcd_en = 8 #LCD의 #EN이 PI의 GPIO 8에 연결됨 lcd_d4 = 25 #LCD의 D4가 PI의 GPIO 25에 연결됨 lcd_d5 = 24 #LCD의 D5가 PI lcd_d6 = 23 에서 GPIO 24에 연결됨 LCD의 # D6은 PI에서 GPIO 23에 연결됨 lcd_d7 = 18 # LCD의 # D7은 PI에서 GPIO 18에 연결됨 lcd_backlight = 0 #LED가 연결되지 않았으므로 0으로 할당합니다.
Raspberry pi를 사용하여 8 비트 모드에서 LCD를 연결할 수도 있지만 사용 가능한 핀이 줄어 듭니다.
다운로드 한 Adafruit의 LCD 라이브러리는 모든 유형의 특성 LCD 디스플레이에 사용할 수 있습니다. 여기 우리 프로젝트에서는 16 * 2 LCD 디스플레이를 사용하고 있으므로 아래와 같이 변수에 대한 행과 열의 수를 언급합니다.
lcd_columns = 16 # 16 * 2 LCD의 경우 lcd_rows = 2 # 16 * 2 LCD의 경우
이제 LCD 핀과 LCD의 행 및 열 수를 선언 했으므로 필요한 모든 정보를 라이브러리로 보내는 다음 줄을 사용하여 LCD 디스플레이 를 초기화 할 수 있습니다.
lcd = LCD.Adafruit_CharLCD (lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight) # 모든 핀 세부 정보를 라이브러리로 전송
프로그램을 시작하기 위해 lcd.message () 함수를 사용하여 작은 소개 메시지 를 표시 한 다음 메시지를 읽을 수 있도록 2 초의 지연 시간을 제공합니다. 두 번째 줄 에 인쇄하려면 다음과 같이 \ n 명령을 사용할 수 있습니다.
lcd .message ('DHT11 with Pi \ n -CircuitDigest') # 인트로 메시지 제공 time.sleep (2) # 2 초 동안 대기
마지막으로 while 루프 내 에서 센서 의 온도 및 습도 값을 읽고 2 초마다 LCD 화면에 표시해야합니다. while 루프 내부의 전체 프로그램은 다음과 같습니다.
while 1: # 무한 루프
습도, 온도 = Adafruit_DHT.read_retry (sensor_name, sensor_pin) # 센서에서 읽고 각 값을 온도 및 습도 변수에 저장
lcd.clear () #LCD 화면 지우기 lcd.message ('Temp = %.1f C'% temperature) # 온도 값 표시 lcd.message ('\ nHum = %.1f %%'% 습도) #Display Humidity time.sleep (2) 값 # 2 초 동안 기다린 다음 값을 업데이트합니다.
아래의 한 줄을 사용하여 센서에서 온도 및 습도 값을 쉽게 얻을 수 있습니다. 보시다시피 가변 습도 및 온도에 저장된 두 개의 값을 반환합니다. 센서 _ 및 sensor_pin 세부 사항은 매개 변수로 전달된다 이 값은 프로그램 시작시 업데이트되었습니다.
습도, 온도 = Adafruit_DHT.read_retry (sensor_name, sensor_pin)
LCD 화면에 변수 이름을 표시하기 위해 & d, % c 등과 같은 식별자를 사용할 수 있습니다. 여기서는 소수점 뒤에 한 자리 만 포함 된 부동 소수점 숫자를 표시하므로 값 을 표시하는 데 %.1f 식별자를 사용합니다 . 가변 온도 및 습도
lcd .message ('Temp = %.1f C'% temperature) lcd .message ('\ nHum = %.1f %%'% 습도)
Raspberry Pi를 사용하여 습도 및 온도 측정:
회로도에 따라 연결하고 필요한 라이브러리를 설치하십시오. 그런 다음이 페이지 끝에있는 파이썬 프로그램을 시작하십시오. LCD에 소개 메시지가 표시된 다음 아래 이미지와 같이 현재 온도 및 습도 값이 표시됩니다.
LCD에 아무것도 표시되지 않으면 Python 셸 창에 오류가 표시되는지 확인하고 오류가 표시되지 않으면 연결을 한 번 더 확인하고 전위차계를 조정하여 LCD의 대비 수준을 변경하고 아무것도 켜져 있는지 확인하십시오. 화면.
프로젝트를 이해하고 빌드하는 것을 즐겼기를 바랍니다.이 작업을 수행하는 데 문제가있는 경우 의견 섹션에보고하거나 포럼을 사용하여 기술적 인 도움을 받으십시오. 모든 의견에 최선을 다하겠습니다.
다른 마이크로 컨트롤러와 함께 DHT11을 사용하여 다른 프로젝트를 확인할 수도 있습니다.