Raspberry Pi에서 Arduino와 연결하고 작업하려면 보통 GUI 환경에서 Arduino IDE를 설치하여 사용한다.
그러나 필자와 같이 라즈베리 파이에 SSH로 접속하여 CLI 작업을 한다면 IDE를 사용할 수 없다.
그렇기에 이러한 환경에서는 Arduino CLI를 사용하여야 한다.
이 글에서는 Arduino CLI를 설치하고 사용하는 방법을 간단히 안내한다.
설치하기
Snap을 이용하기(Ubuntu만 가능)
Ubuntu라면 snap을 이용하여 설치할 수 있다.
아래의 명령을 입력한다.
sudo snap install arduino-cli
그러면 설치되는데, 이것을 사용하면 된다.
그러나 어떠한 이유로 snap을 사용하기 꺼린다면 아래의 방법을 이용한다.
설치하기(일반)
아두이노 공식 문서에서는 curl을 이용한 아래의 방법을 이용하도록 안내한다.
대부분의 linux는 curl이 설치되어 있지만, 만약 없다면 아래의 명령을 입력한다.
sudo apt update
sudo apt install curl -y
curl이 설치된다.
curl은 라즈베리 파이와 서버의 시간이 동기화 되어야 정상 작동한다.
timedatectl
위의 명령을 입력하여 시간 상태를 확인하고, 시간이 맞지 않다면 이 글을 보고 조치한다.
이후 아래의 두 명령 중 하나를 입력한다.
위의 명령은 $PWD/bin에 Arduino CLI를 설치하는 것이고, 아래의 명령은 sudo 권한으로 $PWD/bin 에 Arduino CLI를 설치하는 것이다.
두 명령 모두 $PWD/bin에 파일을 설치하기 때문에, 원하는 디렉터리가 따로 있다면, 해당 디렉터리로 이동한 후 명령을 실행하거나, BINDIR 옵션을 주어 따로 위치를 지정해야 한다.
예를 들어, /bin에 해당 파일을 설치하려면(권장되지 않는다), /로 이동한 뒤, sudo 권한으로 명령을 실행하면 된다.
curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | sh
curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | BINDIR=~/local/bin sudo sh
cd / # 루트 디렉터리로 이동
curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | sudo sh
필자는 홈 디렉터리에 설치를 진행하였다. 나중에 설치 경로를 바꿀 계획이다.

사용자 디렉터리 경로에 Arduino CLI를 설치하였다면 아래의 명령을 사용하여 경로를 '$PATH'에 등록한다.
echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc
source ~/.bashrc
모종의 이유로 curl이 정상 작동하지 않아 설치가 실패하였다면 아래의 방법을 따른다.
이곳에서 자신의 운영 체제에 맞는 설치 파일을 내려받는다.
https://docs.arduino.cc/arduino-cli/installation/
Several options are available for installation of Arduino CLI. Instructions for each are provided below: Install via Homebrew (macOS/Linux) The Arduino CLI is available as a Homebrew formula since version 0.5.0: 1brew update2brew install arduino-cli Comman
docs.arduino.cc
권한을 설정한다.
sudo chmod 755 ./arduino-cli

curl을 이용하여 설치하였을 때, 권한이 755이므로 똑같이 설치해 준다.
정상 실행되는 실행 파일인지 확인한다.
./arduino-cli

정상 실행되는 실행 파일이라면, 그냥 그대로 사용하거나, 아래의 명령을 사용하여 파일을 시스템 전체에서 사용할 수 있게끔 한다.
sudo cp ./arduino-cli /bin/

만약 파일을 옮겼다면 아래의 명령을 입력하여 정상 작동하는지 확인한다.
arduino-cli version


정상 출력되면 설치가 된 것이다.
설정 및 라이브러리
설정
아래의 명령을 입력하여 설정 파일을 생성한다. sudo를 이용해 실행하지 않으면 설정은 사용자 홈 디렉터리에 생성되니 안심하여도 된다.
arduino-cli config init

