sths34pf80 not working - Human Presence

Hello,

I’m having some issues getting the mini human presence detector to work (https://www.sparkfun.com/products/23253).

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 https://docs.sparkfun.com/SparkFun_Qwii … roduction/

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:

https://github.com/sparkfun/SparkFun_ST … no_Library

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

Are your jumper wires soldered to the board or do you have header pins soldered to the board?

Photos showing how things are connected would be very helpful.

Also, it looks like you’re using the SPI code, have you modified the jumpers on the board to set it to SPI?

The wires are directly soldered to the sensor and plugged into the Arduino, I have tried to upload an image however it wont let me so if I can upload some photos when I am home I will.

I have however ensured continuity from the Arduino to the sensor board and all seems to be connected perfectly, although i admit soldering wires to the board and plugging straight into the Arduino is not the neatest. Below I will lay out the direct connections I am using.

GND → GND

3V3 → 3.3v

SDA → pin 12

SCL → pin 13

CS - > pin 10

Edit: i have also attempted to use the i2c sketch where I had the connections as follows:

GND → GND

3V3 → 3.3v

SDA → A4

SCL → A5

Hi guys,

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)