Arduino: a User-Friendly Microcontroller Board
After installing Arduino:
- Try your hand at making smart things with projects at the Arduino Project Hub
- Learn more about how the Arduino language works with Arduino’s tutorial
Further readings: More resources from Arduino at their Getting Started page.
Installing
Installing a Linux Distro Package
While there is a package for the Arduino IDE on current APT repositories, it has not been updated for a while. As such, while it is still possible to install the IDE by running sudo apt install arduino, it is not recommended to do so, as asking for support when using outdated software is more difficult.
Installing via a Tarball
What you’ll need:
- Ubuntu 16.04 (and above) Desktop
- An Arduino board, and included mini-USB cable
- Some basic command-line knowledge (including how to use cd to change directories)
We can download the latest version of the Arduino IDE from the Arduino website (here) as a tarball. A tarball is a type of compressed folder, like a .zip file, commonly used to distrubute software in Linux; its file extension is usually .tar.xz (or .tar.gz, if it uses Z compression.).
-
In order to extract the files we need from the tarball, we can open a terminal,
cdto where the downloaded tarball is, then runtar xvf FILENAME
where FILENAME is the name of the download (typically
arduino-version_number-linux64.tar.xz).The command can be read as
eXtract from an archive…
Verbosely (meaning it prints the name of every file it finds)… * from a file given by FILENAME.When the command finishes, run
lsagain; tar should have created a new folder named arduino-version_number. -
cd into the folder; there will be a file named install.sh in the folder. To install the IDE, execute install.sh with./install.sh
If the script executes correctly and outputs
done!
at the end of its output, the IDE was installed correctly! Let’s try to launch it in the next step. -
Before launching the IDE, connect your Arduino board to your computer with a USB cable. Arduino should be available in the (Unity menu?); if not, it can be launched from the command line by running
arduino.Permissions checker The first time we launch Arduino, a window will pop up asking to add us to the dialout group. We will get back to what this means later, but for now just click on Add.
-
The editor After that, we should see the IDE’s main editor window.
The IDE comes with example files that we can use to test if everything works. Let’s try open one such file: Under File > Examples > 01.Basics, choose Blink.
Try running the code on your Arduino by clicking Upload (the right arrow along the top).
We should get an error:
Binary sketch size: 1,054 bytes (of a 32,256 byte maximum) processing.app.SerialNotFoundException: Serial port 'COM1' not found. Did you select the right one from the Tools > Serial Port menu? (...)
But if we try following the suggestion in the error above, the Serial Port menu is greyed out and can’t be entered. What’s going on?
-
This is happening because the IDE doesn’t have sufficient permissions to access the Arduino device.
We can look at the Arduino device by running
ls -l /dev/ttyACM*
in a terminal. The output looks mostly like this:
crw-rw---- 1 root dialout 166, 0 Des 14 09:47 /dev/ttyACM0
The ‘0’ at the end of ‘ACM’ might be different, and multiple entries might be listed, but the parts we need to focus on are the string of letters and dashes in front, and the two names root and dialout.
The first name root is the owner of the device, and dialout is the owner group of the device.
The letters and dashes in front, starting after ‘c’, represent the permissions for the device by user: - The first triplet rw- mean that the owner (root) can read and write to this device - The second triplet rw- mean that members of the owner group (dialout) can read and write to this device - The third triplet --- means that other users have no permissions at all (meaning that nobody else can read and write to the device)
In short, nobody except root and members of dialout can do anything with the Arduino; since we aren’t running the IDE as root or as a member of dialout, the IDE can’t access the Arduino due to insufficient permissions.
But wait! Earlier, when we were launching the IDE, we did add ourselves to the dialout group! So why does the IDE still not have permission to access the Arduino? The changes that the prompt makes don’t apply until we log out and log back in again, so we have to save our work, log out, and log back in again. After you log back in and launch the Arduino IDE, the Serial Port option should be available; change that, and we should be able to upload code to the Arduino.
Boards Compatible with the Arduino IDE
Many official and third-party development boards work directly with the Arduino IDE through built-in support or installable board manager packages.
Third-Party and Compatible Boards
These are produced by other manufacturers, feature similar pinouts or shield compatibility, and run code written in the Arduino IDE (often by adding a custom URL or board package in the preferences):
- ESP32 & ESP8266 Boards: Standard ESP32, ESP32-S3, and ESP8266 modules (such as SparkFun Pro Micro ESP32-C3).
- Raspberry Pi RP2040 Boards: Adafruit Metro RP2040 and similar third-party RP2040 development boards.
- Adafruit & SparkFun Metro/Feather/RedBoard Series: SparkFun RedBoard Plus, Adafruit Metro M4 Express, and related microcontroller lines.
- DFRobot & Seeed Studio: DFRduino (Uno, Leonardo, Pro Mini), Bluno series (Bluetooth-enabled clones like Bluno Mega 2560 and Bluno Nano), and Seeed Studio XIAO.
- Teensy Boards: PJRC Teensy models (Teensy 2.0, Teensy++ 2.0, and newer versions via the Teensyduino add-on).
- Industrial Controllers: Controllino, Industruino, and Iono.