Louisianair · Lesson 01 · Hardware bring-up

The Signal Chain: Sensor → AFE → ADS1220 → Pico W

How an invisible whiff of H2S becomes a number in your firmware — and exactly which wire goes where on the breadboard.

🎯 Mission tie-in: get one H2S channel reading on the Pico at the bench, safely, with the bench supply powering the board. This is the first real datapoint the whole Louisianair node is built on.

1. The big idea (read this first)

Each stage does one job. Follow the whole journey of a single measurement:

StageWhat it isWhat it does
SensorAlphasense H2S-A4 electrochemical cellGas reacts at an electrode → produces a tiny current (nanoamps per ppm). Too small to read directly.
AFEAnalogue Front End boardTurns that tiny current into a clean, buffered voltage (WE + AE outputs), plus a Pt1000 temperature voltage. Needs 3.5–6.4V power.
ADS122024-bit ADC (the purple board)Measures the analog voltage very precisely and turns it into a digital number.
Pico WRP2040 microcontrollerReads that number over SPI (four digital wires), runs your TinyGo firmware, later ships it over MQTT.

Analog vs digital is the key split. Everything left of the ADS1220 is fragile analog voltage — keep those wires short and share a ground. Everything right of it is robust digital SPI. The ADS1220 is the translator between the two worlds. That's why it sits in the middle.

2. See it in 3D

Drag to orbit. Use the buttons to light up just one kind of connection — start with Ground (everything shares it), then SPI, then Analog.

The Pico W is seated on a Freenove breakout board (the dark board with yellow header pins on the right). You don't jumper to the Pico directly — every GP## and power pin is fanned out to a labeled header on the breakout, so all the wires from the ADS1220 land there. Same pin names as the tables below.

drag = orbit · scroll = zoom
5V (MB102 → AFE) 3V3 (MB102 → ADS1220) Ground (shared) Analog signals SPI (digital)

Each 3D wire is one net (a bundle), not one Dupont jumper — the real build uses an individual Dupont per pin. Section 4 says how many and which gender.

3. The flat schematic

Same wiring, drawn as a clean block diagram. Print this and the wiring card for the bench.

MB102 Module 9V in · jumpers: 5V & 3.3V rails 5V · 3V3 · GND AFE (H2S) Alphasense A4 VIN 5V GND OP = WE OP = AE Pt1000 ± ADS1220 24-bit ADC AIN0 WE AIN1 AE AIN2/3 Pt1000 AVDD/DVDD 3V3 Pico W RP2040 · TinyGo GP18/19/16 GP17 CS · GP20 DRDY USB powered GND (shared) shared GND rail

4. Wire it up — step by step

⚠ The one mistake that kills a Pico: the RP2040's GPIO pins are 3.3V maximum — not 5V tolerant. If you power the ADS1220's logic from 5V, its DOUT line will push 5V into the Pico and damage it. So the ADS1220 runs on 3.3V. Only the AFE gets 5V.

Your Dupont wires — gender + which breadboard row

You only have Dupont jumpers, so two rules keep it sane.

Rule 1 — the gender you need is the opposite of what you plug into:

Plugging into…Use this Dupont end
Breadboard hole (female socket)Male
A male header pin (ADS1220 pins, breakout pins, AFE pins)Female

Rule 2 — seat the ADS1220 on the breadboard, straddling the center gap. Push its male pins down into the holes so the two sides of the chip land on opposite sides of the center notch. Now each ADS1220 pin owns a 5-hole row. To connect to a pin, plug your wire into any other hole in that same row — the 5 holes on one side of the gap are one electrical node. To reach power, run a jumper from that row to the +5V, +3V3, or GND rail.

What each link needs (breadboard = female holes; ADS1220 seated):

ConnectionFrom → ToDupont
Rails → seated ADS1220 rows (AVDD, DVDD, AGND, DGND, CLK)hole → holemale–male
SPI ×5 ADS rows → Pico breakout pinshole → male pinmale–female
Pico breakout 3V3 / GND pins → railsmale pin → holemale–female
Analog ×4 AFE pins → ADS1220 rowsmale pin → holemale–female
AFE VIN / GND pins → railsmale pin → holemale–female

Inventory check: with the ADC seated you need mostly male–male and male–female jumpers. You only need female–female if you leave the ADS1220 loose (unseated) and join its male pins straight onto AFE/breakout male pins with no breadboard in between — not the method here.

