아두이노:파이썬과 통신
아두이노 관련 정보를 모으기 위한 틀. 틀:아두이노
- 아두이노:개요
- 아두이노:하드웨어
- 아두이노:코드
- 아두이노:핀 사용
- 아두이노:시리얼 통신
- 아두이노:편의함수
- 센서 사용
- 아두이노:LCD 사용
- 아두이노:스위치 사용
- 아두이노:릴레이
- 아두이노:WIFI
- 아두이노:해결되지 않은 다양한 의문들
- 수업용 간단 실습
- 분류:아두이노 프로젝트
개요[편집 | 원본 편집]
방법[편집 | 원본 편집]
사전 준비[편집 | 원본 편집]
과정 | 설명 | 명령어 |
---|---|---|
라이브러리 설치 | 파이썬에서 시리얼 통신을 위한 라이브러리를 설치한다. | pip install pyserial |
포트 파악 | 윈도우라면 장치관리자에서 '포트'를 열어 아두이노가 연결된 포트를 찾는다.
|
코드[편집 | 원본 편집]
아두이노의 시리얼 통신은 1:1로 가능하기 때문에 어딘가에서 아두이노의 시리얼 포트를 사용하고 있다면 닫아주어야 한다.
과정 | 설명 | 코드 |
---|---|---|
라이브러리 사용 및 연결 | 위에서 설치한 라이브러리를 이용해 통신을 연결한다. | import serial # 모듈 부르기
my_serial = serial.Serial("COM10", baudrate=9600, timeout=1) # 10번 포트에 연결하고 1초동안 응답 없으면 끊는다.
|
아두이노로 보내기 | my_serial.write('문자열'.encode() ) # encode를 거쳐 넣어주어야 한다.
| |
아두이노에서 받기 | 아두이노에서 시리얼로 보낸 신호를 읽는다. | read_data = my_serial.readline()
print(read_data.decode() ) # decode를 거쳐야 제대로 볼 수 있다.
|
받기(스레드) | 보통 신호는 놓치지 않고 즉각 받아야 하므로 쓰레드로 처리한다. | import threading
def serial_read():
while True:
read_data = my_serial.readline()
print(read_data.decode() ) # decode를 거쳐야 제대로 볼 수 있다.
readint_thread = threading.Thread(target=serial_read)
readint_thread.daemon = True
readint_thread.start()
|
통신 종료 | my_serial.close()
|