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]를 입력한다.

문구가 아두이노로 입력된 후 약 1초 뒤, 아두이노에서 시리얼을 출력한다.
screen
이전 글에서 서술하였듯, screen은 터미널 응용 프로그램이다.
screen /dev/ttyACM1 115200
포트와 비트레이트를 지정하여 세션을 연다.
screen의 동작 방식은 arduino-cli의 시리얼 모니터와는 다른데, 사용자가 문자를 (빠르게) 입력하면, 각 키 입력이 아두이노로 즉시 전달되며, 마지막 입력으로부터 일정 시간(약 1초)이 지나면 아두이노가 이를 처리한다. 이는 [Enter]와 같은 추가 키 입력 없이 자동으로 진행된다.
그러니까, 예를 들어 s, e, t 을 각각 천천히 입력하면 각각 아두이노에서 처리하지만, set을 빠르게 입력하면 "set"이라고 입력이 되어 아두이노가 "set"을 출력한다.

여담
두 방법 모두, 아두이노부터의 연속적인 시리얼 출력이 이루어지는 동안에는 키를 입력하기 어렵다.
screen을 이용한 키 입력이 어렵다면, 입력하려는 값을 복사한 후 붙여넣으면 된다. 상술하였듯 이를 자동으로 처리한다.
Visual Studio Code를 사용한다면 MS 공식 시리얼 모니터 확장을 설치해 사용할 수도 있다.

솔직히 이거 쓰는게 본문에서 설명한 두 방법보다 편하다.
'Raspberry Pi' 카테고리의 다른 글
| Raspberry Pi #13 - Raspberry Pi 5에서 UART를 통해 Raspberry Pi Zero 2 WH에 접속하기 (0) | 2025.11.01 |
|---|---|
| Raspberry Pi #12 - waifu2x-ncnn-vulkan (0) | 2025.10.01 |
| Raspberry Pi #11 - arduino-cli에서 Arduino R4 Minima 사용 (0) | 2025.09.01 |
| Raspberry Pi #10 - Arduino CLI를 이용한 Arduino 프로그래밍 (3) | 2025.08.01 |
| Raspberry Pi #9 - Raspberry Pi에 저장된 네트워크 연결 정보 변경하기 (0) | 2025.07.01 |
댓글