Arduino is an open-source platform based on easy-to-use hardware and software [1]. The Arduino project was started at the Ivrea Interaction Design Institute in Italy. Initially, the board aimed at students without a background in electronics and programming, but now boards are suitable for different IoT applications, wearable, embedded environments and other.
The Arduino board works by reacting on inputs that are received from various sensors and, after executing a set of instructions, an output is generated to respond to the environment. Input can be received by pressing a button, hearing the noise, perceiving an image of the situation using a camera and many other. The output actions on the environment are done using output sensors like actuator, blinking LED, audio device and other. The set of instructions are created using the Arduino programming language that is based on an open-source programming framework called Wiring and the Arduino Software (IDE) that is based on Processing.
Arduino microcontrollers can be used both in research and everyday applications. It is easy to use for people with different backgrounds, from students to experts. The Arduino Forum [2] is the place where users of Arduino can share their knowledge and get help and new ideas for developing their project.
Arduino boards can be divided into six sections depending on their specifications – entry level, enhanced features, Internet of things, education, wearable, and 3D printing boards.
The most common boards of Arduino are Uno, Leonardo, Micro, Nano (entry level), Mega, Pro Mini (enhanced features). Each of the board has different specifications and therefore, can have different applications.
Digital input/output (I/O) pins are contacts on the Arduino board that can receive or transmit a digital signal. The status of the pin can be set either to 0 that represents LOW signal or to 1 – HIGH signal. The maximum current of the pin output is 40 mA.
Pulse Width Modulation (PWM) is a function of a pin to generate a square wave signal, with a variable length of the HIGH level of the output signal. The PWM is used for digital pins to simulate the analogue output.
Analog pins convert the analogue input value to a 10-bit number, using Analog Digital Converter (ADC). This function maps the input voltage between 0 and the reference voltage to numbers between 0 and 1023.
By default, the reference voltage is set to a microcontroller operating voltage. Usually, it is 5 V or 3.3 V. Also, other internal or external reference sources can be used, for example, AREF pin.
Power pins on the Arduino board connect the power source to the microcontroller and/or voltage regulators. They can also be used as a power source to the external components and devices.
The VIN pin is used to connect the external power source to the internal regulator, to provide the regulated 5 V output. The input voltage of the board must be within the specific range, mostly between 7 V and 12 V.
The 5V pin is used to supply a microcontroller with the regulated 5 V from the external source or is used as a power source for the external components in the case when the board is already powered using the USB interface or the VIN pin.
The 3V3 pin provides the regulated 3.3 V output for the board components and external devices. The GND (ground pin) is where the negative terminal of the power supply is applied.
The Reset pin and the reset button are used to reset the Arduino board and the program. Resetting using the reset pin is done by connecting it to the GND pin.
There are three different types of memory on the Arduino board: flash memory, SRAM and EEPROM.
The flash memory stores the Arduino code, and it is a non-volatile type of memory. That means the information in the memory is not deleted when the power is turned off.
The SRAM (static random access memory) is used for storing values of variables when the program of Arduino is running. This is the volatile memory that keeps information only until the power is turned off, or the board is reset.
The EEPROM (electrically erasable programmable read-only memory) is a non-volatile type of memory that can be used as the long-term memory storage.
Communication interfaces for Arduino are used to send and receive information to and from other external devices. Standard interfaces for Arduino are USB, UART, I2C (two wire interface), SPI, Ethernet and WiFi.
Arduino microcontrollers have different dimensions of the board, depending on the components that are located on the board.
Arduino shields are the extension boards that can be plugged on top of the Arduino board extending its capabilities. The shields can give additional functionality to the Arduino board. There are multiple categories of the Arduino shields [3] – prototyping, improving connectivity, displays and cameras, sound and motor driver shields.
Prototyping shields – are shields that do not give Arduino the additional functionality, but help with the wiring. Some example prototyping shields are ProtoShield, ProtoScrew Shield, Go-Between Shield, LiPower Shield, Danger Shield, Joystick Shield and microSD Shield.
Connectivity shields – are shields that can add new functionalities to the Arduino board like Ethernet, WiFi, Wireless, GPS, etc. Example shields are Arduino Ethernet Shield, WiFly Shield, Arduino Wi-Fi Shield, Electric Imp Shield, XBee Shield, Cellular Shield SM5100B and GPS Shield.
Displays and camera shields – can provide Arduino with an LCD screen or add a camera. Example shields are Color LCD Shield, EL Escudo and CMUcam.
Sound shields – give the functionality to Arduino to play MP3 files, add speakers, listen to audio and sort it into different frequencies, etc. Example shields are MP3 Player Shield, Music Instrument Shield, Spectrum Shield and VoiceBox Shield.
Motor driver shields – allow Arduino to control DC motors, Servo motors, Stepper motors. Examples are Ardumoto Motor Driver Shield, Monster Moto Shield and PWM Shield.