설정 파일은 사용자가 편집할 수도 있다. 아래는 그 예문이다.
board_manager:
additional_urls:
- https://downloads.arduino.cc/packages/package_index.json
sketchbook_path: ~/Arduino
보드 패키지
이제 보드 패키지를 설치하여야 한다.
아래의 명령을 참고하여 실행한다.
arduino-cli core install <board_package>
만약 Arduino Uno를 이용한다면 아래와 같이 입력한다.
arduino-cli core update-index
arduino-cli core install arduino:avr


여담으로 이 과정에서 라즈베리 파이의 시간과 서버의 시간이 맞지 않다면 인증 오류가 발생할 수 있다.
이 글을 이용하여 조치한다.
라이브러리
라이브러리는 아래의 명령으로 설치한다.
arduino-cli lib install <library_name>
예를 들어, LiquidCrystal I2C 라이브러리를 설치하려면 아래와 같은 절차를 거친다.
먼저 라이브러리 이름을 알아야 한다. 검색한다.
arduino-cli lib search LiquidCrystal


재주껏 이름을 찾아낸다.
설치한다.
arduino-cli lib install "LiquidCrystal I2C"


아두이노와 연결
아두이노를 보드에 연결한 후 아래의 명령을 입력한다.
arduino-cli board list

그러면 연결된 장치 목록이 나타난다.
스케치 작성
새 아두이노 스케치를 작성하려면 아래의 명령을 입력한다.
arduino-cli sketch new "스케치 이름"

스케치를 보관할 디렉터리를 만들어두면 편하다.
확장자는 필요 없다. 자동으로 붙는다.
스케치 파일을 열면 익숙한 모습을 볼 수 있다.

파일 편집기는 원하는 것을 사용하면 된다.


별도의 컴퓨터에서 Arduino IDE를 이용하여 스케치를 작성한 후 시스템으로 가져와도 되고, 위 이미지처럼 Visual Studio Code에 관련 Arduino 확장을 설치하고 SSH 접속으로 편집하여도 된다.
어쨌든 스케치를 하나 만들어보자. 가장 기초 예제인 Blink이다.


작성 후 저장한다.
스케치 컴파일 및 업로드
스케치 컴파일
스케치 컴파일을 위해서는 아래의 명령을 입력한다:
arduino-cli compile --fqbn "보드의 FQBN 이름" "스케치 이름"
# --fqbn 대신 -b 옵션을 주어도 된다.
예를 들어, 보드 리스트가 다음과 같다고 하면:
sprout1345@sproutpi:~/sketch$ arduino-cli board list
Port Protocol Type Board Name FQBN Core
/dev/ttyACM0 serial Serial Port (USB) Arduino Uno arduino:avr:uno arduino:avr
/dev/ttyAMA10 serial Serial Port Unknown
보드의 FQBN(Fully Qualified Board Name) 이름은 "arduino:avr:uno"이다.
이를 이용한 컴파일 구문 예제는 다음과 같다:
arduino-cli compile --fqbn arduino:avr:uno blink
# --fqbn 대신 -b 옵션을 주어도 된다.

스케치 업로드
스케치 업로드를 위해서는 아래의 명령을 입력한다. 주의할 점은, 이 명령은 따로 컴파일을 수행하지는 않는다. 오직 업로드만 수행한다.
arduino-cli upload -p "장치 포트 경로" --fqbn "보드의 FQBN 이름" "스케치 이름"
# --fqbn 대신 -b 옵션을 주어도 된다.
예를 들어, 보드 리스트가 다음과 같다고 하면:
sprout1345@sproutpi:~/sketch$ arduino-cli board list
Port Protocol Type Board Name FQBN Core
/dev/ttyACM0 serial Serial Port (USB) Arduino Uno arduino:avr:uno arduino:avr
/dev/ttyAMA10 serial Serial Port Unknown
장치 경로는 "/dev/ttyACM0", FQBN은 "arduino:avr:uno"이다. 따라서 아래와 같이 입력한다:
arduino-cli upload -p /dev/ttyACM0 --fqbn arduino:avr:uno blink
# --fqbn 대신 -b 옵션을 주어도 된다.

