Voltar às atualizações
New releaseSep 5, 2026

arduino-pico v6.1.0

Núcleo Arduino para Raspberry Pi Pico, para todas as placas RP2040 e RP2350.

Compartilhar

Arduino-Pico

Release Gitter

Núcleo Arduino para Raspberry Pi Pico, para todas as placas RP2040 e RP2350

Este é um porte do Arduino para os processadores RP2040 (processador Raspberry Pi Pico) e RP2350 (processador Raspberry Pi Pico 2). Ele usa o SDK bare Raspberry Pi Pico e um toolchain personalizado GCC 14.3/Newlib 4.5 e suporta núcleos ARM e RISC-V.

Documentação

Consulte https://arduino-pico.readthedocs.io/en/latest/ juntamente com os exemplos para obter informações de uso mais detalhadas.

Contribuindo

Leia o Guia de Contribuição para obter mais informações sobre como enviar pull requests e portar bibliotecas ou sketches para este núcleo.

Placas Suportadas

  • 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 Floppsy RP2040
  • Adafruit ItsyBitsy RP2040
  • Adafruit KB2040
  • Adafruit Macropad RP2040
  • Adafruit Metro RP2040
  • Adafruit Metro RP2350
  • Adafruit QTPy RP2040
  • Adafruit STEMMA Friend RP2040
  • Adafruit Trinkey RP2040 QT
  • Amken Bunny
  • 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 Pi RP2040
  • Cytron Maker Nano RP2040
  • Cytron Maker Uno RP2040
  • Cytron Motion 2350 Pro
  • Datanoise PicoADK v1
  • Datanoise PicoADK v2 (RP2350)
  • Degz Suibo RP2040
  • DeRuiLab FlyBoard2040 Core
  • DFRobot Beetle RP2040
  • ElectronicCats Hunter Cat NFC
  • EVN Alpha
  • ExtremeElectronics RC2040
  • GeeekPi RP2040 Plus
  • GroundStudio Marble Pico
  • Invector Labs Challenger RP2040 WiFi
  • Invector Labs Challenger RP2040 WiFi/BLE
  • Invector Labs Challenger RP2040 WiFi6/BLE
  • Invector Labs Challenger NB RP2040 WiFi
  • Invector Labs Challenger RP2040 LTE
  • Invector Labs Challenger RP2040 LoRa
  • Invector Labs Challenger RP2040 SubGHz
  • Invector Labs Challenger RP2040 SD/RTC
  • Invector Labs Challenger RP2040 UWB
  • Invector Labs Challenger+ RP2350 BConnect
  • Invector Labs Challenger+ RP2350 WiFi/BLE
  • Invector Labs Challenger+ RP2350 NB-IoT
  • Invector Labs RPICO32
  • Melopero Cookie RP2040
  • Melopero Shake RP2040
  • METE HOCA Akana R1
  • Makerbase MKSTHR36
  • Makerbase MKSTHR42
  • MyMakers RP2040
  • Neko Systems BL2040 Mini
  • Newsan Archi
  • nullbits Bit-C PRO
  • Olimex Pico2XL
  • Olimex Pico2XXL
  • Olimex RP2040-Pico30
  • PicoLume Transceiver
  • Pimoroni PGA2040
  • Pimoroni Pico Plus 2
  • Pimoroni Pico Plus 2W
  • Pimoroni Plasma2040
  • Pimoroni Plasma2350
  • Pimoroni Plasma2350W
  • Pimoroni Servo2040
  • Pimoroni Tiny2040
  • Pimoroni Tiny2350
  • Pintronix PinMax
  • PCBCupid Glyph 2040
  • PCBCupid Glyph Mini 2040
  • RAKwireless RAK11300
  • Redscorp RP2040-Eins
  • Redscorp RP2040-ProMini
  • Sea-Picro
  • Seeed Indicator RP2040
  • Seeed XIAO RP2040
  • Seeed XIAO RP2040 Plus
  • Seeed XIAO RP2350
  • Silicognition RP2040-Shim
  • Solder Party RP2040 Stamp
  • Solder Party RP2350 Stamp
  • Solder Party RP2350 Stamp XL
  • Soldered Electronics NULA Ethernet W55RP20
  • Soldered Electronics NULA RP2350
  • SparkFun IoT RedBoard RP2350
  • SparkFun MicroMod RP2040
  • SparkFun ProMicro RP2040
  • SparkFun ProMicro RP2350
  • SparkFun Thing Plus RP2040
  • SparkFun Thing Plus RP2350
  • SparkFun XRP Controller
  • uPesy RP2040 DevKit
  • VCC-GND YD-RP2040
  • Viyalab Mizu RP2040
  • Waveshare RP2040 Zero
  • Waveshare RP2040 One
  • Waveshare RP2040 Plus
  • Waveshare RP2040 LCD 0.96
  • Waveshare RP2040 LCD 1.28
  • Waveshare RP2040 LoRa
  • Waveshare RP2040 Matrix
  • Waveshare RP2040 PiZero
  • Waveshare RP2350 Zero
  • Waveshare RP2350 PiZero
  • Waveshare RP2350 Plus
  • Waveshare RP2350 Plus W
  • Waveshare RP2350 LCD 0.96
  • 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
  • RP2040 Genérico (flash configurável, pinos de E/S)
  • RP2350 Genérico (flash configurável, pinos de E/S)

