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