본문 바로가기
Raspberry Pi

Raspberry Pi #14 - arduino와 시리얼 통신 주고받기

by Spring13 2026. 2. 1.

GUI 환경이 아닌, CLI 환경에서는 Arduino IDE를 사용하여 아두이노 보드와 시리얼 통신을 할 수 없다.

그렇지만, 시리얼 통신이 불가능한 것은 아니다. arduino-cli에 포함된 시리얼 모니터나, screen 등의 터미널 프로그램을 사용하는 방법이 있다.

 

이 글에서는 arduino-cli에 포함된 시리얼 모니터와, screen 그리고 Visual Studio Code의 확장을 이용한 시리얼 통신 방법을 설명한다.


사용한 코드

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);	115200 baud로 통신
}

void loop() {
  // put your main code here, to run repeatedly:
  if (Serial.available() > 0) {	// 시리얼 신호 입력 시
    String input = Serial.readString();	// 입력 값 받아서 String 형식으로 저장
      Serial.print("input: ");
      Serial.println(input);
  }
}

아두이노에 업로드 한 코드이다.


연결된 아두이노 포트 경로 확인


아래의 명령을 입력한다.

arduino-cli board list
sprout1345@sproutpi:~$ arduino-cli board list
Port          Protocol Type              Board Name            FQBN                       Core
/dev/ttyACM0  serial   Serial Port (USB) Arduino UNO R4 Minima arduino:renesas_uno:minima arduino:renesas_uno
/dev/ttyACM1  serial   Serial Port (USB) Arduino Micro         arduino:avr:micro          arduino:avr
/dev/ttyAMA10 serial   Serial Port       Unknown

포트를 선택한다. 일단 필자는 Arduino Micro를 이용할 것이다.


코드를 업로드하는 방법을 모른다면 이 글을 참고하여 업로드한다.


arduino-cli에 포함된 시리얼 모니터


arduino-cli monitor -p /dev/ttyACM1 --config 115200

코드에서 115200 baud로 통신하겠다고 하였으므로 위의 코드를 입력한다.

 

arduino-cli의 시리얼 모니터가 열린다.

이 시리얼 모니터를 이용하여 시리얼 송신을 하는 방법은, 보낼 문구를 입력하고, [Enter]를 입력하면 된다.

 

예를 들어 hello 문구를 송신하고 싶다면, hello를 입력한 후 [Enter]를 입력한다.

입력값을 입력 후 [Enter]를 누르면 해당 값이 아두이노로 전달된다.

 

문구가 아두이노로 입력된 후 약 1초 뒤, 아두이노에서 시리얼을 출력한다.


screen


이전 글에서 서술하였듯, screen은 터미널 응용 프로그램이다.

screen /dev/ttyACM1 115200

포트와 비트레이트를 지정하여 세션을 연다.

 

screen의 동작 방식은 arduino-cli의 시리얼 모니터와는 다른데, 사용자가 문자를 (빠르게) 입력하면, 각 키 입력이 아두이노로 즉시 전달되며, 마지막 입력으로부터 일정 시간(약 1초)이 지나면 아두이노가 이를 처리한다. 이는 [Enter]와 같은 추가 키 입력 없이 자동으로 진행된다.

 

그러니까, 예를 들어  s, e, t 을 각각 천천히 입력하면 각각 아두이노에서 처리하지만, set을 빠르게 입력하면 "set"이라고 입력이 되어 아두이노가 "set"을 출력한다.

입력이 자동으로 이루어지기 때문에, 터미널에는 출력만 나타나있다.


여담


두 방법 모두, 아두이노부터의 연속적인 시리얼 출력이 이루어지는 동안에는 키를 입력하기 어렵다.

screen을 이용한 키 입력이 어렵다면, 입력하려는 값을 복사한 후 붙여넣으면 된다. 상술하였듯 이를 자동으로 처리한다.


Visual Studio Code를 사용한다면 MS 공식 시리얼 모니터 확장을 설치해 사용할 수도 있다.

솔직히 이거 쓰는게 본문에서 설명한 두 방법보다 편하다.

728x90
반응형

댓글