0

Challenger+ RP2350 WiFi6/BLE5

The Challenger+ RP2350 WiFi6/BLE5 board is a cutting-edge development platform designed to harness the full potential of the new revolutionary dual core Cortex-M33/RISCV RP2350 MCU from Raspberry Pi. The Challenger+ RP2350 WiFi6/BLE5 board is tailored for engineers, developers, and enthusiasts seeking to create innovative applications with ease and efficiency.

This board also features the ESP32-C6 network module, a cutting-edge connectivity solution, offering both Wi-Fi 6 and Bluetooth 5 capabilities for high-speed wireless communication. Designed for superior performance and efficiency, the ESP32-C6 is ideal for a wide range of applications, from IoT devices to smart home systems.

Key Features

  • Powered by RP2350 MCU: At the heart of the Challenger+ RP2350 WiFi6/BLE5 board lies the RP2350, a new powerful microcontroller from Raspberry Pi. With its advanced architecture, enhanced processing capabilities, and robust peripheral support, the RP2350 is designed to deliver exceptional performance for a wide range of applications.
  • 8MByte Flash and 8MByte RAM: The Challenger+ RP2350 WiFi6/BLE5 board is equipped with an impressive 8MByte Flash memory and 8MByte RAM, providing ample storage and memory for complex applications and large datasets. This substantial memory capacity enables the development of more sophisticated and data-intensive projects without compromise.
  • ESP32-C6 WiFi/BLE module: With the ESP32-C6 network module you get high performance WiFi6 and BLE5.4 functionality right from the start. High speed SPI communication warrants high speed data transfers and low latency network operations.
  • Rich Peripheral Set: Equipped with a comprehensive set of peripherals such as USBm GPIOs, ADCs, DACs, PWM, SPI, I2C, UART, PIO and a heck of a lot more the Challenger+ RP2350 WiFi6/BLE5 board provides the flexibility needed to interface with numerous sensors, actuators, and modules.
  • High Performance and Efficiency: Leveraging the RP2350’s high clock speed, low power consumption, and advanced power management features, the WiFi6/BLE5 Board ensures optimal performance while maintaining energy efficiency, making it suitable for both high-performance and battery-powered applications.
  • User-Friendly Development Environment: The Challenger+ RP2350 WiFi6/BLE5 Board is fully compatible with popular development tools and environments, including the Raspberry Pi Pico SDK, MicroPython, and Arduino IDE. This allows for a smooth and intuitive development experience, reducing time to market and accelerating project development.
  • Compact and Robust Design: Featuring a compact form factor and robust construction, the Challenger+ RP2350 WiFi6/BLE5 board is designed to withstand the rigors of both development and deployment. Its durable build ensures reliable operation in various environmental conditions.
  • Raspberry Pi compatible SWD debug connector for easy connection to the picoprobe. On this board this connector is located on the bottom side of the board.

Challenger+ RP2350 WiFi6/BLE5 pinout

LiPo battery / charger

The board is equipped with a standard 1.25 mm JST connector for connecting a rechargeable LiPo battery. There is also an internal battery charger circuit that charges your battery as long as a USB cable is inserted or the VUSB connection is connected to 5V.

USB Type C

The board is equipped with a sturdy USB type C connector which provides both power and data to the board. If you have a LiPo battery connected to your board this will be charged while the USB cable is inserted. The connector is configured to negotiate 3A max power delivery when connected to a USB C host system.

Weight 0.009 kg
Dimensions 5.07 × 2.28 × 0.72 cm

Using the Arduino environment

Just like with our RP2040 based boards we’ve teamed up with Earle F. Philhower to provide Arduino support for our RP2350 based boards. Currently this support is still in Alpha stage (although mostly functional) and needs to be install with Git. Downloads and instructions on how to do this can be found here https://github.com/PontusO/arduino-pico/tree/msplit.

Raspberry pi pico-sdk support

This board is supported natively by the Raspberry Pi pico-sdk. Read more here and try the examples out.

Circuitpython/Micropython

Support for Circuitpython and Micropython will follow shortly… stay tuned.

Examples

Below are a couple of examples that you can try out on your new Challenger+ RP2350 WiFi6/BLE5 board. They require that you have the Arduino-Pico board support package (See Getting started) and the WiFiEspAT (https://github.com/JAndrassy/WiFiEspAT) library installed. This library can be installed through the library manager of the Arduino IDE or by simply cloning the library inside the library directory of your Arduino installation.

Example 1

Here’s a listing of a classical example on how to connect to arduino.tips and download the Arduino logo in ASCII-art.

Make sure you have the most recent version of the WiFiEspAT library installed before running this example.

/*
 * Web Client example
 */
#include <WiFiEspAT.h>
#include <ChallengerWiFi.h>

const char* server = "arduino.tips";
const char ssid[] = "ssid";
const char pass[] = "pwd";

WiFiClient client;

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, LOW);

  Serial.begin(115200);
  while (!Serial)
    delay(10);

  ESP_SERIAL_PORT.begin(115200);
  if (Challenger2040WiFi.reset()) {
    Serial.println(F("WiFi Chip reset OK !"));
  } else {
    Serial.println(F("Could not reset WiFi chip !"));
    while(1);
  }

  WiFi.init(ESP_SERIAL_PORT);

  if (WiFi.status() == WL_NO_MODULE) {
    Serial.println();
    Serial.println("Communication with WiFi module failed!");
    // don't continue
    while (true);
  }

  Serial.printf("Firmware version %sn", WiFi.firmwareVersion());

  Serial.println();
  Serial.print("Attempting to connect to SSID: ");
  Serial.println(ssid);
  int status = WiFi.begin(ssid, pass);

  Serial.println();
  Serial.println("Connected to WiFi network.");

  Serial.println("Starting connection to server...");
  if (client.connect(server, 80)) {
    digitalWrite(LED_BUILTIN, HIGH);
    Serial.println("connected to server");
    client.println("GET /asciilogo.txt HTTP/1.1");
    client.print("Host: ");
    client.println(server);
    client.println("Connection: close");
    client.println();
    client.flush();
  }
}

