Using the Pulse Sensor

Modern Device >>

The Modern Device Pulse / PSO2 / Proximity Sensor is based on the Silicon Labs SI1143 chip. It can be used for human or animal pulse oxygen sensing and proximity sensing of animals or objects. Purchase one in the MD shop.


This is a heartbeat / pulse / PSO2 sensor based on a Silicon Labs Si1143 chip. The chip wasn’t exactly designed for a pulse sensor but it has all the necessary ingredients. These include variable LED control for three LEDs and two photodiode detectors. The chip has a boatload of controls for controlling the LED pulsewidth, the LED current and which LEDs are on during which particular measurement. The chip does the analog front end functions of turning on an LED and and taking a light reading. All the other calculations of the pulse sensor are done in the microcontroller (‘duino or other).


The board is outfitted with two infrared LEDs and one red LED, for sensing of both IR and visible red light. The two frequencies of light are necessary for sensing and calculating the oxygen saturation in blood. The chip is shielded from direct rays of the LED with a small cowl of acrylic plastic. In use the light is refracted through the finger into the chip / sensor.

Hardware Hookup

The pinout of the board is made to natively fit Modern Deivce’s and Jeelabs JeeNode wireless boards, but the pulse sensor can very easily be used with any ‘duino or other microcontroller. It only involves hooking up four wires. GND, 3.3V (NOT 5 VOLTS), SDL, and SCA.

The headers for the board mate with JeeLabs/MD JeeNode boards natively. To use the sensor with a ‘duino:

  • Plug the GND pin into GND
  • The 3V3 pin into 3.3V (NOT 5V)
  • Use a couple of 10K series connectors to connect the SCL and SDA pins on the sensor to the ‘duino pins listed in the chart below. If you are using a JeeNode or other Jee board, just plug the sensor into a port – or use a six-pin extension cable.
Port SCL ‘duino pin SDA ‘duino pin
1 4 14 (A0)
2 5 15 (A1)
3 6 16 (A2)
4 7 17 (A3)


The code currently uses a bit-banged verion of I2C from the Ports Class in the JeeLabs library JeeLib.
If you don’t know what bit-banged means, don’t worry just follow the steps above and below.

Back to blog