When you study any embedded device, before entering into programming it is must to understand its hardware specification and internals. When you got sound knowledge of electronic design of any embedded product such as Arduino, you can very efficiently utilize or embed its features in your product. In this post we will study Arduino Uno Boards hardware design.
Overview of Arduino Uno Hardware
There are many varieties of Arduino boards (explained on the this page) that can be used for different purposes. Some boards look a somewhat different from the one below, but most Arduino’s have the majority of these components in common:
What is on the Board ?
Power (USB / Barrel Jack)
Every Arduino board needs a way to be connected to a power source. The Arduino UNO can be powered from a USB cable coming from your computer or a wall power supply that is terminated in a barrel jack. In the picture above the USB connection is labeled (1) and the barrel jack is labeled (2).
Pins (5V, 3.3V, GND, Analog, Digital, PWM, AREF)
The pins on your Arduino are the places where you connect wires to construct a circuit probably in conjunction with a breadboard and some wire. They usually have black plastic ‘headers’ that allow you to just plug a wire right into the board. The Arduino has several different kinds of pins, each of which is labelled on the board and used for different functions.
- GND (3): Short for ‘Ground’. There are several GND pins on the Arduino, any of which can be used to ground your circuit.
- 5V (4) & 3.3V (5): As you might guess, the 5V pin supplies 5 volts of power, and the 3.3V pin supplies 3.3 volts of power.
- Analog (6): The area of pins under the ‘Analog In’ label (A0 through A5 on the UNO) are Analog In pins. These pins can read the signal from an analog sensor (like a temperature sensor) and convert it into a digital value that we can read.
- Digital (7): Across from the analog pins are the digital pins (0 through 13 on the UNO). These pins can be used for both digital input (like telling if a button is pushed) and digital output (like powering an LED).
- PWM (8): You may have noticed the tilde (~) next to some of the digital pins (3, 5, 6, 9, 10, and 11 on the UNO). These pins act as normal digital pins, but can also be used for something called Pulse-Width Modulation (PWM). We have a tutorial on PWM, but for now, think of these pins as being able to simulate analog output (like fading an LED in and out).
- AREF (9): Stands for Analog Reference. Most of the time you can leave this pin alone. It is sometimes used to set an external reference voltage (between 0 and 5 Volts) as the upper limit for the analog input pins.
Reset Button
Arduino has a reset button (10). Pushing it will temporarily connect the reset pin to ground and restart any code that is loaded on the Arduino. This can be very useful if your code doesn’t repeat, but you want to test it multiple times. Unlike the original Nintendo however, blowing on the Arduino doesn’t usually fix any problems.
Power LED Indicator
Just beneath and to the right of the word “UNO” on your circuit board, there’s a tiny LED next to the word ‘ON’ (11). This LED should light up whenever you plug your Arduino into a power source. If this light doesn’t turn on, there’s a good chance something is wrong. Time to re-check your circuit!
Tx- Rx LED’s
TX is short for transmit, RX is short for receive. These markings appear quite a bit in electronics to indicate the pins responsible for serial communication. In our case, there are two places on the Arduino UNO where TX and RX appear – once by digital pins 0 and 1, and a second time next to the TX and RX indicator LEDs (12). These LEDs will give us some nice visual indications whenever our Arduino is receiving or transmitting data (like when we’re loading a new program onto the board).
Main IC
The black thing with all the metal legs is an IC, or Integrated Circuit (13). Think of it as the brains of our Arduino. The main IC on the Arduino is slightly different from board type to board type, but is usually from the ATmega line of IC’s from the ATMEL company. This can be important, as you may need to know the IC type (along with your board type) before loading up a new program from the Arduino software. This information can usually be found in writing on the top side of the IC. If you want to know more about the difference between various IC’s, reading the datasheets is often a good idea.
Voltage Regulator
The voltage regulator (14) is not actually something you can (or should) interact with on the Arduino. But it is potentially useful to know that it is there and what it’s for. The voltage regulator does exactly what it says – it controls the amount of voltage that is let into the Arduino board. Think of it as a kind of gatekeeper; it will turn away an extra voltage that might harm the circuit. Of course, it has its limits, so don’t hook up your Arduino to anything greater than 20 volts.
SMD Components in Arduino Uno
The PCB design of the Arduino UNO uses SMD (Surface Mount Device) components. Which are as listed below
Arduino Uno Reference Design
See the design schematic shown in image below or you can also download it from official Arduino site (arduino.cc). Here you can see clearly here that there are two ATmega microcontrollers on board.
- Main Microcontroller
- USB connection governing bridge microcontroller.
After you write code and compile it using Arduino IDE, on successful compilation its hex file is generated. Now to upload this hex file on main microcontroller we need to communicate to our Arduino IDE/Computer using USB connection. Because the main microcontroller doesn’t have a USB transceiver, we need a bridge to convert signals between the serial interface (UART interface) of the microcontroller and the host USB signals. In latest revision of Uno, the bridge is the ATmega16U2, which has a USB transceiver and also a serial interface (UART interface).
You can see there are three main sections in schematic of Arduino Uno
- Microcontroller
- USB Bridge Section
- Power Section – Rest of above section with Voltage Regulator and other power related stuff.
Microcontroller Section
What is microcontroller? What is microprocessor? What is single board Microcontroller? What is Single Board Computer? I have covered these topics in our last Article about “What is am Arduino?”
Arduino Uno includes 8-bit AVR family microcontroller ATmega328. The ATmega328 microcontroller is the MCU used in Arduino UNO R3 as a main controller. ATmega328 is an MCU from the AVR family; it is an 8-bit device, which means that its data-bus architecture and internal registers are designed to handle 8 parallel data signals.
There are two different packages of the ATmega328. DIP28 (Dual In Line Package) and TQFP32 (Thin Quad Flat Package) respectively. Following Images depicting those packages. Images courtesy of Sparkfun and Wikimedia.
Block Diagram and features Of ATmega328
You can find detailed features of this microcontroller in ATmega328 datasheet. We will summarize that as follows
1. Memory
- Flash ROM = 32KB; Nonvolatile memory used to store application and retains its contents even if power is plugged off.
- SRAM = Static RAM = 2KB; Stores temporary variables used in code/application
- EEPROM = 1K; Nonvolatile stores data that must be available even after power on/off.
Following block diagram shows how all above different memories are connected internally in the MCU.
2. Ports and I/O
- GPIO = General Purpose Input Output Ports = 23 Programmable I/O Lines = B, C D 3 ports.
- This MCU has three ports: PORTC, PORTB, and PORTD. All pins of these ports can be used for general-purpose digital I/O or for the alternate functions indicated in pin mapping diagram shown below. For example, PORTC pin0 to pin5 can be ADC inputs instead of digital I/O.
Above Image shows pin-out and Pin mappings of Arduino Uno R3. So far we have seen about I/O and memory features, In part 2 of this post we’ll see other features and design considerations.