Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>Sentinel - Hardware-Aware Arduino DevelopmentNew to Visual Studio Code? Get it now.
Sentinel - Hardware-Aware Arduino Development

Sentinel - Hardware-Aware Arduino Development

Rishi Shah

|
3 installs
| (0) | Free
Real-time memory analysis and hardware diagnostics for Arduino development. Build and upload to 100+ boards via arduino-cli without the PlatformIO bloat.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Sentinel

Hardware-aware diagnostics and intelligent memory analysis for embedded systems development. A VS Code extension that validates your code before compilation, catching hardware-specific errors that traditional IDEs miss.

Overview

Sentinel provides real-time validation for embedded systems development through a custom Language Server Protocol implementation. Unlike traditional build-time error detection, Sentinel analyzes your code as you type, validating hardware constraints, memory usage, and protocol compliance before you ever hit compile.

Built for developers who need production-quality code without the overhead of complex toolchains. Zero configuration required - works with arduino-cli out of the box.

Core Features

Live Memory Analysis

Sentinel performs static analysis to estimate RAM and Flash usage before compilation, providing instant feedback on memory constraints.

  • Real-time estimation with ±3% accuracy compared to compiled output
  • Tracks global variables, stack usage, and framework overhead
  • Empirically calibrated for Arduino core libraries (Serial, Wire, SPI)
  • Detects unused variables and suggests optimizations
  • Framework-specific overhead calculation for WiFi and BLE on ESP32
  • Visual memory bars with color-coded warnings at 70% and 90% thresholds
  • Persistent memory tracking across workspace sessions

The memory analyzer uses static code analysis to calculate:

  • Global variable allocation (arrays, structs, classes)
  • Stack frame estimation based on function call depth
  • Framework overhead (Serial: 175B, Wire: 196B, SPI: 20B)
  • Dynamic allocation tracking (malloc, calloc, new)

Hardware Validation Engine

Sentinel implements over 50 hardware-specific validation rules that catch errors before compilation.

I2C Protocol Validation

  • Address range validation (0x08-0x77 valid range)
  • Reserved address detection (0x00-0x07, 0x78-0x7F)
  • Device-specific address suggestions from hardware database
  • 200+ known I2C devices with address autocomplete
  • Conflict detection for multiple devices on same address
  • Pull-up resistor warnings for I2C bus configuration

Pin Conflict Detection

  • Real-time tracking of all pin assignments (digital, analog, PWM, I2C, SPI, Serial)
  • Conflict warnings for overlapping pin usage
  • Intelligent comment handling - Commented-out code is automatically ignored during analysis
  • ESP32 strapping pin warnings (GPIO0, GPIO2, GPIO12, GPIO15)
  • Boot mode interference detection
  • Arduino PWM pin validation (pins 3, 5, 6, 9, 10, 11 on Uno)
  • UART/SPI protocol pin reservation tracking
  • Visual indicators for pin status and conflicts

ESP32-Specific Diagnostics

  • Strapping pin usage warnings during boot
  • WiFi and BLE simultaneous usage warnings (high RAM consumption)
  • Deep sleep configuration validation
  • Dual-core task pinning recommendations
  • Core 0 WiFi stack conflict detection
  • Long delay suggestions for power optimization

Protocol-Level Validation

  • SPI clock speed validation for target devices
  • UART baud rate compatibility checking
  • I2C clock stretching timeout warnings
  • Protocol state machine validation
  • Bus initialization order verification

Pin Usage Map

Automatic visualization of all pin assignments with conflict detection.

  • Tracks digital I/O, analog, PWM, I2C (SDA/SCL), SPI (MISO/MOSI/SCK), and Serial (RX/TX)
  • Real-time conflict warnings for overlapping usage
  • Color-coded status indicators (valid, warning, conflict)
  • Board-specific pin mapping (Arduino Uno, Mega, ESP32)
  • Automatic detection from pinMode, digitalWrite, analogRead, and library functions
  • Visual pin map in sidebar with usage details