void loop() {
  // if there are incoming bytes available
  // from the server, read them and print them
  while (client.available()) {
    static int flicker = 0;
  if (!(flicker++ % 10))
    digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
    char c = client.read();
    Serial.write(c);
  }

  // if the server's disconnected, stop the client
  if (!client.connected()) {
    digitalWrite(LED_BUILTIN, LOW);
    Serial.println();
    Serial.println("disconnecting from server.");
    client.stop();
    // Wait a while before repeating.
    delay(120000);
    Serial.println("Starting connection to server...");
    if (client.connect(server, 80)) {
      digitalWrite(LED_BUILTIN, HIGH);
      Serial.println("connected to server");
      client.println("GET /asciilogo.txt HTTP/1.1");
      client.print("Host: ");
      client.println(server);
      client.println("Connection: close");
      client.println();
      client.flush();
    } else {
      Serial.println("Failed to connect to server.nWaiting 10 seconds before retrying");
    }
  }
}

You can now go ahead and test the rest of the example files found in the WiFiEspAT library. If you run in to any problems please visit our forums, here you can connect both to us but also to other user to get help, share ideas or just showcase what you have accomplished. We love to see what you make with our boards.

Example 2

Here’s a short sketch that scan the neighborhood for WiFi networks and reports them back with a bunch of data associated with the AP.

#include <WiFiEspAT.h>
#include <ChallengerWiFi.h>

#define AT_BAUD_RATE 115200

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, LOW);

  Serial.begin(115200);
    while (!Serial);

  ESP_SERIAL_PORT.begin(115200);
  if (Challenger2040WiFi.reset()) {
    Serial.println(F("WiFi Chip reset OK !"));
  } else {
    Serial.println(F("Could not reset WiFi chip !"));
    while(1);
  }
  WiFi.init(ESP_SERIAL_PORT);

  // check for the WiFi module:
  if (WiFi.status() == WL_NO_MODULE) {
    Serial.println();
    Serial.println("Communication with WiFi module failed!");
    // don't continue
    while (true);
  }
  Challenger2040WiFi.changeBaudRate(921600);
  Serial.println("Baud rate changed !");

  // print your MAC address:
  byte mac[6];
  WiFi.macAddress(mac);
  Serial.print("MAC: ");
  printMacAddress(mac);

  // scan for existing networks:
  Serial.println();
  Serial.println("Scanning available networks...");
  listNetworks();
}

void loop() {
  delay(10000);
  // scan for existing networks:
  Serial.println("Scanning available networks...");
  listNetworks();
}

void listNetworks() {
  // scan for nearby networks:
  Serial.println("** Scan Networks **");
  int numSsid = WiFi.scanNetworks();
  if (numSsid == -1) {
    Serial.println("Couldn't get a WiFi connection");
    while (true);
  }

  // print the list of networks seen:
  Serial.print("number of available networks: ");
  Serial.println(numSsid);

  // print the network number and name for each network found:
  for (int thisNet = 0; thisNet < numSsid; thisNet++) {
    Serial.print(thisNet + 1);
    Serial.print(") ");
    Serial.print("Signal: ");
    Serial.print(WiFi.RSSI(thisNet));
    Serial.print(" dBm");
    Serial.print("tChannel: ");
    Serial.print(WiFi.channel(thisNet));
    byte bssid[6];
    Serial.print("ttBSSID: ");
    printMacAddress(WiFi.BSSID(thisNet, bssid));
    Serial.print("tEncryption: ");
    printEncryptionType(WiFi.encryptionType(thisNet));
    Serial.print("ttSSID: ");
    Serial.println(WiFi.SSID(thisNet));
    Serial.flush();
  }
  Serial.println();
}

void printEncryptionType(int thisType) {
  // read the encryption type and print out the name:
  switch (thisType) {
    case ENC_TYPE_WEP:
      Serial.print("WEP");
      break;
    case ENC_TYPE_TKIP:
      Serial.print("WPA");
      break;
    case ENC_TYPE_CCMP:
      Serial.print("WPA2");
    break;
    case ENC_TYPE_NONE:
      Serial.print("None");
    break;
    case ENC_TYPE_AUTO:
      Serial.print("Auto");
      break;
    case ENC_TYPE_UNKNOWN:
    default:
      Serial.print("Unknown");
      break;
  }
}

void print2Digits(byte thisByte) {
  if (thisByte < 0xF) {
    Serial.print("0");
  }
  Serial.print(thisByte, HEX);
}

void printMacAddress(byte mac[]) {
  for (int i = 5; i >= 0; i--) {
    if (mac[i] < 16) {
      Serial.print("0");
    }
    Serial.print(mac[i], HEX);
    if (i > 0) {
      Serial.print(":");
    }
  }
  Serial.println();
}

Documentation for the Challenger+ RP2350 WiFi6/BLE5.

Our distributors will soon have stock of this board.

Reviews

There are no reviews yet.

Only logged in customers who have purchased this product may leave a review.

You may also like…