This is Table 10 of the report with exact actions. Do the stages in order; if one fails, fix it before going on (section 09). Unplug USB every time you move a wire.
Uno and railsTable 10 · 1
Plug in the USB cable. The Uno's green ON LED lights. Meter on V⎓, black probe on a GND rail:
ExpectTop + rail about 5.0 V (4.7–5.2), bottom + rail about 3.3 V (3.2–3.4). Shifter HV strip 5 V, LV strip 3.3 V. Strip 20 bottom (VIN landing) 3.3 V.
Sensor powered, signals not connectedTable 10 · 2
Unplug USB. Plug in only the module's VIN and GND wires (17–18). Plug in USB. Measure on the module's own SDA and SCL pins (touch the red probe to the pin or the socket of its loose wire).
ExpectAbout 3.3 V on SDA and SCL: the pull-up pad is on 3.3 V. 1.8 V means the pad is on the 1.8 V side (fix at school, or carry on; it usually still works). 0 V means the module has no pull-ups: you will need R1 and R2.
I²C scannerTable 10 · 3
Unplug USB. Connect the module's SDA, SCL and INT wires (19–21). Plug in USB. Open step1_i2c_scanner, Upload, open Serial Monitor (magnifier icon top right), set the speed to 115200 baud.
I2C scanner - looking for the MAX30102 at 0x57
device at 0x57 <- MAX30102
Done, 1 device(s) found.
ExpectOne device at 0x57, repeated every 3 s. Wiggle the sensor wires gently while it runs: the result must not change.
Sensor checkTable 10 · 4
Upload step2_sensor_check. Serial Monitor at 115200.
Part ID: 0x15 OK (MAX30102)
Revision ID: 0x03
Die temperature: 27.31 C
INT on D2: idle HIGH, data waiting LOW -> INT wire OK
ExpectPart ID 0x15, a temperature near room temperature (the chip runs a few degrees warm; holding a finger on it raises it), and "INT wire OK". The revision number can differ.
Raw signal with a fingerTable 10 · 5
Upload oximeter_main. The sensor's red LED should now glow faintly (the IR LED is invisible; a phone's front camera sometimes shows it as purple). Close Serial Monitor, open Tools → Serial Plotter, set 115200, type w in its message box and press Enter. Put a finger on the sensor, strap it, keep still.
ExpectWithout a finger both lines are low. With a finger both jump up and settle, then show a small regular ripple: your pulse. Type p to see only the ripple (AC), which is much easier to read. Neither line may sit flat at 262143 (saturation).
Tune LED current and ADC rangeTable 10 · 6
In Serial Monitor (or the Plotter's message box) type s to see the settings and the current DC levels. Then adjust:
- I / i: IR LED current up / down by 1 mA. R / r: same for red. Each change restarts the filters.
- a: next ADC range (2048 → 4096 → 8192 → 16384 nA). A larger range takes more light before saturating.
ExpectAim for both DC values between about 50,000 and 200,000 (around the middle of 0–262,143), roughly equal for red and IR, with a clear ripple in plot mode. Write the final currents down; to keep them, put them in redCurrent, irCurrent and adcRange at the top of the sketch and upload again. The Uno's reset button brings back the values in the code.
Red/IR check (once): type r until the red current reads 0.0 mA. The red column must drop to almost nothing. If ir drops instead, set SWAP_RED_IR = true in the sketch.
Finger threshold (once): note the IR DC with no finger and with a finger (s). Set FINGER_DC_MIN to about halfway between them (the code's 30,000 is only a starting guess).
60 s rest recording, then 5 VTable 10 · 7
Type c to go back to CSV. Close the Arduino Serial Monitor and Plotter. Run record_session.m in MATLAB with durationS = 60, then analyze_recording.m on the file (section 08).
Then unplug USB, move wire 13's rail end from the 3V3 rail to the 5V rail (VIN = 5 V), plug in, check VIN strip reads 5 V, re-tune, record again and compare the SNR.
ExpectA clear peak at your heart rate in the analysis, an SNR value for each supply, and the spectrum heart rate within a few bpm of the firmware's.