Simple test

Ensure your device works with this simple test.

examples/tinylora_simpletest.py
 1# SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
 2# SPDX-License-Identifier: MIT
 3
 4import time
 5
 6import board
 7import busio
 8import digitalio
 9
10from adafruit_tinylora.adafruit_tinylora import TTN, TinyLoRa
11
12try:  # typing
13    from typing import Annotated, TypeAlias
14
15    bytearray4: TypeAlias = Annotated[bytearray, 4]
16    bytearray16: TypeAlias = Annotated[bytearray, 16]
17except ImportError:
18    pass
19
20# Board LED
21led = digitalio.DigitalInOut(board.D13)
22led.direction = digitalio.Direction.OUTPUT
23
24spi = busio.SPI(board.SCK, MOSI=board.MOSI, MISO=board.MISO)
25
26# RFM9x Breakout Pinouts
27cs = digitalio.DigitalInOut(board.D5)
28irq = digitalio.DigitalInOut(board.D6)
29rst = digitalio.DigitalInOut(board.D4)
30
31# Feather M0 RFM9x Pinouts
32# cs = digitalio.DigitalInOut(board.RFM9X_CS)
33# irq = digitalio.DigitalInOut(board.RFM9X_D0)
34# rst = digitalio.DigitalInOut(board.RFM9X_RST)
35
36# TTN Device Address, 4 Bytes, MSB
37devaddr: bytearray4 = bytearray([0x00, 0x00, 0x00, 0x00])
38
39# TTN Network Key, 16 Bytes, MSB
40nwkey: bytearray16 = bytearray(
41    [
42        0x00,
43        0x00,
44        0x00,
45        0x00,
46        0x00,
47        0x00,
48        0x00,
49        0x00,
50        0x00,
51        0x00,
52        0x00,
53        0x00,
54        0x00,
55        0x00,
56        0x00,
57        0x00,
58    ]
59)
60
61# TTN Application Key, 16 Bytess, MSB
62app: bytearray16 = bytearray(
63    [
64        0x00,
65        0x00,
66        0x00,
67        0x00,
68        0x00,
69        0x00,
70        0x00,
71        0x00,
72        0x00,
73        0x00,
74        0x00,
75        0x00,
76        0x00,
77        0x00,
78        0x00,
79        0x00,
80    ]
81)
82
83ttn_config = TTN(devaddr, nwkey, app, country="US")
84
85lora = TinyLoRa(spi, cs, irq, rst, ttn_config)
86
87while True:
88    data: bytearray4 = bytearray(b"\x43\x57\x54\x46")
89    print("Sending packet...")
90    lora.send_data(data, len(data), lora.frame_counter)
91    print("Packet sent!")
92    led.value = True
93    lora.frame_counter += 1
94    time.sleep(1)
95    led.value = False

Using TinyLora with a Sensor

Using TinyLoRa with a Si7021 Sensor

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

Using a single Channel

Ensure your device works with this simple test.

examples/tinylora_simpletest_single_channel.py
 1# SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
 2# SPDX-License-Identifier: MIT
 3
 4import time
 5
 6import board
 7import busio
 8import digitalio
 9
10from adafruit_tinylora.adafruit_tinylora import TTN, TinyLoRa
11
12try:
13    from adafruit_tinylora.adafruit_tinylora import bytearray4, bytearray16
14except ImportError:
15    pass
16
17# Board LED
18led = digitalio.DigitalInOut(board.D13)
19led.direction = digitalio.Direction.OUTPUT
20
21spi = busio.SPI(board.SCK, MOSI=board.MOSI, MISO=board.MISO)
22
23# RFM9x Breakout Pinouts
24cs = digitalio.DigitalInOut(board.D5)
25irq = digitalio.DigitalInOut(board.D6)
26rst = digitalio.DigitalInOut(board.D4)
27
28# Feather M0 RFM9x Pinouts
29# cs = digitalio.DigitalInOut(board.RFM9X_CS)
30# irq = digitalio.DigitalInOut(board.RFM9X_D0)
31# rst = digitalio.DigitalInOut(board.RFM9X_RST)
32
33# TTN Device Address, 4 Bytes, MSB
34devaddr: bytearray4 = bytearray([0x00, 0x00, 0x00, 0x00])
35
36# TTN Network Key, 16 Bytes, MSB
37nwkey: bytearray16 = bytearray(
38    [
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        0x00,
54        0x00,
55    ]
56)
57
58# TTN Application Key, 16 Bytess, MSB
59app: bytearray16 = bytearray(
60    [
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        0x00,
76        0x00,
77    ]
78)
79
80ttn_config = TTN(devaddr, nwkey, app, country="US")
81
82# Broadcasting on channel 0 in US Region - 903.9 MHz
83lora = TinyLoRa(spi, cs, irq, rst, ttn_config, channel=0)
84
85while True:
86    data = bytearray(b"\x43\x57\x54\x46")
87    print("Sending packet...")
88    lora.send_data(data, len(data), lora.frame_counter)
89    print("Packet sent!")
90    led.value = True
91    lora.frame_counter += 1
92    time.sleep(1)
93    led.value = False