Arduino Uno is the most revolutionary board in the robotics and electronics world. It’s the best choice to start learning robotics and electronics. Its design is simple and at the same time robust and easy to use. Besides that, the community around it is unbelievably big and supportive. You can almost be sure that you would find an answer for any issues you may encounter as a beginner.
Arduino Uno is actually a microcontroller board based on the ATmega328P (datasheet). It has 14 digital input/output pins (of which 6 can be used as PWM outputs), 6 analog inputs, a 16 MHz quartz crystal, a USB connection, a power jack, an ICSP header and a reset button. It contains everything needed to support the microcontroller; simply connect it to a computer with a USB cable or power it with a AC-to-DC adapter or battery to get started.. You can tinker with your UNO without worrying too much about doing something wrong, worst case scenario you can replace the chip for a few dollars and start over again.
“Uno” means one in Italian and was chosen to mark the release of Arduino Software (IDE) 1.0. The Uno board and version 1.0 of Arduino Software (IDE) were the reference versions of Arduino, now evolved to newer releases. The Uno board is the first in a series of USB Arduino boards, and the reference model for the Arduino platform; for an extensive list of current, past or outdated boards see the Arduino index of boards.
|Input Voltage (recommended)||7-12V|
|Input Voltage (limit)||6-20V|
|Digital I/O Pins||14 (of which 6 provide PWM output)|
|PWM Digital I/O Pins||6|
|Analog Input Pins||6|
|DC Current per I/O Pin||20 mA|
|DC Current for 3.3V Pin||50 mA|
|Flash Memory||32 KB (ATmega328P) of which 0.5 KB used by bootloader|
|SRAM||2 KB (ATmega328P)|
|EEPROM||1 KB (ATmega328P)|
|Clock Speed||16 MHz|
- LED: There is a built-in LED driven by digital pin 13. When the pin is HIGH value, the LED is on, when the pin is LOW, it’s off.
- VIN: The input voltage to the Arduino/Genuino board when it’s using an external power source (as opposed to 5 volts from the USB connection or other regulated power source). You can supply voltage through this pin, or, if supplying voltage via the power jack, access it through this pin.
- 5V: This pin outputs a regulated 5V from the regulator on the board. The board can be supplied with power either from the DC power jack (7 – 20V), the USB connector (5V), or the VIN pin of the board (7-20V). Supplying voltage via the 5V or 3.3V pins bypasses the regulator, and can damage the board.
- 3V3: A 3.3 volt supply generated by the on-board regulator. Maximum current draw is 50 mA.
GND: Ground pins.
- IOREF: This pin on the Arduino/Genuino board provides the voltage reference with which the microcontroller operates. A properly configured shield can read the IOREF pin voltage and select the appropriate power source or enable voltage translators on the outputs to work with the 5V or 3.3V.
- Reset: Typically used to add a reset button to shields which block the one on the board.
The Arduino Uno can be powered via the USB connection or with an external power supply. It selects the power source automatically.
External (non-USB) power can come either from an AC-to-DC adapter (wall-wart) or battery. The adapter can be connected by plugging a 2.1mm center-positive plug into the board’s power jack. Leads from a battery can be inserted in the Gnd and Vin pin headers of the POWER connector.
The board can operate on an external supply of 6 to 20 volts. If supplied with less than 7V, however, the 5V pin may supply less than five volts and the board may be unstable. If using more than 12V, the voltage regulator may overheat and damage the board. The recommended range is 7 to 12 volts. The power pins are as follows:
- VIN. The input voltage to the Arduino board when it’s using an external power source (asopposed to 5 volts from the USB connection or other regulated power source). You can supply voltage through this pin, or, if supplying voltage via the power jack, access it through this pin.
- 5V.This pin outputs a regulated 5V from the regulator on the board. The board can be supplied with power either from the DC power jack (7 – 12V), the USB connector (5V), or the VIN pin of the board (7-12V). Supplying voltage via the 5V or 3.3V pins bypasses the regulator, and can damage your board. We don’t advise it.
- 3V3. A 3.3 volt supply generated by the on-board regulator. Maximum current draw is 50 mA.
- GND. Ground pins.
Input and Outputs
Arduino Uno has 14 digital input/output pins (of which 6 can be used as PWM outputs) and 6 analog inputs. The analog pins can read the signal from an analog sensor like the humidity sensor or temperature sensor and convert it into a digital value that can be read by the microprocessor. It uses an internal 10 bit analog to digital converter which maps the input signal to a number between 0 to 1024.
The digital pins can be configured to work either as input or output. In compare with analog pins that can have a range of values, digital pins can be either HIGH (interpreted as 1) or LOW (interpreted as 0). For example when we use them as Input, we can connect a push button to a digital pin so that whenever the button is pressed, the voltage level goes HIGH and when it’s released the voltage level becomes LOW. Also when we use them as output (e.g. to light up an LED), when we set the value of the pin to HIGH (1) it lights up the LED and when we set it to LOW (0) it turns the LED off.
The Arduino Uno, beside being able to send or receive digital and analog signals via I/O pins, supports 3 of the most important standard hardware communication protocols available today. These protocols enable us to have a communication channel between different hardwares. These protocols allow us to focus more on the data that is going to be transferred and hide the details of the data transfer between devices:
UART is a form of serial communication because data is transmitted as sequential bits. The wiring involved with setting up UART communication is very simple: one line for transmitting data (TX) and one line for receiving data (RX). On the Arduino Uno, there is one serial port dedicated for communication with the computer the Arduino is connected to and that’s the USB. On the Arduino Uno, this USB connection is broken out through onboard hardware into two digital pins, GPIO 0 and GPIO 1, which can be used in projects that involve serial communication with electronics other than the computer.
Serial Peripheral Interface is another communication channel supported by Arduino Uno which is synchronous and follows a master-slave model, where there is one master device and multiple slave devices. It also requires more than two lines for implementation. In Arduino Uno there is a dedicated pins that are considered to be used for the SPI communication and it can be used for different purposes from communicating with an LCD board to programming the Microcontroller itself.
The inter-integrated circuit (IIC) which is normally called I2C (I squared C) is a data exchange bus used to transfer data between the central processing unit (CPU) or microcontroller unit (MCU) of a device and peripheral chips. I2C consists of a communication bus made of two wire that supports bidirectional data transfer between a master and several slave devices. The I2C is now one of the most common communication protocols in the market and you can find almost any sort of sensor boards with I2C support (e.g. accelerometer sensor, humidity sensor, weight sensor, etc.).
The Arduino Uno is programmed using the Arduino Software (IDE), the Integrated Development Environment common to all Arduino boards. The programming language is C so you should both be familiar with some basic concepts of programming in general as well as the syntax of the C language. In order to program the Arduino Uno, the USB connection with the PC is necessary and it’s not enough to just power it up. There are a lot of resources available online teaching you how to program the Arduino Uno and its community is so big that you can find a solution to almost any problem you may encounter.
Beside having direct access to all pins and internal memory structures of the Microcontroller (called registers) you have access to a large library of codes that has already being developed to do many different tasks. From managing the communication over I2C channel, to handle drawing on a LCD screens or implementing PID controller for your robot. Always remember to search first to see if there is already a library to communicate with the sensor or the actuator you’re going to connect to the Arduino Uno. It saves you a lot of valuable time.
Where to Buy Arduino Uno?
The Arduino Uno is designed as an Open Source hardware by an Italian company called arduino.cc. As it’s an Open Source design, anybody can try to develop an Arduino Uno board. That’s why you can find a lot of different implementation of this board in the market. The original Arduino Uno from arduino.cc is more expensive than other implementations. That’s because they use that money to do more researches and development for their new boards. When you buy a board from them you’re actually contributing to shape the next generation of these boards.
You can buy the original Arduino Uno from one of their authorized distributors.
Is there any cheaper versions to buy?
As a DIYer or a Hobbyist, you may have some limitations on your budget. So you can always try to buy a Arduino Uno compatible board available online. From the functional point of view, they’re exactly the same. The arduino.cc company has used “off the shelf” components in their designs. The compatible versions may not have a very polished and nice looking PCB or packaging as you can see on the original one, but the price difference will cover it! The original Arduino can be 10 times more expensive than compatible ones.
In order to buy an Arduino Uno compatible board, you can try one of the following options:
Amazon: This was obvious. There are many sellers providing Arduino Uno compatible boards both as a standalone or as part of a kit that includes a collection of sensors, actuators and basic electronics components that are necessary to begin working with it. If you’re a beginner, starting with such a kit is a best way to do that, because you may not know exactly what components or modules you may need to start doing your next experiment.
Products from Amazon.com
- Price: $29.99Was: $49.99
- Price: $53.99Was: $69.99
eBay: It’s also a good source to get Arduino Uno compatible boards. You can even find cheaper options here. Normally they’ve a longer shipping time (between 1 to 2 months) but most hobbyist got used to these shipping times and they just preorder their components and boards far in advance.
AlliExpress: This is also an online store for all sort of stuff that you can buy from China. They mostly offer free shipping but the shipping time is (like eBay sellers) more than a month. The prices are typically cheaper than eBay but not that much.
The important point here is to ensure not to buy a counterfeit product. You can find the link to the official guide from arduino.cc in this regard in Useful Resources section at the end of this article.
Arduino Uno FAQ
Is Arduino Uno a microcontroller?
Arduino Uno is a development board that uses ATMEGA 328 microcontroller. When you want to use a microcontroller, you have to design a base board containing the microcontroller itself and all supplementary components. These components are those that are essential for the microcontroller to start working (e.g. Christal oscillator, decoupling capacitors, etc.). Arduino Uno board is actually an ATMEGA 328 microcontroller together with all such components in a single board.
What’s the relation between Arduino Uno and Arduino IDE?
Arduino Uno is a piece of hardware while the Arduino IDE is an integrated development environment software used to program an Arduino Uno board. This software is designed in such a way that you can use it to program other type of Arduino boards too (e.g. Arduino Nano, Arduino Pro Mini, etc.). It was so successful that even non Arduino based hardware manufacturers provide sort of a plugins for Arduino IDE. This means that nowadays you can use the same software to program most of microcontroller boards available on the market.
What are the differences between Arduino Uno and Raspberry Pi?
The Arduino Uno has a microcontroller board in its heart. Microcontrollers should be programmed for a specific purpose that you have in your mind. This means that they can run only a single application that you’ve programmed them for. You can use them for a robotic or an automation process requiring to get inputs from sensors and react them.
On the other hand, Raspberry Pi is a is a full-fledged computer incorporating a microprocessor. This means that it can run an operating system (typically Linux) capable of running multiple application via multi-tasking features. The only difference is that it’s not as powerful as your desktop or laptop computer. The Raspberry Pi can be used for more complex projects that require more processing powers. For example if you’re designing a robots that should do some image processing using on a camera connected to its inputs, you should only think about using Raspberry Pi. Also it can be used whenever we need a light-weight server to respond to a limited number of requests (e.g. home automation server).
- Arduino Communication Protocols Tutorial
- Getting Started with Arduino and Genuino UNO
- Fun with OLED Display and Arduino
- Arduino Uno Pinout Guide
- Arduino Class
- How to spot a counterfeit Arduino