code.py
1 # SPDX-FileCopyrightText: 2019 Brent Rubell for Adafruit Industries 2 # 3 # SPDX-License-Identifier: MIT 4 5 import time 6 import board 7 import busio 8 from digitalio import DigitalInOut 9 import adafruit_bme280 10 from adafruit_tinylora.adafruit_tinylora import TTN, TinyLoRa 11 12 # Unique feather identifier 13 FEATHER_ID = 1 14 15 i2c = busio.I2C(board.SCL, board.SDA) 16 bme280 = adafruit_bme280.Adafruit_BME280_I2C(i2c) 17 18 # TinyLoRa/RFM9x Setup 19 spi = busio.SPI(board.SCK, MOSI=board.MOSI, MISO=board.MISO) 20 # pylint: disable=c-extension-no-member 21 cs = DigitalInOut(board.RFM9X_CS) 22 irq = DigitalInOut(board.RFM9X_D0) 23 rst = DigitalInOut(board.RFM9X_RST) 24 25 # TTN Device Address, 4 Bytes, MSB 26 devaddr = bytearray([0x00, 0x00, 0x00, 0x00]) 27 28 # TTN Network Key, 16 Bytes, MSB 29 nwkey = bytearray([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 30 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]) 31 32 # TTN Application Key, 16 Bytess, MSB 33 app = bytearray([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 34 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]) 35 36 ttn_config = TTN(devaddr, nwkey, app, country='US') 37 38 lora = TinyLoRa(spi, cs, irq, rst, ttn_config, channel = 6) 39 40 # bme data packet 41 bme_d = bytearray(7) 42 43 while True: 44 # Grab sensor data 45 temp_val = int(bme280.temperature * 100) 46 humid_val = int(bme280.humidity * 100) 47 48 bme_d[0] = FEATHER_ID 49 # Temperature data 50 bme_d[1] = (temp_val >> 8) & 0xff 51 bme_d[2] = temp_val & 0xff 52 # Humidity data 53 bme_d[3] = (humid_val >> 8) & 0xff 54 bme_d[4] = humid_val & 0xff 55 56 print('Sending packet...') 57 lora.send_data(bme_d, len(bme_d), lora.frame_counter) 58 print('Packet sent!') 59 lora.frame_counter += 1 60 time.sleep(1 * 60)