Sensirion Raspberry Pi I2C SEN44 Driver

March 15, 2021 · View on GitHub

This document explains how to set up the SEN44 sensor module to run on a Raspberry Pi using the provided code.

Setup Guide

Connecting the Sensor

Your sensor has the five different connectors: VCC, GND, SDA, SCL, SEL (the sixth connector will not be used for now). Use the following pins to connect your SEN44:

SEN44Raspberry PiJumper Wire
VCCPin 2 (5V)Red
GNDPin 6Black
SDAPin 3Green
SCLPin 5Yellow
SELPin 9 (GND for I2C)Blue
PinNameDescriptionComments
1VDDSupply Voltage5V ±10%
2GNDGround
3RXUART: Receiving pin for communicationTTL 5V and LVTTL 3.3V compatible
SDAI2C: Serial data input / outputTTL 5V and LVTTL 3.3V compatible
4TXUART: Transmission pin for communicationTTL 5V and LVTTL 3.3V compatible
SCLI2C: Serial clock inputTTL 5V and LVTTL 3.3V compatible
5SELInterface selectLeave floating or pull to VDD to select UART
Pull to GND to select I2C
6NCDo not connect

Raspberry Pi

  • Install the Raspberry Pi OS on to your Raspberry Pi
  • Enable the I2C interface in the raspi-config
  • Download the driver for the Sensirion Github Page and extract the .zip on your Raspberry Pi
  • Compile the driver
    1. Open a terminal

    2. Navigate to the driver directory. E.g. cd ~/raspberry-pi-i2c-sen44

    3. Run the make command to compile the driver

      Output:

      rm -f sen44_i2c_example_usage
      cc -Os -Wall -fstrict-aliasing -Wstrict-aliasing=1 -Wsign-conversion -fPIC -I. -o sen44_i2c_example_usage  sen44_i2c.h sen44_i2c.c sensirion_i2c_hal.h sensirion_i2c.h sensirion_i2c.c \
      	sensirion_i2c_hal.c sensirion_config.h sensirion_common.h sensirion_common.c sen44_i2c_example_usage.c
      
  • Test your connected sensor
    • Run ./sen44_i2c_example_usage in the same directory you used to compile the driver.

      Output:

      Serial number: C081C2651224B6FE
      Firmware: 0.4, Hardware: 6.0
      Mass concentration pm1p0: 1 µg/m³
      Mass concentration pm2p5: 5 µg/m³
      Mass concentration pm4p0: 9 µg/m³
      Mass concentration pm10p0: 11 µg/m³
      Voc index: 0.0
      Ambient humidity: 36.77 %RH
      Ambient temperature: 26.20 °C
      Mass concentration pm1p0: 4 µg/m³
      Mass concentration pm2p5: 6 µg/m³
      Mass concentration pm4p0: 7 µg/m³
      Mass concentration pm10p0: 8 µg/m³
      Voc index: 0.0
      Ambient humidity: 36.77 %RH 
      Ambient temperature: 26.20 °C
      ...
      

Troubleshooting

Initialization failed

  • Ensure that you connected the sensor correctly: All cables are fully plugged in and connected to the correct pin.
  • Ensure that I2C is enabled on the Raspberry Pi. For this redo the steps on "Enable the I2C interface in the raspi-config" in the guide above.
  • Ensure that your user account has read and write access to the I2C device. If it only works with user root (sudo ./sen44_i2c_example_usage), it's typically due to wrong permission settings.