[testXJIG QR 코드 인식 고도화 #3-2] 조명 제어

2023. 7. 20. 20:39프로젝트 로그/테스트x솔루션 JIG 개발기

반응형

앞에서 이야기 했듯이 레이저 각인된 QR 코드 인식률을 높이기 위해서는 조명 제어가 필요 했다.

다양한 테스트를 진행한 결과, 카메라 렌즈가 있는 부분과 JIG 장치의 좌,우 부분 이렇게 세 군데에 조명을 장착하고 이를 순차적으로 ON/OFF 하면서 플래시 역할을 하니 레이저 각인 QR 코드의 인식률이 많이 좋아졌다.

 

위와 같이 조명 제어를 JIG S/W가 하도록 하기 위한 회로 구성과 S/W를 정리 한다.

( 현재는 POC 단계로 릴레이 모듈과 브레드 보드를 사용했지만, 추후 보드로 제작할 예정이다. )

 

회로 구성

4채널 릴레이 모듈

12V로 동작하는 조명의 스위치 역할을 하기 위해 릴레이 모듈을 사용했다.

릴레이 모듈은 아래 그림과 같이 1채널 당 NO(Normally Open), COM(공통단자), NC(Normally Close), SIG(제어 신호) 핀들이 있다.

 

각 핀들에 대한 특징은 아래와 같다.

  • NO(Normally Open)
    • 평상시에는 COM단자와 연결이 끊어져 있고, 릴레이에 전류가 흐르면 연결됨
    • SIG(제어 신호)를 이용하여 릴레이에 전류 제어 함
  • NC(Normally Close)
    • 평상시에는 COM단자와 연결되어 있고, 릴레이에 전류가 흐르면 끊어짐
    • SIG(제어 신호)를 이용하여 릴레이에 전류 제어 함
  • SIG(제어신호)
    • MCU의 GPIO를 SIG핀과 연결하여, 릴레이에 전류 제어 ( On/Off 개념 )

 

조명을 연결한 회로 구성

조명을 순차로 제어 하기 위해 아래 그림과 같은 배선으로 LED와 컨트롤러를 연결한다.

조명 제어를 위해 12V의 외부 전원을 연결하고 GND를 조명에 VCC를 릴레이 모듈의 COM 단자에 연결하였다.

그리고 조명의 VCC를 릴레이 모듈의 NC(Normally Close) or NO(Normally Open) 단자에 연결하고, MCU 혹은 SBC(Single Board Computer)의 VCC, GND, GPIO를 연결하여 릴레이의 채넏들을 제어 함으로써 조명을 On/Off 한다.

 

 

실물 사진

JIG 장치에 장착한 조명

JIG 장치에 조명을 장착한 사진이다. 조명을 한개만 장착했을 때는 빛에 의한 사각과 빛이 아크릴에 반사되어 QR 코드가 카메라에 안 보이는 현상이 있었다. 이를 해결하기 위해 조명을 3개를 장착하여 On/Off 하도록 하였고, 아크릴에 반사되는 빛을 줄이기 위해, 아크릴에 검은색 시트지를 붙여서 실험 하였다.

 

릴레이 모듈 & 컨트롤러

아래 사진과 같이 POC( Proof of Concept)을 위해 4채널 릴레이 모듈을 사용하였고 컨트롤러로는 오렌지보드 5를 사용 하였다. 

 

코드

오렌지파이 보드 기반에서 LED를 0.15초 간격으로 On/Off 하기 위한 코드 이다.

LED#1 ON, LED#2 OFF, LED#3 OFF ->  LED#1 OFF, LED#2 ON, LED#3 OFF -> LED#1 OFF, LED#2 OFF, LED#3 ON을 0.15초 간격으로 반복 한다.

 

import threading
import os
import time

class LedControlGpioManager(threading.Thread):
    LED1_NUM = 0
    LED2_NUM = 1
    LED3_NUM = 2

    LED_TURN_ON = 0
    LED_TURN_OFF = 1

    def __init__(self):
        threading.Thread.__init__(self, name="LED Control GPIO")

        self.isRun = False
        self.isPause = False

        stream = os.popen('gpio mode 0 out')
        stream = os.popen('gpio write 0 1')

        stream = os.popen('gpio mode 1 out')
        stream = os.popen('gpio write 1 1')

        stream = os.popen('gpio mode 2 out')
        stream = os.popen('gpio write 2 1')
    

    
    def turnOnLed(self, index=1):
    
        if index == 1:
            steram = os.popen('gpio write 0 0')
            steram = os.popen('gpio write 1 1')
            steram = os.popen('gpio write 2 1')
        elif index == 2:
            steram = os.popen('gpio write 0 1')
            steram = os.popen('gpio write 1 0')
            steram = os.popen('gpio write 2 1')
        elif index == 3:
            steram = os.popen('gpio write 0 1')
            steram = os.popen('gpio write 1 1')
            steram = os.popen('gpio write 2 0')
        else:
            pass

    
    def stop(self):
        self.isRun = False
    
    def getIsRun(self):
        return self.isRun
    
    def setPause(self):
        self.isPause = True
        stream = os.popen('gpio write 0 1')
        stream = os.popen('gpio write 1 1')
        stream = os.popen('gpio write 2 1')
    
    def setResume(self):
        self.isPause = False
    
    def run(self):
        self.isRun = True
        
        self.setPause()

        index = 1
        while True:
            time.sleep(0.15)

            if self.isRun == False:
                break
            
            if self.isPause == True:
                index = 1
                continue
            
            self.turnOnLed(index = index)

            index = index + 1
            if index > 3:
                index = 1

 

구매 링크

https://www.eleparts.co.kr/goods/view?no=3082047 

 

[릴레이 확장보드] 4채널,5VDC

5V 릴레이, 트리거 모드 선택가능, 4채널, 출력: 250V/10A(AC), 30V/10A(DC)

www.eleparts.co.kr

 

https://www.devicemart.co.kr/goods/view?no=1328588 

 

3W 파워LED COB-1007 (색상선택) [SY-LD006]

사이즈 : 40x35mm / 전압 : 12V / 전류 : 250mA / 전력 : 3W / 색온도 : 6000K,3000K / 6000K,3000K / 색상 : 화이트,웜화이트(White,Warm White) / 실내,공장,매장,야외,무대,포인트조명 등 장소 제약없이 광범위하게 활

www.devicemart.co.kr

https://www.devicemart.co.kr/goods/view?no=1327287

 

에폭시코팅 칩LED 링 모듈 (60mm) [SZH-LD091]

사이즈 : 60mm / 전원 : 9~12V / 색상 : 화이트(White) , 블루(Blue)

www.devicemart.co.kr

 

반응형