Both sides previous revisionPrevious revisionNext revision | Previous revision |
en:iot-open:hardware2:arduino [2023/11/21 20:57] – pczekalski | en:iot-open:hardware2:arduino [2024/05/27 11:31] (current) – ktokarz |
---|
| <pagebreak> |
====== Arduino General Overview ====== | ====== Arduino General Overview ====== |
| {{:en:iot-open:czapka_b.png?50| General audience classification icon }}{{:en:iot-open:czapka_e.png?50| General audience classification icon }}\\ |
No doubt, Arduino became the most widespread name in the development boards world, particularly among enthusiasts, educators, amateurs, and hobbyists, driving de-facto the embedded systems market for years. | No doubt, Arduino became the most widespread name in the development boards world, particularly among enthusiasts, educators, amateurs, and hobbyists, driving de-facto the embedded systems market for years. |
| |
== Hardware == | == Hardware == |
The Arduino boards work by reacting on signals at **inputs** that are received from various sensors, and after executing a **set of instructions**, an **output** is generated to respond to the environment. The input signal can be generated by pressing a button, receiving the radio or light signal, hearing the sound, perceiving an image of the situation using a camera resulting from the environmental sensor measurement, and many others. The output actions in the environment use output elements like actuators, blinking LEDs, audio devices, and others. The set of instructions executed to handle both sensors and actuators is created using the **Arduino programming language** based on an open-source programming framework called **Wiring** and the **Arduino Software** (IDE) based on **Processing**. | The Arduino boards work by reacting on signals at **inputs** that are received from various sensors, and after executing a **set of instructions**, an **output** is generated to respond to the environment. The input signal can be generated by pressing a button, receiving the radio or light signal, hearing the sound, perceiving an image of the situation using a camera resulting from the environmental sensor measurement, and many others. The output actions in the environment use output elements like actuators, blinking LEDs, audio devices, and others. The set of instructions executed to handle both sensors and actuators is created using the **Arduino programming language** based on an open-source programming framework called **Wiring** and the **Arduino Software** (IDE) based on **Processing**. |
The microcontroller or System on Chip is the most crucial element in the IoT and embedded devices built nowadays. It is not common to add peripheral elements external to the microcontroller, so the choice of this element influences almost all hardware parameters and the set of peripherals of the board. Because many versions of Arduino boards are available, only their selection is presented in the following chapters. | The microcontroller or System on Chip is the most crucial element in the IoT and embedded devices built nowadays. It is not common to add peripheral elements external to the microcontroller, so the choice of this element influences almost all hardware parameters and the set of peripherals of the board. Because many versions of Arduino boards are available, only their selection based on the AVR family of microcontrollers is presented in the following chapters. |
| |
== Processor == | == AVR microcontrollers == |
The initial, still very popular version of the Arduino board - Arduino Uno, is based on the ATmega328P microcontroller. The same chip is used in, e.g. Arduino Nano and Pro Mini. Arduino Leonardo or Micro is based on ATmega32u4, which has a built-in USB interface. The Arduino Mega board is created with an extended microcontroller ATmega2560, which has many more interface pins. | The initial, still very popular version of the Arduino board - Arduino Uno, is based on the ATmega328P microcontroller. The same chip is used in, e.g. Arduino Nano and Pro Mini. Arduino Leonardo or Micro is based on ATmega32u4, which has a built-in USB interface. The Arduino Mega board is created with an extended microcontroller ATmega2560, which has many more interface pins. |
| |
<table Memory> | <table Memory> |
<caption>The Comparison of Basic Arduino Boards by Microcontroller Type and Memory Size</caption> | <caption>The Comparison of Basic Arduino Boards by Microcontroller Type and Memory Size</caption> |
^ ^ <fs xx-small>Uno</fs> ^ <fs xx-small>Leonardo</fs> ^ <fs xx-small>Micro</fs> ^ <fs xx-small>Mega</fs> ^ <fs xx-small>Nano</fs> ^ <fs xx-small>Pro Mini</fs> ^ | ^ ^ Uno ^ Leonardo ^ Micro ^ Mega ^ Nano ^ Pro Mini ^ |
| <fs xx-small>Microcontroller</fs> | <fs xx-small>ATmega328p</fs> | <fs xx-small>ATmega32u4</fs> | <fs xx-small>ATmega32u4</fs> | <fs xx-small>ATmega2650</fs> | <fs xx-small>ATmega328p</fs> | <fs xx-small>ATmega328p</fs> | | | Microcontroller | ATmega328p | ATmega32u4 | ATmega32u4 | ATmega2650 | ATmega328p | ATmega328p | |
| <fs xx-small>Flash (kB)</fs> | <fs xx-small>32</fs> | <fs xx-small>32</fs> | <fs xx-small>32</fs> | <fs xx-small>256</fs> | <fs xx-small>32</fs> | <fs xx-small>32</fs> | | | Flash (kB) | 32 | 32 | 32 | 256 | 32 | 32 | |
| <fs xx-small>SRAM (kB)</fs> | <fs xx-small>2</fs> | <fs xx-small>2</fs> | <fs xx-small>2.5</fs> | <fs xx-small>8</fs> | <fs xx-small>2</fs> | <fs xx-small>2</fs> | | | SRAM (kB) | 2 | 2 | 2.5 | 8 | 2 | 2 | |
| <fs xx-small>EEPROM (kB)</fs> | <fs xx-small>1</fs> | <fs xx-small>1</fs> | <fs xx-small>1</fs> | <fs xx-small>4</fs> | <fs xx-small>1</fs> | <fs xx-small>1</fs> | | | EEPROM (kB) | 1 | 1 | 1 | 4 | 1 | 1 | |
</table> | </table> |
| |
<table Timers> | <table Timers> |
<caption>The Comparison of Arduino Boards by Interfaces and Timers Available</caption> | <caption>The Comparison of Arduino Boards by Interfaces and Timers Available</caption> |
^ ^ <fs xx-small>Uno</fs> ^ <fs xx-small>Leonardo</fs> ^ <fs xx-small>Micro</fs> ^ <fs xx-small>Mega</fs> ^ <fs xx-small>Nano</fs> ^ <fs xx-small>Pro Mini</fs> ^ | ^ ^ Uno ^ Leonardo ^ Micro ^ Mega ^ Nano ^ Pro Mini ^ |
| <fs xx-small>USB</fs> | <fs xx-small>1 USB B</fs> | <fs xx-small>1 Micro</fs> | <fs xx-small>1 Micro</fs> | <fs xx-small>1 USB B</fs> | <fs xx-small>1 Mini</fs> | <fs xx-small>–</fs> | | | USB | 1 USB B | 1 Micro | 1 Micro | 1 USB B | 1 Mini | – | |
| <fs xx-small>UART</fs> | <fs xx-small>1</fs> | <fs xx-small>1</fs> | <fs xx-small>1</fs> | <fs xx-small>4</fs> | <fs xx-small>1</fs> | <fs xx-small>1</fs> | | | UART | 1 | 1 | 1 | 4 | 1 | 1 | |
| <fs xx-small>I2C</fs> | <fs xx-small>1</fs> | <fs xx-small>1</fs> | <fs xx-small>1</fs> | <fs xx-small>1</fs> | <fs xx-small>1</fs> | <fs xx-small>1</fs> | | | I2C | 1 | 1 | 1 | 1 | 1 | 1 | |
| <fs xx-small>SPI</fs> | <fs xx-small>1</fs> | <fs xx-small>1</fs> | <fs xx-small>1</fs> | <fs xx-small>1</fs> | <fs xx-small>1</fs> | <fs xx-small>1</fs> | | | SPI | 1 | 1 | 1 | 1 | 1 | 1 | |
| <fs xx-small>8-bit Timer</fs> | <fs xx-small>1</fs> | <fs xx-small>1</fs> | <fs xx-small>1</fs> | <fs xx-small>2</fs> | <fs xx-small>1</fs> | <fs xx-small>1</fs> | | | 8-bit Timer | 1 | 1 | 1 | 2 | 1 | 1 | |
| <fs xx-small>16-bit Timer</fs> | <fs xx-small>2</fs> | <fs xx-small>2</fs> | <fs xx-small>2</fs> | <fs xx-small>4</fs> | <fs xx-small>2</fs> | <fs xx-small>2</fs> | | | 16-bit Timer | 2 | 2 | 2 | 4 | 2 | 2 | |
| <fs xx-small>Watchdog Timer</fs> | <fs xx-small>1</fs> | <fs xx-small>1</fs> | <fs xx-small>1</fs> | <fs xx-small>1</fs> | <fs xx-small>1</fs> | <fs xx-small>1</fs> | | | Watchdog Timer | 1 | 1 | 1 | 1 | 1 | 1 | |
| <fs xx-small>Real-time clock</fs> | <fs xx-small>1</fs> | <fs xx-small>-</fs> | <fs xx-small>-</fs> | <fs xx-small>1</fs> | <fs xx-small>1</fs> | <fs xx-small>1</fs> | | | Real-time clock | 1 | - | - | 1 | 1 | 1 | |
</table> | </table> |
| |
<table DigitalIO> | <table DigitalIO> |
<caption>The Comparison of Basic Arduino Boards by the Number of Pins in Hardware Interfaces</caption> | <caption>The Comparison of Basic Arduino Boards by the Number of Pins in Hardware Interfaces</caption> |
^ ^ <fs xx-small>Uno</fs> ^ <fs xx-small>Leonardo</fs> ^ <fs xx-small>Micro</fs> ^ <fs xx-small>Mega</fs> ^ <fs xx-small>Nano</fs> ^ <fs xx-small>Pro Mini</fs> ^ | ^ ^ Uno ^ Leonardo ^ Micro ^ Mega ^ Nano ^ Pro Mini ^ |
|<fs xx-small> Digital I/O</fs> | <fs xx-small>14</fs> | <fs xx-small>20</fs> | <fs xx-small>20</fs> | <fs xx-small>54</fs> | <fs xx-small>22</fs> | <fs xx-small>14</fs> | | | Digital I/O | 14 | 20 | 20 | 54 | 22 | 14 | |
| <fs xx-small>PWM</fs> | <fs xx-small>6</fs> | <fs xx-small>7</fs> | <fs xx-small>7</fs> | <fs xx-small>12</fs> | <fs xx-small>6</fs> | <fs xx-small>6</fs> | | | PWM | 6 | 7 | 7 | 12 | 6 | 6 | |
| <fs xx-small>Analog pins</fs> | <fs xx-small>6</fs> | <fs xx-small>12</fs> | <fs xx-small>12</fs> | <fs xx-small>16</fs> | <fs xx-small>8</fs> | <fs xx-small>6</fs> | | | Analog pins | 6 | 12 | 12 | 16 | 8 | 6 | |
</table> | </table> |
| |