LoRa Mesh Network Control System

A custom built LoRa mesh network of devices to control driving range equipment.

Project Overview

In order to enable a facility full of golf ball dispensers control machine activation for reservations from the front desk, I designed and built a private LoRa-based mesh network where a single controller device connected to a computer sends commands over radio to upwards of 100 dispenser nodes. Each dispenser device turns on and off the dispensers, counts balls dispensed, and tracks when it should turn itself off based on ball count or time. All dispenser nodes also automatically forwards packets across the network of dispensers distributed around the property to extend the range using the dispensers themselves.
Final Product in Enclosure (Hero Image) Final Product PCB (Hero Image) Final Product Connected to Control Box (Hero Image)

Firmware & Network Validation

Before designing any custom hardware, I validated the concept using Heltec WiFi LoRa 32 V3 development boards. The Heltec 32 has an ESP32 on board which is connected to a LoRa radio and OLED display. I orchestrated the design and writing of all firmware using Claude Code. The firmware uses ACK/retry logic, flood mesh forwarding, and robust message tracking to ensure all commands are acted on and no signals are lost. Once the network was behaving reliably on my test devices, I moved on to design a custom PCB to connect the Heltec board with the rest of the hardware.
Heltec 32 Dev Board Controller Node Testing Dispenser Nodes Testing

Circuit Evolution

The hardware went through three iterations. V1 was hand-wired on perfboard to prove out the MOSFET control circuit with a real dispenser control box. V2 moved to a custom PCB with proper power regulation, DIP switches for physical ID setting, extra output pins, and an input signal pin. V3 was the final production board and was designed to be easily installed into an enclosure.
Board V1 Board V2 Board V3

Designing the Custom PCB

I designed both board revisions from scratch in KiCad, starting with a schematic and then laying out the components and routing the PCB traces. The design integrates the Heltec microcontroller, a voltage regulator, four MOSFET output drivers, an optocoupler sensor input, and two 8-pin DIP switches for device addressing. The final board was sized to fit inside an off the shelf enclosure with marine cable connectors to keep the whole device weatherproof.
PCB Schematic PCB Layout Unsoldered PCB

Controller & Web App

The network of devices is operated from the controller device connected to a computer at the front desk. The controller device plugs into USB and interfaces over serial with a browser-based application. The web app was designed using Claude Code as well and enables the staff to monitor machines and easily set reservations to activate the dispensers, with no software installation required. Commands sent through the app travel over serial to the controller, which packages them into LoRa packets and delivers them across the mesh network, and are then acknowledged back over the network and displayed on the controller's OLED screen.