Arduino Uno hardware – A comprehensive overview

When you get a brand new Arduino Uno, you hold it in your hand and examine it. The Arduino is versatile because of all those components mounted on it. In other words, each of those tiny peripherals has a purpose. In this article, we will take a brief look at all the major parts of the Arduino Uno hardware.

USB connection

Starting with what seems to be the most protruding piece on the board, the USB port is through where both, power and data is provided to the system.

Arduino Uno USB port Type B
The Arduino Uno USB port (Type B)

It is a Type B standard port, and you will need a standard A-B cable to connect it to your computer.

The older versions of the Arduino board used to sport a nine-pin RS-232 connector. It was replaced later with the USB port to acknowledge the fact that computers and laptops were no longer manufactured with serial ports.

The addition of a secondary microcontroller, ATmega 16U2, allows the main processor on the Arduino Uno to communicate with the host computer via a USB. The ATmega 16U2 supplies serial data to the main processor and has a built-in USB peripheral.

Arduino Uno power cable
Standard A-B USB cable

The host computer provides 100mA of current at 5V to the Uno for an unenumerated device and 500mA at 5V for an enumerated device. Though this current is enough for small projects, it is not sufficient for larger loads like relays, motors, etc.

An Arduino Uno powered up using a USB cable
An Arduino Uno powered up using a USB cable

Power jack (Barrel connector)

Supplying power via the barrel connector is one of the ways in which we can switch on the Arduino Uno. It is a circular port, 2.1mm in diameter. The center pin is positive, and the outer sleeve is ground (GND).

Arduino uno barrel connector
The barrel connector is 2.1mm in diameter

Make sure that the AC to DC adapter you will use to plug into the barrel connector has an output in the range of 6-20V (7-12V recommended).

AC - DC adapter barrel plug for Arduino Uno (1)
AC – DC adapter barrel plug

In addition to powering up the Arduino Uno hardware, the power supplied via the barrel connector can be accessed at Vin to power up components on the breadboard or shields.

Shields are additional boards that usually follow the form factor of the Arduino Uno and can be attached to the Arduino to add different functionalities. For example, with the Ethernet shield you can easily hook your project to the internet. There are many shields available for the Arduino Uno; we will cover those in a later post.

Power up the Arduino using AC-DC adapter
An Arduino Uno powered up via the barrel connector

ATmega 16U2

Arduino uno second processor atmega 16U2
The ATmega 16U2 enables the Arduino to communicate with the host computer via USB

The ATmega 16U2 is primarily responsible for USB/Serial signal conversion. It sends the serial data to the ATmega 328P and can be thought of as a communication enabler between the host computer and the Arduino board. The ATmega 16U2 has its own set of peripherals that assist in its important task. Hence, these peripherals and the ATmega 16U2 together form an essential subsystem of the Arduino board.

ATmega 328P – The heart of the Arduino hardware

Arduino Uno - ATmega 328P
The core microcontroller

This is the main component of the Arduino board. Everything else on the board exists to allow us to experiment with the ATmega 328P. There is a lot that should be learned, in terms of hardware and software, about the ATmega 328P. Eventually, towards the middle of this course, we will take up more interesting and intricate topics.

But for now, this is what you should know.

  • It’s an 8-bit microcontroller
  • It has 32 kB of flash memory
  • It has 2kB of SRAM
  • It’s capable of reaching thorough-puts of 1 MIPS per MHz.
  • It lacks a USB interface.
  • It has 20 GPIO pins.
  • It’s equipped with an SPI serial port.

ICSP headers

ICSP headers for serial programming on the Arduino Uno
In-Circuit-Serial-Programming pins

There are two ICSP header pins on the Arduino Uno. One for each microprocessor. ICSP is an acronym for In-Circuit-Serial-Programming.

As you read earlier, both the microprocessors have a firmware uploaded on them. The ATmega 16U2 has a USB serial firmware that is used for USB-Serial translation, and the ATmega 328 has a firmware that intercepts serial data from the 16U2 and allocates program memory to store it.

When manufacturing the board, the respective firmware is uploaded after the ICs are mounted using the ICSP pins. The ICSP pins can also be used to directly upload sketches to the ATmega 328 and change/update firmware on both the ICs.

