A transformer is required to convert the analog pulse signal to a digital signal since the raspberry pi has no analog pins. I tried two different connections.
- ADS1015 connected to GPIO pins
- MCP3008 connected to SPI pins in Spi-Dev library
I found that the second configuration was much easier to code for and overall more accurate. I compared the pulse values to those given by a garmin smartwatch. using GPIO pins the pulse varied wildly and gave a value of 138BPM compared to the gramins value of 78BPM. Using the SPI library The pulse was measured at 78BPM compared to 72BPM by the smartwatch. This is within the standard tolerances used in portable heart rate monitors at a commercial level.
The code and wiring diagram can be found in the file log and instructions.