개발자/라즈베리파이4

Raspberry Pi Pico 시작하기, RP2040 마이크로컨트롤러 보드

지구빵집 2023. 2. 24. 16:31
반응형

 

 

Raspberry Pi Pico 시작하기: RP2040 마이크로컨트롤러 보드 – 핀아웃, 회로도 및 프로그래밍 자습서 

 

보기드믄 성능의 소형 마이크로보드는 구하기 쉽지 않습니다. 

 

이번 포스팅에서는 컴퓨터에서 Raspberry Pi Pico 보드를 설정하고 C/C++ SDK 및 Arduino IDE로 프로그램을 작성 및 컴파일하는 방법을 알아봅니다. 

 

 

Getting started with Raspberry Pi Pico

 

라즈베리 파이 파이 피코는 라즈베리 파이 재단의 RP2040 마이크로컨트롤러를 기반으로 하는 개발 보드입니다. RP2040은 RPi에서 설계한 최초의 마이크로컨트롤러입니다. 264KB 온칩 SRAM을 갖춘 듀얼 코어 ARM Cortex-M0+ 프로세서로, 프로그램 저장을 위해 최대 16MB의 오프칩 플래시 메모리를 지원합니다. 이 마이크로컨트롤러는 133MHz로 작동하며 단일 QFN-56, 7×7mm 패키지로 제공됩니다. RP2040의 가장 큰 장점은 광범위한 GPIO 핀 세트, 내부 주변 장치, SRAM 크기, 코어 수, 클럭 속도 및 가격입니다. RP2040은 인도에서 1달러 또는 80루피에 불과합니다.

 

Raspberry Pico는 RP2040을 작동시키는 데 필요한 모든 것을 결합한 최소한의 소형 개발 보드입니다. 출시 후 거의 1년 반이 지난 최근, RPi는 Wi-Fi와 블루투스 기능을 갖춘 새로운 버전의 Pico를 발표했습니다. 새로운 보드는 납땜 헤더가 있는 WH 버전과 함께 Pico W라고 불립니다. Pico와 유사한 또 다른 모델은 SWD 인터페이스용 커넥터가 있고 캐스털 구멍이 없는 Pico H입니다. 

 

 

Raspberry Pi Pico with header and without one

 

이 포스팅을 학습하기 위해 필요한 준비물은 다음과 같습니다.  

  •  Any Raspberry Pi Pico board. We are using Pico H. H란 헤더 핀이 붙어 있는 것을 말합니다.
  • A micro USB cable.
  • Windows 10/11 computer.
  • Internet connection. 

 

RP2040이란?

 

RP2040은 ARM Cortex-M0+ 듀얼 코어 마이크로컨트롤러입니다. 즉, 패키지 내부에 코드를 병렬로 실행할 수 있는 두 개의 개별 프로세서가 있습니다. 하나의 가격으로 두 개의 마이크로컨트롤러를 사용하는 것과 같습니다. 두 코어 모두 133MHz로 실행되며 오버클럭도 가능합니다! Cortex-M0+는 전력 소비에 최적화된 ARM 마이크로컨트롤러 시리즈입니다. 모든 ARM Cortex 마이크로컨트롤러와 마찬가지로 RP2040에도 32비트 코어가 있어 모든 인스턴스에서 복잡한 32비트 명령어를 실행할 수 있습니다. 또한 단 1클럭 주기로 단일 명령어를 실행할 수 있는 RISC 프로세서입니다.

 

RP2040과 아두이노 우노 보드에 사용되는 인기 있는 ATmega328P를 비교해 보겠습니다. 몇 가지 기능만 비교했습니다. 

 

Comparison between RP2040 and ATmega328P

Property RP2040 ATmega328P
Core Type ARM Cortex-M0+ 8-bit AVR
Instruction Type RISC RISC
Instruction Size 32-bit 8-bit
Core Count 2 1
Maximum Clockspeed 133 MHz 20 MHz
SRAM 264 KB 2 KB
Flash Size 16 MB 32 KB
GPIO Count 30 23
ADC Resolution 12 bit 10 bit
PWM All GPIO pins Limited GPIO pins
Interrupt All GPIO pins 2 GPIO pins
UART 2 1
SPI 2 1
I2C 2 1
USB Yes No
Price ~$1 ~$2.7
Firmware Lock Protection No Yes
Working Voltage 1.8 to 3.3V 1.8 to 5.5V

 

위 특징들에 더해 자세한 Specification과 Block Diagram, Pin Out, Chip Version에 대한 글은 원글 문서를 참고하세요.

 

 

Raspberry Pi Pico schematic

 

 

Pico에서 모든 GPIO 핀이 분리되어 있는 것은 아닙니다. GPIO 핀 중 4개는 다른 용도로 사용됩니다. 따라서 해당 핀을 사용하려면 해당 핀이 분리된 보드를 찾거나 직접 보드를 설계해야 합니다.

 

● GP29/ADC3은 VSYS를 측정하는 데 사용됩니다.

 GP25는 디버그 LED에 사용됩니다.

 GP24는 VBUS 센싱에 사용됩니다.

 GP23은 SMPS 절전 핀에 연결됩니다.

 

나만의 보드 설계에 대해 말하자면, 라즈베리 파이에서 제공하는 두 가지 레퍼런스 디자인으로 시작할 수 있습니다.

 

최소 설계 예제 [ZIP]

