diff --git a/src/assets/hardware/NanoVNA-H-2.jpg b/src/assets/hardware/NanoVNA-H-2.jpg new file mode 100644 index 0000000..2238522 Binary files /dev/null and b/src/assets/hardware/NanoVNA-H-2.jpg differ diff --git a/src/assets/hardware/NanoVNA_Rev3.4_PCB.jpg b/src/assets/hardware/NanoVNA_Rev3.4_PCB.jpg new file mode 100644 index 0000000..eaa3a4b Binary files /dev/null and b/src/assets/hardware/NanoVNA_Rev3.4_PCB.jpg differ diff --git a/src/assets/screenshots/default-display.png b/src/assets/screenshots/default-display.png new file mode 100644 index 0000000..e03b020 Binary files /dev/null and b/src/assets/screenshots/default-display.png differ diff --git a/src/assets/screenshots/logmag-s11-s21.png b/src/assets/screenshots/logmag-s11-s21.png new file mode 100644 index 0000000..9d774ca Binary files /dev/null and b/src/assets/screenshots/logmag-s11-s21.png differ diff --git a/src/assets/screenshots/markers-multiple.png b/src/assets/screenshots/markers-multiple.png new file mode 100644 index 0000000..5c620c5 Binary files /dev/null and b/src/assets/screenshots/markers-multiple.png differ diff --git a/src/assets/screenshots/measure-lc-match.png b/src/assets/screenshots/measure-lc-match.png new file mode 100644 index 0000000..83f1670 Binary files /dev/null and b/src/assets/screenshots/measure-lc-match.png differ diff --git a/src/assets/screenshots/multi-trace.png b/src/assets/screenshots/multi-trace.png new file mode 100644 index 0000000..867a030 Binary files /dev/null and b/src/assets/screenshots/multi-trace.png differ diff --git a/src/assets/screenshots/phase-trace.png b/src/assets/screenshots/phase-trace.png new file mode 100644 index 0000000..2733436 Binary files /dev/null and b/src/assets/screenshots/phase-trace.png differ diff --git a/src/assets/screenshots/smith-chart.png b/src/assets/screenshots/smith-chart.png new file mode 100644 index 0000000..41d3544 Binary files /dev/null and b/src/assets/screenshots/smith-chart.png differ diff --git a/src/assets/screenshots/swr-trace.png b/src/assets/screenshots/swr-trace.png new file mode 100644 index 0000000..3186e4a Binary files /dev/null and b/src/assets/screenshots/swr-trace.png differ diff --git a/src/assets/screenshots/wideband-smith-logmag.png b/src/assets/screenshots/wideband-smith-logmag.png new file mode 100644 index 0000000..2f65e53 Binary files /dev/null and b/src/assets/screenshots/wideband-smith-logmag.png differ diff --git a/src/content/docs/index.mdx b/src/content/docs/index.mdx index 8aea94c..bf0cc1b 100644 --- a/src/content/docs/index.mdx +++ b/src/content/docs/index.mdx @@ -16,7 +16,13 @@ hero: variant: minimal --- -import { Card, CardGrid } from '@astrojs/starlight/components'; +import { Card, CardGrid, Tabs, TabItem } from '@astrojs/starlight/components'; +import { Image } from 'astro:assets'; +import smithChart from '../../assets/screenshots/smith-chart.png'; +import swrTrace from '../../assets/screenshots/swr-trace.png'; +import lcMatch from '../../assets/screenshots/measure-lc-match.png'; +import multiTrace from '../../assets/screenshots/multi-trace.png'; +import nanoVNA from '../../assets/hardware/NanoVNA-H-2.jpg'; ## What is this? @@ -41,6 +47,29 @@ Two MCP servers that let AI assistants control RF test equipment: +## What Can It Do? + +Your AI assistant gains direct access to professional RF measurement capabilities: + + + ## Quick Install ```bash @@ -53,7 +82,98 @@ Then ask Claude to analyze your antenna, measure a filter, or run a 3D pattern s ## Hardware -- **NanoVNA-H** or H4 (USB serial, auto-detected) -- **ESP32 positioner** (optional, for automated pattern measurement) - - 2x NEMA 17 steppers + TMC2209 drivers - - Firmware and KiCad schematics included +
+
+

