Learn how to program the Raspberry Pi Pico W5 with the Arduino IDE. The new Raspberry Pi RP2350 Pico W5 by Elecrow is a development board with the RP2350 microcontroller (150Mhz ARM Cortex, dual-core), 24 GPIO pins, Bluetooth 5.0 and 2.4GHz or 5GHz dual-band Wi-Fi. With these specs the board is aimed at IoT application with higher computation and network needs.
In this tutorial you will learn how to get started with this board.
Required Parts
You will need the Raspberry Pi RP2350 Pico W5. And if you want to connect some external hardware to test the GPIO port; some cables, resistors, LEDs and a breadboard will come in handy.
Raspberry Pi RP2350 Pico W5
USB C Cable
Dupont Wire Set
Breadboard
Resistor & LED kit
Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.
Features of the Raspberry Pi Pico W5 Board
The Pico W5 is a microcontroller based on the Raspberry Pi Pico W design. It uses the same RP2350 microcontroller chip with up to 150MHz and a ARM Cortex M0+ dual-core processor.
However, it has been enhanced regarding the USB interface, flash capacity and the Bluetooth-compatible performance. Most importantly the board supports 2.4GHz or 5GHz dual-band operation, as well as low-power Bluetooth and Bluetooth 5.0.
The following picture shows the top and bottom of the board. The USB-C connector and the 2.4 and 5 GHz antennas are easily recognizable.
The board has a RESET and a BOOT button and a built-in LED next to the BOOT button.
Specification
The following table lists the main technical details of the board:
Pinout of the Pico W5 Board
The picture below shows the pinout of the Pico W5 Board. There are 24 GPIO pins with PWM, two I2C interfaces, and four Analog-Digital-Converters (ADC). The built-in LED is attached to GPIO 25. Note that the board uses a type C USB port for power supply and runs on 3.3V.
Installation of RP2350 Core
Before you can program the Pico W5 you first need to install the RP2350 core. Go to File -> Preferences and open the Preferences Dialog
In the Preferences Dialog go to the Settings Tab. At the bottom you will see “Additional boards manager URLs:”. Click on the button to the right (marked yellow) to open the URL editor
In the URL editor add the following URL to the list (marked yellow below):
“https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json”
The package_rp2040_index supports the RP2040 and the RP2350 chip. As you can see, I have also installed the ESP8266 and the ESP32 cores but you need only the RP2350 core for this tutorial.
Installation of RP2350 Boards
Next we need to install the RP2350 Boards. Go to Tools -> Board -> Board Manager and search for RP2350 using the search bar. Install the Raspberry Pi Pico/RP2040/RP2350 boards by Earle F. Philhower. After installation it should look like this.
Select Raspberry Pi Pico 2 board
Once the installation of the RP2350 core is completed, connect the Pico W5 to the USB port of your computer. Then go to the Board Manager and select the “Raspberry Pi Pico 2 board” board as shown below:
The board should be recognized by the Arduino IDE and you should see it connected to a COM port via USB (see screenshot above). Now we are ready to program the Pico W5.
Blink Program for the Pico W5
Let’s start with the typical Blink Program. It will blink the built-in LED of the board every second:
void setup() { pinMode(LED_BUILTIN, OUTPUT); } void loop() { digitalWrite(LED_BUILTIN, HIGH); delay(1000); digitalWrite(LED_BUILTIN, LOW); delay(1000); }
Click the Upload button of the Arduino IDE and the code should be uploaded. If successful, the built-in LED starts blinking.
If the upload fails you may need to press (and/or hold) the BOOT button before or during the upload. That should be necessary only once as the arduino-pico core has auto-reset support. I generally had no issues flashing the board.
Testing the GPIO of the Pico W5
To try out the GPIO and PWM of the Pico W5, I connected an LED with a 220Ω resistor to GPIO 9 and GND. See the circuit below:
The following little test program dims the LED up and down, and was working nicely:
#define LED 9 void setup() { pinMode(LED , OUTPUT); } void loop() { for (int b = 0; b <= 255; b++) { analogWrite(LED , b); delay(5); } for (int b = 255; b >= 0; b--) { analogWrite(LED , b); delay(5); } }
Testing the 5 GHz Wi-Fi of the Pico W5
One of the main features of the Pico W5 board is the support of 5 GHz Wi-Fi. I tried the usual Wi-Fi code but couldn’t get it to work. This is probably because the Pico W5 Board by Elecrow is not yet on the list of supported boards of the Raspberry Pi Pico Arduino core.
However, I found an example in the demo code for Pico W5 Board, and that did work. Below is a slightly modified version of that demo code.
#define Serial2_RX 5 #define Serial2_TX 4 #define SET_WIFI_MODE "AT+WMODE=3,1" #define SET_WIFI_SSID_PASSWORD "AT+WJAP=\"SSID\",\"PWD\"" void setup() { Serial.begin(115200); Serial2.setRX(Serial2_RX); Serial2.setTX(Serial2_TX); Serial2.begin(115200); delay(1000); UART2_test(); } void UART2_test() { clear_serial(); bool ok_flag = false; Serial2.println(SET_WIFI_MODE); while (!ok_flag) { if (Serial2.find("OK")) { delay(1000); ok_flag = true; Serial.println("Set WIFI Mode Ok!"); } } clear_serial(); ok_flag = 0; Serial2.println(SET_WIFI_SSID_PASSWORD); while (!ok_flag) { if (Serial2.find("OK")) { delay(1000); ok_flag = true; Serial.println("WIFI Connected!"); } } } void clear_serial() { while (Serial2.read() >= 0); while (Serial.read() >= 0); } void loop() { }
You will have to replace the SSID and PWD values, with the ssid and password for your Wi-Fi network.
Conclusions
Hopefully this tutorial was useful to get you started with the Pico W5 Board by Elecrow. The RP2350 processor of the Pico W5 is a substantial improvement of the RP2040 but for now (March 2025) software support is a bit lacking.
Specifically, the Pico W5 Board is not yet on the list of supported boards of the Raspberry Pi Pico Arduino core. Simple applications such as GPIO work but I could not get the Wi-Fi or the Bluetooth libraries to work with Pico W5.
Also note that the demo code for the Pico W5 has errors or seems to aim at an older/different version of the Pico W5 board that uses the RP2040 instead of the RP2350. For instance, the blink program in the demo code uses GPIO 12 (or 16) for the built-in LED but it is actually 25. Also the installation guide shows the Raspberry Pi Pico/RP2040 board but for me only the Raspberry Pi Pico 2 board worked.
Finally, there are several different Pico boards that can make things confusing. For instance there is the Pico W5 and the Pico 2W, and the Pico W5 can come with a RP2350 or a RP2040 microcontroller chip.
By the way, if you want to use a Pico with a display have a look at our Scribble on CrowPanel Pico 4.3″ Display tutorial.
Happy tinkering ; )
Links
Here are some links that I found useful when writing this article:
- Product Page
- Demo Code
- PICO W5 Tutorial
- Arduino-Pico Documentation
- Arduino-Pico Library
- Schematic & PCB
- Datasheet for RP2350
- Datasheet for BW16
- RP2350 versus RP2040
- Pico W5 versus Pico 2W
Schematics
The pictures below are excerpts of the schematic for the Pico W5 board with the RP2350 microcontroller from the following link: Schematic & PCB.
Microcontroller
Wi-Fi and Bluetooth
Built-in LED
Power Supply
Stefan is a professional software developer and researcher. He has worked in robotics, bioinformatics, image/audio processing and education at Siemens, IBM and Google. He specializes in AI and machine learning and has a keen interest in DIY projects involving Arduino and 3D printing.