Skip to Content

Programming the Pico W5 with Arduino IDE

Programming the Pico W5 with Arduino IDE

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

Dupont Wire Set

Half_breadboard56a

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.

Top and Bottom of the Raspberry Pi Pico W5 Board
Top and Bottom of the Raspberry Pi Pico W5 Board

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:

Specification of the Elecrow RP2350 Pico W5 Board
Specification of the Pico W5 Board (source)

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.

Pinout of the Elecrow RP2350 Pico W5 Board
Pinout of the Pico W5 Board (source)

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

File -> Preferences Menu
File -> Preferences Menu

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

Settings Tab in Preferences Dialog
Settings Tab in Preferences Dialog

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”

Add package_rp2040_index URL to board manager
Add package_rp2040_index URL to board manager

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.

Install Raspberry Pi Pico/RP2040/RP2350 board
Install Raspberry Pi Pico/RP2040/RP2350 board

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:

Raspberry Pi Pico 2 in Bord Manager
Raspberry Pi Pico 2 in Bord Manager

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:

LED connected to GPIO 9
LED connected to GPIO 9

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:

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

RP2350 microcontroller
RP2350 microcontroller

Wi-Fi and Bluetooth

BW16 chip for Wi-Fi and Bluetooth
BW16 chip for Wi-Fi and Bluetooth

Built-in LED

Built-in LED
Built-in LED

Power Supply

Power Supply
Power Supply