Arduino Uno R3 Hardware Overview
Updated: 18Aug2024 02:33:48 UTC 2024-08-18T02:33:48Z
Rating: (0 reviewsThis article has not been rated yet)
The Arduino Uno R3 is a microcontroller board based on the Atmega238P MCUMicrocontroller Unit. This board is useful for prototyping with a form factor that is convenient to interface with when plugging in power and I/OInput/Output. The large amount of documentation, guides, and tutorials, makes this a good board to start with when learning about microcontrollers.
This hardware overview Arduino Uno R3 board covers specs, board layout, pinout, power, and I/O.
Specs
Parameter | Description |
---|---|
Board Model |
Arduino Uno R3
SKUStock Keeping Unit: A000066 Arduino Uno R3 Datasheet (PDF) |
Main Processor |
8-bit 16MHz AVRAVR microcontrollers derives its name from its developers and stands for, Alf-Egil Bogen and Vegard Wollan RISC microcontroller, and is also known as Advanced Virtual RISC. ATmega328P with Advanced RISCReduced Instruction Set Computer architecture
Note: The "328p" in ATmega328p means 32 for 32KB of flash memory, 8 for 8-bit architecture (data bus), and p for "pico-power" (i.e., consumes less power under certain circumstances) |
USB-Serial Processor |
8-bit 16MHz ATmega16U2
ATmega16U2 Datasheet (PDF) |
Memory |
|
Interface |
|
Timers |
|
Power |
There are 4 ways to power the Board
|
Operating Temperature | -40°C to 85°C (-40°F to 185°F) |
Board Size (LxW) | 68.6mm x 53.4mm (2.7in x 2.10in) |
Board Layout
Components
The components on the Arduino Uno R3 are all on the top of the board with the main components labeled in the figure below. The bottom of the board is not shown because it only consists of solder joints and PCBPrinted Circuit Board traces.
- Power Supply Jack:
- The power supply jack consists of a 5.5mm (ODOuter Diameter) and 2.1mm (IDInner Diameter) center positive plug that you can hook up a wall wort power supply or a battery pack within the voltage range of 7V to 12V DC. If you accidentally use a center negative plug, the circuit has a diode following the jack to protect against reverse polarity and the destruction of the board.
- M7 Diode:
- The M7 diode is an SMDSurface Mount Device version of the popular 1N4007 diode that provides reverse polarity protection on the barrel jack.
- Decoupling (Bypass) Capacitors:
- The two metal cylinders are electrolytic capacitors that are used as decoupling (bypass) capacitors to filter noise and reduce voltage spikes from the power jack supply, providing a clean DC output.
- 5V Voltage Regulator:
- The on board voltage regulator for the barrel jack and USB power supplies is an NCP1117ST50T3G IC that outputs a steady 5V for the ATmega16U2 USB Controller, ATmega328P MCUMicrocontroller Unit, and other components.
- 3.3V Voltage Regulator:
- The LP2985-33DBVR IC is a 3.3V regulator provides a stable 3.3V output for the 3.3V header pin. The input to the 3.3V regulator is 5V that comes from either the output of the 5V regulator powered by the barrel jack or Vin pin, or from the USB 5V.
- LMV358 OpAmp IC and FDN340P MOSFET:
- The LMV358 OpAmp IC is used as a comparitor between the barrel jack and 3.3V regulator output from the USB. The comparitor output feeds into an FDN340P P-Channel MOSFETMetal-Oxide-Semiconductor Field-Effect Transistor used as a switch. Together they act as an auto power switch between the barrel jack and USB power supplies when both are plugged in and powered, where it makes the decision to ignore the power from the USB port and keep drawing power from the barrel jack. This is convenient when programming the board or transferring data to/from the computer without having to unplug the barrel jack.
- USBUniversal Serial Bus Port:
- The USB port is a USB 2.0 Type-B Connector that can supply a regulated 5V to power the board and establish serial communication with a computer to program the microcontroller and read data from it.
- MF-FSMF050 PTC Polyfuse:
- The MF-FSMF050 is a PTCPositive Temperature Coefficient polyfuse with a shut-off limit of 500mA. The fuse is on the power input line of the USB port in case the microcontroller plus any connected devices draw more than 500mA, where it will trip the polyfuse and open the circuit to protect the device (computer) the USB is connected to. The polyfuse is self-resettable and will reset when the current drops below 500mA.
- ATmega16U2 USB Controller:
- The ATmega16U2 chip acts as a bridge between the computer's USB port and the main processor's serial port. The ATmega16U2 is clocked at 16MHz using a crystal oscillator below the chip.
- ICSPIn Circuit Serial Programming for ATmega16U2 USB Controller:
- The ATmega16U2 chip USB Controller runs firmware that can be updated through a special USB protocol called Device Firmware Update (DFUDevice Firmware Update) and you can program it with an ISPImage Signal Processor. A hardware block that can, for example, turn raw (Bayer) camera images into full color images (either RGB or YUV)/ICSPIn Circuit Serial Programming programmer such as Atmel ICE or Arduino ISPImage Signal Processor. A hardware block that can, for example, turn raw (Bayer) camera images into full color images (either RGB or YUV). It is not common to replace the firmware in the ATmega16U2 USB Controller, but there are some people that replace it with a custom firmware to add enhanced capabilities to the Uno.
- Reset Button:
- The reset button restarts your program from the beginning when pushed, which is the same as unplugging the board and plugging it back in. When you reset the board the on-board LEDLight Emitting Diode labeled "L" (connected to pin 13) should flash a couple of times while it's in the bootloader before it runs your program.
- Onboard LEDLight Emitting Diodes:
-
There are 4 onboard LEDs with the following labels.
- ON: Power LED that turns on when the board is powered
- L: Built-In LED connected to pin 13 that can be controlled through programming with the name LED_BUILTIN. When you reset the board, this LED should flash a couple of times while it's in the bootloader before it runs your program.
- TX: Flashes when data is being transmitted through the USB serial port. The TX LED does not flash for transmitting serial data on the TX pin 1.
- RX: Flashes when data is being received through the USB serial port. The TX LED does not flash for receiving serial data on the RX pin 0.
- ATmega328P MCUMicrocontroller Unit:
-
The ATmega328P MCU IC is the brains of the Arduino Uno R3. The "328P" in the name means 32 for 32KB
of flash memory, 8 for 8-bit architecture (data bus), and P for
"Pico-power" (i.e., consumes less power under certain circumstances).
This IC is connected to the board by a socket so it can be removed and replaced without desoldering the chip.
- It is clocked using an external 16MHz ceramic resonator (CSTCE16M0V53-R0) with a max speed of 20MHz.
- For timing and interrupts, this MCUMicrocontroller Unit has two 8-bit Timers, one 16-bit Timer, and one Watchdog Timer (WDTWatchdog Timer).
- Memory consists of 2048 bytes SRAMStatic Random Access Memory, 1KB EEPROMElectrically Erasable Programmable Read-Only Memory, and 32KB Flash programming memory (of which 0.5KB is used by the bootloader).
- It can be interfaced with digital I/OInput/Output, PWMPulse-Width Modulation output, analog inputs, and communication protocols such as UARTUniversal Asynchronous Receiver-Transmitter, I2CInter-Integrated Circuit. Also referred to as IIC or I2C., and SPISerial Peripheral Interface.
- ICSPIn Circuit Serial Programming for ATmega328P MCUMicrocontroller Unit:
-
The ICSPIn Circuit Serial Programming 6-pin header for ATmega328P MCUMicrocontroller Unit allows you to directly upload code
from any external programmers and debugging. Typically, you would connect the board to the computer
USB port and upload your code from the Arduino IDEIntegrated Development Environment (IDE) is a software application that helps develop software code efficiently. on your computer into the
Flash memory of the microcontroller. However, if you need to replace the ATmega328P ICIntegrated Circuit or you
have a bad bootloader, you will need to install the bootloader through the ICSPIn Circuit Serial Programming from an
external programmer or use another Arduino board as an ISPImage Signal Processor. A hardware block that can, for example, turn raw (Bayer) camera images into full color images (either RGB or YUV)
(ArduinoISP).
The bootloader is basically a .hex file that runs when you turn on the board (similar to the BIOSBasic Input/Output System that runs on your computer). The bootloader first checks to see if the computer is trying to upload a program and if so then transfers the program into the ICIntegrated Circuits memory and runs the program. If the computer is not trying to upload code, it runs the code that's already stored in memory.
Pinout
The Arduino Uno R3 has pins for Power, Digital I/OInput/Output (including PWMPulse-Width Modulation and serial communication), Analog Inputs, and ICSPIn Circuit Serial Programming. Many of the I/O pins are multi-functional that are configured in software to be digital, analog, or communication pins.
- Power Pins:
- The Vin pin can be used to power the board if the barrel jack is disconnected. The 3.3V pin and 5V pins provide output power to external devices when the board is supplied power from the barrel jack or USB.
- Digital I/O Pins:
- There are 20 digital I/O pins named D0 - D19.
- Analog Pins:
- There are 5 analog input pins named A0 - A5.
- Communication Pins:
-
Serial communications pins for UART, I2C, and SPI are:
- UART: (RX0, TX0)
- I2C: (SDA, SCL)
- SPI: (MOSI, MISO, SS, SCK)
- Port Names:
- The ATmega328P has 3 ports (B, C, and D) that can be accessed directly for lower-level and faster manipulation of the I/O pins. Port B consists of the pin labeled PB0 - PB5, Port C are pins PC0 - PC5, and Port D are pins PD0 - PD7.
Power
Input Power
There are 4 ways to power the Arduino Uno R3 Board:
- USB-B connector with 5V DC (500mA max)
- DC Barrel Jack with a voltage range of 7V to 12V 2A DC
- Vin Pin with a voltage range of 6V to 12V 2A DC (no reverse polarity protection)
- (Not Recommended) 5V Pin with an externally regulated 5V DC source
- Barrel Jack:
-
The barrel jack allows you to hook up a 7V to 12V DC wall wort power supply or a battery pack to power the Arduino board. The plug for the barrel jack must have an inside diameter (IDInner Diameter) of 2.1mm and an outside diameter (ODOuter Diameter) of 5.5mm. The barrel connector length of 9.5mm or greater is sufficient.
The barrel plug must be center positive. If you accidentally use a center negative plug, the circuit has a diode following the jack to protect against reverse polarity and the destruction of the board. The barrel connector length of 9.5mm or greater is sufficient.
Following the protection diode is a NCP1117ST50T3G regulator that outputs a steady 5V with an absolute maximum output current of 800mA. It should also be noted that the harder these voltage regulators are working, the less current you'll be able to draw, so a more realistic maximum current is about 500mA. High current peripherals, such as motors and LEDLight Emitting Diodes, that need more current than 500mA should always be powered via an additional external power supply.
- USB Port:
- The USBUniversal Serial Bus port is a USBUniversal Serial Bus 2.0 Type-B connector that can supply a regulated 5V±5% to power the board. The USBUniversal Serial Bus port has a thermal PTCPositive Temperature Coefficient polyfuse shut-off limit of 500mA. Any connected devices that draw more than this will trip the polyfuse and open the circuit to protect the device (computer) the USB is connected to. The polyfuse is self-resettable and will reset when the current drops below 500mA.
- Vin Pin:
- The Vin pin on the Arduino Uno R3 is where you can directly connect a power supply line into the board. The input voltage range of 6V to 12V DC offers slightly lower voltages than the DCDirect Current barrel jack, because the connection goes directly to the 5V regulator's input after the protection diode so there is no diode voltage drop of 0.7V. Since it bypasses the diode, there is no reverse polarity protection so caution must be taken when connecting the positive and negative terminals of the power supply (positive pole must be connected to the Vin socket and the negative one to the GND).
- 5V Pin (not recommended):
- The 5V pin is another place where you can directly connect a power supply line into the board, although not recommended. The barrel jack and USB must be disconnected when supplying power to the 5V pin. This pin is directly connected to the 5V regulator's output and since it bypasses the regulator, an external stable 5V source is needed. Furthermore, there is no form of protection on the 5V pin, since its downstream of the protection diode and PTCPositive Temperature Coefficient fuse.
Output Power
There are two pins available to power external devices from the Arduino Nano board.
- 3.3V Pin
- 5V Pin
- 3.3V Pin:
- This pin outputs a regulated +3.3V from the LP2985-33DBVR IC and can source a maximum current of 50mA.
- 5V Pin:
- This pin outputs a regulated +5.0V from the NCP1117ST50T3G regulator. The amount of current the pin can source depends on the power source of the Arduino Uno R3 board minus the current consumption of the onboard components (typically less than 50mA) and any connected devices. If powering the board from the USB port, then its current is limited to 100mA for a passive hub and 500mA for a normal USB port. If powering the board from Vin, the NCP1117ST50T3G regulator spec has a maximum rating of 800mA, but its current rating drops quickly with increasing input voltage and thermal dissipation, which is going to bring it down to around the 400mA to 500mA range.
Digital I/O
There are 20 pins total that can function as 0V or 5V digital I/O pins with the capability of being programmed as either input or output using the Arduino Library pinMode(), digitalRead(), and digitalWrite() functions. All of these digital pins are capable of sourcing or sinking 40mA of current. They also have an additional feature of setting an internal pull-up resistor of 20KΩ to 50KΩ in software.
- Pins D0 - D12:
- The pins labeled D0 through D12 are dedicated digital logic pins.
- Pin D13:
- Digital pin D13 is harder to use as a digital input than the other digital pins because it has an LEDLight Emitting Diode and resistor attached to it that's soldered to the board on most boards. If you enable its internal pull-up resistor, it will hang at around 1.7V instead of the expected 5V because the onboard LED and series resistor pull the voltage level down, meaning it always returns LOW. If you must use pin D13 as a digital input, set its pinMode() to INPUT and use an external pull-down resistor.
- Pins D14 - D19:
- The six pins D14 through D19, although analog pins (A0 - A5), can be configured as digital pins. The pin names can be either D14 - D19 or A0 - A5 in the Arduino code. For example, you can set the mode to read pin D14 by using pinMode(D14, INPUT) and digitalRead(D14) or by referring to the pin name A0 using pinMode(A0, INPUT) and digitalRead(A0).
- PWM Pins:
- Six of the Digital I/O pins (D3, D5, D6, D9, D10, and D11) that have a ~ in front of their names in the figure above are capable of Pulse-Width Modulation (PWMPulse-Width Modulation). They are used to generate pulses with a specified duty cycle to control the brightness of LEDLight Emitting Diodes, control motors, and can provide limited analog-like output. The Arduino Library analogWrite(pin, value) function takes arguments for the pin number to write to and an integer value to set the duty cycle between 0 (always off) and 255 (always on).
- External Interrupt Pins:
- There are two external interrupts on pins D2 and D33 that can be set to trigger on the event of RISING or FALLING or LOW levels. These interrupts can stop the normal flow of the program you have running and run a different process. The ATmega328P has 2x 8-bit Timers, 1x 16-bit Timer, and 1x Watchdog Timer (WDTWatchdog Timer) that are used to detect and/or capture external timing events or generate timing events to control external devices.
Analog Inputs
The Arduino Uno R3 has 5 analog input pins (A0, A1, A2, A3, A4, A5) that can read analog signals between 0V and 5V into a 10-bit ADCAnalog-to-Digital Converter (ADC, A/D, or A-to-D) in the ATmega328P MCUMicrocontroller Unit. This converter scales an analog signal in a range of 0 to 1023, with a resolution between readings of 5 volts per 1024 units (4.9mV per unit). The Arduino Library analogRead() function takes about 100 microseconds to read an analog input, with a maximum reading rate of about 10,000 times a second.
Communication
The Arduino Uno R3 board has standard communication I/OInput/Output for UARTUniversal Asynchronous Receiver-Transmitter, I2CInter-Integrated Circuit. Also referred to as IIC or I2C., and SPISerial Peripheral Interface. The pin locations are shown in the figure below.
UART
The digital pins (D0, D1) also function as UART hardware serial pins (RX0, TX0), respectively. There is only one hardware UART serial port on the Arduino Uno R3 board where the pins (RX0, TX0) are physically connected to the ATmega16U2 chip for USB communication, so you cannot use the (RX0, TX0) pins if you are already using the USB to send/receive data to a computer or other device.
However, other digital pins can be used to emulate UART (a technique known as Bit Banging). There are libraries available, like the Arduino SoftwareSerial Library, that make this emulation more convenient to interact with serial interfaces.
More details on how UART works can be found in the UART Communication article below.
I2C
The 2 digital pins for I2C communication are SDASerial Data Line (D18) and SCLSerial Clock (SCL) is the output clock signal line from the master device. Also referred to as SCK, SCLK, or CLK. (D19). I2C operates on a synchronous bus for half-duplex communication over a short distance. I2C uses a multi-master/multi-slave configuration that gives the Arduino Uno R3 the capability of controlling a network of devices (e.g., sensors, LCDLiquid Crystal Display, memory modules, etc.) with just two data pins and software such as the Wire Library that comes with the Arduino IDE.
More details on how I2C works can be found in I2C Communication article below.
SPI
The 4 digital pins for SPI communication are MOSIMaster Out Slave In (MOSI) is the SPI data output line from the master device (D11), MISOMaster In Slave Out (MISO) is the SPI data output line from the slave device (D11), SSSlave Select (SS) is the SPI output line from the master device to indicate that data is being sent. Also referred to as Chip Select (CS). (D10), and SCKSerial Clock line (D13). SPI provides full-duplex synchronous serial communication at high speeds over short distances used for interfacing the Arduino Uno R3 with peripheral devices such as sensors, RTCReal-Time Clocks, LCDLiquid Crystal Displays, external memory modules, and wireless transceiver modules.
One benefit of SPI is data can be transferred in a continuous stream without interruption at higher speeds compared to UART and I2C where data is sent in packets that are limited to a specific number of bits. SPI also offers full-duplex communication where data can be sent and received at the same time, in contrast to UART and I2C that are half-duplex where data can be only sent or received in one direction at a time.
More details on how SPI works can be found in SPI Communication article below.
Conclusion
The Arduino Uno R3 board specs, layout, power, and I/O were shown to help you become more familiar with the board and its capabilities. This board was designed to make it convenient for prototyping with a form factor that is easy to interface with when plugging in power and I/O.
However, it's not without its limitations compared to other microcontroller boards, with its low 8-bit 16MHz processor, small RAMRandom Access Memory memory (2048 bytes), UART and USB cannot be used at the same time, and only one processing core.
The Arduino Uno R4 with the 32-bit 48MHz Renesas RA4M1 (Arm Cortex-M4) has upgraded most of these limitations for a similar price, with 32kB of RAM, separate UART and USB channels where both can be used at the same time, but still only one processing core and a reduced current rating per I/O pin from 20mA to 8mA.
Products
Created:
27Jul2023 18:12:25 UTC
2023-07-27T18:12:25Z
Updated:
03Sep2024 22:05:38 UTC
2024-09-03T22:05:38Z
- Processor:
- 8-bit 16MHz AVRAVR microcontrollers derives its name from its developers and stands for, Alf-Egil Bogen and Vegard Wollan RISC microcontroller, and is also known as Advanced Virtual RISC. ATmega328P (max speed 20MHz)
- Memory:
- 32KB Flash, 1KB EEPROMElectrically Erasable Programmable Read-Only Memory, and 2048 bytes SRAMStatic Random Access Memory
- Interface:
- 14x Digital I/OInput/Output with 6x PWMPulse-Width Modulation, 8 channel 10-bit ADCAnalog-to-Digital Converter (ADC, A/D, or A-to-D), and UARTUniversal Asynchronous Receiver-Transmitter/I2CInter-Integrated Circuit. Also referred to as IIC or I2C./SPISerial Peripheral Interface
- Boards:
-
- Arduino Uno R3
- Compatible Boards: SparkFun Redboard, Adafruit Metro 328, Elegoo, SunFounder, DFRobot DFRduino
Created:
11Dec2022 19:49:54 UTC
2022-12-11T19:49:54Z
Updated:
04Sep2024 02:03:04 UTC
2024-09-04T02:03:04Z
- Processor:
- 8-bit 16MHz AVRAVR microcontrollers derives its name from its developers and stands for, Alf-Egil Bogen and Vegard Wollan RISC microcontroller, and is also known as Advanced Virtual RISC. ATmega
- Memory:
- 32KB Flash, 1KB EEPROMElectrically Erasable Programmable Read-Only Memory, and 2048 bytes SRAMStatic Random Access Memory
- Interface:
- Up to 23x Digital I/OInput/Output with 6x PWMPulse-Width Modulation, 8 channel 10-bit ADCAnalog-to-Digital Converter (ADC, A/D, or A-to-D), and UARTUniversal Asynchronous Receiver-Transmitter/I2CInter-Integrated Circuit. Also referred to as IIC or I2C./SPISerial Peripheral Interface
- Boards:
-
- Arduino Uno R3, Nano, Pro Mini
- SparkFun RedBoard, Pro Mini
- Adafruit Pro Trinket, Metro, Metro Mini
(0) Comments
Sign in to leave a comment
Sign In