본문 바로가기
큐브셋 초소형 인공위성

CubeSat - I2C OLED (128X64)

by 로니킴 2021. 9. 7.


본 절은 [I2C OLED] 아두이노 센서를 사용하기 위해 알아야 할 내용과 실습 방법에 대해 설명한다. 아두이노 센서의 특징, 동작원리, 사양, 연결 핀 배열, 출력 값, 주의사항을 알아본다. 아두이노와 센서를 연결하고, 간단한 코딩으로 센서를 쉽게 실습할 수 있다. 

 

목차

     

     

     


    CubeSat - I2C OLED (128X64)

     

     

     

     

     

     

     


    I2C OLED 센서란? (128X64)

    유기 발광 다이오드 이 튜토리얼에서 사용하고 있다고 (OLED) 디스플레이는 SSD1306 모델이다. 

    I2C 통신을 통해 OLED 디스플레이에 글자등을 출력한다. 라이브러리만 설치하면 간단하게 사용가능하며 헤더핀이 남땜 되어 있다. 

     

    OLED 디스플레이는 백라이트가 필요하지 않으므로 어두운 환경에서 매우 좋은 명암비를 제공한다. 또한 픽셀은 켜져 있을 때만 에너지를 소비하므로 OLED 디스플레이는 다른 디스플레이에 비해 전력을 덜 소모한다.

    여기서 사용하는 모델은 핀이 4개뿐이며 I2C 통신 프로토콜을 사용하여 Arduino와 통신한다. RESET 핀이 추가로 제공되는 모델이 있다. SPI 통신을 사용하여 통신하는 다른 OLED 디스플레이도 있다.

     


    I2C OLED 센서 사양

    [I2C OLED 센서]는 알리익스프레스, 네이버 쇼핑몰, 아마존 등에서 센서를 구입할 수 있다

     

    Arduino를 위한 128*64 발광 다이오드 표시 단위는, 많은 통제 칩을 지원합한다. 

    * Arduino, 51 시리즈, MSP430 시리즈, STM32 / 2, CSR IC 등과 완벽하게 호환된다. 

    * 매우 낮은 전력 소비: 전체 화면 조명 0.08 w

    * 최고 높은 광도 및 대조는 조정가능하다. 
    * 임베디드 드라이버/컨트롤러
    * 인터페이스 유형 IIC
    * 핀 정의: GND, VCC ,SCL, SDA
    * 핀: 4 핀
    * 전압: 3V ~ 5V DC
    * 작동 온도: -30 ° ~ 70 °
    * 높은 해상도: 128*64
    * 패널 차원: 26.70*19.26*1.85mm/1.03*0.76*0.07 인치 (대략)
    * 활성 영역: 21.74*11.2mm /0.86*0.44 인치 (약)
    * 드라이버 IC: SSD1306

     

     

     

     


    I2C OLED 센서 구입하기

    [I2C OLED 센서]는 알리익스프레스, 네이버 쇼핑몰, 아마존 등에서 센서를 구입할 수 있다

     

     

     

     


     

    I2C OLED 센서 하드웨어 연결

    다음과 같이 I2C OLED 아두이노 센서를 연결할 수 있다. 

     

     

    https://randomnerdtutorials.com/guide-for-oled-display-with-arduino/

     


     

    I2C OLED 라이브러리 설치

    OLED 디스플레이를 제어하려면 adafruit_SSD1306.h 및 adafruit_GFX.h 라이브러리 가 필요하다.. 다음 지침에 따라 해당 라이브러리를 설치한다.

    1. Arduino IDE를 열고  Sketch  >  Include Library  >  Manage Libraries로 이동 한다. 라이브러리 관리자가 열려야 한다.

    2. 검색 상자에 " SSD1306 "을 입력 하고 Adafruit에서 SSD1306 라이브러리를 설치한다. 

     

     


    3. Adafruit에서 SSD1306 라이브러리를 설치한 후 검색 상자에 " GFX "를 입력 하고 라이브러리를 설치한다.

     

     

     

    4. 라이브러리를 설치한 후 Arduino IDE를 다시 시작한다.

     

     

     

    다음은 OLED 디스플레이 라이브러리를 처리하여 텍스트를 쓰거나 간단한 그래픽을 그리는 데 도움이 되는 몇 가지 기능이다

    display.clearDisplay() – 모든 픽셀이 꺼져 있다.
    display.drawPixel(x,y, 색상) – x,y 좌표에 픽셀을 플로팅한다.
    display.setTextSize(n) – 글꼴 크기 설정, 1에서 8까지의 크기 지원
    display.setCursor(x,y) – 텍스트 쓰기를 시작할 좌표를 설정한다.
    display.print("메시지") – x,y 위치의 문자를 인쇄한다.
    display.display() – 변경 사항을 적용하려면 이 메서드를 호출한다.

     

     

     


     

    I2C OLED 센서 소프트웨어 코딩

    OLED 디스플레이를 Arduino에 배선하고 필요한 모든 라이브러리를 설치한 후 라이브러리의 한 가지 예를 사용하여 모제대로 작동하는지 확인할 수 있다.

    Arduino IDE에서 파일 > 예제 > Adafruit SSD1306으로 이동 하고 사용 중인 디스플레이의 예제를 선택할 수 있다. 

     

    다음은 hellow world 를 출력하는 코드이다. 

     

    //---------- I2C setting ------------------------------------------------------------------------
    #include <Wire.h> 
    
    //---------- 128x64 OLED setting ----------------------------------------------------------------
    #define OLED_096_INCH   1
    #define OLED_130_INCH   2
    
    #define DISPLAY_SIZE OLED_096_INCH    // Select Display Size
    
    #define OLED_RESET -1
    //#define OLED_RESET 13
    
    #include <Adafruit_GFX.h>
    
    #if (DISPLAY_SIZE == OLED_096_INCH)
     #include <Adafruit_SSD1306.h>
    #endif
    #if (DISPLAY_SIZE == OLED_130_INCH)
     #include <Adafruit_SH1106.h>
    #endif
    
    #if (DISPLAY_SIZE == OLED_096_INCH)
     Adafruit_SSD1306 display(OLED_RESET);
    #endif
    #if (DISPLAY_SIZE == OLED_130_INCH)
     Adafruit_SH1106 display(OLED_RESET);
    #endif
    
    
    void setup()
    {
      Wire.begin();
      
      // OLED Display initial setting to operation
      Init_OLED(); 
      
    }
    void loop(){
      
      OLED_Display();
    
    }
    
    void Init_OLED() {
      
      // OLED Display initial setting to operation
      #if (DISPLAY_SIZE == OLED_096_INCH)
       display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
      #endif
      #if (DISPLAY_SIZE == OLED_130_INCH)
       display.begin(SH1106_SWITCHCAPVCC, 0x3C);
      #endif
      display.display();
      delay(1);
      display.clearDisplay();
    
    }
    
    void OLED_Display() {
      
      display.setTextSize(1); // Or display.setTextSize(2);
      display.setTextColor(WHITE);
      display.setCursor(0,0);
      //display.println(String( ) + ":" + String( ));
      display.print(F("Example ")); display.println("TEST");
      display.display();
      display.clearDisplay();
        
    }

     

    oled_test.ino
    0.00MB

     


     

    I2C OLED 센서 동작확인

    하드웨어 연결, 소프트웨어 코딩이 완료되면 다음과 같이 동작 화면을 확인할 수 있다. 

     

    ------------------------------------------------------ 
    개발환경 : WINDOWS 10 
    아두이노 IDE : 1.8.13 
    ------------------------------------------------------ 
    01 연결
     - 아두이노와 PC 연결 
     - 아두이노 IDE 실행 
     - 메뉴 → 툴 → 보드:아두이노 확인 
      - 메뉴 → 스케치 → 확인/컴파일 

     



    02 컴파일 확인 

    스케치>확인/컴파일(CTRL+R) 를 선택해서 컴파일을 진행한다.


    03 아두이노  업로드 

    컴파일이 이상없이 완료되면 스케치>업로드(CTRL+U) 를 선택해서 컴파일 파일을 업로드 한다. 


    04 동작 확인

    다음과 같이 동작을 확인할 수 있다. 

     

     

     

     


     

    마무리

    아두이노와 I2C OLED 센서를 연결하고, 간단한 코딩으로 센서를 쉽게 실습할 수 있다. 

     

    0.96 과 1.3인치 OLED가 있는데, 1.3인치는 MRK1000 보드에서는 컴파일 에러가 발생한다. 아두이노 UNO에서는 정상적으로 컴파일이 된다. 따라서 라이브러리가 업데이트가 안된거라 추정된다. 

     

    C:\Users\s\Documents\Arduino\libraries\Adafruit_SH1106-master\Adafruit_SH1106.cpp:31:11: fatal error: util/delay.h: No such file or directory
      #include <util/delay.h>
               ^~~~~~~~~~~~~~
    compilation terminated.
    exit status 1
    보드 Arduino MKR1000 컴파일 에러.

     

     

    Adafruit_SH1106-master.zip
    0.02MB

     

     


     

    모두의 아두이노 환경 센서 책

    [모두의 아두이노 환경 센서] 책은 예스24, 인터넷 교보문고, 알라딘, 인터파크도서, 영풍문고, 반디앤루니스 , 도서11번가 등에서 구입할 수 있다. 이 책에서는 PMS7003, GP2Y1010AU0F, PPD42NS, SDS011 미세먼지 센서, DHT22 온습도 센서, MH-Z19B 이산화탄소 센서, ZE08-CH2O 포름알데히드 센서, CCS811 총휘발성유기화합물 TVOC, GDK101 방사선(감마선) 센서, MQ-131 오존(O3) 센서, MQ-7 일산화탄소, MICS-4514 이산화질소 센서, MICS-6814 암모니아 센서, DGS-SO2 아황산가스(SO2) 센서, BME280 기압 센서, GUVA-S12SD 자외선(UV) 센서, MD0550 기류 센서, QS-FS01 풍속 센서(Wind speed) 를 사용한다.  

     

    모두의 아두이노 환경 센서

    아두이노와 센서로 내 건강을 지킬 수 있다!다양한 환경 센서를 실생활 프로젝트에 응용해보자!시중에 판매되고 있는 간이측정기도 센서로 값을 측정합니다. 똑같은 센서를 아두이노에 연결하

    book.naver.com

     

     

     

     



    댓글