Post-Build Memory Tracking

Detailed memory analysis after compilation with persistent data.

  • Visual memory usage bars for Flash and RAM
  • Percentage-based warnings with color coding
  • Byte-level precision (used/total)
  • Persistent across workspace switches
  • No rebuild required to view cached data
  • Historical tracking for memory optimization

Intelligent IntelliSense

Hardware-aware code completion and suggestions.

  • I2C device address autocomplete (MPU6050: 0x68, BMP280: 0x76, etc.)
  • Pin number suggestions based on selected board
  • Protocol-specific parameter hints
  • Device-specific register addresses
  • Library function signatures with hardware context
  • Board-aware syntax validation

User Interface

Sidebar Panel

Sentinel provides a dedicated sidebar panel with all diagnostic information:

  • Live Memory Estimate - Real-time RAM usage with color-coded warnings
  • Post-Build Memory - Flash and RAM bars after compilation
  • Pin Usage Map - Visual representation of all pin assignments with conflict detection
  • Top Global Variables - Lists largest memory consumers
  • Build & Deploy - Quick access buttons for building and uploading
  • Quick Actions - Board selection, port selection, and serial monitor

Status Bar Integration

  • Live RAM Display - Always-visible RAM percentage in status bar
  • Board Selector - Click to choose between Arduino Uno and ESP32
  • Port Selector - Quick port selection for uploading
  • Flash Button - One-click upload to device

Editor Title Actions

  • Build Project - Compile current sketch with arduino-cli
  • Flash Device - Upload compiled binary to selected board

Commands

All features accessible via Command Palette (Ctrl+Shift+P):

  • Sentinel: Build Project - Compile the current sketch
  • Sentinel: Flash Device - Upload to connected board
  • Sentinel: Select Board - Choose target board (Uno/ESP32)
  • Sentinel: Select Port - Choose serial port
  • Sentinel: Open Serial Monitor - View serial output in terminal

Installation

From Source

git clone https://github.com/RishiShah99/Sentinel.git
cd Sentinel
npm install
npm run compile

Development Mode

Press F5 in VS Code to launch the Extension Development Host with Sentinel loaded.

Usage

  1. Open any .ino or .cpp file in VS Code
  2. Sentinel automatically activates and begins analysis
  3. View diagnostics in the Sentinel sidebar (shield icon in activity bar)
  4. Use Build/Upload buttons in the editor title bar
  5. Monitor live RAM usage in the status bar

Project Structure

src/
├── extension.ts           # Extension host and command registration
└── sidebar-provider.ts    # Webview UI and state management

embedded-lsp/
└── server/
    ├── main.js           # Language server implementation
    ├── memory-analyzer.js # RAM/Flash estimation engine
    ├── pin-tracker.js    # Pin usage detection
    └── diagnostic-provider.js # Hardware-aware diagnostics

resources/
└── sentinel-icon.svg      # Extension icon

snippets/
└── arduino.json          # Code snippets for Arduino development

syntaxes/
└── arduino.tmLanguage.json # Syntax highlighting for .ino files

Requirements

  • VS Code 1.85.0 or higher
  • Arduino CLI (for building and uploading)
  • Node.js 16+ (for development)

Supported Boards

Full Feature Support

  • Arduino Uno - Complete support for all features including live memory analysis, pin usage maps, and hardware validation

Partial Support

  • ESP32 (all variants) - Currently supports:

    • Hardware validation (strapping pins, WiFi/BLE warnings, protocol validation)
    • Build and flash functionality
    • ESP32-specific diagnostics

    Note: Live memory analysis and pin usage maps for ESP32 are planned for future releases. Current version focuses on Arduino Uno for complete memory and pin tracking.

Development Commands

# Install dependencies
npm install

# Compile TypeScript
npm run compile

