Notes · LoRa · MicroPython
LoRa in South Australia: a maker's guide to Meshtastic and LoRaWAN
LoRa lets a $30 board send a few bytes several kilometres on a coin-cell budget, with no SIM, no Wi-Fi and no licence. In South Australia, a farm, a vineyard or a hiking trail can sit well outside phone coverage, so that makes LoRa one of the most useful radios a maker can learn.
This guide covers what the LoRa family actually is, the rules you must follow in Australia, who is already running networks around Adelaide, what hardware to buy, and a first MicroPython project you can flash with Thonny tonight.
LoRa, LoRaWAN, Meshtastic and MeshCore in plain English
LoRa is the radio; everything else is a way of organising who talks to whom. The four names get mixed up constantly, so here is how they relate.
| Name | What it is | How messages travel | Best for |
|---|---|---|---|
| LoRa | The radio modulation itself (Semtech chips such as the SX1262) | Straight from one radio to another | Your own point-to-point links and experiments |
| LoRaWAN | A network protocol on top of LoRa | Sensor → gateway → internet → your app | Sensors that report data: soil moisture, tank levels, weather |
| Meshtastic | Open-source firmware that turns LoRa boards into a text-messaging mesh | Node → node → node, no internet needed | Off-grid chat, hiking, events, emergency comms |
| MeshCore | A newer mesh firmware with fixed repeaters and roaming clients | Client → repeater(s) → client | Wider-area messaging with planned repeater sites |
The short version: if you want a sensor to report data, think LoRaWAN. If you want people to send messages without phone coverage, think Meshtastic or MeshCore. If you just want to learn how the radio works, start with plain LoRa between two boards, which is what the project at the end of this note does.
The rules in Australia
In Australia, LoRa lives in the 915–928 MHz band, licence-free, at up to 1 W EIRP. That allowance comes from ACMA's Low Interference Potential Devices (LIPD) class licence, which covers digital modulation and frequency-hopping transmitters in this band (TTN Australia).
Three things trip up new makers:
- US gear is not automatically legal here. The US band runs 902–928 MHz, and the lower part is illegal to use in Australia. Most boards sold as "915 MHz" cover our band fine, but you must set the region correctly.
- Pick the right region in software. Meshtastic calls it ANZ; LoRaWAN calls it AU915. Set this before your first transmission.
- 1 W EIRP includes your antenna. EIRP is the power that leaves the antenna, so a high-gain antenna on a full-power radio can push you over the limit. Turn transmit power down when you add gain.
Ignore 433 MHz boards for long-range work. The 433 MHz LIPD allowance is only 25 mW and shares the band with the amateur 70 cm allocation.
Who's already on air in SA
You won't be starting from zero: Adelaide already has active Meshtastic, MeshCore and LoRaWAN communities. Join one before you buy hardware, because local groups often run their own radio presets and your node needs to match them to hear anyone.
| Group | Network | What you'll find |
|---|---|---|
| SA Mesh | MeshCore | SA radio settings, a live map and dashboard, wiki guides and a Discord covering Adelaide, the Fleurieu and wider SA |
| South Australia Meshtastic User Group (SA:MUG) | Meshtastic | Listed on the official Meshtastic local groups page; Discord-based |
| The Things Network – South Australia | LoRaWAN | Community gateways you can connect sensors to free of charge, plus local members to ask about coverage |
| wireless.org.au | All of the above | A national directory of community wireless groups, including Meshtastic Adelaide |
Check coverage before choosing a network. TTN Mapper shows where LoRaWAN gateways have been heard, and the SA Mesh map shows MeshCore repeaters.
Getting started: what to buy
For tinkering and MicroPython, buy a Heltec WiFi LoRa 32 V3; for plug-and-play messaging, buy a ready-made WisMesh node. Prices below are in AUD including GST, from Australian stock where available.
| Hardware | Price (AUD) | Chip | Choose it if… |
|---|---|---|---|
| Waveshare SX1262 LoRa module for Raspberry Pi Pico | $24.70 | SX1262 | You already own a Pico and want to add LoRa |
| Heltec WiFi LoRa 32 V3 | approx. $35–45 imported | ESP32-S3 + SX1262 | You want an ESP32 with LoRa, OLED and battery charging on one board, and to code it yourself |
| RAK WisBlock Meshtastic Starter Kit | $49.30 | nRF52840 + SX1262 | You want a low-power Meshtastic node to build into your own case |
| RAK WisMesh Pocket Mini | $109.95 | nRF52840 + SX1262 | You want Meshtastic working in five minutes, no soldering |
| RAK WisMesh Pocket V2 | $164.95 | RAK4630 | You want a rugged handheld with GPS, screen and a 3200 mAh battery |
Whatever you buy, order the 915 MHz version and never transmit without the antenna connected. Running a radio without an antenna can damage the transmitter.
Try it yourself: two Heltec V3 boards talking in MicroPython
This project sends a counter from one board to another and prints the signal strength, which is the fastest way to learn how far LoRa really reaches from your place. You need two Heltec WiFi LoRa 32 V3 boards, antennas fitted, and Thonny.
1. Flash MicroPython
In Thonny, go to Tools → Options → Interpreter, choose MicroPython (ESP32), then "Install or update MicroPython (esptool)". Pick the ESP32-S3 generic firmware.
2. Install the LoRa driver
Paste this into Thonny's Shell once per board, with your Wi-Fi details:
import network, mip, time
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect("YOUR_SSID", "YOUR_PASSWORD")
while not wlan.isconnected():
time.sleep(1)
mip.install("lora-sync")
mip.install("lora-sx126x")
3. Save the shared setup to each board
Save this to both boards as lora_setup.py. The pins match the Heltec V3; check your board's pinout if you use something else.
from machine import SPI, Pin
from lora import SX1262
LORA_CFG = {
"freq_khz": 917000, # inside the AU 915-928 MHz band
"sf": 9,
"bw": "125",
"coding_rate": 5,
"preamble_len": 8,
"output_power": 14, # dBm, about 25 mW
}
def get_modem():
spi = SPI(1, baudrate=2_000_000, polarity=0, phase=0,
sck=Pin(9), mosi=Pin(10), miso=Pin(11))
return SX1262(spi=spi, cs=Pin(8), busy=Pin(13), dio1=Pin(14),
reset=Pin(12), dio2_rf_sw=True,
dio3_tcxo_millivolts=1800, lora_cfg=LORA_CFG)
4. Save the sender to board A
import time
from lora_setup import get_modem
modem = get_modem()
count = 0
while True:
msg = "AP Design Labs #{}".format(count)
modem.send(msg.encode())
print("Sent:", msg)
count += 1
time.sleep(10)
5. Save the receiver to board B
from lora_setup import get_modem
modem = get_modem()
print("Listening on 917 MHz...")
while True:
rx = modem.recv(timeout_ms=15000)
if rx:
print("Got:", bytes(rx).decode(), "| RSSI:", rx.rssi, "dBm")
else:
print("Nothing heard")
6. Go for a walk
Leave the receiver plugged into your laptop and walk or drive the sender away. An RSSI around −120 dBm is near the edge of reception at SF9. Raise sf towards 12 for more range, at the cost of slower, longer transmissions. Keep transmissions short and spaced out, since you share the band with everyone else.
Where to next
Once two boards are talking, you have the core skill behind every LoRa project. From here you can add a sensor to the sender and report real data, flash Meshtastic onto one board and join the Adelaide mesh, or register a node on The Things Network.
At AP Design Labs we'll be following this up with a solar-powered sensor node build. Tell us what you'd like to monitor on your property and we'll design around it.
Sources
Checked October 2026.
- The Things Network – Australia rules and regulations
- TTN forum – Australian LIPD limits for 915–928 MHz
- Meshtastic – Local groups
- SA Mesh – MeshCore South Australia
- The Things Network – South Australia community
- wireless.org.au – Community directory
- Core Electronics – RAK and LoRa products
- micropython-lib LoRa driver example (projectgus)