
NMRduino is an accessible, open-source spectrometer designed for exploring low-frequency Nuclear Magnetic Resonance (NMR). Built around the popular Arduino ecosystem, it simplifies the setup and control of NMR experiments, making this powerful technology available to students, researchers, and hobbyists alike. The compact, plug-and-play hardware interfaces easily with laptops, desktops, or Raspberry Pi computers via USB, and allows for flexible control of magnetic fields and pulse sequences.
Designed to bridge the gap between advanced research tools and educational setups, NMRduino supports a wide range of applications, from studying hyperpolarized NMR systems and relaxation phenomena to teaching the basics of magnetic resonance. Its versatile design allows it to work with conventional rf-inductive pickup coils or alternative sensors like atomic magnetometers, offering a unique, hands-on approach to learning and experimentation in magnetic resonance.
Applications

Larmor Precession
The bias magnetic field can be freely adjusted between 0 μT and 100 μT, enabling the observation of various nuclear spin species (e.g. 1H, 2D, 7Li, 13C, 19F, etc) at Larmor frequencies up to a few kHz.

Rabi Oscillation
Rabi oscillations were measured using NMRduino by driving a saddle coil with square wave currents. The 1H NMR signal amplitude was recorded as a function of pulse number and length in a 100 µT field.

Phase-Shifted Pulses
NMRduino measures phase-shifted pulses by adjusting DAC event timings, similar to DDS in modern NMR spectrometers. Phase resolution is about 1.5° at 4 kHz.

Spin Echos
Spin echoes in NMRduino are measured by applying a series of RF pulses to create and capture multiple echoes, revealing the sample’s relaxation properties and decay times.

Coherence Filtering
Coherence filtering with NMRduino isolates heteronuclear spin interactions by using pulse sequences and comparing spectra to reveal detailed coupling effects.

Signal Amplification By Reversible Exchange (SABRE)
SABRE uses parahydrogen (p-H2) to enhance the polarization of target molecules like pyridine. NMRduino measures this effect by detecting the significantly stronger NMR signal of 1H.

Magnetic Resonance Imaging
NMRduino uses pulsed gradient magnetic fields to encode the spatial position of nuclear spin for MRI applications.
And More…
Hardware Specifications
| Analog Input | 16 bits, 100 ksps, 65536 samples, ±5 V or ±10 V input range, ±25 V protection |
| Analog Output | 2 × 1.8 A, 1 μs switching time, 12 bits, bipolar |
| Digital Output | 2 × 1.2 A, 1 × 2.4 A, 1 μs switching time, bipolar |
| Microcontroller Unit | Based on IMXRT1062 chip, 600 MHz clock speed (Teensy 4.1, compatible with Arduino) |
| Firmware | Open-source, written in the Arduino programming language |
| I/O Pulse Sequence | Up to 25k events, 10 ppm global timing accuracy |
| Power supply | 5 V via USB micro-B port |
| Carrier PCB | Credit-card size (85 mm × 54 mm) |
| Sensor | Inductive coils, optically pumped magnetometers |
Software

Oscilloscope and Spectrum Analyzer
Feature: Real-time filtering (low pass, high pass, band pass, band stop).
Feature: Real-time spectral analysis.
Supports buffered and unbuffered (streamed) mode for variable sample rates and number of samples.

Pulse and Acquire
Feature: Live-averaging.
Feature: Pulse sequence upload and preview.
Supports pulse sequences with up to 25k events and 1 μs resolution. Length of a single pulse sequence may be up to several days and can be repeated up to several thousand times.

Sequential Measurements
Feature: Large List Support – Handles more than 65,536 entries.
Feature: Pause and Resume – Measurements can be stopped and continued.
Feature: Flexible Parameters – Each measurement can have a custom set of adjustable parameters.
Supports the definition of sequential measurements in a .list file with a clear tabular structure.
Plug and Play Hardware Support
Feature: Hot-Swappable – Connect or disconnect devices without restarting the NMRduino user interface..
Feature: Configuration Memory – Retains settings after initial setup, eliminating the need for manual reconfiguration.
Custom Device Drivers and Tasks
class CustomDevice: public DeviceBase {
// Custom code...
};
class CustomTask: public TaskBase {
// Custom code...
};
Supports well defined interfaces for custom devices and tasks.
Publications

NMRduino: A modular, open-source, low-field magnetic resonance platform
This paper introduces NMRduino, a versatile and cost-effective sub-MHz NMR spectrometer built on open-source hardware and software, particularly from the Arduino ecosystem. Designed to simplify instrument setup and data acquisition, NMRduino makes experimental NMR spectroscopy more accessible to researchers and educators. Its modular design supports customization, allowing users to adapt the platform for specific needs, such as advanced signal processing or integration of new hardware. With its potential for widespread use in diverse environments, NMRduino could significantly expand the applications of NMR spectroscopy in both research and education.
Journal of Magnetic Resonance 2024, 362, 107665, DOI: 10.1016/j.jmr.2024.107665