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