← All notes

Notes · LoRa · MicroPython

LoRa in South Australia: a maker's guide to Meshtastic and LoRaWAN

28 Oct 20267 min read

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.

NameWhat it isHow messages travelBest for
LoRaThe radio modulation itself (Semtech chips such as the SX1262)Straight from one radio to anotherYour own point-to-point links and experiments
LoRaWANA network protocol on top of LoRaSensor → gateway → internet → your appSensors that report data: soil moisture, tank levels, weather
MeshtasticOpen-source firmware that turns LoRa boards into a text-messaging meshNode → node → node, no internet neededOff-grid chat, hiking, events, emergency comms
MeshCoreA newer mesh firmware with fixed repeaters and roaming clientsClient → repeater(s) → clientWider-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:

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.

GroupNetworkWhat you'll find
SA MeshMeshCoreSA 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)MeshtasticListed on the official Meshtastic local groups page; Discord-based
The Things Network – South AustraliaLoRaWANCommunity gateways you can connect sensors to free of charge, plus local members to ask about coverage
wireless.org.auAll of the aboveA 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.

HardwarePrice (AUD)ChipChoose it if…
Waveshare SX1262 LoRa module for Raspberry Pi Pico$24.70SX1262You already own a Pico and want to add LoRa
Heltec WiFi LoRa 32 V3approx. $35–45 importedESP32-S3 + SX1262You want an ESP32 with LoRa, OLED and battery charging on one board, and to code it yourself
RAK WisBlock Meshtastic Starter Kit$49.30nRF52840 + SX1262You want a low-power Meshtastic node to build into your own case
RAK WisMesh Pocket Mini$109.95nRF52840 + SX1262You want Meshtastic working in five minutes, no soldering
RAK WisMesh Pocket V2$164.95RAK4630You want a rugged handheld with GPS, screen and a 3200 mAh battery
⚠ Antenna first

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:

Thonny Shell
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.

lora_setup.py
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

main.py (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

main.py (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.

#LoRa#LoRaWAN#Meshtastic#MeshCore#MicroPython#Adelaide