차완기 - @6/30/2023, 2:47:00 AM
오래 기다리셨죠?
전 세계 메이커들의 구세주이자 임베디드 입문의 지름길, 그런 아두이노의 간판이라 할 수 있는 Arduino UNO가 새로운 리버전으로 업그레이드되었습니다.
바로 Arduino UNO R4 MINIMA입니다. (이하 MINIMA 생략)
지난 10여 년 동안 아두이노 우노 R3는 저렴한 가격에 합리적인 성능 그리고 거대한 오픈소스 커뮤니티로 무장해 임베디드 프로그래밍의 접근성을 획기적으로 낮추어 주었습니다. 덕분에 전공자, 비전공자 가릴 것 없이 수많은 사람들에게 큰 관심과 사랑을 받을 수 있었습니다.
우노 R3의 두뇌라 할 수 있는 MCU(MicroController Unit)는 Microchip 사의 MCU인 ATmega328을 사용합니다. 8-bit에 16 MHz 클럭 주파수를 가지는 AVR 기반 프로세서가 내장되어 있죠. 2023년 현재에도 ATmega328은 입문이라는 목적에는 여전히 더할 나위 없이 좋은 MCU지만, 그동안 기술이 발전함에 따라 훨씬 저렴하고 강력한 성능을 가진 MCU가 많아져 아두이노 우노 R3의 성능이 아쉽게 느껴진다는 것은 어쩔 수 없는 사실이었습니다.
이를 극복하고자 메이커들은 조금 더 높은 성능을 가진 아두이노 DUE, MKR 시리즈를 선택하거나 능력자의 경우 다른 MCU에 아두이노 프레임워크를 이식해 사용하기도 하였습니다. 후자의 경우 대표적으로 RPi Pico가 있죠.
아두이노의 개발사인 Arduino LLC에도 이 점을 충분히 공감하였는지 아두이노 우노의 폼팩터(외형)는 유지하면서 더욱 강력한 성능을 가진 아두이노 우노 R4를 최근 출시하게 되었습니다.
며칠을 못 참고..
2일 전이죠. 6월 27인 화요일 날 아침에 일어나 보니 이메일이 하나 와있었습니다.
어어어어??
다른 내용은 모르겠고 Order now 버튼을 보고 정신이 번쩍 들었는데요, 잠시 후 결제가 완료되어 있었습니다.
구매하는 김에 마침 요즘 구매하고 싶었던 Make Your UNO Kit가 할인하기에 같이 구매했습니다. 누구보다 빠르게 받아보고 싶어 1~3일 소요되는 FedEx International Priority로 선택했죠.
이 글을 작성하고 있는 @6/29/2023 기준, 국내에도 정발됬네요. 하하 내 4만원
뜯고 나서 사진을 찍지 않은 걸 깨달아버렸습니다.
그리고 오늘 2일 만에 도착했습니다.
함께 구매한 다른 제품은 다음에 살펴보기로 하고, 이번 포스팅에서는 주제인 이 친구, R4 MINIMA한테 집중해 보겠습니다.
외형 훑어보기
왼쪽: R3 / 오른쪽: R4
우선 기존 R3와 R4를 나란히 비교해 보았습니다. 가장 눈에 띄는 것은 USB가 Type-C로 바뀌었다는 것이네요. 아래에서 설명하겠지만 USB 이외에도 여러 부품이 바뀌며 빈 공간이 생겨 기존의 R3와 비교하자면 허전하다는 생각이 드는데요, 아두이노 측에서도 남는 공간이 어색하다 느꼈는지 격자무늬를 넣어 덜 심심하게 디자인하였습니다.
왼쪽: R3 / 오른쪽: R4
뒷면은 기존 R3에서도 사용할 일이 없어 그다지 눈에 띄는 것은 없는데요, 단 한 가지 KC인증 로고가 있네요…? 아무래도 적합성평가쪽인 것 같은데, 요건 나중에 살펴봐야겠습니다.
자세히 살펴보기
어떤 부분에서 변화가 있었는지 하나하나 살펴보도록 하겠습니다.
Arduino UNO R4의 정체성, 더욱 강력해진 MCU
마블 어쩌고저쩌고 아니고요, MicroController Unit입니다.
흔히 아두이노의 ‘두뇌’라고 설명하고는 하는 MCU에는 연산을 수행하는 프로세서(CPU), 실행 중인 함수나 변수가 저장되는 주 기억장치(SRAM), 소스코드가 저장되는 보조 기억장치(Flash) 등 컴퓨터에서 볼 수 있는 다양한 장치들이 들어있습니다. 물론 크기가 작고 가격이 저렴한 만큼 숫자는 작죠.
기존 R3의 MCU, ATmega328
R4의 MCU, RA4M1
Arduino UNO R4의 가장 큰 변경점은 MCU가 바뀌었다는 것입니다. 너무나도 오래된 AVR 기반의 ATmega328에서 ARM 기반의 RA4M1으로 변경되었습니다. ARM 기반 MCU로 넘어가는 요즘의 추세를 반영한 것이죠.
RA4M1의 주요 성능은 아래와 같습니다.
•
프로세서: 32-bit Arm Cortex-M4 @ 48 MHz / R3: 8-bit AVR CPU @ 16 Mhz
R3와는 비교할 수 없을 정도로 성능이 증가하였습니다. 물론 CPU 아키텍처가 AVR에서 ARM으로 서로 다르기 때문에 직접적인 비교는 불가능하지만 대충 3배 정도 성능이 높아졌다고 해도 무방할 것 같습니다.
•
SRAM: 32 kB / R3: 2 kB
일반적인 프로젝트에서 SRAM이 부족할 일은 드물긴 합니다. 디스플레이, 그중에서도 그래픽 LCD를 사용하는 경우 메모리 부족이 자주 발생하는데요, 사진을 디스플레이에 표시하는 과정에서 모든 픽셀 데이터가 SRAM에 잠시 저장되기 때문입니다.
물론 SD나 Flash에서 읽어오는 방법도 있지만 그건 느리죠. 16배나 더 큰 메모리로 복잡한 프로젝트라도 쉽게 해결할 수 있어 보입니다.
•
Flash: 256 kB / R3: 32 kB
앞에서 언급한 디스플레이를 이어서 설명하자면 Flash가 커지면 더 많은 고화질 사진을 저장할 수 있습니다. Flash는 8배 더 크네요.
•
ADC: 14-bit / R3: 10-bit
ADC의 비트 수는 분해능을 의미합니다. 측정된 데이터가 얼마나 더 정밀하냐는 것인데요, 기존 10-bit는 0~5 V를 0~1023으로 표현했다면, 14-bit에서는 0~16383까지 표현됩니다. 엄청 정밀하죠.
•
12-bit DAC
여기서부터는 R4에만 있는 기능입니다. DAC는 ADC의 반대 개념으로, 아날로그 신호인 구형파, 정현파 등을 구현할 수 있는 장치입니다. 간단히 설명하자면 Tone 함수는 이제 집어치우고 제대로 된 음악을 재생할 수 있다는 것입니다.
•
USB
기존 R3는 소스코드(펌웨어) 업로드를 위해 UART를 사용하며, ATmega328에서 하나의 UART만을 지원해 펌웨어를 업로드할 때마다 0, 1번 핀을 사용할 수 없었습니다. SoftwareSerial이 강제되는 것도 답답했죠.
우노 R4의 RA4M1는 USB를 지원해 더 이상 이런 걱정을 할 필요가 사라졌습니다. USB 연결과 관계없이 0, 1번 핀을 디지털핀으로 사용하거나 UART 통신목적으로 사용할 수 있습니다. 이외에도 HID 기능을 지원해 아두이노 레오나르도와 같이 키보드 마우스로 동작할 수도 있습니다.
•
CAN
CAN은 차동 신호를 사용해 안정적인 N:N 통신 방식입니다. 자동차에 주로 사용하는데, 파면 팔 수록 복잡하기 때문에 자세한 내용은 기회가 된다면 다음에 다루도록 하겠습니다.
•
5 V 논리 전압
처음 아두이노 우노 R4가 공개되었을 때 가 ARM 기반 MCU를 사용한다기에 논리전압이 달라 발생할 수많은 문제가 걱정되었습니다. 그런데, 지금 확인해 보니 5 V 논리전압을 사용하네요.
덕분에 기존 R3에서 사용하던 센서는 모두 사용할 수 있게 되었습니다.
아기다리고기다리던 USB Type-C
기존 R3의 USB 단자
R4의 Type-C USB 연결
튼튼한 USB 커넥터도 좋지만, 요즘 대체는 Type-C죠? 아두이노 우노의 커넥터가 항상 아쉬웠는데, 이번에 드디어 USB로 바뀌어 개발보드를 보기만 해도 행복합니다
탄탄해진 전원부
기존 R3의 전원부
R4의 전원부
기존 R3는 리니어 레귤레이터를 이용해 6~20 V의 외부 전원을 5 V 전원으로 변환하였습니다. 여기서 한 가지 문제가 발생하는데요, 남는 전력을 열로 바꿔버리는 리니어 레귤레이터 특성상 공급 전압이 높아질수록 엄청난 발열이 발생하게 됩니다. 만약 10 V를 공급해 5 V, 1 A를 뽑아내면 공급 전력의 절반인 5 W의 열이 발생하게 되죠. 감이 잘 잡히지 않지만 5 W는 납을 녹일 수 있을 정도의 발열이라 이렇게 사용했다가는 전원부가 과열되어 터져버릴 수 있습니다.
아두이노 우노 R4의 Schematic 중 전원부
이러한 문제를 해결하기 위해 R4는 벅 컨버터(Buck-Converter)를 사용하였습니다. 벅 컨버터는 높은 효율로 전압을 낮출 수 있고, 이는 적은 발열로 이어지게 됩니다.
덕분에 넓은 범위의 6~24 V 외부 전압을 공급받을 수 있고 최대 1.2A의 전류를 뽑아올 수 있습니다. (ISL854102 스펙 기준)
드디어 우노도 디버거를, SWD 단자
기존 아두이노 우노 R3에서의 디버깅은 끔찍했습니다. Serial.print()로 어느 정도 문제를 해결할 수는 있지만 코드를 한 줄씩 실행하거나 변수의 데이터를 실시간으로 수정하는 것은 불가능하기 때문에 디버깅에 있어서 명확한 한계가 존재했죠.
아두이노 우노 R4는 디버깅을 위한 SWD 단자가 있어 디버거를 구입해 달아주면 아주 편리한 디버깅이 가능합니다. 앞에서 이야기한 것처럼 코드를 줄 단위로 실행하거나 변수를 조작하는 등의 디버깅이 가능하죠. 원인을 알 수 없는 오류에 삽질하는 시간이 크게 줄어들 것으로 기대됩니다.
LOV...E..?
사실 우노 R4의 뒷면은 평범한 뒷면이 아닙니다. 하드웨어 개발자 중 변태가 있는 게 확실합니다.
튀어나와 있는 수상한 하트.. 그리고 옆의 심장박동을 묘사한듯한 PCB 패턴.. 하트의 정체는 바로 MCU의 P204 핀과 연결된 핀입니다.
글을 작성하고 있는 현재 기준으로 따로 정보가 없어 사용해보기 위해 직접 삽질을 해보았습니다. 그 결과 LOVE핀은 아두이노의 상위 함수에는 정의되어있지 않지만 조금만 아래로 내려가면 사용할 수 있어 아래와 같이 코드를 작성하였습니다.
void setup() {
// P204 -> PORT 2, PIN 4
R_IOPORT_PinCfg(NULL, BSP_IO_PORT_02_PIN_04, IOPORT_CFG_PORT_DIRECTION_OUTPUT);
}
void loop() {
R_IOPORT_PinWrite(NULL, BSP_IO_PORT_02_PIN_04, BSP_IO_LEVEL_HIGH);
delay(100);
R_IOPORT_PinWrite(NULL, BSP_IO_PORT_02_PIN_04, BSP_IO_LEVEL_LOW);
delay(1000);
}
C++
복사
마무리
이번 아두이노 R4는 이름 선정과 관련해 많은 의견이 있는 것 같습니다. UNO라는 이름을 주었으면서 기존 R3 MCU에서 사용하던 AVR 레지스터는 왜 사용을 못 하냐는 것인데요..
어느 정도 동의하기는 하지만, 간판 격인 UNO가 오래된 상태로 멈추어있기보다는 계속 발전하는 편이 더 좋지 않을까 개인적으로 생각합니다. R3도 계속 생산한다고 하고요.
그리고 미래에 누군가가 이런 문제를 해결할 수 있는 방법을 만들어주지 않을까요? 그게 바로 오픈소스의 장점이니까요