반응형

지난 글에서 0.96 인치 디스플레이 모듈에 텍스트를 표시하는 방법을 알아 보았다. 내친김에 DHT11 온습도 센서와 연결해서 온습도계를 만들어 보았다. 아두이노와 OLED 디스플레이의 연결은 기존 글에서와 같으며 거기에 DHT11 센서를 추가하고 아두이노 IDE의 시리얼 모니터에 출력하던 온도, 습도 데이터를 OLED 디스플레이에 출력하는 것으로 전환 하였다.






아두이노와 OLED 디스플레이와의 연결은 아래와 같이 하였다.

0.96" OLED Display Module 

Arduino Uno 

GND

GND

VDD

3.3V

SCK

D10

SDA

D9

RES

D13

DC

D11

CS

D12


아두이노와 DHT11 의 연결은 아래와 같이 하였다.

DHT11 

Arduino Uno 

GND

GND

VCC

5V

Signal

D2



■ 소스

아래의 소스를 실행하려면 OLED 관련 라이브러리 2개와 DHT11 라이브러리를 설치해야 한다.

Adafruit-GFX-Library-master.zip

Adafruit_SSD1306-master.zip

DHT11_library.zip

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
//** http://deneb21.tistory.com/430
 
#include <DHT11.h>
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
 
//DHT11 연결핀
#define DHT11_PIN   2
DHT11 dht11(DHT11_PIN);
 
//Software SPI 연결핀 설정
#define OLED_MOSI   9
#define OLED_CLK   10
#define OLED_DC    11
#define OLED_CS    12
#define OLED_RESET 13
Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
 
void setup() {
    display.begin();
    display.clearDisplay();
    display.setTextSize(1);
    display.setTextColor(WHITE);
}
 
void loop() {
  int err;
  float temp, humi;
  if((err=dht11.read(humi, temp))==0//온도, 습도 읽어와서 OLED 표시
  {
    display.setCursor(0,0);
    display.print("Temperature :");
    display.println(temp);
    display.print("Humidity :");
    display.println(humi);    
    display.display();
  }
  else                                //DHT11 에러일 경우 처리
  {
    display.setCursor(0,0);
    display.print("Error :");
    display.print(err);
    display.display();
  }
  delay(5000);                        //5초마다 측정
  display.clearDisplay();
}
cs


소스는 위와 같다. 어려운 부분은 없으며 DHT11 로 측정한 온도, 습도 값을 5초 마다 측정해서 OLED 디스플레이에 표시해 준다.

 

실행한 결과이다. 온도와 습도가 잘 표시되고 있으며 5초마다 디스플레이의 깜빡임도 거의 없이 온도와 습도가 갱신된다. 그나저나 33도라니 너무 덥다!



▶추가사항(2016.08.04) : "DHT11과 OLED 디스플레이를 이용한 온습도계 개선" 에 개선된 소스를 올려 놓았다.

반응형

+ Recent posts