
라즈베리 파이 피코 아두이노 코어, 모든 RP2040 및 RP2350 보드용
# Arduino-Pico
[](https://github.com/earlephilhower/arduino-pico/releases)
[](https://gitter.im/arduino-pico/community)
모든 RP2040 및 RP2350 보드를 위한 Raspberry Pi Pico Arduino 코어
이것은 Arduino를 RP2040(Raspberry Pi Pico 프로세서) 및 RP2350(Raspberry Pi Pico 2 프로세서)로 포팅한 것입니다. 베어 Raspberry Pi Pico SDK와 사용자 정의 GCC 16.1/Newlib 4.6 툴체인을 사용하며 ARM 및 RISC-V 코어를 지원합니다.
# 문서
더 자세한 사용 정보는 https://arduino-pico.readthedocs.io/en/latest/ 와 예제들을 참조하세요.
# 기여
풀 리퀘스트 제출 및 이 코어로의 라이브러리 또는 스케치 포팅에 대한 자세한 내용은 [기여 가이드](https://github.com/earlephilhower/arduino-pico/blob/master/docs/contrib.rst)를 읽어보세요.
# 지원 보드
* Raspberry Pi Pico
* Raspberry Pi Pico W
* Raspberry Pi Pico 2
* Raspberry Pi Pico 2W
* 0xCB Helios
* Adafruit Feather RP2040
* Adafruit Feather RP2040 SCORPIO
* Adafruit Feather RP2040 DVI
* Adafruit Feather RP2040 Adalogger
* Adafruit Feather RP2040 RFM
* Adafruit Feather RP2040 ThinkINK
* Adafruit Feather RP2040 USB Host
* Adafruit Feather RP2040 CAN
* Adafruit Feather RP2040 Prop-Maker
* Adafruit ItsyBitsy RP2040
* Adafruit Metro RP2040
* Adafruit QT Py RP2040
* Adafruit STEMMA Friend RP2040
* Adafruit Trinkey RP2040 QT
* Adafruit MacroPad RP2040
* Adafruit KB2040
* Adafruit Feather RP2350 Adalogger
* Adafruit Feather RP2350 HSTX
* Adafruit Floppsy
* Adafruit Metro RP2350
* Adafruit Fruit Jam RP2350
* Amken BunnyBoard
* Amken Revelop
* Amken Revelop Plus
* Amken Revelop eS
* Architeuthis Flux Jumperless
* Architeuthis Flux Jumperless V5
* Arduino Nano RP2040 Connect
* ArtronShop RP2 Nano
* BIGTREETECH SKR-Pico
* Breadstick Raspberry
* BridgeTek IDM2040-7A
* BridgeTek IDM2040-43A
* Cytron IRIV IO Controller
* Cytron Maker Nano RP2040
* Cytron Maker Pi RP2040
* Cytron Maker Uno RP2040
* Cytron Motion 2350 Pro
* Cytron Maker Sumo RP2350
* DatanoiseTV PicoADK
* DatanoiseTV PicoADK v2
* Degz Robotics Suibo RP2040
* DeRuiLab FlyBoard2040Core
* DFRobot Beetle RP2040
* L'atelier d'Arnoz DudesCab
* ElectronicCats HunterCat NFC RP2040
* EVN Alpha
* ExtremeElectronics RC2040
* GeeekPi RP2040 Plus
* GroundStudio Marble Pico
* iLabs Challenger 2040 LTE
* iLabs Challenger 2040 LoRa
* iLabs Challenger 2040 SubGHz
* iLabs Challenger 2040 WiFi
* iLabs Challenger 2040 WiFi/BLE
* iLabs Challenger 2040 WiFi6/BLE
* iLabs Challenger NB 2040 WiFi
* iLabs Challenger 2040 SD/RTC
* iLabs Challenger 2040 NFC
* iLabs Challenger 2040 UWB
* iLabs Connectivity 2040 LTE/WiFi/BLE
* iLabs RPICO32
* iLabs Challenger 2350 WiFi/BLE
* iLabs Challenger 2350 BConnect
* iLabs Challenger 2350 NB-IoT
* iLabs Challenger ZP 2350 LoRa
* iLabs CPico 2350
* Makerbase MKS THR36
* Makerbase MKS THR42
* Melopero Cookie RP2040
* Melopero Shake RP2040
* METE HOCA Akana R1
* MyMakers RP2040
* MyMakers RP2350B
* Neko Systems BL2040 Mini
* Newsan Archi
* nullbits Bit-C PRO
* Olimex Pico2BB48
* Olimex Pico2XL
* Olimex Pico2XXL
* Olimex RP2040-Pico30
* Pcbcupid GLYPH 2040
* Pcbcupid GLYPH MINI 2040
* PicoLume Transceiver
* Pimoroni PGA2040
* Pimoroni PGA2350
* Pimoroni PicoPlus2
* Pimoroni PicoPlus2W
* Pimoroni Plasma2040
* Pimoroni Plasma2350
* Pimoroni Plasma2350W
* Pimoroni Servo2040
* Pimoroni Tiny2040
* Pimoroni Tiny2350
* Pimoroni Explorer
* Pintronix PinMax
* RAKwireless RAK11300
* redscorp RP2040-Eins
* redscorp RP2040-ProMini
* Generic Sea-Picro
* Silicognition RP2040-Shim
* Solder Party RP2040 Stamp
* Solder Party RP2350 Stamp
* Solder Party RP2350 Stamp XL
* Soldered Electronics NULA RP2350
* Soldered Electronics NULA Ethernet W55RP20
* Soldered Electronics NULA Node
* SparkFun IoT RedBoard RP2350
* SparkFun MicroMod RP2040
* SparkFun ProMicro RP2040
* SparkFun ProMicro RP2350
* SparkFun Thing Plus RP2040
* SparkFun Thing Plus RP2350
* SparkFun IoT Node LoRaWAN
* SparkFun XRP Controller (Beta)
* SparkFun XRP Controller
* Seeed INDICATOR RP2040
* Seeed XIAO RP2040
* Seeed XIAO RP2040 Plus
* Seeed XIAO RP2350
* uPesy RP2040 DevKit
* VCC-GND YD RP2040
* Vicharak Shrike-Lite
* Viyalab Mizu RP2040
* Waveshare RP2040 Zero
* Waveshare RP2040 One
* Waveshare RP2040 LoRa
* Waveshare RP2040 Matrix
* Waveshare RP2040 PiZero
* Waveshare RP2040 Plus
* Waveshare RP2040 LCD 0.96
* Waveshare RP2040 LCD 1.28
* Waveshare RP2350 Core
* Waveshare RP2350 Zero
* Waveshare RP2350 PiZero
* Waveshare RP2350 Plus
* Waveshare RP2350B Plus W
* Waveshare RP2350 LCD 0.96
* Waveshare RP2350-POE-ETH
* WeAct Studio RP2350B Core Board
* WIZnet W5100S-EVB-Pico
* WIZnet W5100S-EVB-Pico2
* WIZnet W5500-EVB-Pico
* WIZnet W5500-EVB-Pico2
* WIZnet W55RP20-EVB-Pico
* WIZnet W6300-EVB-Pico
* WIZnet W6300-EVB-Pico2
* WIZnet WizFi360-EVB-Pico
* Generic RP2040
* Generic RP2350
# 기능
* Adafruit TinyUSB Arduino (USB 마우스, 키보드, 플래시 드라이브, 일반 HID, CDC Serial, MIDI, WebUSB 등)
* PicoW의 Bluetooth (Classic 및 BLE) - 키보드, 마우스, 조이스틱, 가상 시리얼 지원
* Bluetooth Classic 및 BLE HID 마스터 모드 (BT 키보드, 마우스 또는 조이스틱에 연결)
* 일반 Arduino USB Serial, 키보드, 조이스틱, 마우스 에뮬레이션
* WiFi (Pico W, ESP32 기반 ESPHost, Atmel WINC1500)
* Ethernet (유선 WizNet W6300, WizNet W6100, WizNet W5500, WizNet W5100, ENC28J60)
* HTTP 클라이언트 및 서버 (WebServer)
* SSL/TLS/HTTPS
* 무선(OTA) 업그레이드
* 파일시스템 (LittleFS 및 SD/SDFS)
* 멀티코어 지원 (setup1() 및 loop1())
* FreeRTOS SMP 지원
* 메뉴에서 오버클럭 및 언더클럭
* digitalWrite/Read, shiftIn/Out, tone, analogWrite(PWM)/Read, 온도
* DMA 및 내장 ADC를 사용한 아날로그 스테레오 오디오 입력
* PWM 하드웨어를 사용한 아날로그 스테레오 오디오 출력
* PicoW의 Bluetooth A2DP 오디오 소스(출력) 및 싱크(입력)
* 데이터 로거용 USB 드라이브 모드 (SingleFileDrive, FatFSUSB)
* 주변장치: SPI 마스터/슬레이브, Wire(I2C) 마스터/슬레이브, 듀얼 UART, 에뮬레이션된 EEPROM, I2S 오디오 입력/출력, Servo
* USB 시리얼을 통한 printf (즉, 디버그) 출력
* PSRAM 전역 변수 및 힙의 투명한 사용 (RP2350 전용)
* RP2350에 대한 ARM 또는 RISC-V (Hazard3) 지원
* 세미호스팅 시리얼 및 파일시스템 접근
* GPROF 프로파일링 지원
RP2040 PIO 상태 머신(SM)은 지터 없는 다음을 생성하는 데 사용됩니다:
* 서보
* 톤
* I2S 입력
* I2S 출력
* 소프트웨어 UART (시리얼 포트)
* 소프트웨어 SPI
# Arduino Boards Manager를 통한 설치
## Windows 관련 참고 사항
실제 Arduino 애플리케이션의 Windows Store 버전은 사용하지 마세요.
연결된 Pico 보드를 감지하는 데 문제가 있기 때문입니다. https://arduino.cc 에서 직접 다운로드한 "Windows ZIP" 또는 일반 "Windows"
실행 파일(EXE)을 사용하고, 제안하는 모든 장치 드라이버를 설치하도록 허용하세요.
그렇지 않으면 Pico 보드가 감지되지 않을 수 있습니다. 또한 2.0 베타 Arduino를 사용해 보려는 경우,
필요한 장치 드라이버가 존재하도록 먼저 릴리스 1.8 버전을 설치하세요.
(자세한 내용은 #20을 참조하세요.)
## Linux 관련 참고 사항
flatpak(여러 Linux 배포판의 "앱 스토어"에서 흔히 사용됨)을 사용하여 Arduino를 설치하면
호스트에 대한 접근이 제한됩니다. 이로 인해 다음과 같은 오류 메시지와 함께 업로드가 실패할 수 있습니다:
```
Scanning for RP2040 devices
...
No drive to deploy.
```
이 문제가 발생하면 다른 방식으로 Arduino를 설치하거나, 다음 명령을 사용하여
flatpak 샌드박싱 기능을 재정의한 후 Arduino를 다시 시작해야 합니다.
```
flatpak override --user --filesystem=host:ro cc.arduino.IDE2
```
## 설치
Arduino IDE를 열고 File->Preferences로 이동합니다.
팝업되는 대화 상자에서 "Additional Boards Manager URLs" 필드에 다음 URL을 입력합니다:
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json

OK를 눌러 대화 상자를 닫습니다.
IDE에서 Tools->Boards->Board Manager로 이동합니다.
검색 상자에 "pico"를 입력하고 "Add"를 선택합니다:

# GIT을 통한 설치
**Windows 사용자:** Windows에서 `git`을 통해 설치하기 전에
[이 링크](https://arduino-pico.readthedocs.io/en/latest/platformio.html#important-steps-for-windows-users-before-installing)의 지침을 읽고 따르세요.
Win32 긴 경로가 활성화되지 않았고 `git`이 이를 사용하도록 구성되지 않은 경우
서브모듈을 복제하려고 할 때 오류가 발생할 수 있습니다.
Linux 또는 Mac에서 GIT을 통해(최신 및 최고 버전) 설치하려면:
````
mkdir -p ~/Arduino/hardware/pico
git clone https://github.com/earlephilhower/arduino-pico.git ~/Arduino/hardware/pico/rp2040
cd ~/Arduino/hardware/pico/rp2040
git submodule update --init --recursive
cd tools
python3 ./get.py
`````
Windows의 경우 Python이 이미 설치되어 있어야 하며 다른 경로에 git clone합니다:
````
mkdir %USERPROFILE%\Documents\Arduino\hardware\pico
git clone https://github.com/earlephilhower/arduino-pico.git %USERPROFILE%\Documents\Arduino\hardware\pico\rp2040
cd %USERPROFILE%\Documents\Arduino\hardware\pico\rp2040
git submodule update --init --recursive
cd tools
python .\get.py
````
# 스케치 업로드
첫 번째 스케치를 업로드하려면 Pico를 컴퓨터에 연결하는 동안 BOOTSEL 버튼을 누르고 있어야 합니다.
그런 다음 업로드 버튼을 누르면 스케치가 전송되고 실행되기 시작합니다.
첫 번째 업로드 후에는 `arduino-pico` 코어에 자동 재설정 지원이 있으므로 이 작업이 필요하지 않습니다.
Arduino Tools->Port->Serial Port 메뉴에 표시된 적절한 시리얼 포트를 한 번 선택하세요(이 설정은 유지되며 여러 업로드에 대해
다시 건드릴 필요가 없습니다). 이 선택을 통해 자동 재설정 도구가 재설정할 적절한 장치를 식별할 수 있습니다.
그런 다음 업로드 버튼을 누르면 스케치가 업로드되고 실행됩니다.
경우에 따라 Pico가 하드 행(hang)에 걸려 USB 포트가 자동 재설정 요청에 응답하지 않을 수 있습니다. 이 경우
Pico를 연결하는 동안 BOOTSEL 버튼을 누르고 있는 초기 절차를 따라 ROM 부트로더로 진입하세요.
# 파일시스템 이미지 업로드
Pico의 온보드 플래시 파일시스템인 LittleFS를 사용하면 스케치가 사용할 스케치 디렉토리에서 파일시스템 이미지를 업로드할 수 있습니다. 필요한 플러그인을 다음에서 다운로드하세요:
* https://github.com/earlephilhower/arduino-pico-littlefs-plugin/releases
설치하려면 다음의 지침을 따르세요:
* https://github.com/earlephilhower/arduino-pico-littlefs-plugin/blob/master/README.md
자세한 사용 정보는 다음에서 제공되는 ESP8266 저장소 문서(SPIFFS 관련 참고 사항은 무시)를 확인하세요:
* https://arduino-pico.readthedocs.io/en/latest/fs.html
# Picoprobe/Debugprobe를 사용한 스케치 업로드
Raspberry Pi Picoprobe를 빌드한 경우 OpenOCD를 사용하여 스케치 업로드 및 GDB를 통한 디버깅을 처리할 수 있습니다.
Windows에서는 로컬 관리자 사용자가 Picoprobe 포트에 자동으로 접근할 수 있지만, Linux에서는 `udev`에 장치를 알리고 일반 사용자의 접근을 허용해야 합니다.
Ubuntu(및 `udev`를 사용하는 기타 OS)에서 Picoprobe에 대한 사용자 수준 접근을 설정하려면:
````
echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="2e8a", ATTRS{idProduct}=="0004", MODE="660", GROUP-"plugdev"' | sudo tee -a /etc/udev/rules.d/98-PicoProbe.rules
echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="2e8a", ATTRS{idProduct}=="000a", MODE="660", GROUP="plugdev"' | sudo tee -a /etc/udev/rules.d/98-PicoProbe.rules
echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="2e8a", ATTRS{idProduct}=="000f", MODE="660", GROUP="plugdev"' | sudo tee -a /etc/udev/rules.d/98-PicoProbe.rules
sudo udevadm control --reload
sudo udevadm trigger -w -s usb
````
첫 번째 줄은 Picoprobe의 USB 공급업체 및 제품 ID와 일치하는 장치 파일을 `/dev`에 생성하고 전역 읽기+쓰기 권한을 활성화합니다. 두 번째 줄은 `udev`가 이 새 규칙을 로드하도록 합니다. 세 번째 줄은 커널에 "장치 변경" 이벤트를 생성하도록 요청하여 새 `udev` 규칙이 실행되도록 합니다.
어떤 이유로 장치 파일이 나타나지 않으면 USB 연결을 수동으로 뽑았다가 다시 연결하고 다시 확인하세요. 장치 파일이 여전히 없으면 `dmesg`의 출력이 유용한 진단 정보를 제공할 수 있습니다.
Picoprobe 권한이 제대로 설정되면 Tools 메뉴에서 "Raspberry Pi Pico (Picoprobe)" 보드를 선택하고 평소처럼 업로드하세요.
# Picoprobe, OpenOCD, GDB를 사용한 디버깅
설치된 도구에는 OpenOCD 버전(pqt-openocd 디렉토리)과 GDB(pqt-gcc 디렉토리)가 포함되어 있습니다. 이들은 Raspberry Pi Foundation의 Pico Getting Started 매뉴얼에 문서화된 대로 대화형 창에서 GDB를 실행하는 데 사용할 수 있습니다. `git` 설치 디렉토리에서 `./system/openocd/bin/openocd -f ./lib/rp2040/picoprobe_cmsis_dap.tcl` 또는 `./system/openocd/bin/openocd -f ./lib/rp2350/picoprobe_cmsis_dap.tcl` 명령줄을 사용하세요.
# 라이선스 및 크레딧
* [Arduino IDE 및 ArduinoCore-API](https://arduino.cc)는 Arduino 팀이 개발 및 유지 관리합니다. IDE는 GPL에 따라 라이선스됩니다.
* [RP2040 GCC 기반 툴체인](https://github.com/earlephilhower/pico-quick-toolchain)은 GPL에 따라 라이선스됩니다.
* [Pico-SDK](https://github.com/raspberrypi/pico-sdk)는 Raspberry Pi (Trading) Ltd의 것이며 BSD 3-Clause 라이선스에 따라 라이선스됩니다.
* [Arduino-Pico](https://github.com/earlephilhower/arduino-pico) 코어 파일은 LGPL에 따라 라이선스됩니다.
* [LittleFS](https://github.com/ARMmbed/littlefs) 라이브러리는 ARM Limited가 작성했으며 [BSD 3-clause 라이선스](https://github.com/ARMmbed/littlefs/blob/master/LICENSE.md)에 따라 릴리스되었습니다.
* [UF2CONV.PY](https://github.com/microsoft/uf2)는 Microsoft Corporation의 것이며 MIT 라이선스에 따라 라이선스됩니다.
* 네트워킹 및 파일시스템 코드는 [ESP8266 Arduino Core](https://github.com/esp8266/Arduino)에서 가져왔으며 LGPL에 따라 라이선스됩니다.
* AP 호스트 모드용 DHCP 서버는 [Micropython Project](https://micropython.org)의 것이며 MIT 라이선스에 따라 배포됩니다.
* [FreeRTOS](https://freertos.org)는 Amazon.com, Inc. 또는 그 계열사의 저작권이며 MIT 라이선스에 따라 배포됩니다.
* [lwIP](https://savannah.nongnu.org/projects/lwip/)는 (c) Swedish Institute of Computer Science의 것이며 BSD 라이선스에 따라 라이선스됩니다.
* [BearSSL](https://bearssl.org) 라이브러리는 Thomas Pornin이 작성했으며 [MIT 라이선스](https://bearssl.org/#legal-details)에 따라 배포됩니다.
* [UZLib](https://github.com/pfalcon/uzlib)은 (c) 2003 Joergen Ibsen의 저작권이며 zlib 라이선스에 따라 배포됩니다.
* [LEAmDNS](https://github.com/LaborEtArs/ESP8266mDNS)는 여러 저자의 저작권이며 MIT 라이선스에 따라 배포됩니다.
* [http-parser](https://github.com/nodejs/http-parser)는 Joyent, Inc. 및 기타 Node 기여자의 저작권입니다.
* WebServer 코드는 [ESP32 WebServer](https://github.com/espressif/arduino-esp32/tree/master/libraries/WebServer)에서 수정되었으며 (c) 2015 Ivan Grokhotkov 및 기타의 저작권입니다.
* [Xoshiro-cpp](https://github.com/Reputeless/Xoshiro-cpp)는 (c) 2020 Ryo Suzuki의 저작권이며 MIT 라이선스에 따라 배포됩니다.
* [FatFS 저수준 파일시스템](http://elm-chan.org/fsw/ff/) 코드는 Copyright (C) 2024, ChaN, 모든 권리 보유.
* [Espressif 포크의 PSRAM용 TLSF 메모리 관리자](https://github.com/espressif/tlsf)는 Matthew Conte의 [원본](https://github.com/mattconte/tlsf)을 기반으로 하며 Matthew Conte의 저작권이며 MIT 라이선스에 따라 라이선스됩니다.
* [ESPHost 라이브러리](https://github.com/Networking-for-Arduino/ESPHost)는 유지 관리자에 의해 LGPL 라이선스됩니다.
* [iLabs_ESP-NOW 라이브러리](https://github.com/PontusO/iLabs_ESP-NOW)는 iLabs Electronics에 의해 MIT 라이선스에 따라 라이선스됩니다.
* [iLabs_Hearth 라이브러리](https://github.com/PontusO/iLabs_Hearth)는 iLabs Electronics에 의해 MIT 라이선스에 따라 라이선스됩니다.
* [PicoCamera](https://github.com/umeiko/PicoCamera) 카메라 라이브러리는 umeko에 의해 MIT 라이선스에 따라 라이선스됩니다.
-Earle F. Philhower, III
[email protected]