본문 바로가기
모두의 라즈베리파이/LCD-디스플레이

[라즈베리파이 마스터 되기] 초보자를 위한 파이썬 7 세그먼트(TM1637) 활용법 완전 정복

by 로니킴 2024. 4. 27.


라즈베리 파이와 파이썬을 사용해 7 세그먼트를 쉽게 제어하는 방법을 초보자도 이해할 수 있도록 설명합니다. 시작부터 동작까지, 모든 과정을 설명하여 누구나 라즈베리파이를 이용한 7 세그먼트 제어를 마스터할 수 있습니다. 

 

목차

     

     

     


    초보자를 위한 파이썬 7세그먼트(TM1637) 활용법 완전 정복

     

    이 장에서는 라즈베리 파이와 파이썬을 활용하여 7Segment(TM1637)를 쉽게 제어하는 방법에 대해 초보자도 이해할 수 있도록 자세히 설명합니다. 시작부터 동작까지, 하드웨어 연결부터 소프트웨어 코딩까지 모든 과정을 단계별로 설명하여, 독자 여러분이 라즈베리파이를 이용한 7Segment 제어 기술을 완전히 마스터할 수 있도록 돕습니다. 본 장의 목표는 독자가 라즈베리파이의 기본적인 사용법을 넘어, 실제 프로젝트에 적용할 수 있는 실용적인 기술을 습득하는 것입니다.

     

     

     

     


    (1) 7세그먼트 란?

     

    TM1637 7세그먼트 디스플레이는 LED 숫자 패널로 구성된 전자 디스플레이 모듈입니다. 이 모듈은 4개의 숫자를 동시에 표시할 수 있으며, 각 숫자는 7개의 세그먼트로 구성되어 있습니다. 이 모듈은 주로 시간 표시, 온도계, 카운터 등 다양한 전자 기기에서 사용자 인터페이스로 활용됩니다.

     

    7세그먼트 란?(TM16327)

     

     

    TM1637은 주로 LED (발광 다이오드) 디스플레이 패널을 구동하는 데 사용되는 매우 인기 있는 칩입니다. 이 IC는 시계 포인트가 있는 4자리 숫자 LED 디스플레이에 주로 사용되며, 설정이 간단하고 사용이 편리하여 많은 전자 DIY 프로젝트에서 선호되고 있습니다.

     

    용도 및 활용

    TM1637 7세그먼트 디스플레이는 시계, 타이머, 가격 표시기 등 다양한 소비자 전자 제품에 널리 사용됩니다. DIY 전자 프로젝트에서도 인기가 높으며, 그 이유는 프로그래밍이 상대적으로 간단하고 비용 효율적이기 때문입니다.

    TM1637 7세그먼트 디스플레이 모듈은 간단한 숫자 및 문자 표시 요구를 충족하는 경제적이고 효율적인 솔루션을 제공합니다. 이를 통해 다양한 전자 기기에 쉽게 통합하여 정보를 효과적으로 전달할 수 있습니다.

     


    (2) 7세그먼트 동작 원리

    TM1637은 마이크로컨트롤러와 단 2개의 핀을 사용하여 통신할 수 있습니다: CLK (클록) 핀과 DIO (데이터 입출력) 핀입니다. 이러한 통신 방식은 I2C 통신 방식과 유사하지만, 표준 I2C 통신은 아닙니다.

     사용자는 데이터를 보내면 모듈이 이를 받아 세그먼트에 맞는 LED를 점등시켜 숫자나 문자를 디스플레이합니다.

    TM1637-TitanMicro.pdf
    0.67MB

     

     

    드라이버 IC (TM1637)

    TM1637 드라이버 IC는 디스플레이 모듈의 핵심 구성 요소입니다. 이 칩은 데이터와 명령을 전달받아 각 세그먼트의 LED를 적절하게 제어합니다. TM1637은 I2C와 유사하지만 표준 I2C와는 다른 특화된 통신 프로토콜을 사용합니다. 이 프로토콜은 Clock (CLK) 핀과 Data I/O (DIO) 핀을 통해 데이터를 주고받습니다.

     

    • Power CMOS process
    • Display mode (8 segments × 6 digits), support common anode LED output
    • Key scan (8 x 2-bit), enhanced anti-jamming button recognition circuit
    • Brightness adjustment circuit (adjustable duty cycle 8)
    • Two-wire serial interface (CLK, DIO)
    • Oscillation mode: Built-in RC oscillator
    • Built-in power-on reset circuit
    • Built-in automatic blanking circuit
    • Package: DIP20 / SOP20

     

    전력 소비와 밝기 제어

    TM1637 모듈은 3.3V에서 5V 사이의 전원으로 작동하며, 대부분의 마이크로컨트롤러 보드와 호환됩니다. 모듈은 다양한 밝기 레벨을 지원하여 사용자가 상황에 따라 디스플레이의 밝기를 조절할 수 있도록 합니다. 밝기 조절은 TM1637 칩의 프로그래밍을 통해 이루어지며, 최대 8단계의 밝기 조정이 가능합니다.

     

     

    [데이터 통신]

    • 시작 조건: 데이터 전송을 시작하기 위해 DIO 핀을 LOW 상태로 떨어뜨린 후 CLK 핀을 HIGH 상태로 설정합니다.
    • 바이트 전송: 데이터는 8비트 바이트 단위로 전송되며, 각 비트는 CLK 핀의 상승 에지에서 DIO 핀을 통해 읽히거나 쓰여집니다.
    • ACK 수신: 각 바이트 전송 후, TM1637은 마스터(보통 마이크로컨트롤러)에게 ACK 신호를 보내어 데이터 수신을 확인합니다. 이때, DIO 핀은 LOW 상태가 되어야 합니다.
    • 정지 조건: 데이터 전송을 마친 후, DIO 핀을 LOW 상태에서 HIGH 상태로 변경하여 통신을 종료합니다.

     

     

     


    (3) 7세그먼트 구입하기

    TM1637 7세그먼트 디스플레이 모듈은 온라인 전자 부품 판매 사이트나 전자 부품점에서 쉽게 구입할 수 있습니다. 가격은 대체로 저렴하여 초보자도 부담 없이 실험할 수 있는 장점이 있습니다.

     

    7세그먼트 구입하기

     

     

     


     

    (4) 7세그먼트 하드웨어 연결

    TM1637을 사용하기 전에 먼저 VCC와 GND 핀에 적절한 전원을 연결해야 합니다. 일반적으로 3.3V 또는 5V 전원을 사용할 수 있습니다. TM1637 모듈을 라즈베리파나 다른 마이크로컨트롤러와 연결할 때는 4개의 핀을 사용합니다. VCC와 GND 핀을 각각 전원과 접지에 연결하고, CLK와 DIO 핀을 마이크로컨트롤러의 지정된 핀에 연결합니다. 이렇게 하면 모듈이 전원을 받고 데이터 통신을 할 준비가 됩니다.

    7세그먼트 하드웨어 연결
    7세그먼트 하드웨어 연결

     

    회로도에서:

    • 라즈베리파이의 GPIO 6 핀은 TM1637 모듈의 CLK 핀에 연결됩니다.
    • 라즈베리파이의 GPIO 7 핀은 TM1637 모듈의 DIO 핀에 연결됩니다.
    • 라즈베리파이의 3.3V 핀은 TM1637 모듈의 VCC 핀에 연결됩니다.
    • 라즈베리파이의 GND 핀은 TM1637 모듈의 GND 핀에 연결됩니다.

    이렇게 연결하면 라즈베리파이에서 TM1637 모듈을 제어할 수 있습니다.

     

    7세그먼트 하드웨어 연결 회로도

     

     

     


     

    (5) 7세그먼트 SW 파이썬  코딩

    TM1637을 프로그래밍하기 위해서는 먼저 해당 디바이스를 제어할 수 있는 "tm1637.py" 라이브러리를 사용할 수 있습니다.

     

    tm1637.py
    0.01MB

     

    라이브러리를 파일을 복사한 후, 간단한 명령을 사용하여 숫자를 디스플레이할 수 있습니다.

    7세그먼트 SW 파이썬 코딩

     

     

    파이썬 코드는 다음과 같다. 

    from time import sleep
    import RPi.GPIO as GPIO
    from tm1637 import TM1637
    
    def main():
        # GPIO 핀 설정
        CLK = 6     # TM1637 클럭 핀
        DIO = 7     # TM1637 데이터 핀
    
        # TM1637 디스플레이 초기화
        display = TM1637(clk=CLK, dio=DIO)
    
        # TM1637 클래스 내에서 해당 함수를 호출
        display.brightness(2)
    
        # 숫자 카운트 예제
        try:
            for i in range(100):  # 0부터 100까지 카운트
                display.show('{:04d}'.format(i))
                sleep(1)  # 1초 간격으로 숫자 업데이트
        except KeyboardInterrupt:
            # 프로그램을 중단할 경우, 디스플레이를 꺼줍니다.
            display.clear()
    
        print("카운트 종료")
    
    if __name__ == '__main__':
        main()

     

    이 코드는 TM1637 모듈에 연결된 7세그먼트 디스플레이에서 0부터 99까지 숫자를 1초 간격으로 증가시키면서 보여주는 간단한 예제입니다. 사용자가 프로그램을 중단할 경우, 디스플레이를 깨끗이 지우고 종료합니다.

    이 예제를 기존의 파일에 추가하거나 새로운 파일로 저장하여 라즈베리파이에서 실행할 수 있습니다.  

     


     

     

    (6) 동작확인

    모든 연결이 올바르게 완료되고 코드가 업로드되면, TM1637 모듈은 코드에 따라 숫자나 문자를 디스플레이할 것입니다. 이를 통해 연결과 코드에 문제가 없는지 확인할 수 있습니다.

    7세그먼트 동작확인

     

    코드를 업로드 한 후, TM1637 모듈이 올바르게 숫자를 표시하는지 확인합니다. 디스플레이에 아무 것도 나타나지 않거나 예상과 다른 출력이 나타나는 경우, 연결 핀이 제대로 연결되어 있는지와 코드를 다시 확인해야 합니다.


     

    (7) 마무리

    TM1637 7세그먼트 디스플레이 모듈은 가격 대비 효율적인 디스플레이 수단을 제공합니다. 이를 통해 다양한 DIY 프로젝트나 상용 제품에도 쉽게 적용할 수 있어 전자 학습 및 개발에 아주 유용한 컴포넌트입니다.

     

     

     

     

    반응형


    댓글