Arduino is a groundbreaking technology in the amateur electronics ecosystem.
By groundbreaking I don't mean it introduced a new powerful microprocessor or anything like that.
It basically created an entire industry, a movement, where there was none.
I'm talking about the makers movement. Before Arduino existed, electronics was not fun and easy to learn as it is today, and there wasn't a lot of resources around. I studied electronics for years in my technical high school, and then at the polytechnic of Milan, but it was very serious, theoretical stuff and very little programming/fun.
Arduino was born in Italy, in Ivrea, a city also known for Olivetti, the company that created the first personal computer in 1965.
Arduino, right from the start, was specifically designed to be a learning device. This simple fact informs several of the design choices made by the original Arduino Core team.
I won't dive into the historic details, but you are free to check them out on Wikipedia.
The key success factor of Arduino is that it's completely Open Source, and it's been one of the first to do so. The hardware is open source, and the software is open source.
For example, the schematics of the latest Arduino Uno board, the Arduino Uno Wifi Rev2, are available online. It's cool because you can build our own Arduino, if you want. And companies can build and sell their own Arduino clones, and they do. I got my first Arduino from a company called Elegoo which creates awesome and cheap sets with lots of components and tutorials to get you started.
Plus, there's a whole ecosystem around it of tools, libraries and educational resources that made it a great success. Before that, boards like that either were difficult to obtain, with material that was too technical, oriented at technicians rather than students. Arduino changed all that. The official website, https://www.arduino.cc/, is full of learning material, examples, tutorials, and hosts an active project hub and community forum. Plus, Arduino created an IoT cloud hub, to let you connect devices to the network.
Over time the Arduino team released several different boards: Arduino Uno, Arduino Mega, Arduino Diecimila, Arduino Robot, Arduino Nano, Arduino Micro, Arduino Leonardo, Arduino MKR and more.
Each board has it own use case. Arduino Nano and Arduino Micro for example are great for IoT, wearables and small devices. Arduino Mega has more memory and I/O pins than any other board.
The Arduino Uno board is the one that as of today has sticked as the best board for learning, it's included in many toolkits and used in lots and lots of tutorials.
The Arduino MKR WiFi 1010 board is widely adopted in IoT, as it has buit-in WiFi and Bluetooth.
Arduino has no operating system, and it runs one single program at a time. You don’t have to worry about anything as there is nothing else than your program running on the Arduino.
Most Arduino boards do not even have network connection, out of the box. Some do, like the Arduino Uno WiFi rev 2 or the Arduino MKR WiFi 1010.
Once a program is loaded, it is booted any time the Arduino is powered, either via USB or via the power port via a AC-to-DC power cable or a battery.
This means that once you load the program, you can put the Arduino on a mountain with a solar panel and a battery, and it will keep running until there's power.
It can only run programs that were compiled for the Arduino platform, which mostly means programs written in the Arduino Language, which is C++ with some convenient features that make it easy for beginners to start with.
However you are not limited to it. If you can live with the constraints of having the Arduino attached to the USB port of the computer (or a Raspberry PI driving it), you can run Node.js code on it using the Johnny Five project, which is pretty cool. There are similar tools for other languages, like pyserial and Gobot .
What is Arduino good for?
First of all, it's great to learn electronics.
Then, Arduino is awesome when you want to compile a program for it, attach a battery or a power connector and put it somewhere to run, and play around with sensors and other nice stuff that interfaces with the real world.
For example, I would use an Arduino to power my self-watering plants or track the temperature outside, or power some home automation stuff.
I'm going to make a lot of projects in the near future, and I'll be posting tutorials here to show you how I built those things.