업로드에 성공하면 따로 출력이 나오지는 않는다.
스케치 컴파일 & 업로드
하지만 전술한 방법처럼 컴파일과 업로드를 따로 진행하는 것은 귀찮은 일이다. 물론 컴파일과 업로드를 한 번에 할 수 있는 방법도 있다.
예문은 아래와 같다.
arduino-cli compile --fqbn "보드의 FQBN 이름" "스케치 이름" -u -p "장치 포트 경로"
# --fqbn 대신 -b 옵션을 주어도 된다.
이전의 그 보드 리스트를 다시 가져오면:
sprout1345@sproutpi:~/sketch$ arduino-cli board list
Port Protocol Type Board Name FQBN Core
/dev/ttyACM0 serial Serial Port (USB) Arduino Uno arduino:avr:uno arduino:avr
/dev/ttyAMA10 serial Serial Port Unknown
예문은 아래와 같이 입력된다:
arduino-cli compile --fqbn arduino:avr:uno blink -u -p /dev/ttyACM0
# --fqbn 대신 -b 옵션을 주어도 된다.

컴파일과 업로드가 진행된다.
여담
명령에 "--verbose" 옵션을 추가하면 자세한 정보를 출력하는데, 이는 Arduino IDE 설정의 '출력 중 자세한 표시'와 같은 설정이다.

해당 옵션을 추가하면 아래와 같이 자세한 출력이 나타난다.
이를 통해 임시 파일의 위치, 컴파일 과정 등의 정보를 확인할 수 있다.
참고 자료
https://m.blog.naver.com/roboholic84/221815428642
CLI(명령 줄 인터페이스) 환경에서 아두이노 업로드하기! / Arduino-CLI 0.8.x
안녕하세요, 메카솔루션입니다. 오늘은 기쁜 소식을 가지고 왔습니다! 드. 디. 어! 아두이노에서 CLI 환...
blog.naver.com
https://arduino.github.io/arduino-cli/1.1/getting-started
Getting started - Arduino CLI
Getting started Arduino CLI provides all the features you can find in the Arduino IDE. Let's see some examples. Before you start arduino-cli is a container of commands and each command has its own dedicated help text that can be shown with the help command
arduino.github.io
https://docs.arduino.cc/arduino-cli/getting-started/
https://docs.arduino.cc/arduino-cli/getting-started/
Arduino CLI provides all the features you can find in the Arduino IDE. Let's see some examples. Before you start arduino-cli is a container of commands and each command has its own dedicated help text that can be shown with the help command like this: 1$ a
docs.arduino.cc
https://www.arduino.cc/pro/software-pro-cli/
Software - Pro Cli
The all-in-one solution to code, compile and upload codes to your Arduino boards using command prompt (Windows) and Terminal (Linux and Mac)
www.arduino.cc
'Raspberry Pi' 카테고리의 다른 글
| Raspberry Pi #12 - waifu2x-ncnn-vulkan (0) | 2025.10.01 |
|---|---|
| Raspberry Pi #11 - arduino-cli에서 Arduino R4 Minima 사용 (0) | 2025.09.01 |
| Raspberry Pi #9 - Raspberry Pi에 저장된 네트워크 연결 정보 변경하기 (0) | 2025.07.01 |
| Raspberry Pi #8 - Raspberry Pi 5에서 BitNet AI 모델을 로컬로 실행 (2) | 2025.05.01 |
| Raspberry Pi #7 - 시간 동기화 설정 (0) | 2025.05.01 |
댓글