RP-Duino - A 5V Tolerant RP2040 Development Board

The RP-Duino: A Powerful Microcontroller for the Modern Maker


The RP-Duino is an innovative microcontroller board that combines the capabilities of the RP2040 with the simplicity and ease of use of the Arduino Uno. This powerful combination makes the RP-Duino an ideal choice for makers and engineers looking to create a wide range of projects.

One of the key advantages of the RP-Duino is its 5V tolerance on all I/O pins. Unlike other RP2040 boards on the market, the RP-Duino's compatibility with 5V signals makes it an excellent choice for those who want to utilize their existing shields and hardware. This means that makers can easily migrate their projects from other Uno-compatible boards to the RP-Duino without having to worry about compatibility issues.

Why is the RP-Duino an excellent board to use?


The RP-Duino is an exceptional choice for engineers due to the capabilities of the RP2040 microcontroller. Developed by Raspberry Pi, the RP2040 features a dual-core ARM Cortex-M0+ processor running at up to 133 MHz, 264KB of SRAM, and support for external flash memory. This allows the RP-Duino to handle complex computations, multitasking, and advanced I/O operations with ease.

The RP-Duino also features a USB C connector, which is widely regarded as the most superior cable in history. This connector offers fast data transfer rates, high power delivery, and a compact design, making it ideal for a wide range of applications. The use of USB C in the RP-Duino simplifies connectivity and provides a reliable interface for data exchange.

RP-Duino Specifications


  • Microcontroller: RP2040 (Dual-core ARM Cortex-M0+ processor)

  • GPIO:

    • 19 x GPIO (5V tolerant)

    • 4 x Analog Inputs (5V tolerant)

    • Max output source current: 0.5mA

    • Max output sink current: 100mA

  • User Interface:

    • 2 x GPIO Buttons (independent from GPIO headers)

    • 4 x GPIO LEDs (independent from GPIO headers)

    • 2 x Program Switches (RESET and FIRMWARE)

  • Connectivity & Power:

    • USB-C Port (for connectivity and power)

    • 12V DC Barrel Jack (for additional power input)

  • Storage: 4MB Flash Memory

  • Dimensions:

    • Arduino Uno Form Factor

    • 68.6mm x 53.4mm

Why is 5V tolerance so important?


The need for 5V tolerance in modern electronics is becoming increasingly crucial, yet it is often overlooked in the design of many microcontrollers. Most contemporary microcontrollers, including the Raspberry Pi Pico, are designed to operate on 3.3V logic levels, which suit the majority of current sensors and modules that also use this voltage. However, there are numerous hardware platforms, shields, and add-ons specifically designed to operate on 5V, which are not compatible with 3.3V microcontrollers.

Although level shifter shields do exist, their use can add more complexity to a circuit design, causing it to be physically larger and harder to manufacture. Furthermore, the use of level shifter shields can introduce extra costs to a project, increasing production expenses. As a result, many makers are forced to discard their existing hardware in favor of newer 3.3V systems, which can be extremely wasteful and costly.

For those who have invested heavily in 5V sensors, modules, and add-ons, the Raspberry Pi Pico is an extremely attractive platform that offers extensive flexibility and customization. However, the limitation of operating on 3.3V means it cannot interface with existing 5V hardware, posing a substantial limitation for makers looking to utilize their existing hardware.

How is the RP-Duino 5V tolerant?


To achieve the RP-Duino’s 5V tolerance, a number of different circuits have been used to convert between the 3.3V and 5V levels. For digital pins, a BSS138 level shifter circuit has been used, which converts 3.3V to 5V in both directions. This allows the RP-Duino to communicate with both 3.3V and 5V digital devices, making it an ideal choice for projects that require both low voltage and high voltage components.

For analog pins, a combination of a BSS138 level shifter in conjunction with an analog potential divider with analog switches has been used. This allows the RP-Duino to operate with both 3.3V and 5V analog devices, making it an ideal choice for projects that require both low voltage and high voltage components. What makes this board particularly impressive is that the analog pins can be enabled and disabled, allowing them to work as both digital IO and analog input pins.

The RP-Duino has also been designed to work with open-collector circuits, including I2C. Because each level shifter circuit has a pull up transistor, the RP-Duino naturally works with open-collector circuits. The RP-Duino has been tested with both SPI and I2C circuits and works exceeding well. The use of level shifters also allows the RP-Duino to work with devices that have different voltage levels, such as sensors and actuators.

Board / GPIO Specs


Using Analog Pins


Because this board needs to be super compatible with as many preexisting shields as possible, the analog IO had to be designed to allow for both digital and analog operation without affecting each others performance. So, we decided to create two separate signal paths that current can take, an analog path, and a digital path.

In order to use the analog input pins, the respective analog pin must have its enable signal driven low. For example, if A0 is to be used as an analog input, the GPIO 22 (Analog A0 Enable) must be driven as an output and set to 0. If A0 needs to be used as a digital IO pin, GPIO 22 must be set to 1.

What limitations does the RP-Duino have?


One of the primary limitations of the RP-Duino is the use of level shifters, which introduce some design challenges. The integration of resistors into the level shifter design restricts the creation of open-drain circuits without a pull-up resistor.

This limitation can be particularly problematic in scenarios where a high-impedance load is connected to the output of the level shifter, as it may interfere with the normal operation of the circuit. Additionally, the size of the pull-up resistors used in the level shifter design greatly impacts the maximum speed of operation. Smaller resistors can enhance the speed of the circuit, but they also increase the current drawn, which may lead to overheating and other issues. Therefore, a balance must be struck between speed and current consumption when designing circuits with level shifters.

Another challenge posed by the RP-Duino's design is the analog input configuration. The analog input is not fully divided to the 0V to 3.3V range, which means that some scaling adjustments may be necessary in the code. This is particularly relevant when working with sensors that have a voltage range that exceeds the capabilities of the analog input. In such cases, the code must be modified to accommodate the sensor's voltage range, ensuring accurate and reliable readings. While this may require some additional coding effort, it is a crucial step in ensuring the accuracy and reliability of the final output.

Overall, while the RP-Duino offers a convenient and cost-effective solution for microcontroller development, its limitations must be carefully considered. By understanding the challenges associated with level shifters and analog input configurations, designers can create effective and reliable circuits that meet their specific needs. With careful planning and design, the RP-Duino can be a valuable tool in a wide range of microcontroller projects, from simple prototypes to complex systems.