본문 바로가기
모두의 아두이노 센서/아두이노 센서 (불)

TSL2561 아두이노 조도 센서 (LCD16X2 키패드실드)

by 로니킴 2021. 5. 19.


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

 

목차

     

     

     


    TSL2561 아두이노 조도 센서 (LCD16X2 키패드실드)

     

     

     

     

     

     

     


    TSL2561 센서란?

    TSL2561 센서는 광센서는 여러 상황에서 사용하기 좋은 디지털 광센서이다. TSL2561 센서는 가시광 선과 적외선을 모두 측정하여 럭스 값에 더 가깝게 만드는 광도 센서이다. 

     

    TSL2561.pdf
    0.41MB

     


     

    TSL2561 아두이노 센서 특징

    센서는 0.1 – 40k 럭스의 광범위한 럭스 값을 측정 할 수 있다. 센서는 I2C 인터페이스에 데이터를 출력한다.

     

    • 인간의 눈 반응에 가까움
    • 사용자 정의 상한 및 하한 임계 값 설정이 가능하며, 프로그래밍 가능한 인터럽트 기능 제공
    • 100kHz에서 SMBus (TSL2560) 또는 400kHz에서 I2C (TSL2561) 고속 모드가 있는 16 비트 디지털 출력
    • 1,000,000-1 동적 범위를 지원하는 프로그래밍 가능 아날로그 및 통합 시간
    • 50 / 60Hz 조명에 대한 리플을 자동으로 필터링
    • 절전 모드에서 낮은 유효 전력 (통상 0.75mW) 
    • RoHS 준수

     

     

     

     


    TSL2561 센서 동작 원리

    TSL2561은 2 세대 주변 광 센서 장치이다. 각각에는 2 개의 포토 다이오드의 전류를 통합하는 2 개의 통합 아날로그-디지털 컨버터 (ADC)가 포함되어 있다. 두 채널의 통합이 동시에 발생한다. 변환주기가 완료되면 변환 결과가 각각 채널 0 및 채널 1 데이터 레지스터로 전송된다. 전송은 데이터의 무결성이 유지되도록 이중 버퍼링된다. 전송 후 장치는 자동으로 다음 통합주기를 시작하게 된다. 

     

    장치와의 통신은 표준 2 선 SMBus 또는 I2C 직렬 버스를 통해 이루어진다.  따라서 TSL256x 장치는 마이크로 컨트롤러 또는 임베디드 컨트롤러에 쉽게 연결할 수 있다. 신호 컨디셔닝에 외부 회로가 필요하지 않으므로 PCB 공간도 절약된다. TSL256x 장치의 출력은 디지털이므로 아날로그 신호와 비교할 때 출력이 노이즈에 효과적으로 영향을 받지 않는다.

     

    TSL256x 장치는 또한 광도 값에 대해 센서를 폴링 할 필요를 제거하여 시스템 효율성을 단순화하고 개선하는 인터럽트 기능을 지원한다. 인터럽트 기능의 주요 목적은 광도의 의미있는 변화를 감지하는 것이다. 의미있는 변화의 개념은 빛의 강도와 시간 또는 그 강도 변화의 지속성 측면에서 사용자가 정의 할 수 있다.

    TSL256x 장치에는 현재 조명 수준 위와 아래의 임계 값을 정의 할 수있는 기능이 있다. 변환 값이 이러한 제한 중 하나를 초과하면 인터럽트가 생성된다.

     

     

     

     


    TSL2561 센서 구입하기

    [TSL2561 센서]는 알리익스프레스, 네이버 쇼핑몰, 아마존 등에서 센서를 구입할 수 있다.  센서는 sparkfun 및 adafruit 등의 제품을 모두 사용할 수 있다. 

     

     

     

     


     

    TSL2561 하드웨어 연결

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

     

     

    센서는 I2C 인터페이스에서 작동한다.  
    SDA (I2C 데이터 핀)
    SCL (I2C 클럭 핀)
    Vcc (전압 입력 + 3.3 ~ 5V)
    GND (이 핀 접지) 
    INT (Interrupt pin – 특별한 경우에 인터럽트 신호를 출력 할 수도 있습니다.) 


    Sparkfun, Adafrauit 및 Chinese 중국제품에는 핀의 방향만 변경되어 있다.  따라서 모듈을 배선하고 전원을 공급하기 전에 사용중인 센서의 핀이 올바른지 확인해야 한다. 

     

     

     


     

    TSL2561 소프트웨어 코딩

    하드웨어 연결이 완료되면, 아두이노 IDE를 이용해 아두이노 센서 소스코드를 코딩할 수 있다. 

     

    라이브러리는 다음과 같다.  라이브러리를 설치 하지 않으면 컴파일 에러가 발생한다. 

    스케치>라이브러리 포함하기>.zip 라이브러리 추가 메뉴를 이용해 추가할 수 있다.

    SM2561TSL.zip
    0.01MB

     

    센서 코드는 다음과 같다. 

    /**
       TSL-2561 (GY-2561) Sensor
    
       @ 모두의 아두이노 환경 센서 (Arduino Sensors for Everyone)
          https://book.naver.com/bookdb/book_detail.nhn?bid=18030644
       @ author STEAMEDU123 <steamedu123@gmail.com>
    */
    
    #include <SFE_TSL2561.h>
    #include <Wire.h>
    #include <LiquidCrystal.h>
    
    LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
    SFE_TSL2561 light;
    
    boolean gain;
    unsigned int ms;
    
    void setup()
    {
      initLCD();
      initTSL2561();
    }
    
    void initTSL2561() {
    
      light.begin();
      unsigned char ID;
    
      if (light.getID(ID))
      {
        byte error = light.getError();
        printError(error);
      }
    
      gain = 0;
      unsigned char time = 2;
      light.setTiming(gain, time, ms);
      light.setPowerUp();
    }
    
    
    void initLCD() {
      lcd.begin(16, 2);
    
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("TSL2561 Sensor");
    }
    
    void loop()
    {
      delay(ms);
      unsigned int data0, data1;
    
      if (light.getData(data0, data1))
      {
        double lux;
        boolean good;
    
        good = light.getLux(gain, ms, data0, data1, lux);
    
        lcd.setCursor(0, 1);
        lcd.print(lux);
        lcd.print(" lux");
      } else {
        byte error = light.getError();
        printError(error);
      }
    }
    
    void printError(byte error)
    {
      lcd.setCursor(0, 1);
      switch (error)
      {
        case 0:
          lcd.print("success");
          break;
        case 1:
          lcd.print("data too long for transmit buffer");
          break;
        case 2:
          lcd.print("received NACK on address (disconnected?)");
          break;
        case 3:
          lcd.print("received NACK on data");
          break;
        case 4:
          lcd.print("other error");
          break;
        default:
          lcd.print("unknown error");
      }
    
      delay(1000);
    }
    

     

    소스 구조는 다음과 같다. 

     

     

     


     

    TSL2561 센서 동작확인

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

     

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

    02 컴파일 확인 

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

     


    03 아두이노 우노 업로드 

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


    04 동작 확인

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

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     


     

    마무리

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

     

     


     

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

    [모두의 아두이노 환경 센서] 책은 예스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

     

     

     

     



    댓글