Verify two connectors I can't see from here: (1) your Freenove breakout headers — if they are female sockets rather than male pins, those breakout links flip to male–male; (2) your AFE outputs — if they come out as a 10-pin IDC ribbon or a female header instead of male pins, adjust that end. Always apply Rule 1 to what is physically on the board.
  1. Set up the MB102 power module (leave it OFF). Plug the module onto the power-rail pair at one end of the breadboard. Set its two voltage jumpers: one side → 5V (for the AFE), the other side → 3.3V (for the ADS1220). Keep the 9V adapter unplugged / module switch off for now.
    Note: this module has no adjustable current limit — unlike a bench supply, nothing trips on a short. Your safety net is the wiring check in the last steps. Double-check before you power it.
  2. Seat the ADS1220 on the breadboard. Push it across the center gap — male pins into the holes, its two pin-rows landing on opposite sides of the notch — so every ADS1220 pin gets its own isolated 5-hole row. From here, every wire below means "plug into the same row as pin X." The Pico stays on its Freenove breakout to the side.
  3. Confirm your rails. The MB102 energizes both rail pairs at once: one red rail is +5V, the other red rail is +3V3, and both blue rails are GND (common through the module). Run one jumper to bridge the two blue GND rails so ground is rock-solid. You do not use the Pico's 3V3 pin anymore — the module supplies 3.3V directly.
  4. Tie all grounds together. The GND rail must join the MB102 −, the Pico's GND (via a breakout GND header — the Pico is powered over its own USB), ADS1220 AGND+DGND, and AFE GND. No shared ground = nonsense readings. (This is the dashed loop in the schematic and the dark wires in 3D.)
  5. Power the ADS1220 from 3V3. AVDD→+3V3, DVDD→+3V3, AGND/DGND→GND, CLK→GND (uses the internal oscillator). Leave REFP0/REFN0 unconnected — we use the internal 2.048V reference.
  6. Wire SPI to the Pico 5 wires: SCLK→GP18, DIN/MOSI→GP19, DOUT/MISO→GP16, CS→GP17, DRDY→GP20. Each is a male–female Dupont: male end into the ADS1220 pin's row, female end onto the breakout's labeled GP## header.
  7. Power the AFE. AFE VIN → the +5V rail (never to the ADC), AFE GND → GND rail. The MB102 output is convenient but electrically noisier than a lab supply — fine for bring-up; revisit supply quality later for clean ppb-level data.
  8. Wire the analog signals 4 wires, kept short: H2S WE→AIN0, AE→AIN1, Pt1000+→AIN2, Pt1000−→AIN3. male–female Dupont: female onto the AFE output pin, male into the same breadboard row as that ADS1220 input. Confirm which OP pins are the populated H2S slot from the board silkscreen + calibration sheet.
  9. Meter check before power-on. With the MB102 still off, ohm-check that the +5V rail and GND rail are not shorted, that the +3V3 and +5V rails aren't touching, and that each ADS1220 pin lands in the row you intended.
  10. Power on, watch for trouble. Plug in the 9V adapter and switch the MB102 on. Nothing should get warm, and the module shouldn't brown out or flicker. If anything heats up or the 3.3V/5V rails sag, switch off immediately — you have a short (no current limit to save you).
  11. Sanity-meter the AFE outputs. Measure WE and AE vs GND. They should read a steady voltage between 0 and 3.3V. If either exceeds 3.3V, stop and move the ADS1220 AVDD wire to the 5V rail while keeping DVDD/logic on the 3.3V rail (Pico safety).
Next lesson preview: with this wired, Lesson 02 writes the TinyGo ADS1220 driver — configure the mux for AIN0–AIN1, set the PGA and 20 SPS data rate, pick the internal 2.048V reference, then read DRDY and pull the 24-bit sample. That's your first number. (ADR-0006 calls for exactly this driver.)

5. Check yourself

Q1. Why can't the Pico's 3.3V power the AFE directly?

▸ reveal

The AFE needs 3.5–6.4V. 3.3V is below its minimum, so it wouldn't bias the sensor correctly. That's why the bench supply (5V) feeds VIN.

Q2. The ADS1220 has 4 analog inputs but the H2S sensor gives 2 outputs (WE, AE). What are AIN2 and AIN3 for?

▸ reveal

The AFE's on-board Pt1000 temperature sensor (AIN2=Pt1000+, AIN3=Pt1000−), read as a second differential pair. You need temperature to interpret the gas reading.

Q3. You measure AE = 4.1V. What do you do before connecting it to the ADC?

▸ reveal

4.1V > 3.3V AVDD, so it's out of range. Move the ADS1220 AVDD wire to the 5V rail (keep DVDD/logic on the 3.3V rail for Pico safety) so the input range covers the signal.

💬 I'm your teacher — ask me. Stuck on which OP pin is H2S? Want the TinyGo driver next? Not sure how to set the current limit on your specific supply? Just ask in chat. Say next lesson for the ADS1220 driver, or quiz me to be tested out loud on the signal chain.