This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

How to get accelerometer value of Thingy:91?

I want to tranceive data to ADXL362 through SPI and refer to this program.

https://github.com/Rallare/fw-nrfconnect-nrf/tree/nrf9160_samples/samples/nrf9160/spi

However, I can't get data.

I only modified tx_buffer value.

void spi_test_send(void)
{
	int err;
	u8_t tx_buffer[1] = {0x00}; // Modified here
	u8_t rx_buffer[1];

	const struct spi_buf tx_buf = {
		.buf = tx_buffer,
		.len = sizeof(tx_buffer)
	};
	const struct spi_buf_set tx = {
		.buffers = &tx_buf,
		.count = 1
	};

	struct spi_buf rx_buf = {
		.buf = rx_buffer,
		.len = sizeof(rx_buffer),
	};
	const struct spi_buf_set rx = {
		.buffers = &rx_buf,
		.count = 1
	};

	err = spi_transceive(accel_spi_dev, &spi_cfg, &tx, &rx);
	if (err) {
		printk("SPI error: %d\n", err);
	} else {
		/* Connect MISO to MOSI for loopback */
		printk("TX sent: 0x%02x\n", tx_buffer[0]);
		printk("RX recv: 0x%02x\n", rx_buffer[0]);
//		tx_buffer[0]++;
	}	
}

Also, I added nrf9160_pca20035_v0_3_0.overlay file.

