Arduino

From campisano.org
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

and https://github.com/arduino/arduino-cli/releases/download/v0.35.3/arduino-cli_0.35.3_Linux_64bit.tar.gz


See Arduino-cli_(Application)

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)

References

Getting started - Arduino CLI