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