# Watch mode for development
npm run watch

# Package extension
vsce package

Technical Architecture

Language Server Protocol Implementation

Sentinel implements a custom LSP server that provides real-time diagnostics, code completion, and hover information. The server analyzes code as you type, maintaining an in-memory representation of your hardware configuration and validating against board-specific constraints.

The LSP architecture enables:

  • Sub-100ms response time for diagnostics
  • Incremental parsing for large codebases
  • Cross-file symbol resolution
  • Hardware state tracking across multiple files

Memory Estimation Engine

The memory analyzer performs multi-pass static analysis to estimate RAM and Flash usage with production-level accuracy.

Analysis Pipeline:

  1. Global Variable Detection - Scans for all global declarations (primitives, arrays, structs, classes)
  2. Usage Analysis - Tracks read/write operations to eliminate unused variables
  3. Stack Estimation - Calculates stack frames based on function call depth and local variables
  4. Framework Overhead - Adds empirically measured overhead for Arduino libraries
  5. Dynamic Allocation - Tracks malloc, calloc, and new operations

Calibration Methodology:

  • Tested against 100+ real Arduino sketches
  • Empirically measured framework overhead through controlled builds
  • Validated against actual memory usage from .map files
  • Continuous refinement based on compiler behavior

Pin Tracking System

The pin tracker maintains a real-time map of all pin assignments, detecting conflicts and validating against board specifications.

Detection Methods:

  • Direct pin functions (pinMode, digitalWrite, digitalRead, analogRead, analogWrite)
  • Library-specific pins (Wire.begin for I2C, SPI.begin for SPI)
  • Serial port detection (Serial, Serial1, Serial2)
  • Interrupt pin validation (attachInterrupt)
  • PWM capability checking

Conflict Resolution:

  • Tracks pin mode (INPUT, OUTPUT, INPUT_PULLUP)
  • Detects multiple assignments to same pin
  • Validates protocol-specific pin requirements
  • Warns about hardware limitations (PWM channels, analog pins)

Hardware Database

Sentinel includes a comprehensive hardware database with specifications for:

  • 200+ I2C devices with addresses and register maps
  • Arduino board pin mappings (Uno, Mega, Nano, Leonardo)
  • ESP32 variants with GPIO capabilities
  • Protocol specifications (I2C, SPI, UART)
  • Common sensor configurations

Why Sentinel

Traditional embedded IDEs focus on compilation and uploading. Sentinel focuses on validation and intelligence. While other tools tell you what went wrong after compilation, Sentinel prevents errors before they happen.

Key Advantages:

  • Instant Feedback - See errors as you type, not after compilation
  • Hardware Intelligence - Understands your board's constraints and capabilities
  • Zero Configuration - No complex setup or configuration files
  • Native Integration - Built for VS Code
  • Production Ready - Validation rules based on real-world embedded development

Sentinel is designed for developers who value code quality and want to catch hardware-specific bugs early in the development cycle. Whether you're prototyping with Arduino or building production ESP32 firmware, Sentinel provides the intelligence layer that traditional toolchains lack.

Future Enhancements

Planned features for upcoming releases:

ESP32 Complete Support

  • Live memory analysis for ESP32 (RAM and Flash estimation)
  • Pin usage maps with conflict detection for ESP32 GPIO
  • Framework overhead calculation for WiFi and BLE libraries
  • ESP32-specific memory constraints (IRAM, DRAM, PSRAM)

Additional Board Support

  • Arduino Mega 2560
  • Arduino Nano
  • ESP8266
  • Raspberry Pi Pico
  • STM32 boards

Enhanced Features

  • Real-time oscilloscope and logic analyzer integration
  • Serial plotter for sensor data visualization
  • Library dependency analyzer
  • Power consumption estimation
  • Custom board definition support
  • Multi-board project management

Contributing

Contributions are welcome. Please open an issue or pull request for bugs, features, or improvements.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft