Devlog #6: Interactive Wiring Diagrams - Building a Better Technical Documentation Tool

Deep dive into creating zoomable, interactive SVG wiring schematics that replace traditional text-based guides with visual clarity and enhanced user experience.

Devlog #6: Interactive Wiring Diagrams - Building a Better Technical Documentation Tool

Building technical documentation that truly serves users means moving beyond walls of text. Today, I’m diving into how I built an interactive wiring diagram component that transforms hardware connections into clear, explorable visuals.

The Problem with Traditional Wiring Guides

Most electronics tutorials rely on text-based wiring instructions like this:

Traditional Wiring Guide
1. Connect ESP32 3.3V to sensor VCC
2. Connect ESP32 GND to sensor GND  
3. Connect ESP32 A0 to sensor SIG
4. Connect ESP32 SCL to temp sensor SCL
5. Connect ESP32 SDA to temp sensor SDA

This approach has fundamental problems:

  • Cognitive load: Readers must mentally map text to physical connections
  • Error-prone: Easy to miss connections or wire incorrectly
  • Not scannable: Hard to quickly verify all connections are correct
  • No visual context: No sense of wire routing or physical layout

Interactive Diagrams as the Solution

Instead of text lists, I built an SVG-based WiringSchematic component that provides:

Visual Clarity

  • Color-coded wires by function (power=red, ground=black, signal=blue, I2C=green)
  • Clear component representations with proper labeling
  • Wire routing that avoids overlaps and shows clear paths

Interactive Features

  • Zoomable: Mouse wheel or pinch-to-zoom for detailed inspection
  • Pannable: Click and drag to explore different areas
  • Responsive: Works on desktop and mobile devices
  • Reset view: One-click return to default zoom level

Enhanced Accessibility

  • Semantic component labeling
  • High contrast wire colors
  • Keyboard navigation support
  • Screen reader compatible text elements

Here’s the interactive diagram in action:

ISOMON Node #1 - Complete Wiring Guide

Interactive schematic showing all connections for the environmental monitoring node. Zoom and pan to explore details.

🔍 Zoom: Mouse wheel / Pinch to zoom
ESP32-C6 FireBeetle + IO Shield 3.3V GND A0 SCL SDA USB-C Capacitive Soil Moisture Sensor VCC GND SIG SHT30 Temp/Humidity Stainless Steel Housing VCC GND SCL SDA 1.8" TFT Display ST7735 (SPI) Connected via GDI Interface on IO Shield USB-C Power 5V → 3.3V 3.3V +3.3V GND ANALOG SCL SDA Wire Legend: Power (VCC) Ground (GND) Analog Signal I2C (SCL/SDA) Notes: • IO Shield provides screw terminals • Display connects via GDI interface • All connections are secure and reliable • Built-in pull-up resistors for I2C

Technical Implementation

Component Architecture

The WiringSchematic.astro component follows Astro’s content-first philosophy:

WiringSchematic.astro Props
interface Props {
title?: string;
description?: string;
width?: number;
height?: number;
id?: string;
zoomable?: boolean;
}

SVG Structure Strategy

I organized the SVG content in logical layers:

  1. Background grid: Provides visual reference points
  2. Components: Rectangles with clear labeling and pin indicators
  3. Wiring layers: Separated by function to avoid visual conflicts
  4. Annotations: Wire labels and legends for clarity

Smart Wire Routing

Traditional diagrams often have overlapping wires that create confusion. My approach uses layered routing:

wire-routing.svg
<!-- Power lines on upper layer -->
<path d="M 200 100 L 270 100 L 270 130 L 320 140" class="wire-power"/>

<!-- Ground lines on middle layer -->  
<path d="M 320 160 L 275 160 L 275 195 L 180 190" class="wire-ground"/>

<!-- Signal lines on lower layer -->
<path d="M 180 210 L 240 210 L 240 185 L 320 180" class="wire-signal"/>

Each wire type follows dedicated routing channels, with connection dots marking key junctions.

Interactive Functionality

Zoom Implementation

The zoom system uses transform matrices for smooth scaling:

zoom-implementation.js
function updateTransform() {
svg.style.transform = `translate(${translateX}px, ${translateY}px) scale(${scale})`;
}

container.addEventListener('wheel', function(e) {
e.preventDefault();
const zoomIntensity = 0.1;
const delta = e.deltaY > 0 ? -zoomIntensity : zoomIntensity;
scale = Math.max(minScale, Math.min(maxScale, scale + delta));
updateTransform();
});

Touch Support

Mobile users can pinch-to-zoom naturally:

touch-support.js
container.addEventListener('touchmove', function(e) {
if (e.touches.length === 2) {
  const touchDistance = Math.hypot(
    touch2.clientX - touch1.clientX,
    touch2.clientY - touch1.clientY
  );
  const scaleChange = touchDistance / lastTouchDistance;
  scale = Math.max(minScale, Math.min(maxScale, scale * scaleChange));
}
});

Development Philosophy

This wiring diagram tool embodies the core principles I’m building into Signals & Systems:

  1. Content-first: The information comes first; interaction enhances understanding
  2. Progressive enhancement: Works without JavaScript, better with it
  3. User empathy: Solving real problems that technical documentation creates
  4. Performance conscious: Lightweight SVG with minimal JavaScript overhead

Performance Impact

The complete interactive wiring component adds only 3KB of JavaScript and uses vector graphics for infinite scalability. Initial render time remains under 100ms even on mobile devices.

This component integrates seamlessly with the Signals & Systems design language:

Color Coding Standards

  • Power (Red #dc2626): Universally recognized for power connections
  • Ground (Black #000000): Standard electrical convention
  • Signal (Blue #2563eb): Distinct from power, suggests data flow
  • I2C (Green #059669): Differentiated communication protocol

Typography Consistency

  • Component labels use system UI fonts for clarity
  • Pin labels in smaller, monospace fonts for technical precision
  • Consistent sizing hierarchy maintains visual order

Responsive Behavior

  • SVG viewBox scaling ensures readability at all screen sizes
  • Touch-friendly interaction zones for mobile users
  • Fallback to static view if JavaScript fails

Future Enhancements

Interactive Learning Features

  • Hover states: Highlight wire paths when hovering over components
  • Step-by-step mode: Guided assembly with progressive reveal
  • Validation feedback: Visual confirmation of correct connections

Enhanced Accessibility

  • Voice navigation: Screen reader support for wire tracing
  • High contrast mode: Alternative color schemes for visual impairments
  • Keyboard shortcuts: Power user navigation options

Content Management

  • Template system: Standardized layouts for different project types
  • Auto-generation: Convert netlist files to visual diagrams
  • Version control: Track changes in complex wiring revisions

Development Philosophy

This wiring diagram tool embodies the core principles I’m building into Signals & Systems:

  1. Content-first: The information comes first; interaction enhances understanding
  2. Progressive enhancement: Works without JavaScript, better with it
  3. User empathy: Solving real problems that technical documentation creates
  4. Performance conscious: Lightweight SVG with minimal JavaScript overhead

Performance Impact

The complete interactive wiring component adds only 3KB of JavaScript and uses vector graphics for infinite scalability. Initial render time remains under 100ms even on mobile devices.

Lessons Learned

SVG as a Documentation Medium

SVG isn’t just for illustrations - it’s a powerful medium for interactive technical content. The combination of vector precision, CSS styling, and JavaScript interaction creates experiences impossible with static images or complex frameworks.

User Testing Insights

Early feedback revealed that users immediately understood the color coding without explanation. The zoom functionality became essential once users discovered it - they wanted to inspect connection details that would be invisible in static diagrams.

Maintenance Considerations

Hand-coding SVG paths is time-intensive but gives precise control over every visual element. For future iterations, I’m considering automated generation from schematic data while maintaining the clean, purposeful aesthetics.

Broader Impact

This wiring diagram component represents a philosophy shift in technical documentation:

From “telling” users what to do → “showing” them how to do it

The interactive element removes barriers between readers and implementation. Instead of translating instructions into action, users can directly verify their work against a clear visual reference.

This approach scales beyond electronics:

  • Software architecture diagrams: Interactive system overviews
  • Assembly instructions: Step-by-step visual guides
  • Network topology: Explorable infrastructure maps
  • Process flows: Interactive workflow documentation

Call to Action

I’m building documentation tools that work better for technical creators and learners. If you’re tackling similar challenges in your projects, I’d love to exchange ideas and techniques.

Let’s Connect

Have ideas for improving technical documentation? I’m always interested in collaboration and knowledge exchange.

The next challenge: expanding this interactive approach to signal flow diagrams and system architecture visualizations. The goal remains the same - making complex technical information more accessible and actionable for everyone.

References


JELL

JELL

Innovator, Educator & Technologist

JELL is an innovator, educator, and technologist exploring the confluence of AI, higher education, and ethical technology. Through Signals & Systems, JELL shares insights, experiments, and reflections on building meaningful digital experiences, and other random things.