USB to Serial(RS232) Converter KW-880C
Embedded 2026. 5. 31. 12:28 |반응형
USB Serial Port를 사용해 보자.

AX781x0_MCS78x0_Win11_64bit_Driver_v3.22.2.0.zip
1.08MB
Windows 11(x64)
포트에 아무것도 연결하지 않은 상태에서 간단히 테스트할 수 있는 코드를 작성해 보자.
import serial
import time
import sys
serials = []
ports = ['COM2', 'COM7', 'COM8', 'COM9', 'COM10', 'COM11', 'COM12', 'COM13']
baudrate = 9600
databit = serial.EIGHTBITS
stopbit = serial.STOPBITS_ONE
parity = serial.PARITY_NONE
try:
ser1 = serial.Serial(ports[0], baudrate, databit, parity, stopbit, timeout=1)
ser2 = serial.Serial(ports[1], baudrate, databit, parity, stopbit, timeout=1)
ser3 = serial.Serial(ports[2], baudrate, databit, parity, stopbit, timeout=1)
ser4 = serial.Serial(ports[3], baudrate, databit, parity, stopbit, timeout=1)
ser5 = serial.Serial(ports[4], baudrate, databit, parity, stopbit, timeout=1)
ser6 = serial.Serial(ports[5], baudrate, databit, parity, stopbit, timeout=1)
ser7 = serial.Serial(ports[6], baudrate, databit, parity, stopbit, timeout=1)
ser8 = serial.Serial(ports[7], baudrate, databit, parity, stopbit, timeout=1)
time.sleep(2) # 장치 초기화 대기
# 각 포트 연결 상태 확인
for ser in [ser1, ser2, ser3, ser4, ser5, ser6, ser7, ser8]:
if ser.is_open:
print(f"{ser.port} 포트에 성공적으로 연결되었습니다.")
else:
print(f"{ser.port} 포트에 연결할 수 없습니다.")
sys.exit(1)
# 테스트 신호 5회 반복 전송
for _ in range(5):
for ser in [ser1, ser2, ser3, ser4, ser5, ser6, ser7, ser8]:
test_signal = b"Test Signal\r\n"
ser.write(test_signal)
#print(f"{ser.port} 포트에 데이터 전송 완료: {test_signal}")
time.sleep(0.2)
"""
# 수신 데이터 확인 (응답이 있을 경우 출력)
time.sleep(0.5)
for ser in [ser1, ser2, ser3, ser4, ser5, ser6, ser7, ser8]:
if ser.in_waiting > 0:
response = ser.readline()
print(f"{ser.port} 포트에서 수신된 데이터: {response}")
"""
# 연결 종료
for ser in [ser1, ser2, ser3, ser4, ser5, ser6, ser7, ser8]:
ser.close()
print(f"{ser.port} 포트를 안전하게 닫았습니다.")
except serial.SerialException as e:
print(f"시리얼 포트 오류: {e}")
except Exception as e:
print(f"오류 발생: {e}")
Tx LED가 순서대로 깜빡거린다.

이번엔 FIS 센서를 연결하고 데이터를 수신해 보자.
2026.05.15 - [Raspberry Pi & Arduino] - [Arduino] FIS Low concentration solvent gas sensor module
FIS 센서는 TTL 시그널을 사용하므로 RS232 - TTL 컨버터가 필요하다.

| FIS Sensor | RS232 - TTL Converter | Power |
| 1 VDD | VCC | VCC(5V) |
| 2 VSS(GND) | GND | GND |
| 6 SERIAL | TXD | |
| 7 RST | VCC(5V) |
※ 주의
FIS Sensor의 6번(SERIAL) 핀은 Converter의 TXD에 연결해야 한다. RXD에 연결하면 안 된다.
센서에서 데이터가 계속 생성되도록 7번(RST) 핀은 VCC에 연결한다.
import serial
import time
import sys
try:
serialPort = serial.Serial('COM2', 9600, 8, 'N', 1, timeout=1)
# 시리얼 통신 설정. COM3 포트, 9600 보드레이트, 8 데이터 비트, 패리티 없음, 1 스톱 비트, 타임아웃 1초.
time.sleep(1) # 시리얼 연결이 초기화될 때까지 대기
except Exception as e:
print("Serial error: ", e)
sys.exit(0)
try:
while (serialPort.readable()): # 시리얼 포트가 읽을 수 있는 상태인지 확인.
if (serialPort.in_waiting > 0): # 시리얼 버퍼에 대기 중인 데이터가 있는지 확인.
print(serialPort.readline().decode("utf-8", errors="ignore"), end="")
# readline() 메서드를 사용하여 시리얼 포트에서 한 줄씩 데이터를 읽고 UTF-8로 디코딩하여 출력.
# 오류가 발생할 경우 무시하도록 설정.
else:
print("No data waiting in the serial buffer.")
time.sleep(0.2)
except KeyboardInterrupt:
print("\n[알림] Ctrl+C 입력 감지. 프로그램을 종료합니다.")
finally:
if 'serialPort' in locals() and serialPort.is_open:
# locals() 함수를 사용하여 serialPort 변수가 정의되어 있는지 확인하고, 시리얼 포트가 열려 있는지 확인.
serialPort.close()
print("시리얼 포트가 안전하게 닫혔습니다.")


※ 참고
반응형
'Embedded' 카테고리의 다른 글
| Serial Communication Monitoring 시리얼 통신 모니터링 (0) | 2026.06.05 |
|---|---|
| [Arduino] 사용중인 시리얼 포트 및 사용 프로세스 확인 (0) | 2026.05.24 |
| [Arduino] USB to UART 사용 컴퓨터 시리얼 통신 (0) | 2026.05.22 |
| [RetroPie] Runcommand Script (0) | 2026.05.20 |
| [Arduino] FIS Low concentration solvent gas sensor module (0) | 2026.05.15 |