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

arduino evaluation board

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.

arduino IDE

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.

NameProcessorFormatHost interface
Uno WiFi rev 2ATMEGA4809, NINA-W132 Wi-Fi module from u-blox, ECC608 crypto device16 MHz Genuino68.6 mm x 53.4 mm [ 2.7 in x 2.1 in ]USB32U4
Genuino MKR1000ATSAMW25 (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 MHzminimal61.5 mm × 25 mm [ 2.4 in × 1.0 in ]USB
MKR ZeroATSAMD21G18A48 MHzminimalUSB
101

Genuino 101

Intel® Curie™ module two tiny cores, an x86 (Quark SE) and an ARC32 MHzGenuino68.6 mm × 53.4 mm [ 2.7 in × 2.1 in ]USB
ZeroATSAMD21G18A48 MHzARD68.6 mm × 53.3 mm [ 2.7 in × 2.1 in ]USBNative & EDBG Debug
DueATSAM3X8E(Cortex-M3)84 MHzMega101.6 mm × 53.3 mm [ 4 in × 2.1 in ]USB16U2 + native host
YúnAtmega32U4,

Atheros AR9331

16 MHz,

400 MHz

ARD68.6 mm × 53.3 mm [ 2.7 in × 2.1 in ]USB
LeonardoAtmega32U416 MHzArduino68.6 mm × 53.3 mm [ 2.7 in × 2.1 in ]USB32U4
UnoATmega328P16 MHzArduino68.6 mm × 53.3 mm [ 2.7 in × 2.1 in ]USB8U2(Rev1&2)/

16U2(Rev3)

Mega2560ATmega256016 MHzMega101.6 mm × 53.3 mm [ 4 in × 2.1 in ]USB8U2(Rev1&2)/

16U2(Rev3)

EthernetATmega32816 MHzArduino68.6 mm × 53.3 mm [ 2.7 in × 2.1 in ]Ethernet Serial interfaceWiznet Ethernet
FioATmega328P8 MHzminimal66.0 mm × 27.9 mm [ 2.6 in × 1.1 in ]XBee Serial
NanoATmega328

(ATmega168 before v3.0)

16 MHzminimal43.18 mm × 18.54 mm [ 1.70 in × 0.73 in ]USBFTDIFT232R

 

List of all packages that Arduino software tool supports.

Bello are few of the hardwares the IDE supports.

NameVendorArchitecture
Adafruit AVR Boardsadafruitavr
Adafruit nRF52adafruitnrf52
Adafruit SAMD Boardsadafruitsamd
Adafruit TeeOnArduTeeOnArduavr
Adafruit WICEDadafruitwiced
Adelino AVR Boardsadelinoavr
Adelino ESP Boardsadelinoesp8266
Akafugu Boardsakafuguavr
Alorium XLR8 Boardsaloriumavr
AmbaSat-1 Satellite BoardAmbaSat-1avr
Aquila Boardsmakerlabavr
Arachnid Labs AVR boardsArachnid labsavr
Arbotix AVR Boardsarbotixavr
Ardhat AVR Boardsardhatavr
Arduboyarduboyavr
ArduCAM_ESP32S_UNOArduCAM_ESP32S_UNOesp32
ArduCAM_ESP8266_UNOArduCAM_ESP8266_UNOArduCAM_ESP8266_UNO
Arduinexavr
ARM (32-bits) Boards
ARM (32-bits) Boards (arcore)arcoresam
AVR Boardsarchiduinoavr
AVR Boardsarchiduinoavr
AVR Boardsardavr
AVR Boards (arcore)arcoreavr
Library for Sasquatch Robot Controllersasquatchavr
megaAVR Boardsarduinomegaavr
NavSpark Boardsnavsparknavspark
NRF52 Boardsarduinonrf52
nRF528x Boards (Mbed OS)arduinombed
SAM Boards (32-bits ARM Cortex-M3)arduinosam
Arduino SAMD Boards (32-bits ARM Cortex-M0+)arduinosamd
Arduino STM32F4 Boardsarduinostm32f4
Arduino-AVRISPmkII-workaroundArduino-AVRISPmkII-fixavr
Arduino-compatible AVR BoardsGEKOnavsatavr
Arduino-compatible AVR BoardsGEKOnavsatavr
arduino-esp8266-deauther (modified for ARM Linux support)deautheresp8266
Tinyavr
Ariadne Bootloaderariadneavr
Ariadne Bootloaderariadneavr
Ariadne BootloaderAriadne-Bootloaderavr
Arrow BoardsArrowsamd
atflashatflashavr
ATmega168P/328P Boardsmegax8avr
ATmega328PBATmega328PB-incl-Bootloaderavr
ATmega32U4asISPATmega32U4asISPavr
ATmega644P/1284P Boardsmegax4avr
ATmegaM1-C1ATmegaM1-C1avr
Atmel AVR Xplained-minisatmel-avr-xminisavr
attinyattinyavr
ATtiny extra Boardstinyavr
ATtiny Moderntiny-841avr
ATTinyCoreATTinyCoreavr
avr_bootavr_bootavr
Azure SphereWizIOazure
BalanduinoBalanduinoavr
Barebones ATmega Chips (no bootloader)atmegaavr
BayEOS AVR BoardsBayEOSavr
BirdBrain TechnologiesBirdBrain Technologiesavr
bitDuino10-aTPIbitDuino10-aTPIavr
Blinksmove38avr
Bluno M0 MainBoard & DFRduino M0 MainBoardnucDuinonucDuino
BreadboardBreadboardavr
ButterflyCoreButterflyCoreavr
Caluniumcaluniumavr
CANBus TripleCANBus-Tripleavr
Canique MKxcaniqueavr
chipKITchipKITpic32
Circuit Monkeyavr
clkdiv8 Sparrow Boardsclkdiv8avr
CosaCosaavr
Custom Blackfin boardsdeanm1278bfin
Custom STM32duino Boardsvendorstm32
Cytron ARM Boardscytronarm
Cytron AVR Boardscytronavr
dadamachines – M0 Boards (dependency: SAMD Boards 1.6.9)dadamachines – M0samd
dadamachines – M4 Boards (dependency: Adafruit SAMD Boards 1.3.0)dadamachines – M4samd
Digistump AVR Boardsdigistumpavr
Digistump AVR Boardsdigistumpavr
Digistump SAM Boards (32-bits ARM Cortex-M3)digistumpsam
DIY ATtinydiy_attinyavr
Dwenguinodwenguinoavr
EBotsEBotsavr
Electronic Cats SAMD Boardselectroniccatssamd
Elektor AVR boardsElektoravr
Elektor Labsavr
Elektor Uno R4 (with ATmega328PB)Elektor-Uno-R4avr
Elemon BoardsEESA-IOT 5.0 v1samd
EMORO 2560emoroavr
Engimusing ARM EFM32 Boardsengimusingefm32
EnviroDIY ATmega BoardsEnviroDIYavr
ESP31B ModulesespressifESP31B
esp32esp32esp32
esp8266esp8266esp8266
esp8266esp8266esp8266
Etherkit SAMD Boardsetherkitsamd
Extra MCU support for Arduino IDEarduinoavr
FemtoCow ATTinyFemtoCow-attinyavr
FireBeetle-ESP32 Mainboardesp32DFRobot_FireBeetle-ESP32
FireBeetle-ESP8266firebeetle8266firebeetle8266
FirePick Delta Bootloaders for Arduino IDEfpd-arduino-bootloadersavr
Freaklabs ATMega1284P BoardsFreaklabsavr
ftDuinoftduinoavr
Generation_7_ElectronicsGen7-distavr
GoldilocksGoldilocksavr
grayduinograyduinoavr
Grove AI HAT for Edge ComputingSeeeduinoriscv64
GyverCoreGyverCoreavr
HidnSeekHidnSeekavr
HoodLoader2HoodLoader2avr
Industruino SAMD Boards (32-bits ARM Cortex-M0+)industruinosamd
Infineon’s XMC MicrocontrollerInfineonarm
InoAVRDragonInoAVRDragonavr
InoPlatformPropertiesTestInoPlatformPropertiesTestdummy_architecture
Intel Curie BoardsIntelarc32
Intel i586 BoardsInteli586
Intel i686 BoardsInteli686
IntoRobot ESP Boardsintorobotesp8266
IntoRobot STM32 Boardsintorobotstm32
IOTEAM BoardsIOTEAMsamd
Iteaduino Liteiteaduino_liteavr
Jewelbots Arduino LibraryJewelbots_Arduino_LibrarynRF51822
JN516x Boardsintikijn516x
Keyboardio KeyboardsKaleidoscope-Bundle-Keyboardioavr
Konekt Dash/Dash Pro Boardskonektsam
Laikalaika_arduinoavr
Larduino_HSPLGTavr
Lattuino 1Lattuinoavr
Leonardo & Micro MIDI-USB (arcore)arcoreavr
LGT8fx BoardsLGT8fx Boardsavr
LinkIt 7697LinkItlinkit_rtos
LinkIt ONELinkItarm
littleBits Arduino AVR ModuleslittleBitsavr
LoRaNodes M0 BoardsLoRaNodes M0 Boardssamd
Macchina SAM Boardsmacchinasam
Maixduino(k210)Maixduinok210
MajorCoreMajorCoreavr
Marlin AVR Boardsanetavr
MattairTech AVR BoardsMattairTech_Arduinoavr
MattairTech SAM D|L|C core for ArduinoMattairTech_Arduinosamd
Maxim’s 32-bit MicrocontrollerMaximarm
MCCI Catena SAMD Boardsmccisamd
MCCI Catena STM32 Boardsmccistm32
MCCI Connection Exercisermcciavr
MediaTek LinkIt Smart BoardsLinkItavr
Meet je stad! AVR Boardsmeetjestadavr
mega1284duinomega1284duinoavr
MegaCoreMegaCoreavr
MegaCoreXMegaCoreXmegaavr
megaTinyCoremegaTinyCoremegaavr
MH-ET LIVE Boardsavr
MicroBridge-Arduino-ATMega2560microbridgeavr
MicroCoreMicroCoreavr
Microduino-IDE-SupportMicroduinoavr
Microduino-IDE-SupportMicroduinoesp32
microUPDIcoremicroUPDIcoreavr
Mighty 1284Pavr
Mighty-1284p Boardsmighty-1284pavr
mighty-1284p-freaklabsmighty-1284p-freaklabsavr
MightyCoreMightyCoreavr
Mini SAM (32-bit ARM Cortex-M0+) Boardsmini_samsamd
MiniCoreMiniCoreavr
MobillyoMobillyoavr
MoteinoMoteinoavr
Moteino AVR BoardsMoteinoavr
Moteino SAMD BoardsMoteinosamd
MXChip – Microsoft Azure IoT Developer KitAZ3166stm32f4
MySensors AVR based boardsmysensorsavr
NekuNeko SAMD Boardsnekunekosamd
Nordic Semiconductor nRF5 BoardssandeepmistrynRF5
Northern Widget ‘ALog’ AVR BoardsNorthernWidgetavr
Nufront tl7788 (32-bits) Boards
Oak by Digistumpdigistumpoak
ODROIDhardkernelodroid
Olimex AVR boardsOlimexavr
Olimex PIC boardsOlimexpic
Olimex STM boardsOlimexstm
OMCOMCavr
Omzlo AVR Boardsomzloavr
Open Panzer AVR BoardsOpenPanzeravr
OpenChronograph OC-1Arduino_OpenChronograph_OC1avr
OpenCM9.04OpenCM904OpenCM904
OpenCROpenCROpenCR
OpenTracker Boards (32-bits ARM Cortex-M3)opentrackersam
Optiboot 8.0Optibootavr
P1AM-100P1AM-100samd
panStamp AVR w/ Atmega328ppanstamp_avravr
panStamp NRG w/ CC430F5137panstamp_nrgmsp430
Philduino AVR Boardsphilduinoavr
Pololu A-Star Boardspololu-a-staravr
PulseRain RattlesnakePulseRain_RISCVRattlesnake
PulseRain ReindeerPulseRain_RISCVReindeer
qqqlabBoardmyboardavr
Quectel BC66WizIObc66
Quectel M66WizIOm66
Quirkbot AVR Boardsquirkbotavr
radinoIn-Circuitavr
radino32In-CircuitSTM32L1
radinoL4 (beta)In-CircuitSTM32L4
Rainboard-coresRainboardavr
RaspberryPiRaspberryPipiduino
Realtek Ameba Boards (32-bits ARM Cortex-M3)realtekameba
RedBear AVR BoardsRedBearavr
RedBear Duo (32-bits ARM Cortex-M3)RedBearSTM32F2
RedBear nRF51822 Boards (32-bits ARM Cortex-M0)RedBearnRF51822
RedBear nRF52832 Boards (32-bits ARM Cortex-M4F)RedBearnRF52832
RFduino BoardsRFduinoRFduino
RiddleAndCode AVR BoardsRiddleAndCodeavr
RIGRIGavr
RobotCingRobotCingavr
Rokit Arduino Box LibrariesRokitavr
RTL871x ARM (32-bits) Boardsdevelopmentrtl87xx
SAM15x15SAM15x15samd
SanguinoSanguinoavr
Scanner Pro MK3Scanner Proavr
Sduino STM8 plain C core (non-C++)sduinostm8
Seeed i.MX RT (NXP 32-bits ARM Cortex-M7) BoardsSeeeduinoimxrt
Seeed SAMD BoardsSeeeduinosamd
Seeed STM32F4 BoardsSeeeduinoSeeed_STM32F4
Seeeduino AVRSeeeduinoavr
Sense/Stage MiniBee Arduino filesminibeeavr
SiFive Freedom Boardssifiveriscv
SimbaSimbaavr
SimbaSimbaesp
SimbaSimbaesp32
SimbaSimbasam
SODAQ AVR BoardsSODAQavr
SODAQ SAMD BoardsSODAQsamd
SparkFun Apollo3 BoardsSparkFunapollo3
SparkFun AVR BoardsSparkFunavr
SparkFun SAMD BoardsSparkFunsamd
Spresense Reference BoardSPRESENSEspresense
STM32 CoresSTM32stm32
STM32F1 Boards (STM32duino.com)Arduino_STM32STM32F1
STM32F4 Boards (STM32duino.com)Arduino_STM32STM32F4
STM32GENERIC for STM32 boardsSTM32
STM32GENERIC for STM32 boardsSTM32
STM8 CoresSTM8stm8
Talk2 AVR BoardsTalk2avr
tinkerkit_coretinkerkitavr
TinyCore BoardsTinyCoreavr
TL7788 BoardsTL7788arm
Tlera Corp STM32L0 BoardsTleraCorpstm32l0
Tomu EFM32 (32-bits ARM Cortex-M0+) BoardstodbotArduinoCore-EFM32
UDOO NEO (iMX6 SoloX)UDOOsolox
UDOO QUAD/DUAL (Due)UDOOsam
w600w600w600
Watterott AVR Boards (dependency: AVR Boards)watterottavr
Watterott SAMD Boards (dependency: SAMD Boards)watterottsamd
WAVGATWAV8FAVR
WAVGAT AVR BoardsWAVavr
WebUSBWebUSBavr
WeMos OU Boardsavr
WEMOS XI LGT BoardswemosXI
WiFi Duck AVR Boardswifiduckavr
WiFi Duck ESP8266 Boardswifiduckesp8266
WiFi Duck SAMD Boardswifiducksamd
WildFire-Ard-CoreWickedDeviceavr
Windows 10 Iot CoreMicrosoftwin10
wirinowirinoavr
Xmegaduino Boardsarduinoxmega
XMegaForArduino XMEGA BoardsXMegaForArduinoavr
zoubworld SAM M0+ Boards – Beta buildzoubworld_Arduinosamd