본문 바로가기
Arduino(아두이노) 활용 강좌

Arduino Uno 로 0.96 I2C OLED와 DHT11 온습도 센서를 사용해서 OLED 에 실내 온습도 출력해 보기

by 오마이엔지니어 2018. 1. 5.
반응형

Arduino Uno 로 0.96 I2C OLED와 DHT11 온습도 센서를 사용해서 OLED 에 실내 온습도 출력해 보는 프로젝트 입니다

OLED(Organic Light Emitting Diodes)란?

유기발광다이오드 또는 유기EL이라고도 부르며 형광성 유기화합물에 전류가 흐르면 빛을 내는
전계 발광 현상을 이용하여 스스로 빛을 내는 '자체발광형 유기물질'을 일컫습니다

OLED의 특징
낮은 전압에서 구동이 가능하고 얇은 박형으로 만들 수 있으며
넓은 시야각과 빠른 응답속도를 갖고 있어 일반 LCD와 달리 바로 옆에서 보아도 화질이 변하지 않으며 화면에 잔상이 남지 않습니다
또한 소형 화면에서는 LCD이상의 화질과 단순한 제조공정으로 인한 유리한 가격 경쟁력을 갖습니다
휴대전화나 카오디오, 디지털카메라와 같은 소형기기의 디스플레이에 주로 사용하고 있습니다




본 테스트에서는 위 0.96인치 I2C 타입 OLED1.3인치 I2C 타입 OLED 를 사용해서 진행하였습니다
위 두 모델은 SPI 타입도 있으나 I2C 타입이 배선하기도 편하고 사용하기 편리해서 I2C 타입으로 진행하였습니다
SPI타입도 조금만 검색해 보면 많은 레퍼런스가 공유되고 있기때문에 어렵지 않게 테스트 해볼수 있습니다 

0.96인치 와 1.3인치 OLED 모두 128 X 64 해상도의 사양이나 드라이버 칩이 틀립니다
0.96인치는 SSD1306 드라이버 칩이 장착되어 있으며 1.3인치는 SH1106 드라이버 칩이 장착되어 있습니다

SSD1306 Datasheet.pdf

SH1106 datasheet.pdf
첨부된 데이터시트를 확인해 보면 알수 있듯이 SSD1306 은 RAM 용량이 128 X 64 bit 입니다
반면 SH1106 은 RAM 용량이 132 X 64 bit 입니다
때문에 SSD1306 과 SH1106 의 프로그램은 일정부분 호환이 가능하지만 SH1106 으로 SSD1306 의 프로그램을 사용하려면
라이브러리를 (0X02) 부터 화면을 시작하도록 수정해 주어야 합니다

두 OLED 모두 I2C통신 방식으로 단 2개의 라인 (SCL, SDA)으로 통신할수 있으며, 3.3V & 5V 동작전압으로 사용이 가능합니다 

사용된 부품
아두이노 우노 (Italy)

0.96인치 I2C OLED 화이트
DHT11 온습도 센서
브래드보드

점퍼케이블

구성 배선도


사용된 라이브러리
0.96인치 OLED는 u8glib 범용 그래픽 라이브러리 Adafruit 라이브러리사용해서 구동시킬수 있습니다
본 테스트에서는 Adafruit 라이브러리와 DHT 라이브러리를 사용해서 진행하였습니다 


Adafruit-GFX-Library-master.zip

Adafruit_SSD1306-master.zip

DHT-sensor-library-master.zip


우선 위 세가지 라이브러리를 기본적으로 설치해 주어야 합니다

라이브러리 추가 방법은 Arduino IDE 설치하기 포스팅을 참조해 주세요

하지만 Goole 이나 GitHub 에 공유되고 업로드 되어있는 위 세가지 라이브러리를 다운 받아서 그대로 프로젝트를 진행하면
틀림없이 컴파일 에러 메세지를 확인하게 될 것 입니다
추가적으로 반드시

Adafruit_SSD1306-master 폴더 안에는 SPI.h 그리고 SPI.cpp 파일을 넣어 주어야 합니다
DHT-sensor-library-master 폴더 안에는 Adafruit_Sensor.h 파일을 넣어 주어야 합니다


위에 첨부하여 올린 세가지 라이브러리 압축파일은 제가 테스트 하면서 파일을 추가로 넣어 주었습니다

그대로 다운 받아서 사용하면 됩니다

하지만 위에서 언급했듯이 Goole 이나 GitHub 에 공유되고 업로드 되어있는 위 세가지 라이브러리를 다운 받아서 그대로 프로젝트를 진행하면

No Search XXX . h 에러 메세지를 확인하게 될것 입니다

예제코드에서는 확인하지 못했지만 Adafruit_SSD1306.cpp 파일에서 SPI.h 파일을 불러서 사용하는 것 같습니다
Adafruit_Sensor.h 파일도 그런 마찬가지 이유로 예제코드에서는 확인이 안되지만 라이브러리 추가가 필요 합니다

사용된 예제파일

0.96 OLED_DHT11.txt



프로젝트 동영상


온도계와 비교해서 출력된 화면을 확인해 보면 실내 온도가 나름 쓸만하게 측정 되는것 같습니다

오픈소스로 HC-SR04 라던가 다양한 센서를 사용해서 0.96 OLED 에 출력하는 레퍼런스가 공유 되는 것 같은데

DHT 센서는 워낙 라이브러리도 여러가지가 있고 라이브러리끼리 컴파일 에러도 많이 발생해서 수정하는데 쉽지가 않았습니다


참고 포스팅
Arduino Uno 로 0.96 인치 와 1.3 인치 OLED를 사용해서 문자와 비트맵 이미지 출력해 보기

SH1106 datasheet.pdf
1.4MB
SSD1306 Datasheet.pdf
1.79MB
Adafruit-GFX-Library-master.zip
0.28MB
Adafruit_SSD1306-master.zip
0.02MB
DHT-sensor-library-master.zip
0.01MB
0.96 OLED_DHT11.txt
0.0MB
반응형

댓글