온습도센서 DHT11
-온도,습도값을 측정할 수 있는 센서는 수없이 많으나 본  프로젝트에서는 다음과  같은 아두이노용 DHT11센서를 사용한다.


-DHT11 센서는 VCC(+) 단자와 - 단자에 3.3~5V전압을 가해주면  좌측 S 단자를 통해 온도와 습도 측정값을  Digital 값으로 전송해 준다.

 

라이브러리 설치
 IDE 스케치 메뉴 -> 라이브러리 포함하기 -> 라이브러리관리하기 화면에서   "DHT11" 를 검색하여 설치한다.

 

아두이노와 연결
 DHT11 센서로 측정된 온도,습도값을 LCD Display장치에 표시하기 위해서  다음과 같이 연결한다.  

 

테스트프로그램


4~7 line: 디지털 3번 핀을 통해 연결된 DHT11센서 장치를 dht라는 이름으로 선언
12 line : dht  장치 초기화하여 시작  
18~19 line :  온도와 습도값을 받아 temp, humid라는 변수에 보관 
21~25 line : lcd 장치에 온도값 Display  
26~31 line : lcd 장치에 습도값 Display  

 

 

1.과제목표

 

- 지금까지 실습한 LCD, 키패드, 부저 기능을 종합하여 다음과 같은 기능을 가진  "남은 여생 날짜수 계산기" 시스템을 구성하시오.

1) 아두이노를 기동시키면 나이를 물어 보고  

2) 사용자는 키패드로 나이를  2자리 숫자로 입력 ( 숫자를 누를때 숫자입력 확인용으로  짧은 비프음을 출력하고, 숫자 아닌 기호를 누를 때는 무시 )

3) 2자리 숫자가 완료되면 입력이 완료되었다는 의미로 멜로디 효과음을 출력하고  100세 까지 남은 날짜수를 계산하여 3초간 표시. 

4) 위작업을 계속 반복

 

 

2. 아두이노 연결

 

 

3.샘플프로그램

 

22 line:  입력되는 나이를 저장할 변수
23 line: 계산되는 100세까지 남은 일수를 저장할 변수, int범위인 32,767을 초과할 수 있으니 long type으로 선언해 주어야 한다.
28~35 line: 프르그램 시작할 때 화면에 설명할 내용을 3초간 표시한다
45~51 line : 키패드로 부터 입력된 문자가 숫자이면 비프음을 출력하고 while반복에서 빠져   나온다. 숫자입력이 아니면 계속 입력을 받아들인다   
44~55 line: 2자리 숫자가 완성될 때까지 입력받아 화면에 표시한다. 
58 line: 100세 까지 남은 일수를 계산하여 long type 변수로 저장한다.
59~72 : 멜로디 음과 LCD화면 표시내용을 출력하고 3초간 대기한다.

 

 

LCD Display장치

 본 프로젝트에서는 16문자 x 2줄 Text를 표시할 수 있고, I2C방식 Interface모듈이 부착되어 있는 다음과 같은 LCD디스플레이 장치를 사용한다.
 

 

 

 

 

LCD 라이브러리 설치
 - 아두이노와 LCD장치간 연결( I2C방식통신)을 하기 위해서는 전용 라이브러리를 추가로 설치해 주어야 한다.
 - IDE 스케치 메뉴 -> 라이브러리 포함하기 -> 라이브러리관리하기 화면에서  "LiquidCrystal I2C" 를 검색하여 설치한다.

 

아두이노와 연결

 


- I2C방식통신을 위해서 위와 같이 전원선과 아날로그 4번핀/5번핀에  연결해야 하나

- 프로토타이핑 보드에서는 편리를 위해 우측과 같이 별도의 핀으로 구성되어 있으므로 여기에 표시된 핀번호끼리 연결해도 되며 아날로그 4번핀/5번핀에 다른 I2C방식 장치를 추가로 연결할 수 있다.    


 

테스트프로그램

3 line: LiquidCrystal_I2C lcd(0x27,16,2);   0x27 Adress에 연결되는 16문자 2줄 짜리 I2C방식 LCD장치를  lcd라는 이름으로 선언
8 line:  lcd.backlight();  : 백라이트 켜기 
9 line: lcd.setCursor(col,line) 로 커서의 위치를 지정한다 ( 숫자는 0부터 시작함에 주의 )    
         예 ) (0,0) : 첫째 줄 첫째 문자,     (2,1) : 둘째 줄 세번째 문자,
10 line: lcd.print("Hello, everyone!"); 현재 커서위치에 지정하는 문자열을 출력

  
-lcd.clear();  : lcd 문자 모두 지우기

 

LCD화면에 문자가 표시 되지 않을 경우 
 - LCD 밝기 조절 볼륨을 돌려 화면 밝기을 조절 해 본다.  

 - LCD I2C장치의 Address는 통상 0x27  또는 0x3F 이므로 Address를 0x27 대신 0x3F를  지정한 후  다시 프로그램 업로드하여 테스트해 본다   (장치 제조사별로 다른 Address를 사용하는 경우도 있는데 아래의 장치 Address  Scan 프로그램으로 현재연결된 장치의 Address를 알아 낼 수 있다. )

참조: 장치 Address scan 프로그램 
 - 다음 소스코드를 아두이노로 업로드하여 실행시키고 툴->시리얼모니터화면에  표시되는 메세지를 보면 현재 연결된 장치의 Adress를 확인할 수 있다. 

+ Recent posts