Recursos

  • Adafruit TinyUSB Arduino (mouse USB, teclado, pen drive, HID genérico, Serial CDC, MIDI, WebUSB, entre outros)
  • Bluetooth no PicoW (Clássico e BLE) com Teclado, Mouse, Joystick e Serial Virtual
  • Modo mestre HID Bluetooth Clássico e BLE (conecte-se a teclado, mouse ou joystick BT)
  • Emulação de Serial USB Arduino genérica, Teclado, Joystick e Mouse
  • WiFi (Pico W, ESPHost baseado em ESP32, Atmel WINC1500)
  • Ethernet (Com fio WizNet W6300, WizNet W6100, WizNet W5500, WizNet W5100, ENC28J60)
  • Cliente e servidor HTTP (WebServer)
  • SSL/TLS/HTTPS
  • Atualizações Over-the-Air (OTA)
  • Sistemas de arquivos (LittleFS e SD/SDFS)
  • Suporte a múltiplos núcleos (setup1() e loop1())
  • Suporte SMP FreeRTOS
  • Overclock e underclock a partir dos menus
  • digitalWrite/Read, shiftIn/Out, tone, analogWrite(PWM)/Read, temperatura
  • Áudio estéreo analógico de entrada usando DMA e o ADC integrado
  • Áudio estéreo analógico de saída usando hardware PWM
  • Fonte (saída) e sumidouro (entrada) de áudio Bluetooth A2DP no PicoW
  • Modo unidade USB para registradores de dados (SingleFileDrive, FatFSUSB)
  • Periféricos: SPI mestre/escravo, Wire(I2C) mestre/escravo, UART dupla, EEPROM emulada, entrada/saída de áudio I2S, Servo
  • Saída printf (ou seja, depuração) pela serial USB
  • Uso transparente de globais e heap de PSRAM (somente RP2350)
  • Suporte ARM ou RISC-V (Hazard3) para o RP2350
  • Acesso serial e a sistema de arquivos semihosted
  • Suporte a perfilamento GPROF

As máquinas de estado PIO (SMs) do RP2040 são usadas para gerar sem jitter:

  • Servos
  • Tones
  • Entrada I2S
  • Saída I2S
  • UARTs por software (portas seriais)
  • SPIs por software

Instalação via Gerenciador de Placas do Arduino

Notas específicas para Windows

Não use a versão da Windows Store do aplicativo Arduino real, pois ela tem problemas para detectar placas Pico conectadas. Use o download "Windows ZIP" ou o executável (EXE) "Windows" direto de https://arduino.cc e permita que ele instale quaisquer drivers de dispositivo que sugerir. Caso contrário, a placa Pico pode não ser detectada. Além disso, se estiver testando o beta 2.0 do Arduino, instale antes a versão 1.8 para garantir que os drivers de dispositivo necessários estejam presentes. (Consulte #20 para mais detalhes.)

Notas específicas para Linux

Instalar o Arduino usando flatpak (frequentemente usado pelas "Lojas de Aplicativos" em várias distribuições Linux) significa que ele terá acesso restrito ao host. Isso pode fazer com que os uploads falhem com mensagens de erro como as seguintes:

Scanning for RP2040 devices
...
No drive to deploy.

Se você encontrar isso, será necessário instalar o Arduino de outra maneira ou substituir o recurso de sandboxing do flatpak usando o seguinte comando e reiniciar o Arduino.

flatpak override --user --filesystem=host:ro cc.arduino.IDE2

Instalação

Abra a IDE Arduino e vá em File->Preferences.

No diálogo que aparecer, insira a seguinte URL no campo "Additional Boards Manager URLs":

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

image

Clique em OK para fechar o diálogo.

Vá em Tools->Boards->Board Manager na IDE

Digite "pico" na caixa de pesquisa e selecione "Add":

image

Instalação via GIT

Usuários Windows: Antes de instalar via git no Windows, leia e siga as instruções em este link. Se os caminhos longos do Win32 não estiverem habilitados e o git não estiver configurado para usá-los, podem ocorrer erros ao tentar clonar os submódulos.

Para instalar via GIT (para versões mais recentes) no Linux ou Mac:

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

No Windows, você precisa ter o Python já instalado e clonar via git em um caminho diferente:

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

Enviando Sketches

Para enviar seu primeiro sketch, você precisará manter o botão BOOTSEL pressionado enquanto conecta o Pico ao computador. Em seguida, clique no botão de upload e o sketch deverá ser transferido e começar a executar.

Após o primeiro upload, isso não deve ser necessário, pois o núcleo arduino-pico tem suporte a reset automático. Selecione a porta serial apropriada no menu Arduino Tools->Port->Serial Port uma vez (essa configuração persistirá e não precisará ser alterada para múltiplos uploads). Essa seleção permite que a ferramenta de reset automático identifique o dispositivo correto para resetar. Em seguida, clique no botão de upload e seu sketch deverá ser enviado e executado.

