Digital filtering is insufficient for this purpose of of capturing only heart or lung sounds. This is because higher frequencies can alias into lower frequencies during digitisation. Analog filter is therefore necessary to anti-alias the incoming signal. The PCB of the analog filter is designed to be compact and simple, in order to fit within the dimensions of the Arduino.
The diagram above shows a Fourth-Order Sallens-Key Topology Buttersworth Bandpass filters for the heart and lung sounds. Buttersworth is chosen for its maximally flat response in order to minimise signal distortion. Sallen-Key is used for unity-gain and transistors are for arm toggling between recording the heart and lung sounds.
We manually soldered the PCB but the design was too messy and the prototype filter failed to work.
We decided to redesign and order a factory-etched and SMD-assembled PCB for reliability. The smaller size of each component and the double layers allowed for more complex designs. As such, we could use a Sixth-Order Sallens-Key Topology Buttersworth Bandpass Filter for the lungs arm to provide greater attenuation, and Third-Order Low-Pass for the heart arm as the microphone is unable to capture frequencies lower than heart sound frequencies.