skills/iot/arduino/SKILL.md
Open-source platform for Arduino microcontrollers in IoT and embedded projects
npx skillsauth add alphaonedev/openclaw-graph arduinoInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill provides tools for programming and managing Arduino microcontrollers, focusing on IoT and embedded systems development. It leverages the Arduino ecosystem to compile, upload, and interact with sketches on hardware like Arduino Uno or ESP32 boards.
Use this skill when building IoT prototypes, such as sensor networks or automated devices, that require microcontroller programming. Apply it for tasks like reading data from sensors (e.g., temperature via DHT11) or controlling actuators (e.g., LEDs, motors), especially in projects involving real-time data processing or hardware integration with platforms like Raspberry Pi.
To use this skill, invoke Arduino CLI commands from scripts or directly in AI workflows. Always ensure the Arduino CLI is installed via curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | sh. For automation, wrap commands in shell scripts or Python subprocess calls. Specify the fully qualified board name (FQBN) for all operations, e.g., "arduino:avr:uno". If integrating into a larger AI agent flow, check for board connectivity first using arduino-cli board list.
Use the Arduino CLI for core operations. Key commands include:
arduino-cli core install arduino:avrarduino-cli compile --fqbn arduino:avr:uno --output-dir /tmp/build path/to/sketch.inoarduino-cli upload -b arduino:avr:uno -p /dev/ttyUSB0 path/to/sketch.inoarduino-cli board listarduino-cli lib install "DHT sensor library"Code snippets:
Compile and upload a basic blink sketch:
void setup() { pinMode(LED_BUILTIN, OUTPUT); }
void loop() { digitalWrite(LED_BUILTIN, HIGH); delay(1000); digitalWrite(LED_BUILTIN, LOW); delay(1000); }
Run: arduino-cli compile --fqbn arduino:avr:uno blink.ino && arduino-cli upload -b arduino:avr:uno -p /dev/ttyUSB0 blink.ino
Manage libraries in a script:
arduino-cli lib search DHT && arduino-cli lib install "DHT sensor library"
Config formats: Use JSON for CLI config files (e.g., arduino-cli config init creates a directories.json). Example snippet for a config file:
{
"board_manager": {
"additional_urls": ["https://downloads.arduino.cc/packages"]
}
}
If Arduino Cloud integration is needed (e.g., for IoT services), set auth via environment variable: export ARDUINO_API_KEY=$ARDUINO_API_KEY.
Integrate this skill by ensuring Arduino CLI is in your PATH. For cross-platform use, detect the serial port dynamically (e.g., /dev/ttyUSB0 on Linux or COM3 on Windows). When combining with other IoT tools, pipe output to parsers like jq for JSON handling. For example, in a bash script: arduino-cli board list | jq '.boards[] | select(.port == "/dev/ttyUSB0")'. If using Arduino Cloud APIs, authenticate with $ARDUINO_API_KEY and make requests to endpoints like https://api2.arduino.cc/iot/v2/things. Always verify hardware connections before commands to avoid failures.
Always check CLI exit codes; a non-zero code indicates failure (e.g., if [ $? -ne 0 ]; then echo "Compilation failed"; fi). Parse error output for specifics, like missing libraries: "error: 'DHT' not declared". Common issues include incorrect FQBN—verify with arduino-cli board listall—or port conflicts; use ls /dev/tty* to list ports. For upload errors, ensure the board is in bootloader mode. In scripts, wrap commands in try-catch blocks if using languages like Python:
import subprocess
try:
subprocess.run(['arduino-cli', 'compile', '--fqbn', 'arduino:avr:uno', 'sketch.ino'], check=True)
except subprocess.CalledProcessError as e:
print(f"Error: {e.output}")
Log detailed errors for debugging IoT deployments.
tools
Root web development: project structure, tooling selection, deployment decisions
development
WebAssembly: Rust/Go/C to WASM, wasm-bindgen, Emscripten, WASM Component Model
development
Vue 3: Composition API script setup, Pinia, Vue Router 4, SFCs, Vite, Nuxt 3
tools
Tailwind CSS 4: utility classes, config, JIT, arbitrary values, darkMode, plugins, shadcn/ui