Robotics

Arduino IDE로 Raspberry Pi Pico 프로그래밍 - 파이 피코를 아두이노처럼 사용하기

콩지니어 2023. 4. 18. 17:59

아두이노 Arduino가 오픈소스 MCU를 본격적으로 열며 많은 사람들이 전문지식이 없이도 쉽게 DIY 프로젝트를 시작할 수 있게 된지 어느덧 10년이 넘었습니다. 자연스럽게 아두이노 역시 구형 하드웨어가 되었고, 새로운 프로세서들에 비해 성능도, 기능적인 제한도 많은 신세가 되었습니다. 아두이노가 기반으로 하는 ATmega 계열 MCU는 80년대에 나온 상당히 오래된 프로세서로, 아직까지 살아남아있는 것이 신기할 정도로 오래된 프로세서 입니다. 아두이노 프로젝트가 시작될 때도 이미 구형 제품이었는데, 아마 처음 설계시에는 우선 싸고 쉽게 쓸 수 있는 설계를 하는 것이 우선이었을 것 같습니다.

시간이 지나 임베디드 프로세서 역시 큰 발전이 있었고, 구체적으로는 ARM 계열의 MCU들이 싼 가격과 보다 높은 성능을 가지고 출시되면서 아두이노의 장점은 조금씩 줄어들게 되었습니다. 아직 최신 프로세서를 사용하는 하드웨어가 비전문가도 쓸 수 있게 오픈되어 준비된 것이 없어 못썼을 뿐, 아두이노와 라즈베리 파이를 필두로 오픈소스 임베디드 하드웨어의 수요는 이미 확보가 되어 있었습니다.

그리고 몇년 전, 꽤 임베디드 컴퓨터 보급에 진심인 Raspberry Pi Foundation에서 MCU 보드를 하나 내놓았는데, 바로 직접 설계한 RP2040이 올라간 Raspberry Pi Pico 입니다.

출처: 라즈베리 파이 홈페이지

오픈소스 하드웨어 Raspberry Pi Pico

아두이노도 그렇지만, Pi Pico 역시 기판의 설계가 공개되어 있고, 누구나 무료로 설계를 이용해 기판을 제작할 수 있도록 라이센스도 풀려 있습니다. 설계가 공개되면 좋은점은 역시 검색해서 찾을 수 있는 리소스가 많다는 점과 원래 설계에는 없는 추가적인 요소를 설계한 회사가 아닌 다른 회사에서 작업해서 내놓을 수 있으니 용도별 보급에 용이합니다. 호환보드라고 표현은 하지만, 본 설계를 그대로 이용하기 때문에 사실상 기능이나 호환성에 있어 오리지널과 차이가 없습니다. 당연히 설계비용이 없다싶이 하여 가격도 저렴합니다.

USB-C로 변경되어 판매되는 호환 보드\

아두이노처럼 프로그래밍하기

하드웨어는 뛰어나지만 프로그래밍이 어려우면 비전문가들에게 보급하는데 문제가 있겠죠. 아두이노 계열 보드가 구식 프로세서를 사용하는데도 아직도 수요가 많은 이유는 프로그래밍의 편리성과 수많은 사람들이 공유한 설계 리소스 때문일 것 입니다. 성능을 좀 떨어져도 구글에서 찾은대로 하면 되는 것이라면 잘 모르는 성능 좋은 보드보다 더 선호하는 사람이 많을 것 입니다.

아두이노는 Processing이라는 보기 쉬운 IDE를 거의 그대로 수용하였고, C언어 기반이지만 직관적인 사용에 초점을 두고 다양한 API들이 준비되어있어 편리성에 있어 이를 넘어서기가 쉽지 않습니다.

그렇다면, 성능이 더 좋은 Pi Pico를 아두이노같이 프로그래밍 할 수 있으면 최고 아닐까요? 그 방법을 공유해보겠습니다.

아두이노 IDE

아두이노 홈페이지를 통해 공식 IDE를 받을 수 있는데, 최신버전인 2 버전 IDE는 처음 로드도 오래걸리고 예전 버전보다 오히려 더 불편한 점들이 있습니다. 그래서 저는 구버전인 1 버전을 사용하고 있습니다. 아래 홈페이지에서 1.8대 버전을 찾아 설치할 수 있습니다.

 

Software

Open-source electronic prototyping platform enabling users to create interactive electronic objects.

www.arduino.cc

Windows Store에서 설치하면 Pi Pico 인식에 문제가 있다고 합니다. Windows용이라면 Zip 파일을 받아 설치합니다.

설치를 마치면 아래와 같이 심플한 프로그래밍 윈도우를 확인할 수 있습니다.

아두이노 IDE에 Raspberry Pi Pico 보드 추가하기

바로 사용할 수 있다면 좋겠지만, 아쉽게도 기본 IDE에는 Pi Pico를 위한 설정정보가 포함되지 않아서 직접 추가해야 합니다. 어렵진 않으니 바로 해보겠습니다.

아두이노 IDE에서 [파일]-[환경설정]에 들어갑니다. 환경설정 창 하단에 URL을 추가하는 란에 아래 주소를 붙여넣습니다.

https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json

주소를 붙여넣기

[확인]을 누른 후, 이번엔 [도구]-[보드]-[보드매니저]를 누르고, "pico"를 검색합니다.

Pi Pico 추가하기

원래는 없었던 Raspberry Pi Pico/RP2040이 생겨났습니다. 이걸 설치합니다.

설치 중

이제 선택 가능한 보드 목록에서 Raspberry Pi Pico를 찾을 수 있습니다. 포트와 보드를 설정 후 프로그래밍을 시도합니다.

설정 후 IDE 하단 상태 메세지

이제 아두이노의 기본 예제를 올려보겠습니다. [파일]-[예제]-[Blink] 를 클릭하면 보드 위 LED를 이용하는 깜빡이기 예제가 있는데, 원래 1000 ms 였던 간격을 300 ms로 바꿔서 업로드 해보았습니다.

예제 코드와 업로드 완료 메세지

Scanning for RP2040 devices에서 막힌다면, 보드에서 케이블을 빼고, BOOTSEL 버튼을 누른 상태에서 USB 케이블을 연결하고 다시 시도하여 해결할 수 있습니다.

아두이노 Syntax 그대로 LED를 동작시킬 수 있는 것을 확인할 수 있습니다.

정리

아두이노의 직관적인 프로그래밍 스타일과 IDE를 그대로 이용하여 라즈베리 파이 피코를 사용할 수 있는 것을 확인하였습니다. 다만, 아두이노 IDE를 이용한 프로그래밍의 호환 범위가 어디까지인지는 직접 확인하지 않아 확실하지 않지만, 왠만한 기능은 호환에 문제가 없을 듯 합니다.

만약 편리성 보다는 Pi Pico를 100% 활용하고자 한다면, native한 C/C++ 툴을 이용하는 쪽으로 셋업하는 것이 가장 좋을 것 같습니다.