As we continue our journey into Arduino programming and electronics, let’s take a closer look at the main hardware components that make up the Arduino Uno board. We’ve chosen to learn on this Arduino board because it’s one of the most popular boards out there with some of the best documentation and project tutorials on the web along with forums that can help point you in the right direction or get you out of a jam as you progress into more advanced projects. The Arduino Uno is also the baseline around which other Arduino boards are designed so it makes the perfect launchpad into other more robust boards when your projects become more complex.
Because Arduino is open source, there are a variety of Arduino Uno clones on the market in addition to the original, and at often cheaper prices. Some clones are great deals while others will remind you that “you get what you pay for” and a lot of that has to do with the parts included on the board itself. Most Arduino starter kits come with a clone board and I’ve found it helpful to always have an original Arduino board in your collection for troubleshooting.
Arduino Uno Board Breakdown
Some boards look a bit different from the original version of the Arduino Uno pictured below, but most Arduino board clones have the majority of these components in common. The least expensive boards will often omit certain parts so having a basic familiarity with the board’s components and what they do is important when comparing clones.
Don’t feel like you have to memorize every one of these components on the Arduino board! You can always come back to this resource and refresh your memory on the hardware.
One of the most prominent components on the Arduino Uno is the ATMEGA328 microcontroller chip. It’s the brains of the Arduino that stores and runs the code you upload via a USB cable from your computer.
On the Arduino Uno, the microcontroller has legs, called pins, that are plugged into a socket. These pins are how the microcontroller is able to do things and interface with other hardware and circuitry, such as LEDs, sensors, or even your computer. If the chip ever gets damaged, it can be pulled out and replaced with another ATMEGA328 chip. I don’t recommend removing it unless you absolutely have to because it’s easy to damage.
The microcontroller chip may look slightly different depending on the Arduino board. On more compact boards, you’ll often see a surface-mounted microcontroller chip with smaller pins. These tend to be less expensive but they can’t be replaced.
The ATMEGA328 was originally designed for industrial automation systems and trying to work with it directly requires advanced electrical engineering and programming skills. The Arduino makes it much more accessible by wrapping it in a board that allows us to easily connect devices and program it.
Powering Your Arduino Uno
In order to run, every Arduino board needs to be connected to a power source. The Arduino Uno gives you two options: the USB jack that you can plug into your computer or wall adapter, or the DC Jack that you can plug into the wall. There are also battery packs with adapters for either jack to make your project portable.
The USB jack can be used to power and program your Arduino whereas the DC jack can only be used for power, but it’s a great option for when you want to run your Arduino continuously for a long term project.
The USB jack makes it easy to upload code from your computer to the Arduino and keep it powered at the same time. The Arduino Uno as well as many of its clones use a type-B USB cable while other boards may require something else. When you buy an Arduino Uno or clone as a stand-alone, it usually doesn’t come with a cable so be sure to double check which USB type you need.
Also, make sure your cable is for “power” AND “data”. So many people give up on learning Arduino because they run into problems right from the start by using a “charging only” cable. I too have been guilty of spending a ton of time troubleshooting a problem only to realize it was the cable.
After your code is uploaded and you just need to keep the board powered, you can use a USB wall adapter just like the ones that come with your phone and other USB gadgets. They provide a clean 5V output which is exactly what the board runs on.
USB Interface Chip
Although you upload code via the USB cable, the ATMEGA328 microcontroller chip can’t directly communicate with it. The chip uses a much simpler and older interface language called “Serial”. So how does the code get translated from USB to Serial? Just like a human translator, the USB to Serial Interface chip can understand and speak both languages and can seamlessly translate between the two.
On less expensive boards, this translator chip may be missing so you’d have to purchase a special cable that does the job called a USB to Serial cable. It’s a bit more expensive than the regular USB cable and some may require a driver to be installed depending on your operating system.
There’s a tiny fuse usually located near the USB jack of the Arduino board. It’s job is to protect your Arduino and computer from any accidental shorts that can be a result of incorrect wiring in a circuit. Just like the circuit breakers in your home, this tiny fuse will “trip” if something shorts out the power to keep your electronics safe. After a few minutes it will “reset” itself so there’s no need to switch or replace it.
The Arduino can be powered by a 7V – 12V AC to DC power adapter that plugs into the wall. I recommend a 9V because it provides the necessary voltage without overwhelming the Arduino. The jack accepts a very common power plug size of 2.1 inner diameter, 5.5mm outer diameter with a center-positive tip.
The Arduino is pretty tough and can usually survive being plugged in with the wrong adapter as long as the voltage doesn’t exceed 20V! When powering off of the DC jack, you can pull at most 800 mA of current. But it’s never a good idea to max out any electronic device for an extended period of time because it shortens its lifespan. With the Arduino in particular, the voltage regulator can overheat and get damaged.
If you want to make your project portable, you can use a battery pack or holder with a barrel adapter that plugs right into the DC jack – a 9V, 6-8 AAs and rechargeable batteries are popular options for powering your Arduino board on the go.
Although you can power the Arduino through the DC jack with a wall adapter rated from 7V to 12V DC, the board itself runs on 5V. The voltage regulator acts like a bouncer in front of a popular nightclub, controlling the amount of people that are allowed to enter. Excess voltage above 5V gets blocked from entering because it would damage the board. But there are limitations to the voltage regulator’s crowd control abilities and the higher the excess voltage, the harder the regulator has to work. Voltages above 20V can cause the regulator to get damaged, allowing excess voltage to trample in and potentially fry your Arduino board.
Why not just use a power adapter that already provides 5V rather than the 9V I recommended above? The regulator itself consumes 2V as it operates so if you provide exactly 5V, the board will actually be getting 3V which is barely enough for it to operate properly. That’s why the listed acceptable input voltage range starts at 7V. The only time you can use a 5V power source is when powering through the USB jack.
The decoupling capacitors filter the incoming power supply from the DC jack to reduce voltage spikes that could damage the board. With the ultra cheap boards, you’ll notice that these may be missing.
The headers are where you connect devices and build your circuits from. They appear as a single line of sockets along the top and bottom edge of the Arduino Uno board. These little sockets allow you to plug wires into them from all kinds of electronics parts like displays, sensors, motors and more!
I recommend having jumper wires in both 8-inch and 4-inch lengths in all 3 tip configurations: male-to-male, male-to-female and female-to-female. This will allow you to connect virtually any device to the Arduino that you want to control so long as it doesn’t exceed the current limits of the pin. I’ll cover this in more detail below.
Even though they are indeed sockets, you’ll more often see them called “pins” so you’ll see me use the terms “sockets” and “pins” interchangeably from here on out.
These headers are grouped into 3 sections labeled power, digital I/O (input/output) and analog.
The pins within the power header section provide power and ground for low-voltage devices like sensors, potentiometers, displays and more. But for more voltage and/or current-hungry devices, it’s best to use an external power source.
- Vin – Anything you plug in here will be connected to the power input from the DC jack. This can range from 7V to 12V DC depending on what’s plugged into the DC jack. If the DC jack isn’t being used, then it will supply 5V from the USB connection.
- GND – There are 2 of these side-by-side and are common ground connections for all power and data. Even if you use an external power source for devices that need more current, you always need a ground to the Arduino too or those devices won’t work.
- 5V – This supplies clean regulated 5V power that the Arduino runs on and comes from either the DC jack or USB connection (whichever one is plugged in) and can provide up to about 500mA current draw.
- 3.3V – This supplies clean regulated 3.3V power and you’ll need it for certain devices like some sensors and modules that need exactly this voltage to work. It provides up to about 100mA current draw.
- Reset – This is connected to the reset button which re-starts the Arduino and makes the sketch start over from the beginning. If you apply a low voltage to this pin, it does the same thing as the reset button.
- IOref – When you begin using shields, boards that mount on top of the Arduino board to expand its functionality, this pin tells the shield what the IO voltage is.
- Blank Pin – This pin has no name and is reserved for future use so don’t connect anything to it.
Digital Pin Header
The digital pins make up the longest row along the top edge of the Arduino Uno board and are labeled 0 – 13. They can be used as either inputs that receive signals, like when a button is pressed, or outputs that send signals, like when controlling a relay or blinking a LED. When used as an input, they can only read two different voltage states – high (5V) or low (0V). The same is true when digital pins are used as outputs in that they can send either 5V (power it on) or 0V (turn it off) to external components and devices.
Digital pins can provide a maximum of 40mA but you should never run a device that consumes this amount or more continuously directly off an Arduino pin. The best case scenario is that you’ll fry the pin and not the whole board. It’s best to stick with 20mA per pin for continuous use – that’s why 2 LEDs (usually rated at 20mA each) can’t share a pin.
Within this group of pins labeled 0 – 13, some have added functionality:
- 0 (RX) & 1 (TX) – The “RX” and “TX” stand for receive and transmit. In addition to being digital I/O pins, the Arduino Uno uses them to communicate between the board and the computer (via the USB-serial translator chip) like when you’re uploading code or have a sketch that performs serial communication between the two while running. Sometimes using these pins in your circuit can interfere with serial communication so it’s best to leave these for last, when you’ve run out of the other pins.
- PWM Pins (~) – Some pins have a ~ symbol next to the pin number (3, 5, 6, 9, 10, and 11 on the Uno). These pins act as normal digital I/O pins but can also be used for Pulse Width Modulation (PWM), allowing them to simulate analog output and appear as if they’re outputting varying amount of voltage between 0V and 5V. This is useful for fading a LED rather than just turning it on (5V) or off (0V) as well as controlling the speed of a motor.
- Pin 13 – This pin is also connected to a surface-mounted LED so whenever pin 13 is in a high voltage state (5V), the onboard LED will light up. Using this pin doesn’t affect anything and it’s great for troubleshooting because it provides a visual cue when a high voltage is being sent and anything connected to it should work.
In addition to digital I/O pins 0 – 13, there are a few more in the digital pin header:
- GND – Another common ground pin just like the other two in the power header.
- AREF – The Analog Reference pin is sometimes used to set an external reference voltage (0-5V) as the upper limit for the analog input pins. This can be useful for more advanced analog sensor reading but for the most part you can leave this pin alone.
- SDA & SCL – These appear as two unlabeled pins from the top (the labels are on the bottom of the board) and are used for I2C communication. They are connected inside the PCB to pins A5 and A4. I don’t recommend using these two unlabeled pins unless you have an I2C sensor or other component.
Analog Pin Header
The six analog pins labeled A0 – A5 can detect or read voltages between 0V and 5V so they are commonly used for sensors. They are also among the most versatile pins because they can also act as regular digital I/O pins. Don’t hesitate to use them if you run out of pins in the digital pin header at the top.
The Arduino board has some surface-mounted lights that act as visual indicators for certain states and actions. On the original Arduino Uno there are 3 LEDs in the middle and 1 LED on the right but on clones you may find them in different locations.
- Power LED – This light will shine bright green whenever the Arduino board is powered. If it appears dim, flickers or doesn’t turn on then check your power supply.
- RX & TX LEDs – These lights will blink whenever data is transferred between the Arduino and your computer.
- L LED – This is the one onboard LED that you can control and is connected to pin 13. Whenever pin 13 is in a high voltage state the LED will light up.
When you press this button, the program currently running on your Arduino board will start back at the beginning. It’s useful for when something hangs or seems stuck. Resetting the Arduino does not erase the code.
The crystal oscillator gives the Arduino the ability to keep track of time and also generates pulse width modulation and serial communication signals. On the Arduino Uno the crystal oscillator is 16 Mhz, which means the Arduino can execute binary instructions at 16 Mhz or 16 million times per second.
There are a few other hardware odds and ends on the Arduino Uno board that we didn’t go over but having a familiarity with the main hardware components above will help you get started making your first circuits and troubleshooting common Arduino board issues.
For a more comprehensive Arduino course, check out our Beginner’s Crash Course to the Arduino, a build- and code-along style video course presented in real-time. We start at the beginning and progress to more advanced Arduino programming and circuit building techniques that will prepare you to build virtually any Arduino project. Watch the first lesson FREE!
BEGINNER’S CRASH COURSE TO THE ARDUINO
Go from absolute beginner to building and coding your own projects from scratch using the most popular Arduino components, even if you’ve never coded or built a circuit before.
Make real progress on your creative electronics goals by building and coding 30+ Arduino projects in real-time with me. Access our entire library of past course broadcasts plus a new LIVE course every month!
Some links in this post are to affiliate sites. If you purchase something through them, I may earn a small commission — which costs you nothing! I am very grateful when you use my links to make a purchase.