Notes · LoRa · Solar · MicroPython
Why SA's solar farms are going LoRa
Utility-scale solar farms are cutting the cables and monitoring their equipment over LoRa. You can build a backyard version of the same idea for well under $100.
In late August, chipmaker Semtech made the case that LoRa is becoming the go-to radio for watching everything on a solar farm except the panels themselves: the trackers that tilt them, the inverters that convert their power, and the robots that clean them (IT Brief Australia). For South Australia, this is a story worth watching.
Why it matters in SA
South Australia runs on sunshine and wind more than almost anywhere. In 2024/25, solar PV supplied over 32% of the state's electricity and wind about 45%, and the state is aiming for 100% net renewable electricity by 2027 (SA Department for Energy and Mining).
Six solar farms above 30 MW are connected to the grid here. They sit in remote, flat country where mobile coverage can be thin, and every tracker motor and inverter needs watching.
What a solar farm monitors over LoRa
- Trackers. Panel angle, motor status, and faults in motors, actuators and gearboxes. A 250 MW project can have 5,000 to 10,000 tracker rows.
- Inverters. Generation, voltage and current, plus heat-related efficiency losses and wear.
- Cleaning robots. Battery charge, position, whether a cleaning cycle finished, and mechanical faults.
One real-world example: Spanish tracker maker PV Hardware uses wind sensors that tell trackers to stow their panels over LoRaWAN when gusts pass a threshold. Semtech says the company has several hundred thousand LoRaWAN trackers across more than 650 projects (IT Brief Australia).
Why LoRa beats cable and 4G here
- No trenching. Running RS485 cable and conduit across hundreds of hectares is slow and expensive. Radio skips the digging.
- No monthly fees. A private LoRa network has no per-device cellular charges and doesn't depend on a mobile tower nearby.
- Few gateways. LoRa's long range means one gateway can cover a whole site, where Wi-Fi or Zigbee would need many access points.
- Low power. LoRa radios draw little current, which matters for battery-powered robots and sensors.
Is it happening locally?
Adelaide already has firms selling this. One local IoT provider advertises LoRaWAN radio coverage analysis for shipyards, vineyards and solar farms, using Australia's AU915 frequency plan (WZ-IT Adelaide).
A pinch of salt: the strongest claims here come from Semtech, which makes LoRa chips. Cellular, wired and other wireless options still have their place. But the economics of "one gateway, no trenches, no SIM fees" are hard to argue with on a remote site.
The hobby-scale version
You don't need a 250 MW farm to try this. Here's a backyard solar monitor that measures a small panel's voltage, current and power and sends the readings over LoRa to a receiver inside the house. It's written in MicroPython and loaded with Thonny.
Parts
- 2 × Raspberry Pi Pico (one sender, one receiver)
- 2 × REYAX RYLR998 LoRa modules, 820–960 MHz, set to 915 MHz (datasheet)
- 1 × INA219 current sensor breakout, rated to 26 V and ±3.2 A (Adafruit)
- A small 12 V or 18 V "battery maintainer" style panel, a load or charge controller, and a weatherproof box
Expect roughly $60–$100 in total, depending on what's already in your parts drawer (approx.).
Wiring the sender
- INA219 to Pico: VCC to 3V3, GND to GND, SDA to GP2, SCL to GP3.
- RYLR998 to Pico: VDD to 3V3, GND to GND, RXD to GP0 (Pico TX), TXD to GP1 (Pico RX). The module runs on 3.3 V, so never feed it 5 V.
- Panel: run the panel's positive lead through the INA219's VIN+ and VIN− terminals on the way to your load or charge controller.
Sender code (save as main.py on the outdoor Pico)
# AP Design Labs - hobby solar monitor (sender)
# Pico + INA219 + RYLR998 at 915 MHz. MicroPython, loaded with Thonny.
from machine import I2C, UART, Pin
import time
INA_ADDR = 0x40
SHUNT_OHMS = 0.1 # standard INA219 breakout shunt
i2c = I2C(1, sda=Pin(2), scl=Pin(3), freq=100000)
lora = UART(0, baudrate=115200, tx=Pin(0), rx=Pin(1))
def read_reg(reg):
data = i2c.readfrom_mem(INA_ADDR, reg, 2)
return (data[0] << 8) | data[1]
def bus_volts():
return (read_reg(0x02) >> 3) * 0.004 # 4 mV per bit
def amps():
raw = read_reg(0x01) # shunt voltage, 10 uV per bit
if raw > 32767:
raw -= 65536
return raw * 0.00001 / SHUNT_OHMS
def at(cmd):
lora.write(cmd + "\r\n")
time.sleep(0.3)
print(cmd, "->", lora.read())
at("AT+BAND=915000000") # Australian 915 MHz band
at("AT+ADDRESS=1") # this node
at("AT+NETWORKID=18") # must match the receiver
while True:
v = bus_volts()
i = amps()
msg = "V={:.2f},I={:.3f},P={:.2f}".format(v, i, v * i)
at("AT+SEND=2,{},{}".format(len(msg), msg))
time.sleep(60)
Receiver code (save as main.py on the indoor Pico)
# AP Design Labs - hobby solar monitor (receiver)
from machine import UART, Pin
import time
lora = UART(0, baudrate=115200, tx=Pin(0), rx=Pin(1))
for cmd in ("AT+BAND=915000000", "AT+ADDRESS=2", "AT+NETWORKID=18"):
lora.write(cmd + "\r\n")
time.sleep(0.3)
lora.read()
while True:
line = lora.readline()
if line and line.startswith(b"+RCV"):
print(line.decode().strip())
Each line in Thonny's shell shows the reading plus the signal strength (RSSI) and signal-to-noise ratio (SNR) at the end. Walk the receiver down the street to see how far your link reaches. That's the same range test a solar farm installer does, just smaller.
Running the sender from a battery? The battery life calculator and Will it survive winter? will tell you how big the cell and panel need to be.
This project is for small, low-voltage hobby panels only. The INA219 is rated to 26 V. Never connect it, or anything like it, to a rooftop solar system: those strings run at hundreds of volts DC and can kill. Work on a home solar system is a job for a licensed electrician.
Sources
Checked October 2026.
- IT Brief Australia – Semtech touts LoRa for utility-scale solar monitoring (29 August 2026)
- SA Department for Energy and Mining – Leading the green economy
- WZ-IT – IoT services Adelaide
- REYAX – RYLR998 datasheet
- Arduino Project Hub – RYLR998 AT command example
- Adafruit – INA219 current sensor breakout