Sths34pf80 not working - Human Presence

Hello,

I'm having some issues getting the mini human presence detector to work (SparkFun Mini Human Presence and Motion Sensor - STHS34PF80 (Qwiic) - SEN-23253 - SparkFun Electronics).
I am using an arduino uno and jumper wires to connect the sensor to the Uno.
However when I upload the example code

/******************************************************************************
  Example4_SPIFunctionality.ino
  
  Read human presence detection values from the STHS34PF80 sensor, print them
  to terminal using SPI communication instead of I2C. 
  Prints raw IR presence (cm^-1), if motion was detected, and temperature 
  in degrees C.

  SparkFun STHS34PF80 Arduino Library
  Madison Chodikov @ SparkFun Electronics
  Original Creation Date: September 19th, 2023
  https://github.com/sparkfun/SparkFun_STHS34PF80_Arduino_Library

  Development environment specifics:

  IDE: Arduino 2.2.1
  Hardware Platform: SparkFun RedBoard Qwiic	
  SparkFun Human Presence and Motion Sensor - STHS34PF80 (Qwiic) Version: 1.0
  SparkFun Qwiic Mini Human Presence and Motion Sensor - STHS34PF80 Version: 1.0

  Do you like this library? Help support SparkFun. Buy a board!

    SparkFun Human Presence and Motion Sensor - STHS34PF80 (Qwiic)
    https://www.sparkfun.com/products/22494
    
    SparkFun Qwiic Mini Human Presence and Motion Sensor - STHS34PF80
    https://www.sparkfun.com/products/23253

  Hardware Connections:
  Wire the SPI Connections from the RedBoard Qwiic to the STHS34PF80 Breakout 
  with a resistive divider using the header pins like so: 

  ARDUINO --> STHS34PF80
  SCK/SCL (13) --> Clock
  SDI/SDA (12) --> Data in
  !CS (10) --> Chip Select
  3.3V --> 3.3V
  GND --> GND

  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with this program.  If not, see <http://www.gnu.org/licenses/>.
******************************************************************************/

#include "SparkFun_STHS34PF80_Arduino_Library.h"
#include <SPI.h>

STHS34PF80_SPI mySensor; 

// Presence and Motion variables to fill
int16_t presenceVal = 0;
float temperatureVal = 0;

// Set your chip select pin according to your setup
uint8_t chipSelect = 10;

void write_addr(byte reg, byte val){
  digitalWrite(chipSelect, LOW);
  SPI.beginTransaction(SPISettings(1000000, MSBFIRST, SPI_MODE0));
  SPI.transfer(reg);
  SPI.transfer(val);
  SPI.endTransaction();

  digitalWrite(chipSelect, HIGH);
}


void setup()
{
    Serial.begin(115200);
    Serial.println("STHS34PF80 Example 4: SPI Functionality");

    // Configure the chip select pin
    pinMode(chipSelect, OUTPUT);
	  digitalWrite(chipSelect, HIGH);

    // Begin SPI
    SPI.begin();

    // Establish communication with device 
    if(mySensor.begin(chipSelect) == false)
    {
      Serial.println("Error setting up device - please check wiring.");
      while(1);
    }

    delay(500);

    //write_addr(0x20, 11111010);


}

void loop() 
{
  sths34pf80_tmos_drdy_status_t dataReady;
  mySensor.getDataReady(&dataReady);
  Serial.println(dataReady.drdy);

  // Check whether sensor has new data - run through loop if data is ready
  if(dataReady.drdy == 1)
  {
    sths34pf80_tmos_func_status_t status;
    mySensor.getStatus(&status);
    
    // If presence flag is high, then print data
    if(status.pres_flag == 1)
    {
      // Presence Units: cm^-1
      mySensor.getPresenceValue(&presenceVal);
      Serial.print("Presence: ");
      Serial.print(presenceVal);
      Serial.println(" cm^-1");
    }

    if(status.mot_flag == 1)
    {
      Serial.println("Motion Detected!");
    }

    if(status.tamb_shock_flag == 1)
    {
      mySensor.getTemperatureData(&temperatureVal);
      Serial.print("Temperature: ");
      Serial.print(temperatureVal);
      Serial.println(" °C");
    }
  }
}

I get the error: Error setting up device - please check wiring.

I am following the basic hookup guide Introduction - Hookup Guide - SparkFun Human Presence and Motion Sensor - STHS34PF80

I have tried all the examples from the library and modified the wiring hookup accordingly for the code and I still cannot get the sensor to work.
The led on the back of the sensor is lit and connections have been tested for shorts and continuity.

Example code and library I have been referencing:

I have also tried writing my own code using the addresses I found in the source code of the library and cannot get the sensor to talk back to the Arduino.

To rule out any other issues I have tried a new sensor and a mega, minima and another uno.

Any help would be greatly received.
Thank you

Hi guys,

For those interested, turns out I was being a bit slow and did not realise there were dedicated SDA & SCL pins on the Arduino although I still cant get SPI to work, I have managed to get i2c working (digital pins 20 & 21 on the MEGA2560)

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.