라즈베리 파이 파이 피코 및 라즈베리 파이 피코용 VGA, SD 카드 및 오디오 데모 보드 [ZIP]

 

두 디자인 모두 오픈 소스 회로도 및 PCB 설계 도구인 KiCad를 사용하여 제작되었습니다. 위에 제공된 프로젝트 파일을 다운로드하여 KiCad에서 직접 열 수 있습니다. 자세한 내용은 라즈베리파이의 하드웨어 설계 가이드라인 파일을 확인하세요. 

 

Pinout

 

Pico 보드에 대한 아름답고 직관적인 핀 맵 그림을 보세요.

 

 

Raspberry Pi Pico pinout  with Arduino pins.

 

참고 - Raspberry Pi Pico Microcontroller Board – Pinout Diagram & Reference 

 

Arduino 핀은 Earle F. Philhower, III의 Arduino-Pico 코어를 기반으로 합니다. Mbed 기반 RP2040 코어에서 사용하는 핀 할당은 다르며 다소 제한적입니다. Arduino-Pico 코어를 사용하면 총 3개의 직렬 포트(USB-CDC 1개 및 하드웨어 UART 2개 포함), 2개의 SPI 포트 및 2개의 I2C 포트를 사용할 수 있습니다. 라즈베리파이 피코는 모든 GPIO 핀에서 PWM과 인터럽트를 지원합니다. 16개의 PWM 채널이 있으며 모든 GPIO 핀에 할당할 수 있습니다.

 

Pico 보드의 유일한 두 가지 단점은 리셋 버튼과 전용 USB 직렬 드라이버가 없다는 것입니다. 따라서 보드를 재설정하려면 항상 전원에서 보드를 분리해야 하며, 전용 USB-직렬 드라이버가 없으면 대부분의 직렬 모니터 애플리케이션은 재설정할 때 보드와 연결이 끊기고 연결 시작 시 인쇄되는 디버그 메시지를 볼 수 없습니다. 

 

Programming

 

RP2040용 애플리케이션을 빌드하고 이를 마이크로컨트롤러(더 정확하게는 플래시 메모리)에 플래시하는 방법에는 여러 가지가 있습니다. 라즈베리파이에서 제공하는 공식 SDK(소프트웨어 개발 키트)에는 C/C++ SDK와 Python SDK가 있습니다. 그 외에도 RP2040은 아두이노 개발 프레임워크(ADF)에서 지원됩니다. 즉, 다른 아두이노 지원 보드와 마찬가지로 Pico 보드를 사용할 수 있습니다. 이 튜토리얼에서는 공식 C/C++ SDK와 ADF를 사용하여 라즈베리파이 피코용 소프트웨어를 개발하는 방법을 보여드리겠습니다. 

 

C/C++ SDK 설정

 

RP2040 C/C++ SDK의 개발 환경 설정은 이 PDF 파일 - Raspberry Pi Pico 시작하기 - 에 잘 설명되어 있습니다(Raspberry Pi에서 제공). 어떤 이유에서인지 RPi는 웹 기반 설명서를 제공하지 않고 대신 PDF 파일로 게시하기로 결정했습니다 🤥. 따라서 RPi가 업데이트 버전을 게시할 때 다운로드한 PDF 파일이 구식이 될 수 있습니다. 따라서 문제가 발생할 경우 첫 번째 단계는 RPi에서 업데이트된 문서가 있는지 확인하는 것입니다. 또한 PDF 문서는 웹 검색을 통해 공식 정보를 찾기가 어렵습니다.

 

저희와 같이 Windows 컴퓨터를 사용하는 경우, 설명서의 9장으로 이동하여 설명된 대로 모든 것을 정확하게 따르세요. 기본적으로 다음 도구를 다운로드하여 설치해야 하며, 아직 설치하지 않은 경우 대부분의 바이너리를 Path 환경 변수에 사용할 수 있는지 확인해야 합니다. Path 변수는 터미널/콘솔 애플리케이션에서 실행 파일을 호출할 때 실행 파일을 찾을 수 있는 위치를 Windows에 알려주기만 하면 됩니다. 설치할 필요가 있습니다.

 

Arm GNU 툴체인(파일 이름이 -arm-none-eabi.exe로 끝나야 함)

CMake

Visual Studio 2022용 빌드 도구(MinGW를 사용하는 경우 필요 없음)

Python 3.10

Git

MinGW

 

숀 하이멜이 자신의 블로그에 이 프로세스에 대한 훌륭한 안내서를 작성했습니다. 하지만 공식 문서와 달리 Shawn은 elf2uf2 및 pioasm 도구를 빌드하기 위해 MinGW(Windows용 미니멀리스트 GNU) 환경을 사용합니다. 이 환경에서는 프로젝트를 빌드하기 위해 NMake나 Microsoft Visual Studio 도구를 사용할 필요가 없다는 장점이 있습니다. NMake를 사용할 때의 문제점은 항상 개발자 명령 프롬프트 창에서 실행해야 한다는 것입니다. 개발자 명령 프롬프트에서 VS 코드를 실행하지 않으면 출력 창에 다음과 같은 오류가 발생하고 빌드에 실패합니다. 

 

 

아래는 직접 실행하면서 포스팅을 완성해야 한다. 흠~ 

 

참고 문서

 

Getting Started with Raspberry Pi Pico : RP2040 Microcontroller Board – Pinout, Schematic and Programming Tutorial  

 

 

 

 

반응형