/ examples / tinylora_simpletest_si7021.py
tinylora_simpletest_si7021.py
  1  """Using TinyLoRa with a Si7021 Sensor.
  2  """
  3  import time
  4  import busio
  5  import digitalio
  6  import board
  7  import adafruit_si7021
  8  from adafruit_tinylora.adafruit_tinylora import TTN, TinyLoRa
  9  
 10  # Board LED
 11  led = digitalio.DigitalInOut(board.D13)
 12  led.direction = digitalio.Direction.OUTPUT
 13  
 14  # Create library object using our bus i2c port for si7021
 15  i2c = busio.I2C(board.SCL, board.SDA)
 16  sensor = adafruit_si7021.SI7021(i2c)
 17  
 18  # Create library object using our bus SPI port for radio
 19  spi = busio.SPI(board.SCK, MOSI=board.MOSI, MISO=board.MISO)
 20  
 21  # RFM9x Breakout Pinouts
 22  cs = digitalio.DigitalInOut(board.D5)
 23  irq = digitalio.DigitalInOut(board.D6)
 24  rst = digitalio.DigitalInOut(board.D4)
 25  
 26  # Feather M0 RFM9x Pinouts
 27  # cs = digitalio.DigitalInOut(board.RFM9X_CS)
 28  # irq = digitalio.DigitalInOut(board.RFM9X_D0)
 29  # rst = digitalio.DigitalInOut(board.RFM9X_RST)
 30  
 31  # TTN Device Address, 4 Bytes, MSB
 32  devaddr = bytearray([0x00, 0x00, 0x00, 0x00])
 33  
 34  # TTN Network Key, 16 Bytes, MSB
 35  nwkey = bytearray(
 36      [
 37          0x00,
 38          0x00,
 39          0x00,
 40          0x00,
 41          0x00,
 42          0x00,
 43          0x00,
 44          0x00,
 45          0x00,
 46          0x00,
 47          0x00,
 48          0x00,
 49          0x00,
 50          0x00,
 51          0x00,
 52          0x00,
 53      ]
 54  )
 55  
 56  # TTN Application Key, 16 Bytess, MSB
 57  app = bytearray(
 58      [
 59          0x00,
 60          0x00,
 61          0x00,
 62          0x00,
 63          0x00,
 64          0x00,
 65          0x00,
 66          0x00,
 67          0x00,
 68          0x00,
 69          0x00,
 70          0x00,
 71          0x00,
 72          0x00,
 73          0x00,
 74          0x00,
 75      ]
 76  )
 77  
 78  ttn_config = TTN(devaddr, nwkey, app, country="US")
 79  
 80  lora = TinyLoRa(spi, cs, irq, rst, ttn_config)
 81  
 82  # Data Packet to send to TTN
 83  data = bytearray(4)
 84  
 85  while True:
 86      temp_val = sensor.temperature
 87      humid_val = sensor.relative_humidity
 88      print("Temperature: %0.2f C" % temp_val)
 89      print("relative humidity: %0.1f %%" % humid_val)
 90  
 91      # Encode float as int
 92      temp_val = int(temp_val * 100)
 93      humid_val = int(humid_val * 100)
 94  
 95      # Encode payload as bytes
 96      data[0] = (temp_val >> 8) & 0xFF
 97      data[1] = temp_val & 0xFF
 98      data[2] = (humid_val >> 8) & 0xFF
 99      data[3] = humid_val & 0xFF
100  
101      # Send data packet
102      print("Sending packet...")
103      lora.send_data(data, len(data), lora.frame_counter)
104      print("Packet Sent!")
105      led.value = True
106      lora.frame_counter += 1
107      time.sleep(2)
108      led.value = False