/ examples / rockblock_feather_sense_sensors.py
rockblock_feather_sense_sensors.py
 1  import time
 2  import struct
 3  import board
 4  import adafruit_lsm6ds
 5  import adafruit_lis3mdl
 6  import adafruit_apds9960.apds9960
 7  import adafruit_sht31d
 8  import adafruit_bmp280
 9  import adafruit_rockblock
10  
11  # RockBlock setup
12  uart = board.UART()
13  uart.baudrate = 19200
14  rb = adafruit_rockblock.RockBlock(uart)
15  
16  # all the sensors
17  accelo = adafruit_lsm6ds.LSM6DS33(board.I2C())
18  magno = adafruit_lis3mdl.LIS3MDL(board.I2C())
19  prox = adafruit_apds9960.apds9960.APDS9960(board.I2C())
20  sht = adafruit_sht31d.SHT31D(board.I2C())
21  bmp = adafruit_bmp280.Adafruit_BMP280_I2C(board.I2C())
22  
23  # build data
24  # can decode on other end with struct.unpack("<6fB5f", data)
25  data = struct.pack("3f", *accelo.acceleration)
26  data += struct.pack("3f", *magno.magnetic)
27  data += struct.pack("B", prox.proximity())
28  data += struct.pack("2f", sht.relative_humidity, sht.temperature)
29  data += struct.pack("3f", bmp.pressure, bmp.altitude, bmp.temperature)
30  
31  # send data
32  rb.data_out = data
33  print("Talking to satellite...")
34  retry = 0
35  status = rb.satellite_transfer()
36  while status[0] > 8:
37      time.sleep(10)
38      status = rb.satellite_transfer()
39      print(retry, status)
40      retry += 1
41  print("\nDONE.")