Joris ECG version 1.0
Schematic

Stages
INAMP
- J1: Three leads that connect to a persons chest.
- R1: Gain set resistor for a gain of about 7.
- U1: The popular AD620 inamp IC.
SUPPLY
- BT1/BT2: Batteries (I used 8.2V Lithium. Other values should work as long as the negative is no higher then -3 V for the AD620 to function properly and the positive at least 6.5 V or so for the signal to be able to go up to 5 V and accounting for an opamp that does not go to rail)
- SW1/SW2: For easy turning on/off
- R2/R3: Current limiting for the LED
- D1/D2: Power indicator light (otherwise I will forget to turn the supply off)
LEVEL ADJUST
- R4 and R6 form a summing amplifier, combined with RV1 to make the input level adjustable.
GAIN ADJUST
- The opamp is set as non-inverting, and R5 and RV2 determine the gain.
- RV2: A 100k potentiometer
- R5: A 330 ohm resistor. It had to be very small so the opamp gain can be in the hundreds.
OPAMP
- U2A/U2C (the power connections were separate in KiCad) A LM358 opamp, although any generic model would probably work.
ARDUINO PROTECT
- R7 and D3 (a 5.6 V Zener) protect thr Arduino's input ports by limiting the input voltage to anywhere between -0.7 and 5.6 V.
ARDUINO / LAPTOP
- Any microcontroller would work. I used an Arduino Nano.
- The Arduino is connected to (and powered by) my laptop through USB cable.
Notes
- For safety, do not use this circuit on your body when it is in any way connected to mains voltage! Use a laptop with a battery.
- This circuit has no mains filtering whatsoever, so will only work properly when at a distance from any mains cabling/outlets. The best result I got was outside in the garden.
- I am calling it VGND for 'virtual ground' although I am unsure if that is the correct term in my circuit. Since there is no actual 'earth ground' in my circuit I could probably name it regular GND.
Possible improvements
- Move the level adjust to after the opamp stage, because it is now too sensitive as it shifts the signal when it is only in the 0-50 mV range. Or add resistors to either end of the potentiometer for the same goal.
- Use (flexible, if they exist) coax cables for the 3 leads for even less noise.
- Find a fix for the voltage level seemingly shifting by itself.
- Prevent noise/spikes when the inputs are floating (I later found out this can probably be done with a 100k resistor from each input to VGND).
Pictures

Why this messy setup? I tried a breadboard before but the signal got too noisy probably due to flimsy connections. I also did not want to commit to a protoboard because that would make any modifications very hard. Note the VGND line is hovering over the rest of the circuit.

I used regular flexible power wire for the 3 leads. The electrodes are sticky and come with conductive gel already on the pads.

Placement of the pads. The best result (and the result in the next few pictures) was: RA to VGND, LL to IN-, LA to IN+. I Also tried wrist and leg clamps, which also worked but the signal was less pronounced.
This is probably the best result I got, outside in the garden.

This was in the middle of my room, a small distance away from mains voltages.

This was at my desk, close to mains voltage devices and outlets.