Any tip?

  • That would be my thought as well, are you sure you have erased the SiP before flashing that sample code?

  • Hi. I was unable to find any internal information about this.

    Is it always the Z-axis, or does it depend on the orientation of the device?

  • It seems to be just the Z-axis, all axis fluxuate somewhat but the Z axis while flat is definitely the worst of the fluxuations.


    This above was when it was configured in Wake Mode, I have placed it into Measurement mode without Wake Mode set and it seems more stable in the results from XYZ but it is having a hard time understanding motion from no motion.

    It will pass inactive threshold checks, drive the interrupt low but then it will detect "movement" over the activity threshold and bring the interrupt pin back to high. The Activity threshold is set higher than the inactivity threshold so that alone is very strange.

    Here are some results from measurement mode with the device on it's side so X is the axis experiencing -1g. Z will still bounce around a bit but it's more reasonable than registering drops of 400mg.

    X_INT   : -991  | Y_INT : 0003  | Z_INT : -063   (mg)                           
    X_INT   : -991  | Y_INT : 0127  | Z_INT : -123   (mg)                           
    X_INT   : -903  | Y_INT : 0000  | Z_INT : -054   (mg)                           
    X_INT   : -911  | Y_INT : 0062  | Z_INT : -095   (mg)                           
    X_INT   : -928  | Y_INT : 0016  | Z_INT : -095   (mg)                           
    X_INT   : -984  | Y_INT : 0024  | Z_INT : -071   (mg)                           
    X_INT   : -1020  | Y_INT : -031  | Z_INT : 0072   (mg)                          
    X_INT   : -899  | Y_INT : 0032  | Z_INT : -023   (mg)                           
    X_INT   : -927  | Y_INT : 0047  | Z_INT : -123   (mg)                           
    X_INT   : -960  | Y_INT : -031  | Z_INT : 0032   (mg)                           
    X_INT   : -1015  | Y_INT : -086  | Z_INT : 0124   (mg)                          
    X_INT   : -960  | Y_INT : 0040  | Z_INT : -087   (mg)                           
    X_INT   : -887  | Y_INT : -031  | Z_INT : -008   (mg)                           
    X_INT   : -896  | Y_INT : 0016  | Z_INT : -047   (mg)                           
    X_INT   : -911  | Y_INT : -047  | Z_INT : -094   (mg)                           
    X_INT   : -948  | Y_INT : 0048  | Z_INT : 0096   (mg)                           
    X_INT   : -927  | Y_INT : -031  | Z_INT : -046   (mg)                           
    X_INT   : -960  | Y_INT : 0000  | Z_INT : 0032   (mg)                           
    X_INT   : -944  | Y_INT : 0048  | Z_INT : -043   (mg)                           
    X_INT   : -960  | Y_INT : 0072  | Z_INT : 0004   (mg)                           
    X_INT   : -992  | Y_INT : 0048  | Z_INT : -087   (mg)                           
    X_INT   : -895  | Y_INT : 0031  | Z_INT : -127   (mg)                           
    X_INT   : -960  | Y_INT : 0024  | Z_INT : 0000   (mg)                           
    X_INT   : -895  | Y_INT : 0008  | Z_INT : -092   (mg)                           
    X_INT   : -903  | Y_INT : 0032  | Z_INT : 0000   (mg)                           
    X_INT   : -960  | Y_INT : 0032  | Z_INT : 0024   (mg)                           
    X_INT   : -959  | Y_INT : 0127  | Z_INT : -079   (mg)                           
    X_INT   : -928  | Y_INT : 0036  | Z_INT : -087   (mg)                           
    X_INT   : -839  | Y_INT : -055  | Z_INT : 0201   (mg)                           
    X_INT   : -943  | Y_INT : 0081  | Z_INT : -048   (mg)                           
    X_INT   : -944  | Y_INT : 0036  | Z_INT : 0048   (mg)                           
    X_INT   : -1000  | Y_INT : 0032  | Z_INT : -095   (mg)                          
    X_INT   : -983  | Y_INT : -068  | Z_INT : 0200   (mg)                           
    X_INT   : -984  | Y_INT : 0064  | Z_INT : -023   (mg)                           
    X_INT   : -960  | Y_INT : -031  | Z_INT : 0000   (mg)                           
    X_INT   : -863  | Y_INT : 0015  | Z_INT : -015   (mg)                           
    X_INT   : -896  | Y_INT : 0064  | Z_INT : 0048   (mg)                           
    X_INT   : -975  | Y_INT : 0032  | Z_INT : -076   (mg)                           
    X_INT   : -991  | Y_INT : -064  | Z_INT : 0144   (mg)                           
    X_INT   : -960  | Y_INT : -011  | Z_INT : 0016   (mg)                           
    X_INT   : -968  | Y_INT : 0032  | Z_INT : 0032   (mg)                           
    X_INT   : -864  | Y_INT : -063  | Z_INT : -031   (mg)                           
    X_INT   : -911  | Y_INT : -015  | Z_INT : 0000   (mg)                           
    X_INT   : -944  | Y_INT : 0032  | Z_INT : 0000   (mg)                           
    X_INT   : -960  | Y_INT : -031  | Z_INT : 0064   (mg)                           
    X_INT   : -879  | Y_INT : -048  | Z_INT : 0024   (mg)                           
    X_INT   : -895  | Y_INT : 0048  | Z_INT : -036   (mg)                           
    X_INT   : -880  | Y_INT : -039  | Z_INT : -031   (mg)                           
    X_INT   : -924  | Y_INT : 0016  | Z_INT : -031   (mg)                           
    X_INT   : -896  | Y_INT : -031  | Z_INT : 0000   (mg)                           
    X_INT   : -879  | Y_INT : -047  | Z_INT : 0031   (mg)                           
    X_INT   : -992  | Y_INT : 0064  | Z_INT : -063   (mg)  

    Z = 1g:

    X_INT   : 0097  | Y_INT : 0000  | Z_INT : 0904   (mg)                           
    X_INT   : 0039  | Y_INT : 0124  | Z_INT : 0832   (mg)                           
    X_INT   : 0097  | Y_INT : -016  | Z_INT : 0904   (mg)                           
    X_INT   : 0104  | Y_INT : -007  | Z_INT : 0864   (mg)                           
    X_INT   : 0015  | Y_INT : 0152  | Z_INT : 0792   (mg)                           
    X_INT   : 0112  | Y_INT : 0032  | Z_INT : 0903   (mg)                           
    X_INT   : -079  | Y_INT : -048  | Z_INT : 1220   (mg)                           
    X_INT   : 0127  | Y_INT : -007  | Z_INT : 0884   (mg)                           
    X_INT   : 0073  | Y_INT : 0000  | Z_INT : 0884   (mg)                           
    X_INT   : -047  | Y_INT : 0032  | Z_INT : 0975   (mg)                           
    X_INT   : -056  | Y_INT : 0000  | Z_INT : 1001   (mg)                           
    X_INT   : 0049  | Y_INT : 0024  | Z_INT : 0928   (mg)                           
    X_INT   : -031  | Y_INT : 0056  | Z_INT : 0969   (mg)                           
    X_INT   : -007  | Y_INT : -032  | Z_INT : 1112   (mg)                           
    X_INT   : 0065  | Y_INT : -064  | Z_INT : 1074   (mg)                           
    X_INT   : -063  | Y_INT : 0000  | Z_INT : 1111   (mg)                           
    X_INT   : 0064  | Y_INT : 0015  | Z_INT : 0836   (mg)                           
    X_INT   : -095  | Y_INT : -048  | Z_INT : 0984   (mg)                           
    X_INT   : 0000  | Y_INT : -023  | Z_INT : 1009   (mg)                           
    X_INT   : -084  | Y_INT : 0031  | Z_INT : 1000   (mg)                           
    X_INT   : -048  | Y_INT : 0016  | Z_INT : 0956   (mg)                           
    X_INT   : -062  | Y_INT : -048  | Z_INT : 1010   (mg)                           
    X_INT   : 0024  | Y_INT : -007  | Z_INT : 1057   (mg)                           
    X_INT   : -047  | Y_INT : 0159  | Z_INT : 0848   (mg)                           
    X_INT   : -039  | Y_INT : 0016  | Z_INT : 0969   (mg)                           
    X_INT   : -003  | Y_INT : 0080  | Z_INT : 0972   (mg)                           
    X_INT   : 0032  | Y_INT : 0000  | Z_INT : 1093   (mg)                           
    X_INT   : -031  | Y_INT : 0100  | Z_INT : 0880   (mg)                           
    X_INT   : -080  | Y_INT : 0000  | Z_INT : 1068   (mg)        

    Z = -1g

    X_INT   : -064  | Y_INT : 0080  | Z_INT : -927   (mg)                           
    X_INT   : -064  | Y_INT : -087  | Z_INT : -767   (mg)                           
    X_INT   : 0113  | Y_INT : -048  | Z_INT : -1007   (mg)                          
    X_INT   : -064  | Y_INT : -047  | Z_INT : -831   (mg)                           
    X_INT   : 0032  | Y_INT : 0036  | Z_INT : -958   (mg)                           
    X_INT   : -016  | Y_INT : -023  | Z_INT : -863   (mg)                           
    X_INT   : -064  | Y_INT : 0128  | Z_INT : -1055   (mg)                          
    X_INT   : -023  | Y_INT : 0132  | Z_INT : -1118   (mg)                          
    X_INT   : 0000  | Y_INT : 0017  | Z_INT : -984   (mg)                           
    X_INT   : -031  | Y_INT : 0096  | Z_INT : -1054   (mg)                          
    X_INT   : -065  | Y_INT : -063  | Z_INT : -687   (mg)                           
    X_INT   : 0112  | Y_INT : -063  | Z_INT : -928   (mg)                           
    X_INT   : -023  | Y_INT : 0088  | Z_INT : -1023   (mg)                          
    X_INT   : -064  | Y_INT : 0032  | Z_INT : -943   (mg)                           
    X_INT   : -030  | Y_INT : 0160  | Z_INT : -1031   (mg)                          
    X_INT   : 0096  | Y_INT : -094  | Z_INT : -928   (mg)                           
    X_INT   : 0053  | Y_INT : 0015  | Z_INT : -1039   (mg)                          
    X_INT   : -028  | Y_INT : -064  | Z_INT : -671   (mg)                           
    X_INT   : 0055  | Y_INT : 0064  | Z_INT : -1087   (mg)                          
    X_INT   : -015  | Y_INT : 0128  | Z_INT : -1055   (mg)                          
    X_INT   : -001  | Y_INT : 0048  | Z_INT : -1096   (mg)                          
    X_INT   : 0048  | Y_INT : -031  | Z_INT : -888   (mg)                           
    X_INT   : -003  | Y_INT : 0001  | Z_INT : -1008   (mg)                          
    X_INT   : 0000  | Y_INT : -110  | Z_INT : -784   (mg)                           
    X_INT   : -039  | Y_INT : -063  | Z_INT : -880   (mg)                           
    X_INT   : -048  | Y_INT : 0176  | Z_INT : -895   (mg)                           
    X_INT   : -063  | Y_INT : -062  | Z_INT : -800   (mg)                           
    X_INT   : -032  | Y_INT : 0064  | Z_INT : -927   (mg)          

    Configuration currently sent to the device to make the above results

    #define ACC_POWER_CTRL_STANDBY        0x00 /* Standby */
    #define ACC_POWER_CTRL_WAKE		        0x12 /* Measure, Low Noise Mode */
    #define ACC_FILTER_CTRL               0x03 /* 2g, 1/2 BW, 100Hz */
    #define ACC_SOFT_RESET                0x52 /* Reset Key */
    #define ACC_ACTIVITY_TIME             0x64 /* 100 Samples */
    #define ACC_ACTIVITY_THRESHOLD_MSB    0x02 /* See Act Thresh LSB */
    #define ACC_ACTIVITY_THRESHOLD_LSB    0xBC /* 700mg @ 2g */
    #define ACC_INACTIVITY_THRESHOLD_MSB  0x01 /* See Inact Thesh LSB */
    #define ACC_INACTIVITY_THRESHOLD_LSB  0x90 /* 400mg @ 2g */
    #define ACC_INACTIVITY_TIME_MSB       0x46 /* See Inact Time LSB */
    #define ACC_INACTIVITY_TIME_LSB       0x50 /* 18000 Samples */
    #define ACC_ACT_INACT_CTRL            0x3F /* Loop Mode, Inact Ref & EN, Act Ref & EN */
    #define ACC_INT1_MAP                  0x40 /* Active High, Map Awake */
    #define ACC_INT2_MAP                  0x00 /* Active High, Map Nothing */

  • Thank you, guys, to help me:)

    It doesn't fix the issue with no luck.

    - install nrfjprog tool
    - run nrfjprog -e 
    - build and run on SES

  • That's weird, have you had success flashing applications to your Thingy:91 in the past?

    Try flashing this to your Thingy:91 with the nRF Connect Programmer app
    It should configure your ADXL362 and print XYZ data to the terminal.

    The main functionality of this sample is 30 second online (green LED flashing) when motion is detected.

    It will start up in online mode and sleep after 30seconds of no activity. Shake it to wake it up. It's not very sensitive atm due to this issues I'm having with the Z axis so shake it reasonably or flip the orientation.

    1325.merged.hex

    I still don't know why the DevZone adds that number at the start of the file, do rename it to just merged.hex to avoid any computer issues.

Related