Every tech enthusiast has at least heard about Arduino, as it has gained popularity thanks to its unique features. Nowadays, the Arduino company, established and developed by enthusiasts, is setting standards for connectors and signal distribution even to huge corporations producing microcontrollers or evaluation boards. What is Arduino and why has it become the informal standard for education and prototyping? And finally, what are the types of Arduino, what can we do with it and how can it be used for our own needs?
Arduino – a perfect choice for novice programmers
If we aim to learn how to program microcontrollers, then the Arduino platform is a perfect choice. Similarly, if we are tech enthusiasts, have an idea and want to quickly create a device based on a microcontroller and standard peripherals, such as alphanumeric displays, graphic displays, LED, LCDs with or without buttons, sensors, transmission modules, motors and solenoid valve drivers and many, many more. The Arduino platform is also useful when we want to produce a short line of devices, with a microcontroller as the “heart” of the unit, not necessarily working with Arduino expansion modules.
Arduino – what is it?
What is Arduino? It is not just a single-board computer (usually when we say “Arduino”, we only mean that board), but a complete platform based on easy-to-use devices and software. What is important, it is an open source type platform, which provides access to free, detailed documentation as well as diagrams and program sources. Usually, a device based on Arduino platform consists of a prototype board with a microcontroller and an expansion module, called shield, attached to it.
Most of Arduino prototype boards have a USB interface, used for programming them with a PC computer. Microcontroller signals are transmitted to sockets with expansion modules or to a solder point. Since the boards are offered as miniature modules, sometimes we refer to them colloquially as “Arduino microcontrollers” or “Arduino single-board computers”.
Programming in Arduino
The Arduino programming language has a syntax that is closely related to the C++ language and has become very popular among microcontroller programmers. A strong asset of the Arduino programming environment is the availability of numerous libraries which facilitate the process of creating a program and a myriad of applications developed by users all around the world. Furthermore, the programming environment is easily accessible, regardless of what it may be used for. It is also true for the prototype board itself – if we do not wish to purchase it, we can create it on our own, based on the documents available.
A short history of Arduino
The idea of Arduino was conceived in Italy, in Ivrea Interaction Design Institute. The Arduino platform was designed for the purpose of fast creation of prototypes and learning programming skills by students who were not previously acquainted with electronics or programming. The creators of Arduino had a brilliant idea, because their plan worked out not only in the academic field, but also beyond it, helping many people learn or implement quickly their own ideas.
After stepping out beyond the university environment and being acknowledged by a larger group of users, the Arduino platform had to adapt to new challenges and satisfy new needs. At the same time, the portfolio of prototype boards was significantly diversified to include not only the simple 8-bit units, but also more sophisticated equipment, designed to be used with 3D printers, IoT devices, portable devices, and other, more demanding applications. All Arduino boards are based on open source licensing terms, which allows users to make them on their own and adjust them freely. The software is also open source and is being developed thanks to the input from users all over the world.
A few years back, every evaluation board or microcontroller producer had their own standard of connectors. Now, most of them attune themselves to the informal “standard” introduced by Arduino. The main reason, apart from the popularity of Arduino itself, is most likely the availability of a wide range of expansion modules (aka shield – see here). If the outputs of an evaluation board are in compliance with Arduino outputs, the user can freely make use of a huge offer of Arduino extensions, which makes it possible to achieve the functionality of the prototype easily, cheaply and quickly. It also benefits the evaluation board manufacturer as it can now focus on the application of the microcontroller itself, providing it only with a minimal set of cooperating components, which in turn allows for the final price to be lowered.
Due to its ease of use, availability and also the varied needs of the users, among the projects realised with the use of Arduino, one may find solutions to numerous problems and ideas for almost any device. They can be used directly or as a reference. The software for app creation (Arduino IDE) is very easy to use, even by beginners, and at the same time very flexible, offering many opportunities to more advanced users. It can be launched with the Mac OS, Windows and Linux operating systems, so it is available to users with varied hardware preferences and financial possibilities.
It is impossible to count all of the Arduino applications, as it is eagerly used by both professionals and hobbyists. Students and teachers use Arduino to construct inexpensive measuring devices, not just for measuring electrical values, but also for devices designed for chemical and physical experiments. It is used by teachers of programming in schools all around the world. Designers and architects create interactive building prototypes with Arduino. Musicians and artists make interactive artistic installations and experiment with new types of musical instruments. For many, the Arduino platform is a key tool for learning new skills. Everybody can use it: children, hobbyists, artists, programmers, design engineers and many others. Everyone can build a device following step-by-step instructions and share their ideas online with other members of the Arduino community.
Which Arduino to choose?
Usually, in order to create a prototype or a device based on the Arduino platform, one needs a prototype board, equipped with the type of microcontroller which would fit our needs, an extension module, i.e. a shield, Arduino IDE software, a USB cable, a power supply unit and a PC. Currently, the ecosystem includes various Arduino types, with different microcontrollers and a huge number of extension modules. Example modules are presented on figures 1...3.
Depending on the type, Arduino boards are equipped with connectors – sockets for gold pins or solder points, which can be used not only to attach the board, but also to mount it on the printed circuit board of the embedded device, if the Arduino microcomputer serves the role of the central unit. Each board has a bootloader saved in its microcontroller memory. The bootloader is used for the programming of the “in-circuit” processor (without desoldering it from the system) by way of selecting options from the Arduino IDE menu.
The current list of Arduino prototype boards is included in the table. Most of them use AVR core microcontrollers, but solutions fitted with an Intel processor, as well as SAM21, equipped with an ARM Cortex-M0+ core, are also available. The table does not include boards with Espressif Systems cores (such as the popular ESP8266), which can also be programmed with Arduino IDE. While choosing a board, one should be guided by the features of its microcontroller. Individual units differ in terms of memory storage available, core speed or function blocks such as: interfaces, timers, PMW generators etc. It is also worth paying attention to the outputs of the board, since some of them do not have connectors – instead, they are designed for soldering.
Table 1: List of Arduino boards currently offered
|Arduino board type||Processor type||IO voltage /power [V]||CPU Frequency [MHz]||Analogue inputs /outputs||Digital inputs-outputs / PWM number||EEPROM [kB]||SRAM [kB]||Flash [kB]||USB||UART|
|Mega 2560||ATmega2560||5/7…12||16||16/0||54/15||4||8||256||Type B||4|
|Nano||ATmega168; ATmega328P||5/7…9||16||8/0||14/6||0.512; 1||1; 2||16; 32||Mini||1|
|MKRZero||SAMD21 (Cortex-M0+)||3.3||48||7 (ADC 8/10/12 bit)/1 (DAC 10 bit)||22/12||-||32 kB||256 kB||Yes||1|
|Yun Rev 2||ATmega32U4; Atheros AR9331||5; 3.3V||16; 400||12/0||20||1||2.5; 64 MB DDR2||32; 16 MB||Yes||1|
|Uno WiFi Rev2||ATmega4808; Radio module u-blox NINA-W102||5/7…12||16||6/0||14||0,256||6||48||Yes||1|
|Nano 33 IoT||SAMD21 (Cortex-M0+)||3.3/3.6…21||48||8/1||14||-||32||256||Yes||1|
|Nano 33 BLE||nRF52840||3.3/3.6…21||64||8/0||14||-||256||1MB||Yes||1|
|Nano 33 BLE Sense||nRF52840||3.3/3.6…21||64||8/0||14||-||256||1MB||Yes||1|
|MKR1000 WiFi||SAMD21 (Cortex-M0+)||3.3/5||48||7/1||8||-||32||256||Yes||1|
|MKR1010 WiFi||SAMD21 (Cortex-M0+)||3.3/5||48||7/1||8||-||32||256||Yes||1|
|MKR Vidor 4000||SAMD21 (Cortex-M0+); FPGA Intel Cyclone 10CL016||3.3/5||48; 48…200||7/1; -/-||8; 22||-||32; 8MB SDRAM||256; 2MB||Yes||1; 7|
|MKR Fox 1200||SAMD21 (Cortex-M0+); Radio module Microchip Smart RF ATA8520||3.3/5||48||7/1||8||-||32||256||Yes||1|
|MKR GSM 1400||SAMD21 (Cortex-M0+); Radio module u-blox SARA-U201||3.3/5||48||7/1||8||-||32||256||Yes||1|
|MKR NB 1500||SAMD21 (Cortex-M0+); Radio module u-blox SARA-R410M-02B||3.3/5||48||7/1||8||-||32||256||Yes||1|
|MKR WAN 1310||SAMD21 (Cortex-M0+); Radio module CMWX1ZZABZ||3.3/5||48||7/1||8||-||32||256||Yes||1|
|MKR WAN 1300 (LoRA Connectivity)||SAMD21 (Cortex-M0+); Radio module CMWX1ZZABZ||3.3/5||48||7/1||8||-||32||256||Yes||1|
|Portenta H7||STM32H747XI (Cortex-M7+M4); Radio module Murata 1DX WiFi and Bluetooth 5.1||3.3/5||480||7/2||15/8||-||1MB||2MB||Yes||4|
Arduino Nano, Arduino Uno and others
The inexpensive boards and free programming environment offered by Arduino are a great alternative to many other evaluation platforms on the market, offered for example by manufacturers of microcontrollers. The availability of the documentation and open sources allow for independent modification of the platform and adjusting it to meet one’s needs. Complete Arduino boards are available at a reasonable price. For beginners, Arduino Uno is a good starting point. It has been equipped with a standard USB connector with which one may easily connect the board with a PC computer and upload the software with just one quick click. The ATMEGA328 microcontroller mounted on the board has sufficient memory storage and hardware resources to execute numerous control applications. The CPU clock speed (frequency) is 16 MHz, which gives us a machine cycle of 62.5 nanoseconds, and the AVR core used for the microcontroller executes most of the instructions in a single machine cycle. With more experience and proficiency, one may choose other variants, such as Arduino Due, Mega 2560 and others. The Arduino Nano model is a miniaturized version of bigger circuits, but without e.g. voltage stabilizer or a full-sized USB port. However, Nano is equipped with the same 8-bit processor as the Uno board, but its overall size is much smaller. In the case of the Nano series, the PCB size is inly 18mm by 45mm! What is also important is that despite the change of hardware, the same programming environment can still be used.
Normally, the programming of a microcontroller is done using the USB interface. In order for the Arduino USB interface to work with our operating system, an appropriate controller is needed. The controller is installed by the operating system after the board is connected and the bootloader is loaded. The original Arduino IDE has been developed with Windows in mind, so most bootloaders are available for Windows, and only a portion of them is adjusted to other operating systems. If one works on a computer with MacOS or Linux, it is worth checking the Arduino prototype board’s compatibility with our system before we decide to purchase one.
Lastly, let us mention the Arduino users web page, available at this address https://www.arduino.cc/, where one can find current versions of the programs, various applications, a user forum and a database. On the page, one can also find diagrams and electrical parameters of the Arduino boards, descriptions and data sheets with parameters, including the description of Arduino Uno R3 (fig. 4) recommended for beginners. We offer a lot of extension modules, and numerous examples of applications are available on other Internet sites. They can be found by means of a search engine or discussion groups devoted to software development and electronics.