목차
이번 과정은 아두이노 보드와 컴퓨터(PC)를 USB 케이블을 이용해서 연결하고 파이썬(Python)의 Pyserial로 명령을 아두이노에 전달하고 아두이노는 이를 실행하는 예제를 해보겠습니다.
이 실습을 진행하기 위해서는 아래의 과정이 필요합니다.
1. 아두이노 보드 프로그램 : Serial 통신에서 특정 명령어가 전달되면 Blinking 예제 실행
2. 컴퓨터(Visual Studio)로 파이썬 작성하고 Serial로 특정 명령어 전달
1. 아두이노 보드 프로그램 : Serial 통신에서 특정 명령어가 전달되면 Blinking 예제 실행
우선 이번 코드는 아두이노의 시리얼(Serial) 통신을 열고 아래 명령이 들어오면 LED를 0.5초 단위로 깜빡이면서 켜거나 꺼지는 코드를 작성할 것입니다.
1. "on" 명령이 들어올 경우 : LED 0.5초 단위로 Blinking
2. "off" 명령이 들어올 경우 : LED Blinking 끄기
검증은 아두이노 스케치 소프트웨어 툴 -> 시리얼 모니터 (Serial Monitor)에서 합니다.
아래 예제 코드를 통해 쉽게 이해해보겠습니다.
예제 코드>>
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(9600);
while (!Serial) {
;
}
}
int blk_on = 0;
void loop() {
if (Serial.available() > 0)
{
String cmmd = Serial.readStringUntil('\n');
Serial.println(cmmd);
if (cmmd == "on")
{
blk_on = 1;
}
else if (cmmd == "off")
{
blk_on = 0;
}
}
if (blk_on ==1){
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(500); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(500);
}
}
1~7번 라인: Serial 통신 연결
12~15번 라인: 시리얼 통신으로 명령이 엔터(Enter, \n)와 함께 들어오면 명령어를 다시 컴퓨터로 보내서 Debugging 함
16~23번 라인: On, off에 따라서 blk_on 을 변경함
25~30번 라인: blk_on이 1일 경우 LED를 깜빡거림
결과>>
시리얼 모니터는 입력값을 출력해주었고 그림처럼 아두이노 보드는 "on" 명령을 받았을 때 LED 가 깜빡거렸습니다.
2. 컴퓨터(Visual Studio)로 파이썬 작성하고 Serial로 특정 명령어 전달
저는 Visual Studio를 사용해서 파이썬 코드를 작성 합니다. Visual Studio 를 사용해서 파이썬 코드를 작성한 글은 파이썬 카테고리에서 확인할 수 있습니다.
우선 다음 포스트에서 상세하게 Pyserial 모듈 (라이브러리) 동작 방법 및 메세지 주고 받는 방법에 대해 알아보고 이번 장 예제는 간단하게 "on" 메세지를 보내는 방법에 대해 알아 보겠습니다.
예제 코드>>
import serial
import time
comms = serial.Serial("COM6", baudrate=9600)
time.sleep(2)
msg = "on\n"
comms.write(msg.encode())
comms.close()
4번 라인: 아두이노에서 설정한 속도 baudrate와 동일하게 9600bps (bit per second)로 설정 합니다.
5번 라인: 통신 연결을 위해 잠시 2초 홀딩합니다. 다음 장 예제는 열결 상태 확인하는 문구를 사용하겠습니다
7번 라인: 보낼 메시지, LED가 켜진 후 off로 변경해서 시험해보시길 바랍니다.
결과>>
앞의 그림과 같이 정상적으로 LED가 깜빡거리는 것을 확인하였습니다.
'아두이노 Arduino' 카테고리의 다른 글
[아두이노] 1:1 캔통신 연결하기(Arduino, CAN Communication, Bus, MCP2515) (2) | 2024.01.05 |
---|---|
아두이노 데이터 타입 크기 탐색: 시리얼 모니터 출력 예제 실습(Arudino, Data type, uint_8, uint_16) (2) | 2023.11.25 |
[아두이노] String함수: indexof, substring, length (텍스트 검색, 위치 찾기) (0) | 2022.05.11 |
[아두이노]1초마다 프로그램 동작 시키기(millis(),delay(), scheduling, 스케쥴링) (0) | 2022.05.10 |
[아두이노]메모리가 부족할 때 처리방법(프로그램 저장 공간, 전역 변수, 지역변수) (0) | 2022.05.09 |