# Arduino * #sudo dnf install python3-pyserial * #sudo chmod a+rw /dev/ttyUSB0 * #sudo usermod -a -G dialout * download the binary from arduino * https://downloads.arduino.cc/arduino-cli/arduino-cli_latest_Linux_64bit.tar.gz * Put the binary in your path (~/.local/bin) ``` arduino-cli config init arduino-cli config set board_manager.additional_urls "https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json" arduino-cli config set library.enable_unsafe_install true arduino-cli core update-index arduino-cli core install esp32:esp32 # Optional libraries arduino-cli lib install "ESP8266 Influxdb" # send tcp data packets to influx/grafana arduino-cli lib install "PID" # Reference PID controller for arduino arduino-cli lib install "Adafruit BME280 Library" # Temp/Press/Humidity sensor arduino-cli lib install "DallasTemperature" # Temperature sensor arduino-cli lib install "HX711 Arduino Library" # Load cell library to make scales ``` ## To make a new project Arduino is a bit bojank. The directory structure is tied to the .arduino directory created with the config created above. The files must be stored with the following names: * project name `sketch-name` * path must be `~/Arduino/sketch-name/sketch-name.ino` * main script must be named `sketch-name.ino` This directory structure is required for `compile` and `upload` below. To set up the directories automatically use `arduino-cli sketch new blink` ``` ~/Ardruino/blink/blink.ino const int LED_BUILTIN = 2; void setup() { pinMode(LED_BUILTIN, OUTPUT); } void loop() { digitalWrite(LED_BUILTIN, HIGH); delay(1000); digitalWrite(LED_BUILTIN, LOW); delay(1000); } ``` ## Complile the project ``` arduino-cli compile -b esp32:esp32:esp32 ~/Arduino/blink ``` ## Upload to the device ``` arduino-cli upload -p /dev/ttyUSB0 -b esp32:esp32:esp32 ~/Arduino/blink ```