Precision Embedded Waveform Synthesis & Oscilloscopy
WaveLink is an open-source dual-channel function generator and oscilloscope. Generate arbitrary waveforms, capture live signals, and drive the whole instrument from your browser, desktop, or phone.
One Hardware Engine. Three Native Interfaces.
Whether on a high-throughput lab workstation, a browser with zero installation, or a mobile smartphone in the field, WaveLink offers unified hardware control with responsive touch and gesture ergonomics.
Web Studio
Full instrument control from any Chromium browser, no install and no host software. Simulate waveforms at full fidelity, compile math expressions into signals, and drive the hardware over Web Bluetooth.
- Real-time formula evaluator — type f(x), get a waveform
- Draw arbitrary waveforms by hand and upload them live
- Two-period oscilloscope view with measurement grid
- Auto-reconnect and state sync on link drop
Desktop Suite
Standalone client backed by a local Python telemetry server. Wired serial link for the lowest latency, plus calibration and firmware tooling the wireless clients don't carry.
- Direct UART link at 115200 baud, sub-millisecond command latency
- Automated DAC and digital pot calibration with curve fitting
- EEPROM backup and restore from the shell
- Tested on macOS (Apple Silicon & Intel), Windows, and Linux
Android App
Turn your phone into a wireless control head. Connect over Bluetooth Classic (HC-06) or BLE from across the bench — no cable, no laptop, no second machine running a server.
- Bluetooth SPP & BLE pairing, connected in seconds
- Native Jetpack Compose & Material 3 laboratory theme
- Live Vico oscilloscope trace with pinch-to-zoom
- Keeps your settings through a dropped link and restores them on reconnect
Engineered on Bare-Metal. Built for Precision.
Designed and verified against actual KiCad schematics and oscilloscope bench measurements. The ATmega32A microcontroller executes an unrolled DDS inner loop to drive discrete DAC networks and active analog signal conditioners.
40 kSa/s DDS Synthesis Engine
32-bit phase accumulator driven by a fixed-period Timer2 interrupt. Supports 6 native waveform tables: Sine, Square, Triangle, Sawtooth, Haversine, and arbitrary 256-sample SRAM tables uploaded over BLE. Running both channels independently halves the rate to 20 kSa/s each.
Dual 16-Bit Discrete DAC Ladders
Discrete R-2R resistor ladder networks fed by a daisy-chained 74HC595 shift-register array over 8 MHz hardware SPI, referenced to a TL431 shunt in the centering stage. Separate signal and offset ladders share the bus under strict ISR ownership rules.
Active Filter & Gain Conditioning
Channel 1 output is switchable in software between a Direct bypass and a Smooth path through a 2nd-order Sallen-Key low-pass filter. Cascaded X9C103/X9C104 digital potentiometers set attenuation and gain. The swing below is the gain network's design ceiling; the shipped app corrects the chain against bench measurements.
Dual-Path Oscilloscope Capture
Two capture paths share one input: the microcontroller's internal 10-bit ADC for fast coarse sweeps, and a 16-bit successive-approximation converter built from the signal R-2R ladder plus a comparator. Selectable bit-depth tiers trade resolution for conversion time.
Interactive SCADA HMI Signal Flow Architecture
WaveLink embeds a live JointJS Industrial SCADA HMI diagram inside the UI. Inspect physical relay contacts, track Sallen-Key low-pass filter paths, verify digital potentiometer attenuation (a) and gain (g), and monitor automated fault protections in real-time.
Dynamic Relay State Transitions
Visualize hardware relay energization states (K1–K5) as the system switches between Generator Only, Oscilloscope Only, and Dual DDS modes.
PGA Attenuation & Gain Readouts
Live calculation of transfer functions through the pre-attenuation wiper (X9C103) and post-gain wiper (X9C104) stages with saturation warnings.
Continuous Anomaly & Fault Guard
Automated rail saturation detector prevents op-amp clipping by suggesting safe frequency and amplitude combinations dynamically.
Built for Real Lab Workflows. No Compromises.
WaveLink combines mathematical synthesis with hardware calibration and diagnostic telemetry to deliver an uncompromising instrumentation experience.
Arbitrary Math Formula Engine
Type mathematical formulas such as sin(2*pi*x) + 0.33*sin(6*pi*x), Gaussian bells, Ringdowns, or Sinc pulses to synthesize arbitrary signals on the fly.
Finger-Drawn Custom Waves
Draw custom arbitrary single-cycle shapes directly on your touchscreen or trackpad. The editor interpolates 256 samples and streams them to ATmega32A SRAM with CRC16 verification.
Phase-Locked Dual DDS Sync
Run Channel 1 and Channel 2 simultaneously with independent frequency tuning, duty cycle distortion (1%–99%), and calibrated phase shifts (0°–359°).
Hardware FM Modulation
Built-in frequency modulator with configurable carrier frequency, modulation frequency (1 to 500 Hz), deviation (10 to 2000 Hz), and modulating shapes (Sine, Square, Tri, Saw).
DuckDB Curve-Fitting Calibration
Automated calibration routine fits digital pot wiper resistance curves and DAC transfer functions, storing correction parameters in local DuckDB tables and hardware EEPROM.
Bluetooth LE & High-Throughput USB
Stream instrument telemetry over 115.2 kbps direct USB on desktop or ultra-low-latency Bluetooth LE on mobile, with sub-millisecond command execution and CRC16 validation.
Technical Specifications
Comprehensive hardware and firmware operating specifications for laboratory use.
| SUBSYSTEM | PARAMETER | SPECIFICATION / VALUE | NOTES |
|---|---|---|---|
| DDS Function Generator | DDS Sample Rate | 40 kSa/s (25 μs period) | Fixed-period Timer2 ISR; 20 kSa/s per channel in dual-independent mode |
| Output Frequency Range | 1 Hz – 20,000 Hz | 1 Hz steps; ceiling drops to 10 kHz per channel when both run | |
| DAC Resolution | 16-Bit R-2R Ladder Network | Dual discrete ladders, 74HC595 chain over 8 MHz SPI, TL431 reference | |
| Waveform Shapes | 6 Types | Sine, Square, Triangle, Sawtooth, Haversine, SRAM | |
| Max Output Swing | ±7.58 V (15.16 Vpp) | Gain-network design ceiling; dual X9C pots, corrected in software against bench data | |
| Output Path | Direct / Smooth | Smooth routes through a 2nd-order Sallen-Key reconstruction filter | |
| Amplitude Accuracy | ±273 mV RMSE | Held-out R² 0.9968 over 1,397 bench measurements; Direct 0.996, Smooth 0.998 | |
| Oscilloscope Frontend | ADC Architecture | 10-bit internal / 16-bit external SAR | Internal microcontroller ADC, or successive approximation against the signal R-2R ladder |
| Capture Rate | ~38 kSa/s (ADC) / ~4.6 kSa/s (SAR) | SAR costs ~13.5 μs per bit; bit-depth tiers trade resolution for speed | |
| Input Path | DC, direct | No on-board divider or compensated buffer; a 10x probe is used for calibration | |
| Overcurrent Protection | Firmware relay cutoff | LM393 comparators flag the fault; firmware opens that channel's output relay (K2/K3) | |
| Connectivity & Power | Telemetry Throughput | 115.2 kbps (~11.5 kB/s · <1 ms latency) | Hardware serial interface carrying real-time telemetry and CRC16 payload transfers |
| Wireless Link | Bluetooth Low Energy (BLE) | Every command ACK-gated; CRC-16 on arbitrary-waveform uploads and binary bursts | |
| Power Supply | ±15 V / ±8 V / +5 V DC | 78xx / 79xx linear regulators |