Arduino
Jump to navigation
Jump to search
Install arduino-cli
from https://arduino.github.io/arduino-cli/0.35/installation/
and https://downloads.arduino.cc/arduino-cli/nightly/arduino-cli_nightly-latest_Linux_64bit.tar.gz
System configuration
According to the board, you may need to add additional packages or configurations
for instance, for a nano ESP32 board, you need:
- python serial package (apt-get install python3-serial)
- user permission to /dev/ttyACM0 (usermod -aG dialout t1t0)
- udev rules to deploy application to the board:
cat > /etc/udev/rules.d/60-arduino-mbed.rules << EOF
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2e8a", MODE:="0666"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", MODE:="0666"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1fc9", MODE:="0666"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0525", MODE:="0666"
EOF
udevadm trigger
udevadm control --reload-rules
see https://support.arduino.cc/hc/en-us/articles/9005041052444-Fix-udev-rules-on-Linux
Board setup
this example is for an arduino mega board
arduino-cli core update-index arduino-cli board list arduino-cli core install arduino:avr
Create a test project
arduino-cli sketch new ArduinoTest
cat > ArduinoTest/ArduinoTest.ino << EOF
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
delay(100);
digitalWrite(LED_BUILTIN, LOW);
delay(100);
}
EOF
Build and deploy
Note, you need to belong to the dialout group (or have raw access to /dev/ttyACM0)
arduino-cli compile --fqbn arduino:avr:mega ArduinoTest arduino-cli upload -p /dev/ttyACM0 --fqbn arduino:avr:mega ArduinoTest
Install a library
for example Wifi
arduino-cli lib install WiFi
Use a makefile
PROJECT_NAME := ArduinoTest ARDUINO_BOARD := arduino:avr:mega ARDUINO_DEVICE := /dev/ttyACM0 SERIAL_RATE := 9600 .PHONY: all all: build .PHONY: check_group check_group: @id -G -n | grep -qw dialout || (echo "ERROR: You need to belong to dialout group (use 'usermod -aG dialout <USERNAME>')" && exit 1) .PHONY: build build: arduino-cli compile --clean --fqbn $(ARDUINO_BOARD) $(PROJECT_NAME) .PHONY: deploy deploy: check_group arduino-cli upload -p $(ARDUINO_DEVICE) --fqbn $(ARDUINO_BOARD) $(PROJECT_NAME) .PHONY: logs logs: stty -F $(ARDUINO_DEVICE) raw 9600 cat $(ARDUINO_DEVICE)