NanoVNA-H

+

The NanoVNA-H (or H4) connects via USB serial and is auto-detected. No drivers needed on Linux — just plug in and go.

+ +

ESP32 Positioner

+

Optional dual-axis antenna positioner for automated 3D pattern measurement:

+ +
+
+ NanoVNA-H vector network analyzer +
NanoVNA-H — 50kHz to 1.5GHz VNA
+
+
+ +## Example Prompts + +Once installed, try asking your AI: + +- *"Connect to my NanoVNA and sweep 7.0-7.3 MHz to check my 40m dipole"* +- *"Measure the insertion loss of this BPF from 144-148 MHz"* +- *"What's the impedance at the resonant frequency? Suggest an LC match."* +- *"Run a 3D radiation pattern sweep at 15° resolution"* +- *"Export the S11 data as a Touchstone file"* + + diff --git a/src/styles/custom.css b/src/styles/custom.css index ee00940..e2d44d7 100644 --- a/src/styles/custom.css +++ b/src/styles/custom.css @@ -1,57 +1,78 @@ -/* Custom styles for mcnanovna docs */ +/* mcnanovna docs — RF Lab Bench Aesthetic + * Warm copper/amber accent, steel blue secondary, warm grays + * Unified visual family with nanovna-h-docs + */ /* Dark mode is the default in Starlight - use :root */ :root { - /* Accent colors (blue theme) */ - --sl-color-accent-low: hsl(210, 50%, 15%); - --sl-color-accent: hsl(210, 70%, 45%); - --sl-color-accent-high: hsl(210, 80%, 65%); + /* Accent colors (copper/amber for dark mode) */ + --sl-color-accent-low: hsl(25, 50%, 12%); + --sl-color-accent: hsl(28, 55%, 58%); + --sl-color-accent-high: hsl(30, 70%, 82%); - /* Gray scale for dark mode - darker values */ - --sl-color-gray-1: hsl(220, 14%, 71%); - --sl-color-gray-2: hsl(220, 13%, 58%); - --sl-color-gray-3: hsl(220, 12%, 45%); - --sl-color-gray-4: hsl(220, 11%, 32%); - --sl-color-gray-5: hsl(220, 10%, 22%); - --sl-color-gray-6: hsl(220, 12%, 14%); - --sl-color-gray-7: hsl(220, 14%, 10%); + /* Gray scale for dark mode - warm undertones */ + --sl-color-gray-1: hsl(30, 10%, 78%); + --sl-color-gray-2: hsl(28, 8%, 65%); + --sl-color-gray-3: hsl(26, 7%, 50%); + --sl-color-gray-4: hsl(24, 8%, 36%); + --sl-color-gray-5: hsl(22, 10%, 24%); + --sl-color-gray-6: hsl(20, 12%, 16%); + --sl-color-gray-7: hsl(18, 14%, 10%); /* Semantic colors for dark mode */ - --sl-color-white: hsl(0, 0%, 95%); - --sl-color-black: hsl(220, 15%, 8%); + --sl-color-white: hsl(30, 15%, 95%); + --sl-color-black: hsl(20, 20%, 7%); /* Backgrounds */ --sl-color-bg: var(--sl-color-black); --sl-color-bg-nav: var(--sl-color-gray-6); --sl-color-bg-sidebar: var(--sl-color-gray-6); - --sl-color-bg-inline-code: var(--sl-color-gray-5); + --sl-color-bg-inline-code: hsl(22, 12%, 18%); + + /* Steel blue for code links */ + --sl-color-text-accent: hsl(205, 45%, 65%); } /* Light mode override */ [data-theme='light'] { - /* Accent colors (blue theme - slightly darker for light bg) */ - --sl-color-accent-low: hsl(210, 60%, 90%); - --sl-color-accent: hsl(210, 70%, 40%); - --sl-color-accent-high: hsl(210, 80%, 30%); + /* Accent colors (copper for light mode - darker for contrast) */ + --sl-color-accent-low: hsl(30, 40%, 92%); + --sl-color-accent: hsl(25, 65%, 42%); + --sl-color-accent-high: hsl(22, 70%, 28%); - /* Gray scale for light mode - inverted (higher numbers = darker) */ - --sl-color-gray-1: hsl(220, 14%, 20%); - --sl-color-gray-2: hsl(220, 13%, 30%); - --sl-color-gray-3: hsl(220, 12%, 45%); - --sl-color-gray-4: hsl(220, 11%, 60%); - --sl-color-gray-5: hsl(220, 10%, 75%); - --sl-color-gray-6: hsl(220, 15%, 92%); - --sl-color-gray-7: hsl(220, 20%, 97%); + /* Gray scale for light mode - warm undertones */ + --sl-color-gray-1: hsl(20, 12%, 22%); + --sl-color-gray-2: hsl(22, 10%, 35%); + --sl-color-gray-3: hsl(24, 8%, 50%); + --sl-color-gray-4: hsl(26, 8%, 68%); + --sl-color-gray-5: hsl(28, 10%, 82%); + --sl-color-gray-6: hsl(30, 15%, 92%); + --sl-color-gray-7: hsl(32, 20%, 97%); /* Semantic colors for light mode (inverted) */ - --sl-color-white: hsl(220, 15%, 8%); - --sl-color-black: hsl(0, 0%, 100%); + --sl-color-white: hsl(20, 15%, 12%); + --sl-color-black: hsl(35, 25%, 98%); /* Backgrounds */ --sl-color-bg: var(--sl-color-black); --sl-color-bg-nav: var(--sl-color-gray-7); --sl-color-bg-sidebar: var(--sl-color-bg); - --sl-color-bg-inline-code: var(--sl-color-gray-6); + --sl-color-bg-inline-code: hsl(30, 20%, 93%); + + /* Steel blue for code links (darker for light bg) */ + --sl-color-text-accent: hsl(205, 55%, 40%); +} + +/* Slightly tighter sidebar for lab-manual density */ +nav.sidebar .top-level > li + li { + margin-top: 0.25rem; +} + +/* Badge styling — make badges look subdued */ +.sl-badge { + font-size: 0.7em; + text-transform: uppercase; + letter-spacing: 0.05em; } /* Tool reference tables */ @@ -67,6 +88,11 @@ border-bottom: 1px solid var(--sl-color-gray-5); } +.tool-table th { + background: var(--sl-color-gray-6); + font-weight: 600; +} + .tool-table code { font-size: 0.875rem; background: var(--sl-color-bg-inline-code); @@ -81,3 +107,42 @@ border-radius: 0.5rem; border: 1px solid var(--sl-color-gray-5); } + +/* Menu path breadcrumbs (for firmware navigation docs) */ +.menu-path { + font-family: var(--sl-font-mono); + font-size: 0.85em; + background: var(--sl-color-bg-inline-code); + padding: 0.15em 0.4em; + border-radius: 4px; + white-space: nowrap; +} + +/* Spec cards for hardware specs */ +.spec-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); + gap: 1rem; + margin: 1.5rem 0; +} + +.spec-card { + background: var(--sl-color-gray-7); + border: 1px solid var(--sl-color-gray-5); + border-radius: 8px; + padding: 1rem; + text-align: center; +} + +.spec-card .spec-value { + font-size: 1.5rem; + font-weight: 700; + color: var(--sl-color-accent); + display: block; +} + +.spec-card .spec-label { + font-size: 0.85rem; + color: var(--sl-color-gray-2); + margin-top: 0.25rem; +}