Em alguns casos, o Pico pode travar e sua porta USB não responderá à solicitação de reset automático. Se isso acontecer, basta seguir o procedimento inicial de manter o botão BOOTSEL pressionado enquanto conecta o Pico para entrar no bootloader ROM.

Enviando Imagens de Sistema de Arquivos

O sistema de arquivos flash integrado do Pico, LittleFS, permite enviar uma imagem do sistema de arquivos a partir do diretório do sketch para uso pelo seu sketch. Baixe o plugin necessário em

Para instalar, siga as instruções em

Para informações de uso detalhadas, consulte a documentação do repositório ESP8266 (ignore as notas relacionadas a SPIFFS) disponível em

Enviando Sketches com Picoprobe/Debugprobe

Se você construiu um Raspberry Pi Picoprobe, pode usar o OpenOCD para gerenciar seus uploads de sketches e para depuração com GDB.

No Windows, um usuário administrador local deve conseguir acessar a porta do Picoprobe automaticamente, mas no Linux o udev deve ser informado sobre o dispositivo e autorizar o acesso de usuários comuns.

Para configurar o acesso de nível de usuário a Picoprobes no Ubuntu (e em outros sistemas que usam udev):

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

A primeira linha cria um arquivo de dispositivo em /dev correspondente ao ID de fabricante e produto USB do Picoprobe e habilita permissões globais de leitura+escrita. A segunda linha faz o udev carregar esta nova regra. A terceira linha solicita que o kernel gere eventos de "mudança de dispositivo" que farão nossa nova regra do udev ser executada.

Se por algum motivo o arquivo de dispositivo não aparecer, desconecte e reconecte manualmente a conexão USB e verifique novamente. A saída do dmesg pode revelar diagnósticos úteis se o arquivo de dispositivo continuar ausente.

Depois que as permissões do Picoprobe estiverem configuradas corretamente, selecione a placa "Raspberry Pi Pico (Picoprobe)" no menu Tools e faça o upload normalmente.

Depuração com Picoprobe, OpenOCD e GDB

As ferramentas instaladas incluem uma versão do OpenOCD (no diretório pqt-openocd) e do GDB (no diretório pqt-gcc). Elas podem ser usadas para executar o GDB em uma janela interativa, conforme documentado nos manuais Pico Getting Started da Raspberry Pi Foundation. Use a linha de comando ./system/openocd/bin/openocd -f ./lib/rp2040/picoprobe_cmsis_dap.tcl ou ./system/openocd/bin/openocd -f ./lib/rp2350/picoprobe_cmsis_dap.tcl a partir do diretório de instalação do git.

Licenciamento e Créditos

  • A IDE Arduino e o ArduinoCore-API são desenvolvidos e mantidos pela equipe Arduino. A IDE é licenciada sob GPL.
  • O toolchain RP2040 baseado em GCC é licenciado sob GPL.
  • O Pico-SDK é da Raspberry Pi (Trading) Ltd e licenciado sob a licença BSD 3-Clause.
  • Os arquivos do núcleo Arduino-Pico são licenciados sob LGPL.
  • A biblioteca LittleFS foi escrita pela ARM Limited e lançada sob a licença BSD 3-clause.
  • UF2CONV.PY é da Microsoft Corporation e licenciado sob a licença MIT.
  • Código de rede e sistema de arquivos retirado do ESP8266 Arduino Core e licenciado sob LGPL.
  • Servidor DHCP para modo host AP do Projeto Micropython, distribuído sob a Licença MIT.
  • FreeRTOS é protegido por direitos autorais da Amazon.com, Inc. ou suas afiliadas, e distribuído sob a licença MIT.
  • lwIP é (c) do Swedish Institute of Computer Science e licenciado sob a licença BSD.
  • A biblioteca BearSSL escrita por Thomas Pornin é distribuída sob a Licença MIT.
  • UZLib é protegido por direitos autorais (c) 2003 Joergen Ibsen e distribuído sob a licença zlib.
  • LEAmDNS é protegido por direitos autorais de vários autores e distribuído sob a licença MIT.
  • http-parser é protegido por direitos autorais da Joyent, Inc. e de outros contribuidores do Node.
  • Código do WebServer modificado do ESP32 WebServer e é protegido por direitos autorais (c) 2015 Ivan Grokhotkov e outros.
  • Xoshiro-cpp é protegido por direitos autorais (c) 2020 Ryo Suzuki e distribuído sob a licença MIT.
  • O código do sistema de arquivos de baixo nível FatFS é Copyright (C) 2024, ChaN, todos os direitos reservados.
  • O gerenciador de memória TLSF para PSRAM do fork Espressif do original de Matthew Conte é protegido por direitos autorais de Matthew Conte e licenciado sob a licença MIT.
  • A biblioteca ESPHost é licenciada sob LGPL por seus mantenedores.

-Earle F. Philhower, III
[email protected]

Categorias