Arduino Serial Monitor
This skill provides advanced tools for reading and analyzing serial monitor data from Arduino boards, enhancing the debugging experience beyond the basic Arduino IDE serial monitor.
Features
- Real-time Serial Monitoring: Connect to Arduino serial ports and display data in real-time
- Data Logging: Save serial output to files with timestamps for later analysis
- Filtering & Pattern Matching: Filter output by keywords, regex patterns, or data types
- Error Detection: Automatically highlight common error patterns and warnings
- Multiple Format Support: Handle different data formats (text, JSON, CSV, binary)
- Cross-platform: Works with Windows, macOS, and Linux serial ports
Usage
Basic Serial Monitoring
# Monitor serial port with default settings (9600 baud)
uv run --no-project scripts/monitor_serial.py --port COM3
# Specify baud rate and output file
uv run --no-project scripts/monitor_serial.py --port /dev/ttyACM0 --baud 115200 --output debug.log
# Filter for specific patterns
uv run --no-project scripts/monitor_serial.py --port COM3 --filter "ERROR|WARNING"
Advanced Debugging
# Parse JSON data from serial
uv run --no-project scripts/monitor_serial.py --port COM3 --format json --pretty
# Monitor with timestamp and color coding
uv run --no-project scripts/monitor_serial.py --port COM3 --timestamp --color
# Detect common Arduino errors
uv run --no-project scripts/monitor_serial.py --port COM3 --detect-errors
Script Options
--port: Serial port (e.g., COM3, /dev/ttyACM0)--baud: Baud rate (default: 9600)--output: Output file for logging--filter: Regex pattern to filter lines--format: Data format (text, json, csv, binary)--timestamp: Add timestamps to output--color: Enable color-coded output--detect-errors: Highlight common error patterns--timeout: Connection timeout in seconds
Common Arduino Debugging Scenarios
Memory Issues
Filter for: "low memory|stack overflow|heap"
Sensor Data Validation
Filter for: "sensor|reading|value"
Format as: json
Timing Analysis
Enable: --timestamp
Filter for: "start|end|duration"
Communication Errors
Filter for: "timeout|failed|error"
Enable: --detect-errors
Integration with Arduino CLI
# Compile and upload, then monitor
arduino-cli compile --fqbn arduino:avr:uno sketch/
arduino-cli upload -p COM3 --fqbn arduino:avr:uno sketch/
uv run --no-project scripts/monitor_serial.py --port COM3
Troubleshooting
Port Not Found
- Check
arduino-cli board listfor available ports - Ensure Arduino is connected and drivers are installed
- Try different port names (COM1-COM99 on Windows, /dev/ttyACM* on Linux)
No Data Received
- Verify baud rate matches Arduino sketch (
Serial.begin(9600)) - Check USB cable connection
- Reset Arduino board while monitoring
Permission Errors (Linux/macOS)
# Add user to dialout group
sudo usermod -a -G dialout $USER
# Logout and login again
Dependencies
- Python 3.8+
- pyserial
- colorama (for colored output)
- Install via:
uv add pyserial colorama
Examples
Basic Temperature Sensor Monitoring
// Arduino sketch
void setup() {
Serial.begin(9600);
}
void loop() {
float temp = analogRead(A0) * 0.488;
Serial.print("Temperature: ");
Serial.print(temp);
Serial.println(" C");
delay(1000);
}
uv run --no-project scripts/monitor_serial.py --port COM3 --filter "Temperature" --timestamp
JSON Data Parsing
// Arduino sketch with JSON output
#include <ArduinoJson.h>
void setup() {
Serial.begin(115200);
}
void loop() {
StaticJsonDocument<200> doc;
doc["temperature"] = analogRead(A0) * 0.488;
doc["humidity"] = analogRead(A1) * 0.146;
doc["timestamp"] = millis();
serializeJson(doc, Serial);
Serial.println();
delay(2000);
}
uv run --no-project scripts/monitor_serial.py --port COM3 --format json --pretty