There are many firmware available that can extend the functionality of the Arduino hardware. We will take a look at those in subsequent posts.

16MHz Oscillator

Arduino uno 16MHz crystal oscillator
16MHz crystal oscillator

The 16MHz crystal oscillator is connected to the ATmega16U2 and is essential for perfectly synchronized serial communication. The ATmega328 has it’s own oscillator as seen in the schematic. But the board uses a ceramic resonator instead of the crystal oscillator. We will take a look at the functions of both the devices in subsequent posts.

Arduino uno - Ceramic resonator
16MHz ceramic resonator

The function of the oscillator and the resonator is same. They are used to time the circuit properly. But what does that mean? Suppose you need a 2-second delay between each LED blink, the 2 second time gap is calculated by the oscillator/resonator.

Digital I/O pins

Digital IO pins
Apart from the 14 Digital I/O pins, the analog pins can be used as digital I/O pins too.

All the general purpose IO pins on the Arduino (analog/digital) can be used as digital I/O pins. Furthermore, these are the pins that we will be using to communicate with our target devices. Digital input pins read digital inputs, and digital output pins write digital outputs.

Analog input pins

analog input pins arduino uno
A0 -A5 are analog input pins

There are six analog pins on the Arduino Uno (Eight if you are using the SMD version) that are classified as Analog input pins.

Analog data is basically all the values in a particular range. The analog input pins can measure voltage (or signals) with a voltage in the range of 0-5V (we can use the AREF pin to modify this range).

Digital data is either LOW or HIGH; analog data encompasses all the values between these two thresholds. Sensors usually output analog readings. The ATmega 328 cannot process analog data directly. It is equipped with a special peripheral component called the Analog to Digital Converter (ADC). The ADC is responsible for reading analog inputs and converting them into digital data for the microprocessor.

There is a slight confusion in the naming convention because functionally, some of the digital pins can provide analog outputs in the form of PWM (Pulse Width Modulated) outputs. Similarly, all the analog input pins (A0-A5) can be used as digital pins as well. Let’s summarize that so it doesn’t confuse us.

Analog pins summary

Some Digital pins: Can give analog output

All Analog pins: Can give digital output, read digital input, CANNOT give analog output.

Power pins

Power pins arduino uno-min
There are a total of 7 pins on the power rail on the Arduino Uno


There is a total of seven power pins on the Arduino Uno. Each pin has its significance and is part of the power supply circuit. We will enlist the main functions of each of these pins below and dive deeper into the power supply circuit in later articles.

  • Arduino Vin pin

Arduino Uno - Vin
Vin (6-12V)

The Vin pin on the Arduino board can be used to switch the board on. Otherwise, it can be used as a power source for other components in your project.

In a scenario where the Vin pin is used as an input to power up the Arduino board, it needs a supply of 6V-12V, this subsequently gets regulated to 5V by the onboard voltage regulator. This 5V eventually powers up the Arduino board.

When used as a power source, the Vin pin gets its power from the barrel connector. Remember, this voltage is accessed before it passes through the onboard voltage regulator. Therefore, if you are drawing power from the Vin pin, you will get the voltage supplied to the barrel connector.

Vin (Summary)

Input: 6-12V; gets regulated to 5V

Output: Same as the voltage applied to the barrel connector.

  • Arduino GND pin

Arduino Uno - 3 ground pins
Three GND pins on the Uno

There are three ground pins available on the Arduino Uno. Two of these are on the power rail. Generally, in electronics, two circuits that are/or need to be interfaced with each other have a common voltage reference point and that is called ground (GND).

Why does the Arduino Uno have multiple ground (GND) pins?

This is a very common question asked by beginners and surprisingly, some experienced users too. The most simple reason is that the presence of multiple pins adds convenience while prototyping. When the number of components is high, or you want to decrease the quantity of wiring used, some extra GND pins come in handy.

Another reason is that mostly analog devices are connected on a single GND pin and separately from the digital devices.

It’s okay if you can’t remember all the specifications precisely yet. We got acquainted with the basics of the hardware in this post. In the next post, we will cast a similar look over the software.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

One comment