|
KiCad 9.0 |
ARMduino UNO PY32F030
# ARMduino UNO PY32
## Project Story
What if the classic Arduino Uno kept everything that made it so popular, but received a much more modern MCU?
That was the idea behind **ARMduino UNO PY32**, an open-source Arduino Uno-compatible development board based on the **Puya PY32F030K28U6**, replacing the traditional ATmega328P while keeping the familiar Uno ecosystem, pinout, shields, and modules.
I wanted to experiment with how far the classic Arduino Uno design could be modernized without losing the simplicity and compatibility that made the Uno such an important board for the maker community.
This version is designed to stay extremely close to the original Arduino Uno concept. It uses the **ATmega16U2 USB interface**, just like the official Arduino Uno, rather than the CH343P USB bridge used in my earlier version. This means the board can retain the familiar USB architecture and does not require a separate USB-serial driver in the way many third-party USB bridge solutions do.
The result is essentially an **ARM-powered, Type-C Arduino Uno-style board** with substantially more capability than the original ATmega328P-based design.
---
# What Makes It Different?
### 🚀 Modern ARM MCU
The heart of the board is the **Puya PY32F030K28U6**, replacing the ATmega328P.
The PY32 platform provides a modern ARM Cortex-M0+ architecture while retaining the small, inexpensive MCU philosophy that makes boards like the Uno attractive to makers.
This makes the project particularly interesting as an experiment in bringing a more modern MCU into the extremely mature Arduino Uno ecosystem.
### 🔌 USB Type-C
The traditional USB connector has been replaced with **USB Type-C**, providing a more modern and convenient physical interface.
### 🧩 ATmega16U2 USB Interface
Unlike my previous version, which used a CH343P USB-to-serial chip, this board uses the **ATmega16U2**, following the architecture used by the official Arduino Uno.
The intention is to make the USB/programming experience as familiar as possible to existing Arduino users.
The ATmega16U2 is intended to use the same firmware/code as the official Arduino Uno USB interface.
### ⚡ 5V Arduino Ecosystem
The board is designed around the **5V Arduino Uno ecosystem**, making it possible to continue using the huge collection of existing Arduino Uno shields, modules and accessories.
The goal was not to create another incompatible ARM development board. Instead, I wanted to see whether a much more modern MCU could be placed behind the familiar Uno interface.
### 📌 Uno-Compatible Pinout
The board follows the **Arduino Uno pinout**, allowing existing Uno shields and modules to be used.
There is one intentional change:
**AREF is replaced by D14.**
Apart from this change, the board follows the familiar Arduino Uno physical/pin arrangement.
### ➕ Six Additional GPIOs
In addition to the standard Uno GPIO resources, the board exposes **six additional GPIOs**, giving developers more room for sensors, LEDs, peripherals and other hardware without abandoning the Uno form factor.
### 🛠️ Open Source Hardware
The entire project is intended to be open and accessible to the maker community.
The repository contains the design resources required to study, reproduce and modify the board, including:
* KiCad project files
* PCB layout
* Schematics
* Gerber files
* Bill of Materials
* Netlist
* Manufacturing files
* Other supporting project files
**Source repository:**
https://github.com/kaustubh850/ARMduino-UNO-PY32
I hope that other makers will not only build the board, but also modify it, improve it and contribute software support.
---
# How the Board Works
The board contains two major parts:
### 1. PY32F030K28U6
This is the main application MCU and replaces the ATmega328P found on the traditional Arduino Uno.
It runs the user's application and provides the GPIO and peripheral functionality of the board.
### 2. ATmega16U2
The ATmega16U2 handles the USB interface, following the same general architecture used by the official Arduino Uno.
The USB connector is USB Type-C, making the board easier to connect to modern computers and cables.
---
# Programming the Board
The PY32 can be programmed using the board's bootloader/programming mechanism.
The basic procedure is:
1. Connect the board to a computer using the **USB Type-C port**.
2. Power/start the board.
3. **Hold the BOOTSEL button.**
4. Press and release the **RESET** button.
5. Release the **BOOTSEL** button.
6. Use **PuyaISP** to flash the required binary to the PY32.
For Arduino development, the community can use the **py32duino** package.
Because the PY32 is not an ATmega328P, the standard Arduino Uno board definition cannot simply be reused unchanged. A suitable **`variants.h`** configuration is therefore required for the exact ARMduino UNO PY32 pin mapping.
One of my goals with releasing this project is to encourage the Arduino and maker community to help develop proper software support for the board.
If someone from the community is interested in contributing, creating a proper Arduino variant/package and submitting it to the GitHub repository would be greatly appreciated.
---
# Arduino Uno Compatibility
One of the most important design goals was **maximum compatibility with the existing Arduino Uno ecosystem**.
The board is intended to work with existing:
* Arduino Uno shields
* Arduino Uno modules
* Arduino accessories
* 5V peripherals
* Uno-style hardware projects
The physical pinout is intentionally kept extremely close to the Uno standard.
The main exception is the **AREF → D14** change, which should be taken into account when using hardware or shields that specifically depend on the AREF pin.
The project therefore attempts to preserve the enormous hardware ecosystem surrounding the Arduino Uno while replacing its original MCU with a newer ARM-based device.
---
# Why I Made This
The Arduino Uno is one of the most recognizable development boards ever created, but the ATmega328P is an old 8-bit MCU.
I wanted to explore a simple question:
**Could the Arduino Uno concept be modernized without throwing away everything that already makes the Uno useful?**
Instead of creating a completely different board, I kept the familiar form factor, ecosystem and interface philosophy and replaced the main MCU with the PY32F030.
This project is also part of my interest in **MCU experimentation, embedded systems, robotics and open-source hardware**.
I have previously made another PY32F030-based Arduino-compatible board and shared it on PCBWay. This version is particularly special to me because I pushed the design much further toward the original Uno architecture.
The previous version used a **CH343P** USB interface. This version uses the **ATmega16U2**, matching the USB architecture of the official Uno much more closely.
---
# Community Contribution
I would especially like this project to become more than just a PCB.
The hardware is only one part of making an alternative MCU useful. Proper software support is equally important.
I would be very happy if members of the maker community could contribute:
* Arduino board definitions
* `variants.h`
* Arduino core/package support
* Example projects
* Libraries
* Documentation
* Hardware improvements
* Testing and bug reports
In particular, if someone can create and contribute a proper **Arduino `variants.h`** for this exact board and push it to the GitHub repository, that would be an extremely valuable contribution.
The whole point of making this open source is to allow the community to take the idea further than I could alone.
---
# Open-Source Files
All important design files are available on GitHub:
**ARMduino UNO PY32**
https://github.com/kaustubh850/ARMduino-UNO-PY32
The repository contains the KiCad design and manufacturing resources, including the Gerbers, BOM, netlist and other files required to reproduce or modify the board.
Anyone interested in improving the project is welcome to contribute.
---
# Special Thanks
A special thank you to **github.com/sabogalc**.
The original KiCad project that inspired this design was taken from their repository and then substantially modified by me for the ARMduino UNO PY32 project.
I appreciate the work that made it possible for me to build upon an existing open-source design and take it in a new direction.
---
# What I Hope to Achieve
My goal is to contribute something useful and interesting to the open-source maker community.
There are already countless Arduino-compatible boards, but I wanted to approach the problem differently:
**Keep the Arduino Uno experience, but give it a modern ARM heart.**
I hope this project can be useful to people who want:
* A more modern MCU than the ATmega328P
* An Uno-compatible hardware platform
* USB Type-C
* More GPIO
* A 5V-oriented Arduino ecosystem
* An inexpensive ARM development board
* A platform for experimenting with the PY32 family
* A starting point for further open-source development
Most importantly, I hope other makers will take the design, improve it, experiment with it and create their own versions.
---
I have already shared an earlier PY32F030 Arduino-compatible design on PCBWay, and this project is a further step toward making the concept much closer to the original Arduino Uno.
Thank you to PCBWay for supporting open-source hardware developers and giving independent makers an opportunity to turn their designs into real hardware.
I hope ARMduino UNO PY32 can become a small contribution to the much larger open-source hardware and Arduino community.
ARMduino UNO PY32F030
Project images are for reference only. Actual production is based on the manufacturing files on the project page.
Please review the designer's notes (e.g., PCB thickness) and select the appropriate options.
PCBWay is not responsible
for issues caused by unsuitable parameter selections.
For more important ordering information, please refer to
Read More
Raspberry Pi 5 7 Inch Touch Screen IPS 1024x600 HD LCD HDMI-compatible Display for RPI 4B 3B+ OPI 5 AIDA64 PC Secondary Screen(Without Speaker)
BUY NOW- Comments(0)
- Likes(0)
- 0 USER VOTES
- YOUR VOTE 0.00 0.00
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
More by Engineer
-
Programmable Mist Maker - XIAO / QT PY Extension
2110 2 2 -
RadioHAT - Raspberry Pi radio development platform
1794 0 4 -
QWIIC-VL53L4CD Time-of-Flight Distance Sensor Module
2007 0 2 -
-
-
ARPS-2 – Arduino-Compatible Robot Project Shield for Arduino UNO
4010 0 6 -
-
A Compact Charging Breakout Board For Waveshare ESP32-C3
4744 3 8 -
AI-driven LoRa & LLM-enabled Kiosk & Food Delivery System
5560 2 2 -







