'USB'에 해당되는 글 1건

평소와 같이 USB 웹캠이 아닌, 조명 밝기를 조절하는 컨트롤러를 같이 다루게 될 기회가 생겼다

LED Controller JV502

 

USB 포트에 연결된 상태이므로 장치관리자에 들어가서 Device 이름을 확인해본다

내 경우엔 여기서 Prolific 어쩌구가 JV502 에 해당하는 디바이스 이름이고, 뒤에 붙은 COM5 가 현재 이 장치가 연결된 포트의 번호가 된다 (안보인다면 드라이버 설치 우선 해보자)

 

이 항목들을 우선 파이썬에서 불러와야 한다

방법은 매우 간단하다

 

사용중인 가상환경에서 pyserial 을 우선 설치한다

$ pip install pyserial

 

그리고 다음과 같이 코드를 짜면 끝이다

if __name__ == "__main__":
    import serial.tools.list_ports

    serial_ports = serial.tools.list_ports.comports()
    for ports in serial_ports:
        print(ports)


[OUTPUT]
COM1 - 통신 포트(COM1)
COM5 - Prolific USB-to-Serial Comm Port(COM5)

 

 

이제 원하는 디바이스와 통신하기 위해 우선 연결을 해줘야 한다

우선 코드먼저 보자면 포트이름과 통신속도(baud-rate) 를 넘겨주면 연결이 된다

port_name = "COM5"  # port 이름
baud = 19200  # 디바이스의 통신 속도
ser = serial.Serial(port_name, baud, timeout=0)

여기서 통신속도(baud) 는 장치를 만든 제조사에서 배포한 사양서를 참조하면 확인할 수 있다

 

아래는 내가 사용중인 JV502 디바이스의 사양서 중 일부이다

 

https://www.joy-system.co.kr/product/pdf/JV502_spec.pdf   JV502 컨트롤러의 통신 프로토콜 사양서

 

 

참고로 사양서엔 통신모드가 RS232 로 나와있는데 RS232 는 아래와 같은 포트를 사용하지만 나는 RS232 to USB 를 사용해 usb 포트에 연결해서 쓰는중이다

 

어쨌든 연결까지 됐다면 이제 프로토콜에 따라 통신하면 된다

 

JV502 프로토콜 사양서를 예시로 가져와보면

https://www.joy-system.co.kr/product/pdf/JV502_spec.pdf   JV502 컨트롤러의 통신 프로토콜 사양서

이상한 말이 잔뜩 써져있는데 결국 통신하는데 #A1255& 이런식으로 명령어를 주면 된다는 뜻이다 #A1255& 를 예로들어 설명하자면 

# : 통신시작

'A' : 아스키코드를 사용할 것이란 뜻

'1' : 컨트롤 할 채널 (위 제품의 경우 채널이 2개)

'2, 5, 5' : 위에서 명시한 채널의 전압(밝기) 값을 000 ~ 255  중 최대 밝기로 설정

'&' : 통신종료

 

한번 이해하고나면 매우 쉽다!

 

그럼 이 명령어를 컨트롤러로 보내야 밝기 조절이 가능한데 이것도 매우 간단하다

    data = '#' + 'A' + '1' + '2' + '5' + '5' + '&'  # channel 1 밝기 최대
    ser.write(data.encode())  # 시리얼 통신에 최적화된 바이트 문자열로 통신

이렇게 제품마다 정해진 프로토콜 대로 통신하면 된다

 

아래는 전체코드, 매우매우매우매우매우매우간단하다

    import serial.tools.list_ports

    ser = serial.Serial("COM6", 19200, timeout=0)  # 시리얼 연결
    data = '#' + 'A' + '1' + '2' + '5' + '5' + '&'  # channel 1 밝기 최대
    ser.write(data.encode())  # 명령어 전송
블로그 이미지

우송송

,