Intro#
- arduino-cli는 아두이노 IDE의 명령라인 툴이다. (소프트웨어 툴)
- Shell Script로 여러 번거로운 작업을 자동화 할 수 있다.
- nvim 이나 vim에서 개발할 수 있는 환경에 적용할 수 있다.
- nvim을 중심으로 코드 작성, 컴파일, 디버깅을 모두 처리할 수 있다.
- 설치 및 사용환경: windows, windows-wsl2-alpine, linux-ubuntu
Intall: Windows#
Install: Linux#
- 일반사용자의 경우
~/bin
에 설치: PATH에 추가
curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | sh
Install: windows-wsl2-alpine#
- reference: https://github.com/dorssel/usbipd-win/wiki/WSL-support
- 아두이노 장치를 USB에 연결한다.
- wsl2-alpine - gcompat, usbip, hwdata 설치
- gcompat은 ardunino-cli로 컴파일할 때 ld-linux-x86-64.so.2 사용하는데 alpine은 musl 기반이므로 호환 지원 패키지를 설치해야 한다.
- usbip는 usbipd의 클라이언트 패키지
- hwdata는 USB등의 장치파일
- ardunino-cli 사용자 설치시에 USB장치 소유권 문제가 있다. 장치 소유권을 해당 사용자로 변경한다.
- windows - usbipd-win 설치 및 설정
- usbipd는 윈도우즈에서 wsl2 등에 USB 장치를 공유해주는 데몬 프로그램
- 반드시 관리자 권한으로 실행해 주어야한다.
- 아두이노 장치를 wsl2에 붙여 주었을 경우 윈도우에서는 사용할 수 없다.
- 이 데몬은 usbip 클라이언트의 요청을 통해 USB장치(여기에서는 아두이노)를 공유
# WSL2-Alpine Linux: Pre-Package Install
doas apk update
doas apk add gcompat linux-tools-usbip hwdata
# Windows-Powershell
# 관리자권한으로 실행, 윈도우즈 재부팅시 다시 설정해주어야 한다.
# 연결시 자동 attach 방법을 모색할 필요가 있다.
# usbipd를 설치하고 wsl list를 통해 아두이노의 busid를 확인하고 이를 연결하고 확인.
winget usbipd
usbipd wsl list
usbipd wsl attach --busid=2-2
usbipd wsl list
# WSL2-Alpine Linux: arduino-cli Install
# usb 지원여부 확인
# ardunino-cli 설치 및 패스 설정
# 장치 소유권 현 사용자로 변경
lsusb
curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | sh
export PATH=$PATH:$HOME/bin
arduino-cli board list
doas chown -R <user_id>:<user_id> /dev/ttyACM0
arduino-cli --help
Install: debian, ubuntu#
lsusb
curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | sh
export PATH=$PATH:$HOME/bin
arduino-cli board list
sudo chown -R <user_id>:<user_id> /dev/ttyACM0
arduino-cli --help
시작하기#
# 도움말
arduino-cli help
arduino-cli help core
# 설정 파일 초기화 (~/.arduino15/arduino-cli.yaml)
arduino-cli config init
# 장치와 연결하기 (Arduino UNO)
arduino-cli board list
arduino-cli core update-index
arduino-cli core install arduino:avr
arduino-cli board listall mkr # list의 보드가 Unknown으로 나올 경우
arduino-cli board list
# 소스 작성 (동일한 스케치 이름의 폴더와 파일이 필요)
# 다른 방법: arduino-cli sketch new myfirst && vim myfirst/myfirst.ino
mkdir myfirst
cat<<EOF > myfirst/myfirst.ino
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
delay(1000);
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
}
# 컴파일과 업로드하기 (upload시 자동 컴파일)
# 장치명 확인: ardunino-cli board list
# 컴파일(-b)
arduino-cli compile --fqbn arduino:avr:uno myfirst
# 업로드 (-u)
arduino-cli upload -p /dev/ttyACM0 --fqbn arduino:avr:uno myfirst
# 컴파일(-b) & 업로드(-u)
arduino-cli compile -p /dev/ttyACM0 -u arduino:avr:uno myfirst
REFERENCE#