Developer | arduino.cc |
---|---|
Manufacturer | Many |
Type | Single-board microcontroller [1] |
Availability | Uno R3 webpage |
Operating system | None |
CPU | Microchip AVR (8-bit) at 16 MHz |
Memory | 2 KB SRAM |
Storage | 32 KB Flash 1 KB EEPROM |
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 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]
The Arduino project started at the Interaction Design Institute Ivrea (IDII) in Ivrea, Italy. At that time, 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 Master's thesis project at IDII, under the supervision of Massimo Banzi and Casey Reas, who are known for work on the Processing language. The project goal was to create simple, low-cost tools 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 functions to easily program the microcontroller. [10] In 2003, Massimo Banzi, with David Mellis, another IDII student, and David Cuartielles, added support for the cheaper ATmega8 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]
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.
Common features on both Uno R4 Minima [15] and Uno R4 WiFi [16] boards:
Additional features only available on the Uno R4 Minima board: [15]
Additional features only available on the Uno R4 WiFi board: [16]
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]
In addition, some pins have specialized functions:
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]
Board Name & Part# | Board Size Group | Board Commun- ication | MCU Part# & Pins | MCU I/O Voltage | MCU Core | MCU Clock | MCU Flash | MCU SRAM | MCU EEPROM | MCU USART & UART | MCU SPI | MCU I²C | MCU Other Bus Peripherals | MCU Timers 32/24/16/8 /WD/RT/RC | MCU ADC & DAC | MCU Engines |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Uno R3, [20] A000066, [9] Uno R3 SMD, [21] A000073 [22] | Uno | USB-B | ATmega328P, [12] 28 pin DIP, 32 pin SMD | 5V (1.8-5.5V) | 8bit AVR | 16 MHz* | 32 KB | 2 KB | 1 KB | 1, 0 | 1 | 1 | None | 0, 0, 1, 2, WD | 10bit, None | None |
Uno WiFi R2, [23] ABX00021 [24] | Uno | USB-B, WiFi, Bluetooth | ATmega4809, [25] 48 pin | 5V (1.8-5.5V) | 8bit AVR | 16 MHz* | 48 KB | 6 KB | 0.25 KB | 4, 0 | 1 | 1 | None | 0, 0, 5, 0, WD, RT | 10bit, None | None |
Leonardo, [26] A000057 [27] | Uno | USB-Micro-B | ATmega32U4, [28] 44 pin | 5V (2.7-5.5V) | 8bit AVR | 16 MHz | 32 KB | 2.5 KB | 1 KB | 1, 0 | 1 | 1 | USB-FS | 0, 0, 2, 1, WD, 10bit | 10bit, None | None |
Mega 2560 R3, [29] A000067 [30] | Mega | USB-B | ATmega2560, [31] 100 pin | 5V (4.5-5.5V) | 8bit AVR | 16 MHz | 256 KB | 8 KB | 4 KB | 4, 0 | 1 | 1 | None | 0, 0, 4, 2, WD | 10bit, None | None |
Uno R4 Minima, [15] ABX00080, [32] Uno R4 WiFi, [16] ABX00087, [33] | Uno | USB-C, WiFi* | R7FA4M1AB, [17] 64 pin | 5V (1.6-5.5V) | 32bit ARM Cortex-M4F (FPU) | 48 MHz | 256 KB + bootrom | 32 KB (ECC) (parity) | None + 8 KB data flash | 4, 0 | 2 | 2 | USB-FS, CAN-A/B | 2, 0, 8, 0, WD, RC, 24bit SysTick | 14bit, 12bit | DMA x4, CRC, RNG, Crypto, Touch, LCD |
Zero, [34] ABX00003 [35] | Uno | USB-Micro-B x2 | ATSAMD21G18, [36] 48 pin | 3.3V (1.62-3.63V) | 32bit ARM Cortex-M0+ | 48 MHz | 256 KB | 32 KB | None | 6, 0 | None | None | USB-FS, I²S | 0, 4, 5, 0, WD, RC, 24bit SysTick | 12bit, 10bit | DMA x12, CRC32, Touch |
Due, [37] A000062 [38] | Mega | USB-Micro-B x2 | ATSAM3X8E, [39] 144 pin | 3.3V (1.62-3.6V) | 32bit ARM Cortex-M3 | 84 MHz | 512 KB + bootrom | 96 KB | None | 3, 2 | 1 | 2 | USB-HS, CAN-A/B x2, I²S, SD | 3, 0, 8, 0, WD, RT, RC, 24bit SysTick | 12bit, 12bit x2 | DMA x8, RNG |
GIGA R1 WiFi, [40] ABX00063 [41] | Mega | USB-C, USB-A, WiFi, Bluetooth | STM32H747XI, [42] 240 pin | 3.3V (1.62-3.6V) | 32bit ARM Cortex-M7F Cortex-M4F (dual core) (FPU) | 480 MHz (M7F), 240 MHz (M4F) | 2048 KB + bootrom | 1056 KB (ECC) | None | 4, 5 | 6 | 4 | USB-HS & FS, CAN-A/B/FD x2, I²S x4, SD x2, S/PDIF x4, CEC, SWP, QSPI | 2, 0, 18, 0, WD, RC, 24bit SysTick | 16bit x3, 12bit x2 | DMA x4, CRC, RNG, Graphics |
AVR is a family of microcontrollers developed since 1996 by Atmel, acquired by Microchip Technology in 2016. These are modified Harvard architecture 8-bit RISC single-chip microcontrollers. AVR was one of the first microcontroller families to use on-chip flash memory for program storage, as opposed to one-time programmable ROM, EPROM, or EEPROM used by other microcontrollers at the time.
The MSP430 is a mixed-signal microcontroller family from Texas Instruments, first introduced on 14 February 1992. Built around a 16-bit CPU, the MSP430 was designed for low power consumption, embedded applications and low cost.
A general-purpose input/output (GPIO) is an uncommitted digital signal pin on an integrated circuit or electronic circuit board which may be used as an input or output, or both, and is controllable by software.
In-system programming (ISP), or also called in-circuit serial programming (ICSP), is the ability of some programmable logic devices, microcontrollers, chipsets and other embedded devices to be programmed while installed in a complete system, rather than requiring the chip to be programmed prior to installing it into the system. It also allows firmware updates to be delivered to the on-chip memory of microcontrollers and related processors without requiring specialist programming circuitry on the circuit board, and simplifies design work.
Atmel ARM-based processors are microcontrollers and microprocessors integrated circuits, by Microchip Technology, that are based on various 32-bit ARM processor cores, with in-house designed peripherals and tool support.
Arduino is an Italian open-source hardware and software company, project, and user community that designs and manufactures single-board microcontrollers and microcontroller kits for building digital devices. Its hardware products are licensed under a CC BY-SA license, while the software is licensed under the GNU Lesser General Public License (LGPL) or the GNU General Public License (GPL), permitting the manufacture of Arduino boards and software distribution by anyone. Arduino boards are available commercially from the official website or through authorized distributors.
PICkit is a family of programmers for PIC microcontrollers made by Microchip Technology. They are used to program and debug microcontrollers, as well as program EEPROM. Some models may also feature logic analyzers and serial communications (UART) tools.
Universal EXTension (UEXT) is a connector layout which includes power and three serial buses: Asynchronous, I2C, and SPI separately over 10 pins in a 2×5 layout. The connector layout was specified by Olimex Ltd and declared an open-project that is royalty-free in 2011, and was used in all their boards after 2004.
The Bus Pirate is a universal bus interface device designed for programming, debugging, and analyzing microcontrollers and other ICs. It was developed as an open-source hardware and software project.
debugWIRE is a serial communications protocol, designed by Atmel. It is used for on-chip debugging of AVR microcontrollers.
STM32 is a family of 32-bit microcontroller integrated circuits by STMicroelectronics. The STM32 chips are grouped into related series that are based around the same 32-bit ARM processor core: Cortex-M0, Cortex-M0+, Cortex-M3, Cortex-M4, Cortex-M7, Cortex-M33. Internally, each microcontroller consists of ARM processor core(s), flash memory, static RAM, debugging interface, and various peripherals.
LPC is a family of 32-bit microcontroller integrated circuits by NXP Semiconductors. The LPC chips are grouped into related series that are based around the same 32-bit ARM processor core, such as the Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. Internally, each microcontroller consists of the processor core, static RAM memory, flash memory, debugging interface, and various peripherals. The earliest LPC series were based on the Intel 8-bit 80C51 core. As of February 2011, NXP had shipped over one billion ARM processor-based chips.
ATtiny is a subfamily of the popular 8-bit AVR microcontrollers, which typically has fewer features, fewer I/O pins, and less memory than other AVR series chips. The first members of this family were released in 1999 by Atmel.
The ATmega328 is a single-chip microcontroller created by Atmel in the megaAVR family. It has a modified Harvard architecture 8-bit RISC processor core.
Netduino was an open-source electronics prototyping platform based on the .NET Micro Framework. It uses the ARM Cortex-M 32-bit RISC ARM processor core as a 32-bit ARM-microcontroller. The Netduino boards are designed to be pin-compatible with most Arduino shields. Applications can be built on Windows, or on Mac OS. The platform is similar in concept to the Arduino platform, but is generally more powerful and instead of writing applications in C/C++ or Wiring, applications are written in C#, which brings powerful, high-level language constructs to the toolbox such as threading, event handling, automatic garbage collection, and more.
The MSP432 is a mixed-signal microcontroller family from Texas Instruments. It is based on a 32-bit ARM Cortex-M4F CPU, and extends their 16-bit MSP430 line, with a larger address space for code and data, and faster integer and floating point calculation than the MSP430. Like the MSP430, it has a number of built-in peripheral devices, and is designed for low power requirements. In 2021, TI confirmed that the MSP432 has been discontinued and "there will be no new MSP432 products".
The ESP8266 is a low-cost Wi-Fi microcontroller, with built-in TCP/IP networking software, and microcontroller capability, produced by Espressif Systems in Shanghai, China.
The Arduino Nano is an open-source breadboard-friendly microcontroller board based on the Microchip ATmega328P microcontroller (MCU) and developed by Arduino.cc and initially released in 2008. It offers the same connectivity and specs of the Arduino Uno board in a smaller form factor.
RP2040 is a 32-bit dual ARM Cortex-M0+ microcontroller integrated circuit by Raspberry Pi Ltd. In January 2021, it was released as part of the Raspberry Pi Pico board. Its successor is the RP2350 series.
Attribution:
This article incorporates text available under the CC BY-SA 3.0 license.