Getting Started with the ProtoCentral ADS1292R ECG/Respiration Breakout v4
The ProtoCentral ADS1292R ECG/Respiration Breakout v4 captures a single-lead ECG and a respiration waveform from the same three electrodes. This guide takes you from an unboxed kit to live ECG and respiration traces on an Arduino or ESP32.
Research and education only. This board is not a medical device and is not intended for diagnosis or patient monitoring. When electrodes are on a person, run the host from a battery, not a mains-powered computer.
Have an earlier board? v4 has a new 10-pin host header with a different pin order from v3 and the shield. Check the labels next to the pins: if your board has VDD, GPIO1 and GPIO2 pins on its header, it is an earlier revision and the v3 / Shield Getting Started guide applies.
Introduction
The ADS1292R is a two-channel, 24-bit analog front end made for biopotential measurement. On this board one channel records the ECG between the right-arm (RA) and left-arm (LA) electrodes. The other measures respiration by impedance pneumography: the chip drives a small signal through the same two electrodes and tracks how the chest’s impedance changes as you breathe. A third electrode on the right leg (RL) is driven to cancel common-mode noise.
An on-board 3.3 V regulator powers the ADS1292R, and a TXB0108 level translator lets the SPI lines work with both 3.3 V and 5 V hosts.
What’s new in v4
- New 10-pin host header with a different pin order from v3.
- The ADS1292R clock is on the header. Run several boards from one clock for sample-aligned recordings, using the CLK SEL jumper to choose internal or external clock.
- GPIO1 and GPIO2 test pads (TP3).
- Two plated M2 mounting holes and a smaller 34.5 × 28.7 mm board.
- 3-lead snap electrode cable in the kit.
The Arduino library is the same for every revision.
What’s in the Box
| Qty | Item |
|---|---|
| 1 | ProtoCentral ADS1292R ECG / Respiration breakout board v4, with the 10-pin host socket pre-soldered |
| 1 | 3-lead ECG snap cable with 3.5 mm stereo jack |
| 10 | Disposable stick-on ECG electrodes |
Specifications
| Parameter | Value |
|---|---|
| Analog front end | Texas Instruments ADS1292R |
| Channels | 2 × 24-bit: ECG and respiration |
| Respiration method | Impedance pneumography, from the ECG electrodes |
| Supply (VCC pin) | 3.3–5 V; on-board 3.3 V regulator (AP2112K-3.3) |
| Logic level | Follows VCC, through a TXB0108 level translator |
| Interface | SPI |
| Host header | 10-pin 0.1″ female socket, pre-soldered — use male-to-male jumper wires |
| Electrode connector | 3.5 mm stereo jack: tip LA, ring RA, sleeve RL |
| Board | 34.5 × 28.7 mm, 2-layer, 2 × M2 mounting holes |
Pinout
| Pin | Label | Function | Required? |
|---|---|---|---|
| 1 | CSB | Chip select, active low | Yes |
| 2 | MOSI | SPI data in (to the ADS1292R) | Yes |
| 3 | SCK | SPI clock | Yes |
| 4 | MISO | SPI data out (from the ADS1292R) | Yes |
| 5 | DRDY | Data ready, active low | Yes |
| 6 | START | Start conversions | Yes |
| 7 | RST | Reset / power-down, active low | Yes |
| 8 | CLK | ADS1292R clock in or out (multi-board sync) | Optional |
| 9 | VCC | Supply, 3.3–5 V | Yes |
| 10 | GND | Ground | Yes |
CLK SEL jumper
The CLK SEL solder jumper sets where the ADS1292R gets its clock. As shipped it selects the internal oscillator, which is right for a single board. Move it to the external setting only on a board that takes its clock from another board’s CLK pin (see Several boards on one clock below).
GPIO test pads
TP3 brings out the ADS1292R’s GPIO1 and GPIO2. The library’s 09.GPIOTestPads example drives GPIO1 and reads GPIO2.
Wiring
Arduino Uno
| Breakout pin | Arduino Uno |
|---|---|
| VCC | 5V |
| GND | GND |
| SCK | D13 |
| MOSI | D11 |
| MISO | D12 |
| CSB | D7 |
| DRDY | D6 |
| START | D5 |
| RST | D4 |
ESP32
| Breakout pin | ESP32 (classic, VSPI) |
|---|---|
| VCC | 3.3V |
| GND | GND |
| SCK | GPIO 18 |
| MOSI | GPIO 23 |
| MISO | GPIO 19 |
| CSB | GPIO 13 |
| DRDY | GPIO 26 |
| START | GPIO 14 |
| RST | GPIO 27 |
Both tables match the pins the library examples use, so the examples run unchanged. To use other pins, change the constants at the top of the sketch:
Protocentral_ADS1292R ads(PIN_CS, PIN_DRDY, PIN_START, PIN_RESET);
Connecting the electrodes
- Plug the snap cable into the 3.5 mm jack.
- Snap an electrode onto each lead before sticking it on: peeling a placed electrode to attach a lead pulls on the skin.
- Place the electrodes on clean, dry skin:
| Lead | Placement |
|---|---|
| RA (marked R) | Right arm, or right side of the upper chest |
| LA (marked L) | Left arm, or left side of the upper chest |
| RL (third lead) | Right leg, or lower right abdomen |
The RL electrode is what keeps mains noise out of the signal. Without it, expect a noisy trace.
Tip: wipe the skin with alcohol first and let it dry. Wrist placement works for quick tests; the chest gives a larger ECG and a stronger respiration signal.
Installing the Arduino Library
Option 1 — Library Manager (recommended)
- In the Arduino IDE, open Tools → Manage Libraries…
- Search for ProtoCentral ADS1292R.
- Install ProtoCentral ADS1292R ECG and Respiration boards library.
Option 2 — Manual install from GitHub
- Download the library as a ZIP from github.com/Protocentral/protocentral-ads1292r-arduino (Code → Download ZIP).
- In the Arduino IDE, choose Sketch → Include Library → Add .ZIP Library… and select the file.
Your First ECG and Respiration Reading
- Open File → Examples → ProtoCentral ADS1292R ECG and Respiration boards library → 01.ECGRespSerialPlotter and upload it.
- Attach the electrodes and plug the cable into the board.
- Open Tools → Serial Plotter at 115200 baud.
You’ll see two traces: the ECG, with a sharp spike on each heartbeat, and the respiration signal, a slow wave that rises and falls with each breath. Breathe deeply and the respiration wave grows; hold your breath and it flattens.
More examples
| Example | What it does |
|---|---|
| 01.ECGRespSerialPlotter | Raw ECG and respiration on the Serial Plotter |
| 02.OpenView | Streams to the ProtoCentral OpenView desktop app (57600 baud) |
| 03.HeartRateRespRate | Heart rate and respiration rate computed on the board |
| 04.LeadOffDetection | Reports when an electrode comes off |
| 05.TestSignalNoise | Uses the internal test signal to check the signal chain |
| 06.TemperatureSupply | Reads the ADS1292R’s temperature and supply monitors |
| 07.InterruptDriven | Reads samples from a DRDY interrupt |
| 08.MultiBoardClockSync | Two v4 boards sampling from one clock |
| 09.GPIOTestPads | Drives and reads the GPIO test pads |
| 10.Diagnostics | Step-by-step check of wiring and configuration |
Several boards on one clock
v4 brings the ADS1292R clock out on the CLK pin, so two or more boards can sample in lock-step:
- On the first board, leave CLK SEL on the internal oscillator, and set
clockOutput = truein its configuration so it drives its clock out on CLK. - On every other board, set CLK SEL to external clock and wire its CLK pin to the first board’s CLK pin.
- Share SCK, MOSI and MISO, and tie all the START pins to one host pin. Give each board its own CSB, DRDY and RST.
08.MultiBoardClockSync shows the full setup. Configure the first board before the others: the others have no clock, and won’t respond on SPI, until the first board’s clock output is on.
Troubleshooting
| Symptom | Likely cause | What to try |
|---|---|---|
| “ADS1292R not found” | Wiring or power | Check VCC, GND and the SPI lines against the tables above. Run 10.Diagnostics. |
| Flat ECG trace | Electrodes or cable | Check the cable is fully seated in the jack and every lead is snapped on. Run 04.LeadOffDetection. |
| Very noisy ECG | RL not attached, or mains interference | Attach the RL electrode. Run the host from battery, away from chargers and power strips. |
| Board with CLK SEL set to external won’t respond | No clock | Another board must be supplying its CLK, and must be configured first. Set CLK SEL back to internal for a single board. |
Resources
License
- Hardware: CERN Open Hardware Licence Version 2 — Permissive (CERN-OHL-P v2)
- Software / library: MIT License
- Documentation: Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)

