Arduino Uno - Wikipedia
Arduino Uno - Wikipedia
The Arduino Uno is an open-source microcontroller board based on the Microchip ATmega328P microcontroller (MCU) and developed by Arduino.cc
and initially released in 2010.[2][3] The microcontroller board is equipped with sets of digital and analog input/output (I/O) pins that may be interfaced
to various expansion boards (shields) and other circuits.[1] The board has 14 digital I/O pins (six capable of PWM output), 6 analog I/O pins, and is
programmable with the Arduino IDE (Integrated Development Environment), via a type B USB cable.[4] It can be powered by a USB cable or a barrel
connector that accepts voltages between 7 and 20 volts, such as a rectangular 9-volt battery. It has the same microcontroller as the Arduino Nano
board, and the same headers as the Leonardo board.[5][6] The hardware reference design is distributed under a Creative Commons Attribution Share-
Alike 2.5 license and is available on the Arduino website. Layout and production files for some versions of the hardware are also available.
The word "uno" means "one" in Italian and was chosen to mark a major redesign of the Arduino
Arduino Uno
hardware and software.[7] The Uno board was the successor of the Duemilanove release and was
the 9th version in a series of USB-based Arduino boards.[8] Version 1.0 of the Arduino IDE for the
Arduino Uno board has now evolved to newer releases.[4] The ATmega328 on the board comes
preprogrammed with a bootloader that allows uploading new code to it without the use of an
external hardware programmer.[3]
While the Uno communicates using the original STK500 protocol,[1] it differs from all preceding
boards in that it does not use a FTDI USB-to-UART serial chip. Instead, it uses the Atmega16U2
(Atmega8U2 up to version R2) programmed as a USB-to-serial converter.[9]
History
Arduino Uno SMD R3 with ATmega328P MCU
Developer arduino.cc
Manufacturer Many
Type Single-board
microcontroller[1]
The Arduino project started at the Interaction Design Institute Ivrea (IDII) in Ivrea, Italy. At that time, products/arduino-uno
-rev3/)
the students used a BASIC Stamp microcontroller, at a cost that was a considerable expense for
many students. In 2003, Hernando Barragán created the development platform Wiring as a Operating system None
Master's thesis project at IDII, under the supervision of Massimo Banzi and Casey Reas, who are
CPU Microchip AVR (8-bit)
known for work on the Processing language. The project goal was to create simple, low-cost tools
at 16 MHz
for creating digital projects by non-engineers. The Wiring platform consisted of a printed circuit
board (PCB) with an ATmega168 microcontroller, an IDE based on Processing, and library Memory 2 KB SRAM
functions to easily program the microcontroller.[10] In 2003, Massimo Banzi, with David Mellis,
Storage 32 KB Flash
another IDII student, and David Cuartielles, added support for the cheaper ATmega8
1 KB EEPROM
microcontroller to Wiring. But instead of continuing the work on Wiring, they forked the project and
renamed it Arduino. Early arduino boards used the FTDI USB-to-UART serial chip and an
ATmega168.[10] The Uno differed from all preceding boards by featuring the ATmega328P microcontroller and an ATmega16U2 (Atmega8U2 up to
version R2) programmed as a USB-to-serial converter.
In June 2023, Arduino released two new flavors of the Uno; R4 Minima and R4 Wifi. These mark a departure from previous boards as they use
Renesas RA4M1 ARM Cortex M4 microcontroller, and the R4 Wifi a Espressif ESP32-S3-MINI co-processor. These versions are form factor, pin and
power compatible with version R1 to R3, so should be largely be able to be drop in replacements.[11]
Technical specifications
Microcontroller (MCU):[12]
Clock Speed: 16 MHz on Uno board, though IC is capable of 20 MHz maximum at 5 Volts
SRAM: 2 KB
EEPROM: 1 KB
SPI peripherals: 1
I²C peripherals: 1
Weight: 25 g
Power Sources:
USB connector. USB bus specification has a voltage range of 4.75 to 5.25 volts. The official Uno boards have a USB-B connector, but 3rd party
boards may have a miniUSB / microUSB / USB-C connector.
5.5mm/2.1mm barrel jack connector. Official Uno boards support 6 to 20 volts, though 7 to 12 volts is recommended. The maximum voltage for
3rd party Uno boards varies between board manufactures because various voltage regulators are used, each having a different maximum input
rating. Power into this connector is routed through a series diode before connecting to VIN to protect against accidental reverse voltage
situations.
VIN pin on shield header. It has a similar voltage range of the barrel jack. Since this pin doesn't have reverse voltage protection, power can be
injected or pulled from this pin. When supplying power into VIN pin, an external series diode is required in case barrel jack is used. When board is
powered by barrel jack, power can be pulled out of this pin.[14]
Uno R4
Two Uno R4 boards are available: Uno R4 Minima and Uno R4 WiFi. The later has a WiFi coprocessor and LED matrix, but the Minima doesn't.
Microcontroller (MCU):[17]
IC: Renesas R7FA4M1AB (32-bit ARM Cortex-M4F core with single-precision FPU)
USART peripherals: 4
SPI peripherals: 2
I²C peripherals: 2
USB-C connector.
Barrel jack connector and VIN pin on shield header supports up to a maximum of 24 volts DC.
WiFi coprocessor - 240 MHz Espressif ESP32-S3-MINI (IEEE802.11 b/g/n WiFi and Bluetooth 5 LE) and a 6-pin 3x2 2.54mm header for external
programming.
12x8 LED matrix - it is driven by 11 GPIO pins using a charlieplexing scheme.
Qwiic I²C connector. This 4-pin 1.00mm JST SH connector provides external connection to a 3.3 volt I²C bus. Don't attach 5 volt I²C devices directly
to this connector.[18]
RTC battery header pin (VRTC). This pin connects an external battery to the RTC (real-time clock) inside the microcontroller (R7FA4M1AB) to keep
clock running when board is powered down. Connect this pin to positive side of 1.6 to 3.6 volt battery and negative side of battery to ground header
pin (GND), such as a 3 volt lithium coin battery.[17]
Remote-Off header pin (OFF). This pin disables the 5 volt buck switching voltage regulator (SL854102) when powered the barrel jack or VIN header
pin. Connect this pin to ground header pin (GND) to disable this voltage regulator.
Headers
LED: There is a built-in LED driven by digital pin 13. When the pin is high value, the LED is on, when the pin is low, it is off.
VIN: The input voltage to the Arduino/Genuino board when it is using an external power source (as opposed to 5 volts from the USB connection or
other regulated power source). You can supply voltage through this pin, or, if supplying voltage via the power jack, access it through this pin.
5V: This pin outputs a regulated 5V from the regulator on the board. The board can be supplied with power either from the DC power jack (7 - 20V),
the USB connector (5V), or the VIN pin of the board (7-20V). Supplying voltage via the 5V or 3.3V pins bypasses the regulator, and can damage the
board.
3V3: A 3.3 volt supply generated by the on-board regulator. Maximum current draw is 50 mA.
IOREF: This pin on the Arduino/Genuino board provides the voltage reference with which the microcontroller operates. A properly configured shield
can read the IOREF pin voltage and select the appropriate power source, or enable voltage translators on the outputs to work with the 5V or 3.3V.
Reset: Typically used to add a reset button to shields that block the one on the board.[9]
Each of the 14 digital pins and 6 analog pins on the Uno can be used as an input or output, under software control (using pinMode(), digitalWrite(),
and digitalRead() functions). They operate at 5 volts. Each pin can provide or receive 20 mA as the recommended operating condition and has an
internal pull-up resistor (disconnected by default) of 20-50K ohm. A maximum of 40mA must not be exceeded on any I/O pin to avoid permanent
damage to the microcontroller. The Uno has 6 analog inputs, labeled A0 through A5; each provides 10 bits of resolution (i.e. 1024 different values). By
default, they measure from ground to 5 volts, though it is possible to change the upper end of the range using the AREF pin and the
analogReference() function.[9]
Serial / UART: pins 0 (RX) and 1 (TX). Used to receive (RX) and transmit (TX) TTL serial data. These pins are connected to the corresponding pins
of the ATmega8U2 USB-to-TTL serial chip.
External interrupts: pins 2 and 3. These pins can be configured to trigger an interrupt on a low value, a rising or falling edge, or a change in value.
PWM (pulse-width modulation): pins 3, 5, 6, 9, 10, and 11. Can provide 8-bit PWM output with the analogWrite() function.
SPI (Serial Peripheral Interface): pins 10 (SS), 11 (MOSI), 12 (MISO), and 13 (SCK). These pins support SPI communication using the SPI library.
TWI (two-wire interface) / I²C: pin SDA (A4) and pin SCL (A5). Support TWI communication using the Wire library.
Communication
The Arduino/Genuino Uno has a number of facilities for communicating with a computer, another Arduino/Genuino board, or other microcontrollers.
The ATmega328 provides UART TTL (5V) serial communication, which is available on digital pins 0 (RX) and 1 (TX). An ATmega16U2 on the board
channels this serial communication over USB and appears as a virtual com port to software on the computer. The 16U2 firmware uses the standard
USB COM drivers, and no external driver is needed. However, on Windows, a .inf file is required. Arduino Software (IDE) includes a serial monitor which
allows simple textual data to be sent to and from the board. The RX and TX LEDs on the board will flash when data is being transmitted via the USB-
to-serial chip and USB connection to the computer (but not for serial communication on pins 0 and 1). A SoftwareSerial library allows serial
communication on any of the Uno's digital pins.[9]
Rather than requiring a physical press of the reset button before an upload, the Arduino/Genuino Uno board is designed in a way that allows it to be
reset by the software running on a connected computer. One of the hardware flow control lines (DTR) of the ATmega8U2/16U2 is connected to the
reset line of the ATmega328 via a 100 nanofarad capacitor. When this line is asserted (taken low), the reset line drops long enough to reset the chip.[9]
This setup has other implications. When the Uno is connected to a computer running Mac OS X or Linux, it resets each time a connection is made to
it from software (via USB). For the following half-second or so, the bootloader is running on the Uno. While it is programmed to ignore malformed
data (i.e. anything besides an upload of new code), it will intercept the first few bytes of data sent to the board after a connection is opened.[9]
The following table compares official Arduino boards, and has a similar layout as a table in the Arduino Nano article. The table is split with a dark bar
into two high-level microcontroller groups: 8-bit AVR cores (upper group), and 32-bit ARM Cortex-M cores (lower group). Though 3rd-party boards
have similar board names it doesn't automatically mean they are 100% identical to official Arduino boards. 3rd-party boards often have a different
voltage regulator / different USB-to-UART chip / different color solder mask, and some have a different USB connector or additional features, too. [19]
MCU
Board Board Board MCU MCU MCU MCU
MCU MCU MCU MCU MCU MCU MCU Timers
Name Size Commun- Part# I/O USART Other Bus
Core Clock Flash SRAM EEPROM SPI I²C 32/24/16/
& Part# Group ication & Pins Voltage & UART Peripherals
/WD/RT/RC
Uno R3,[20]
A000066,[9] ATmega328P,[12]
5V 8bit 0, 0, 1, 2
Uno R3 Uno USB-B 28 pin DIP, 16 MHz* 32 KB 2 KB 1 KB 1, 0 1 1 None
[21]
(1.8-5.5V) AVR WD
SMD, 32 pin SMD
A000073[22]
Mega 2560
ATmega2560,[31] 5V 8bit 0, 0, 4, 2
R3,[29] Mega USB-B 16 MHz 256 KB 8 KB 4 KB 4, 0 1 1 None
[30]
100 pin (4.5-5.5V) AVR WD
A000067
Uno R4
32bit
Minima,[15]
ARM 256 KB 32 KB None 2, 0, 8, 0
ABX00080,[32] USB-C, R7FA4M1AB,[17] 5V USB-FS,
Uno Cortex- 48 MHz + (ECC) + 8 KB 4, 0 2 2 WD, RC
Uno R4 WiFi* 64 pin (1.6-5.5V) CAN-A/B
[16]
M4F bootrom (parity) data flash 24bit SysT
WiFi,
(FPU)
ABX00087,[33]
32bit
3.3V 0, 4, 5, 0
Zero,[34] USB-Micro-B ATSAMD21G18,[36] ARM USB-FS,
[35]
Uno (1.62- 48 MHz 256 KB 32 KB None 6, 0 None None WD, RC
ABX00003 x2 48 pin Cortex- I²S
3.63V) 24bit SysT
M0+
32bit
3.3V 512 KB USB-HS, 3, 0, 8, 0
Due,[37] USB-Micro-B ATSAM3X8E,[39] ARM
[38]
Mega (1.62- 84 MHz + 96 KB None 3, 2 1 2 CAN-A/B x2, WD, RT, R
A000062 x2 144 pin Cortex-
3.6V) bootrom I²S, SD 24bit SysT
M3
32bit
ARM USB-HS & FS,
Cortex- CAN-A/B/FD
USB-C, 480 MHz
GIGA R1 3.3V M7F 2048 KB x2, 2, 0, 18,
USB-A, STM32H747XI,[42] (M7F), 1056 KB
WiFi,[40] Mega (1.62- Cortex- + None 4, 5 6 4 I²S x4, SD x2, WD, RC
WiFi, 240 pin 240 MHz (ECC)
ABX00063[41] 3.6V) M4F bootrom S/PDIF x4, 24bit SysT
Bluetooth (M4F)
(dual CEC,
core) SWP, QSPI
(FPU)
Table notes
Board Size Group column - Simplified board dimension size grouping: Uno means similar size as Arduino Uno R3 and Duemilanove (predecessor)
boards, Mega means similar size as the longer Arduino Mega 2560 R3 and Mega (predecessor) boards. This table has a similar layout as a table in
the Arduino Nano article.
MCU Part# / Pins column - MCU means microcontroller. All MCU information in this table was sourced from official datasheets in this column. The
pin count is useful to determine the quantity of internal MCU features that are available. All MCU hardware features may not be available at the
shield header pins because the MCU IC package has more pins than the shield header pins on the Arduino board (*).
MCU I/O Voltage column - Microcontrollers on official Arduino boards are powered at a fixed voltage of either 3.3 or 5 volts, though some 3rd party
boards have a voltage selection switch. The voltage rating of the microcontroller is stated inside parenthesis, though Arduino boards don't support
this full range.
MCU Clock column - MHz means 106 Hertz. The ATmega328P MPU and ATmega4809 MCU are rated for a maximum of 20 MHz, but the Uno R3
and Uno WiFi R2 boards both operate at 16 MHz. The following Arduino boards have a 32.768 kHz crystal too: Uno WiFi R2, Uno R4 (TBD), Zero,
Due, GIGA R1 WiFi.
MCU memory columns - KB means 1024 bytes, MB means 10242 bytes. The R7FA4M1AB MCU (Uno R4 boards) contains data flash memory
instead of EEPROM memory.
MCU SRAM column - SRAM size doesn't include caches or peripheral buffers. ECC means SRAM has error correction code checking, Par means
SRAM has parity checking.
MCU USART/UART column - USARTs are software configurable to be a: UART / SPI / other peripherals (varies across MCUs).
MCU Other Bus Peripherals column - For USB bus, "FS" means Full Speed (12 Mbps max), "HS" means High Speed (480 Mbps max). For CAN bus,
"A" means CAN 2.0A, "B" means CAN 2.0B, "FD" means CAN-FD. Some buses require additional external circuitry to operate.
MCU Timers column - The numbers in this column are the total number of each timer bit width, for example, the ATmega328P has one 16-bit timer
and two 8-bit timers. "WD" means Watchdog timer, "RT" means Real Time Counter/Timer, "RC" means Real Time Clock (sec/min/hr). The 24-bit
SysTick timer(s) inside the ARM cores aren't included in the 24-bit total in this column. PWM features are not documented in this table.
See also
AVR microcontrollers
In-system programming
References
1. "Arduino UNO for beginners - Projects, Programming and Parts" (htt 10. Hernando Barragán (2016-01-01). "The Untold History of Arduino" (ht
ps://www.makerspaces.com/arduino-uno-tutorial-beginners/) . tps://arduinohistory.github.io) . arduinohistory.github.io. Retrieved
makerspaces.com. 7 February 2017. Retrieved 4 February 2018. 2016-03-06.
2. "Arduino FAQ" (https://web.archive.org/web/20201127165340/http 11. "Introducing the Arduino UNO R4! - News - SparkFun Electronics" (htt
s://medea.mah.se/2013/04/arduino-faq/) . 5 April 2013. Archived ps://www.sparkfun.com/news/7335) . www.sparkfun.com.
from the original (http://medea.mah.se/2013/04/arduino-faq/) on Retrieved 2023-08-07.
27 November 2020. Retrieved 21 February 2018.
12. "MCU; ATmega328P; Docs" (https://www.microchip.com/en-us/prod
3. "What is Arduino?" (https://learn.sparkfun.com/tutorials/what-is-an- uct/ATmega328P) . Microchip. Archived (https://web.archive.org/w
arduino) . learn.sparkfun.com. Retrieved 4 February 2018. eb/20230327184615/https://www.microchip.com/en-us/product/A
Tmega328P) from the original on March 27, 2023.
4. "Introduction to Arduino" (https://web.archive.org/web/2018040313
2515/http://www.princeton.edu/~ffab/media___downloads_files/Int 13. "What is Arduino UNO? A Getting Started Guide" (https://www.rs-onli
roArduinoBook.pdf) (PDF). princeton.edu. Archived from the ne.com/designspark/what-is-arduino-uno-a-getting-started-guide) .
original (http://www.princeton.edu/~ffab/media___downloads_files/ www.rs-online.com. Retrieved 2021-08-04.
IntroArduinoBook.pdf) (PDF) on 3 April 2018. Retrieved 4 February
14. "Using Vin pin on Arduino with a shield" (https://electronics.stackexc
2018.
hange.com/questions/31282/using-vin-pin-on-arduino-with-a-shiel
5. "Arduino Nano" (https://store.arduino.cc/products/arduino-nano) . d) . Electrical Engineering Stack Exchange. Retrieved 2024-01-20.
Arduino Official Store. Retrieved 2022-12-07.
15. "Board; Uno R4 Minima; Docs" (https://docs.arduino.cc/hardware/un
6. "Arduino Leonardo with Headers" (https://web.archive.org/web/2021 o-r4-minima) . Arduino. Archived (https://web.archive.org/web/202
0515133513/https://store.arduino.cc/usa/arduino-leonardo-with-he 30627005400/https://docs.arduino.cc/hardware/uno-r4-minima)
aders) . Archived from the original (https://store.arduino.cc/usa/ar from the original on June 27, 2023.
duino-leonardo-with-headers) on 2021-05-15.
16. "Board; Uno R4 WiFi; Docs" (https://docs.arduino.cc/hardware/uno-r
7. "Previous IDE Releases" (https://wiki-content.arduino.cc/en/softwar 4-wifi) . Arduino. Archived (https://web.archive.org/web/20230627
e/OldSoftwareReleases/) . Retrieved 2023-02-08. 005423/https://docs.arduino.cc/hardware/uno-r4-wifi) from the
original on June 27, 2023.
8. "Arduino Older Boards" (https://docs.arduino.cc/retired/other/arduin
o-older-boards) . Retrieved 2023-02-08.
web.archive.org/web/20231122030832/https://www.seeedstudio.c Arduino.
om/Seeeduino-V4-2-p-2517.html) from the original on November 34. "Board; Zero; Docs" (https://docs.arduino.cc/hardware/zero) .
22, 2023. Arduino. Archived (https://web.archive.org/web/20230508142259/h
20. "Board; Uno R3; Docs" (https://docs.arduino.cc/hardware/uno-rev ttps://docs.arduino.cc/hardware/zero) from the original on May 8,
21. "Board; Uno R3 SMD; Docs" (https://docs.arduino.cc/hardware/uno-r 36. "MCU; ATSAMD21G18; Docs" (https://www.microchip.com/en-us/pr
ev3-smd) . Arduino. Archived (https://web.archive.org/web/202305 oduct/ATSAMD21G18) . Microchip. Archived (https://web.archive.o
08142301/https://docs.arduino.cc/hardware/uno-rev3-smd) from rg/web/20230201063727/https://www.microchip.com/en-us/produ
the original on May 8, 2023. ct/ATSAMD21G18) from the original on February 1, 2023.
22. "Board; Uno R3 SMD; Store" (https://store.arduino.cc/products/ardui 37. "Board; Due; Docs" (https://docs.arduino.cc/hardware/due) .
no-uno-rev3-smd) . Arduino. Arduino. Archived (https://web.archive.org/web/20230508191722/h
23. "Board; UNO WiFi R2; Docs" (https://docs.arduino.cc/hardware/uno- ttps://docs.arduino.cc/hardware/due) from the original on May 8,
25. "MCU; ATmega4809; Docs" (https://www.microchip.com/en-us/prod TSAM3X8E) from the original on October 26, 2022.
uct/ATMEGA4809) . Microchip. Archived (https://web.archive.org/ 40. "Board; GIGA R1 WiFi; Docs" (https://docs.arduino.cc/hardware/giga
web/20221206155937/https://www.microchip.com/en-us/product/ -r1-wifi) . Arduino. Archived (https://web.archive.org/web/2023051
ATMEGA4809) from the original on December 6, 2022. 4005122/https://docs.arduino.cc/hardware/giga-r1-wifi) from the
eb/20230405111931/https://www.microchip.com/en-us/product/A
Tmega32U4) from the original on April 5, 2023.
Attribution:
Further reading
External links
Pinout Diagrams
Electronic Schematics
Mechanical Drawings