Arduino
What is Arduino?
Arduino is an open source hardware and software development company, which means they develop evaluation hardware and software tools. That can be used by engineers, students for their academy projects. Arduino started in 2005 designing and developing hardwares and software in the process they found that there are many micro controllers and semiconductors that serve a different purpose. They wanted to have a single platform for all different hardware so that immaterial of the hardware they should be able to program and run simple example software using a single tool. Hence they came up with 2 plans
Figure 1: Arduino evaluation board
- Open source hardware.
- Open source software.
Arduino open source hardware involves developing evaluation hardware using many micro controllers and microprocessors a few are mentioned below.
- Atmel AVR (8-bit ATmega8, ATmega168, ATmega328, ATmega1280, or ATmega2560).
- ARM Cortex-M0+ (32-bit).
- ARM Cortex-M3 (32-bit).
- Intel Quark (x86) (32-bit).
These evaluation hardware are available freely to any designer or developer who wants to use it for their own custom project. They developed many evaluation boards with many Atmel AVR and PIC microc ontrollers. And interfaced these low power micro controllers with many peripheral interfaces that users wanted for a proof of concept project. These peripheral interfaces range from sensor, stepper motors, lcd, mosfets, usb, wireless peripheral, audio, buzzers and many other interfaces. End users had the advantage of evaluating a project using a combination of micro controller and peripherals needed for their projects. It found a lot of success with the development of uno boards. That consumed less power and had 14 gpio pins, 6 were able to generate pulse width signals, 6 analog inputs, so they developed an evaluation which was compatible or easy to interface with many other commonly used peripherals.
Open source software tools now since they have multiple evaluation hardware there need a common tool that all these evaluation hardwares would be used for programming and flashing. Hence they came up with a common IDE that can be used by all their open source hardwares the tool has a huge database of different libraries that are used by different hardware. The users need to select the hardware type they are using and install the necessary sdk for the hardware. The IDE is a cross platform tool that supports multiple operating systems The important features of the IDE are mentioned below.
- Easy to use.
- Supports multiple libraries.
- Support cross platform.
- Open source software.
- Highlights syntax errors.
- Provides reference examples.
A simple led blink example found on an Arduino tool is below.
Figure 2: Arduino IDE
#define LED_PIN 13 // Pin number attached to LED.
void setup() {
pinMode(LED_PIN, OUTPUT); // Configure pin 13 to be a digital output.
}
void loop() {
digitalWrite(LED_PIN, HIGH); // Turn on the LED.
delay(1000); // Wait 1 second (1000 milliseconds).
digitalWrite (LED_PIN, LOW); // switch off the LED.
delay(1000); // release the CPU or delay for 1 second.
}
List of all the evaluation hardwares.
There are multiple open source hardwares a few of them are specified in the below table.
Name | Processor | Format | Host interface | |||
Uno WiFi rev 2 | ATMEGA4809, NINA-W132 Wi-Fi module from u-blox, ECC608 crypto device | 16 MHz | Genuino | 68.6 mm x 53.4 mm [ 2.7 in x 2.1 in ] | USB | 32U4 |
Genuino MKR1000 | ATSAMW25 (made of SAMD21 Cortex-M0+ 32 bit ARM MCU, WINC1500 2.4 GHz 802.11 b/g/n Wi-Fi, and ECC508 crypto device ) | 48 MHz | minimal | 61.5 mm × 25 mm [ 2.4 in × 1.0 in ] | USB | |
MKR Zero | ATSAMD21G18A | 48 MHz | minimal | USB | ||
101 Genuino 101 | Intel® Curie™ module two tiny cores, an x86 (Quark SE) and an ARC | 32 MHz | Genuino | 68.6 mm × 53.4 mm [ 2.7 in × 2.1 in ] | USB | |
Zero | ATSAMD21G18A | 48 MHz | ARD | 68.6 mm × 53.3 mm [ 2.7 in × 2.1 in ] | USB | Native & EDBG Debug |
Due | ATSAM3X8E(Cortex-M3) | 84 MHz | Mega | 101.6 mm × 53.3 mm [ 4 in × 2.1 in ] | USB | 16U2 + native host |
Yún | Atmega32U4, Atheros AR9331 | 16 MHz, 400 MHz | ARD | 68.6 mm × 53.3 mm [ 2.7 in × 2.1 in ] | USB | |
Leonardo | Atmega32U4 | 16 MHz | Arduino | 68.6 mm × 53.3 mm [ 2.7 in × 2.1 in ] | USB | 32U4 |
Uno | ATmega328P | 16 MHz | Arduino | 68.6 mm × 53.3 mm [ 2.7 in × 2.1 in ] | USB | 8U2(Rev1&2)/ 16U2(Rev3) |
Mega2560 | ATmega2560 | 16 MHz | Mega | 101.6 mm × 53.3 mm [ 4 in × 2.1 in ] | USB | 8U2(Rev1&2)/ 16U2(Rev3) |
Ethernet | ATmega328 | 16 MHz | Arduino | 68.6 mm × 53.3 mm [ 2.7 in × 2.1 in ] | Ethernet Serial interface | Wiznet Ethernet |
Fio | ATmega328P | 8 MHz | minimal | 66.0 mm × 27.9 mm [ 2.6 in × 1.1 in ] | XBee Serial | |
Nano | ATmega328 (ATmega168 before v3.0) | 16 MHz | minimal | 43.18 mm × 18.54 mm [ 1.70 in × 0.73 in ] | USB | FTDIFT232R |
List of all packages that Arduino software tool supports.
Bello are few of the hardwares the IDE supports.
Name | Vendor | Architecture |
Adafruit AVR Boards | adafruit | avr |
Adafruit nRF52 | adafruit | nrf52 |
Adafruit SAMD Boards | adafruit | samd |
Adafruit TeeOnArdu | TeeOnArdu | avr |
Adafruit WICED | adafruit | wiced |
Adelino AVR Boards | adelino | avr |
Adelino ESP Boards | adelino | esp8266 |
Akafugu Boards | akafugu | avr |
Alorium XLR8 Boards | alorium | avr |
AmbaSat-1 Satellite Board | AmbaSat-1 | avr |
Aquila Boards | makerlab | avr |
Arachnid Labs AVR boards | Arachnid labs | avr |
Arbotix AVR Boards | arbotix | avr |
Ardhat AVR Boards | ardhat | avr |
Arduboy | arduboy | avr |
ArduCAM_ESP32S_UNO | ArduCAM_ESP32S_UNO | esp32 |
ArduCAM_ESP8266_UNO | ArduCAM_ESP8266_UNO | ArduCAM_ESP8266_UNO |
Arduinex | avr | |
ARM (32-bits) Boards | ||
ARM (32-bits) Boards (arcore) | arcore | sam |
AVR Boards | archiduino | avr |
AVR Boards | archiduino | avr |
AVR Boards | ard | avr |
AVR Boards (arcore) | arcore | avr |
Library for Sasquatch Robot Controller | sasquatch | avr |
megaAVR Boards | arduino | megaavr |
NavSpark Boards | navspark | navspark |
NRF52 Boards | arduino | nrf52 |
nRF528x Boards (Mbed OS) | arduino | mbed |
SAM Boards (32-bits ARM Cortex-M3) | arduino | sam |
Arduino SAMD Boards (32-bits ARM Cortex-M0+) | arduino | samd |
Arduino STM32F4 Boards | arduino | stm32f4 |
Arduino-AVRISPmkII-workaround | Arduino-AVRISPmkII-fix | avr |
Arduino-compatible AVR Boards | GEKOnavsat | avr |
Arduino-compatible AVR Boards | GEKOnavsat | avr |
arduino-esp8266-deauther (modified for ARM Linux support) | deauther | esp8266 |
Tiny | avr | |
Ariadne Bootloader | ariadne | avr |
Ariadne Bootloader | ariadne | avr |
Ariadne Bootloader | Ariadne-Bootloader | avr |
Arrow Boards | Arrow | samd |
atflash | atflash | avr |
ATmega168P/328P Boards | megax8 | avr |
ATmega328PB | ATmega328PB-incl-Bootloader | avr |
ATmega32U4asISP | ATmega32U4asISP | avr |
ATmega644P/1284P Boards | megax4 | avr |
ATmegaM1-C1 | ATmegaM1-C1 | avr |
Atmel AVR Xplained-minis | atmel-avr-xminis | avr |
attiny | attiny | avr |
ATtiny extra Boards | tiny | avr |
ATtiny Modern | tiny-841 | avr |
ATTinyCore | ATTinyCore | avr |
avr_boot | avr_boot | avr |
Azure Sphere | WizIO | azure |
Balanduino | Balanduino | avr |
Barebones ATmega Chips (no bootloader) | atmega | avr |
BayEOS AVR Boards | BayEOS | avr |
BirdBrain Technologies | BirdBrain Technologies | avr |
bitDuino10-aTPI | bitDuino10-aTPI | avr |
Blinks | move38 | avr |
Bluno M0 MainBoard & DFRduino M0 MainBoard | nucDuino | nucDuino |
Breadboard | Breadboard | avr |
ButterflyCore | ButterflyCore | avr |
Calunium | calunium | avr |
CANBus Triple | CANBus-Triple | avr |
Canique MKx | canique | avr |
chipKIT | chipKIT | pic32 |
Circuit Monkey | avr | |
clkdiv8 Sparrow Boards | clkdiv8 | avr |
Cosa | Cosa | avr |
Custom Blackfin boards | deanm1278 | bfin |
Custom STM32duino Boards | vendor | stm32 |
Cytron ARM Boards | cytron | arm |
Cytron AVR Boards | cytron | avr |
dadamachines – M0 Boards (dependency: SAMD Boards 1.6.9) | dadamachines – M0 | samd |
dadamachines – M4 Boards (dependency: Adafruit SAMD Boards 1.3.0) | dadamachines – M4 | samd |
Digistump AVR Boards | digistump | avr |
Digistump AVR Boards | digistump | avr |
Digistump SAM Boards (32-bits ARM Cortex-M3) | digistump | sam |
DIY ATtiny | diy_attiny | avr |
Dwenguino | dwenguino | avr |
EBots | EBots | avr |
Electronic Cats SAMD Boards | electroniccats | samd |
Elektor AVR boards | Elektor | avr |
Elektor Labs | avr | |
Elektor Uno R4 (with ATmega328PB) | Elektor-Uno-R4 | avr |
Elemon Boards | EESA-IOT 5.0 v1 | samd |
EMORO 2560 | emoro | avr |
Engimusing ARM EFM32 Boards | engimusing | efm32 |
EnviroDIY ATmega Boards | EnviroDIY | avr |
ESP31B Modules | espressif | ESP31B |
esp32 | esp32 | esp32 |
esp8266 | esp8266 | esp8266 |
esp8266 | esp8266 | esp8266 |
Etherkit SAMD Boards | etherkit | samd |
Extra MCU support for Arduino IDE | arduino | avr |
FemtoCow ATTiny | FemtoCow-attiny | avr |
FireBeetle-ESP32 Mainboard | esp32 | DFRobot_FireBeetle-ESP32 |
FireBeetle-ESP8266 | firebeetle8266 | firebeetle8266 |
FirePick Delta Bootloaders for Arduino IDE | fpd-arduino-bootloaders | avr |
Freaklabs ATMega1284P Boards | Freaklabs | avr |
ftDuino | ftduino | avr |
Generation_7_Electronics | Gen7-dist | avr |
Goldilocks | Goldilocks | avr |
grayduino | grayduino | avr |
Grove AI HAT for Edge Computing | Seeeduino | riscv64 |
GyverCore | GyverCore | avr |
HidnSeek | HidnSeek | avr |
HoodLoader2 | HoodLoader2 | avr |
Industruino SAMD Boards (32-bits ARM Cortex-M0+) | industruino | samd |
Infineon’s XMC Microcontroller | Infineon | arm |
InoAVRDragon | InoAVRDragon | avr |
InoPlatformPropertiesTest | InoPlatformPropertiesTest | dummy_architecture |
Intel Curie Boards | Intel | arc32 |
Intel i586 Boards | Intel | i586 |
Intel i686 Boards | Intel | i686 |
IntoRobot ESP Boards | intorobot | esp8266 |
IntoRobot STM32 Boards | intorobot | stm32 |
IOTEAM Boards | IOTEAM | samd |
Iteaduino Lite | iteaduino_lite | avr |
Jewelbots Arduino Library | Jewelbots_Arduino_Library | nRF51822 |
JN516x Boards | intiki | jn516x |
Keyboardio Keyboards | Kaleidoscope-Bundle-Keyboardio | avr |
Konekt Dash/Dash Pro Boards | konekt | sam |
Laika | laika_arduino | avr |
Larduino_HSP | LGT | avr |
Lattuino 1 | Lattuino | avr |
Leonardo & Micro MIDI-USB (arcore) | arcore | avr |
LGT8fx Boards | LGT8fx Boards | avr |
LinkIt 7697 | LinkIt | linkit_rtos |
LinkIt ONE | LinkIt | arm |
littleBits Arduino AVR Modules | littleBits | avr |
LoRaNodes M0 Boards | LoRaNodes M0 Boards | samd |
Macchina SAM Boards | macchina | sam |
Maixduino(k210) | Maixduino | k210 |
MajorCore | MajorCore | avr |
Marlin AVR Boards | anet | avr |
MattairTech AVR Boards | MattairTech_Arduino | avr |
MattairTech SAM D|L|C core for Arduino | MattairTech_Arduino | samd |
Maxim’s 32-bit Microcontroller | Maxim | arm |
MCCI Catena SAMD Boards | mcci | samd |
MCCI Catena STM32 Boards | mcci | stm32 |
MCCI Connection Exerciser | mcci | avr |
MediaTek LinkIt Smart Boards | LinkIt | avr |
Meet je stad! AVR Boards | meetjestad | avr |
mega1284duino | mega1284duino | avr |
MegaCore | MegaCore | avr |
MegaCoreX | MegaCoreX | megaavr |
megaTinyCore | megaTinyCore | megaavr |
MH-ET LIVE Boards | avr | |
MicroBridge-Arduino-ATMega2560 | microbridge | avr |
MicroCore | MicroCore | avr |
Microduino-IDE-Support | Microduino | avr |
Microduino-IDE-Support | Microduino | esp32 |
microUPDIcore | microUPDIcore | avr |
Mighty 1284P | avr | |
Mighty-1284p Boards | mighty-1284p | avr |
mighty-1284p-freaklabs | mighty-1284p-freaklabs | avr |
MightyCore | MightyCore | avr |
Mini SAM (32-bit ARM Cortex-M0+) Boards | mini_sam | samd |
MiniCore | MiniCore | avr |
Mobillyo | Mobillyo | avr |
Moteino | Moteino | avr |
Moteino AVR Boards | Moteino | avr |
Moteino SAMD Boards | Moteino | samd |
MXChip – Microsoft Azure IoT Developer Kit | AZ3166 | stm32f4 |
MySensors AVR based boards | mysensors | avr |
NekuNeko SAMD Boards | nekuneko | samd |
Nordic Semiconductor nRF5 Boards | sandeepmistry | nRF5 |
Northern Widget ‘ALog’ AVR Boards | NorthernWidget | avr |
Nufront tl7788 (32-bits) Boards | ||
Oak by Digistump | digistump | oak |
ODROID | hardkernel | odroid |
Olimex AVR boards | Olimex | avr |
Olimex PIC boards | Olimex | pic |
Olimex STM boards | Olimex | stm |
OMC | OMC | avr |
Omzlo AVR Boards | omzlo | avr |
Open Panzer AVR Boards | OpenPanzer | avr |
OpenChronograph OC-1 | Arduino_OpenChronograph_OC1 | avr |
OpenCM9.04 | OpenCM904 | OpenCM904 |
OpenCR | OpenCR | OpenCR |
OpenTracker Boards (32-bits ARM Cortex-M3) | opentracker | sam |
Optiboot 8.0 | Optiboot | avr |
P1AM-100 | P1AM-100 | samd |
panStamp AVR w/ Atmega328p | panstamp_avr | avr |
panStamp NRG w/ CC430F5137 | panstamp_nrg | msp430 |
Philduino AVR Boards | philduino | avr |
Pololu A-Star Boards | pololu-a-star | avr |
PulseRain Rattlesnake | PulseRain_RISCV | Rattlesnake |
PulseRain Reindeer | PulseRain_RISCV | Reindeer |
qqqlabBoard | myboard | avr |
Quectel BC66 | WizIO | bc66 |
Quectel M66 | WizIO | m66 |
Quirkbot AVR Boards | quirkbot | avr |
radino | In-Circuit | avr |
radino32 | In-Circuit | STM32L1 |
radinoL4 (beta) | In-Circuit | STM32L4 |
Rainboard-cores | Rainboard | avr |
RaspberryPi | RaspberryPi | piduino |
Realtek Ameba Boards (32-bits ARM Cortex-M3) | realtek | ameba |
RedBear AVR Boards | RedBear | avr |
RedBear Duo (32-bits ARM Cortex-M3) | RedBear | STM32F2 |
RedBear nRF51822 Boards (32-bits ARM Cortex-M0) | RedBear | nRF51822 |
RedBear nRF52832 Boards (32-bits ARM Cortex-M4F) | RedBear | nRF52832 |
RFduino Boards | RFduino | RFduino |
RiddleAndCode AVR Boards | RiddleAndCode | avr |
RIG | RIG | avr |
RobotCing | RobotCing | avr |
Rokit Arduino Box Libraries | Rokit | avr |
RTL871x ARM (32-bits) Boards | development | rtl87xx |
SAM15x15 | SAM15x15 | samd |
Sanguino | Sanguino | avr |
Scanner Pro MK3 | Scanner Pro | avr |
Sduino STM8 plain C core (non-C++) | sduino | stm8 |
Seeed i.MX RT (NXP 32-bits ARM Cortex-M7) Boards | Seeeduino | imxrt |
Seeed SAMD Boards | Seeeduino | samd |
Seeed STM32F4 Boards | Seeeduino | Seeed_STM32F4 |
Seeeduino AVR | Seeeduino | avr |
Sense/Stage MiniBee Arduino files | minibee | avr |
SiFive Freedom Boards | sifive | riscv |
Simba | Simba | avr |
Simba | Simba | esp |
Simba | Simba | esp32 |
Simba | Simba | sam |
SODAQ AVR Boards | SODAQ | avr |
SODAQ SAMD Boards | SODAQ | samd |
SparkFun Apollo3 Boards | SparkFun | apollo3 |
SparkFun AVR Boards | SparkFun | avr |
SparkFun SAMD Boards | SparkFun | samd |
Spresense Reference Board | SPRESENSE | spresense |
STM32 Cores | STM32 | stm32 |
STM32F1 Boards (STM32duino.com) | Arduino_STM32 | STM32F1 |
STM32F4 Boards (STM32duino.com) | Arduino_STM32 | STM32F4 |
STM32GENERIC for STM32 boards | STM32 | |
STM32GENERIC for STM32 boards | STM32 | |
STM8 Cores | STM8 | stm8 |
Talk2 AVR Boards | Talk2 | avr |
tinkerkit_core | tinkerkit | avr |
TinyCore Boards | TinyCore | avr |
TL7788 Boards | TL7788 | arm |
Tlera Corp STM32L0 Boards | TleraCorp | stm32l0 |
Tomu EFM32 (32-bits ARM Cortex-M0+) Boards | todbot | ArduinoCore-EFM32 |
UDOO NEO (iMX6 SoloX) | UDOO | solox |
UDOO QUAD/DUAL (Due) | UDOO | sam |
w600 | w600 | w600 |
Watterott AVR Boards (dependency: AVR Boards) | watterott | avr |
Watterott SAMD Boards (dependency: SAMD Boards) | watterott | samd |
WAVGAT | WAV8F | AVR |
WAVGAT AVR Boards | WAV | avr |
WebUSB | WebUSB | avr |
WeMos OU Boards | avr | |
WEMOS XI LGT Boards | wemos | XI |
WiFi Duck AVR Boards | wifiduck | avr |
WiFi Duck ESP8266 Boards | wifiduck | esp8266 |
WiFi Duck SAMD Boards | wifiduck | samd |
WildFire-Ard-Core | WickedDevice | avr |
Windows 10 Iot Core | Microsoft | win10 |
wirino | wirino | avr |
Xmegaduino Boards | arduino | xmega |
XMegaForArduino XMEGA Boards | XMegaForArduino | avr |
zoubworld SAM M0+ Boards – Beta build | zoubworld_Arduino | samd |