Build a DIY LoRaWAN GPS Asset Tracker for $35
Bicycles, drones, dog collars, fleet vans — track them anywhere a gateway sees the sky. No cell plan, no monthly fees, and 5+ years on a single 18650.
Why LoRaWAN beats LTE-M for trackers
LTE-M and NB-IoT modules look attractive until you read the fine print: a SIM, a data plan, and a 50–150 mA peak that crushes coin cells. LoRaWAN flips the math. A single uplink at SF7 takes ~50 ms at 30 mA, the public The Things Network has free coverage in most metros, and a 3000 mAh 18650 lasts 5–8 years with a 15-minute fix interval.
Bill of materials (BOM)
| Part | Notes | Cost |
|---|---|---|
| Heltec WiFi LoRa 32 V3 | ESP32-S3 + SX1262 + OLED | $15 |
| u-blox NEO-6M GPS | Cheap, hot-fix in 1 s with backup cap | $6 |
| 18650 cell + holder | Panasonic NCR18650B 3400 mAh | $8 |
| TP4056 charge board | USB-C input, 1 A charge | $1 |
| 3D printed enclosure | PLA, ~30 g | $1 |
| Antenna pigtail + 868/915 whip | Don't skip this | $4 |
Total: ~$35 per tracker. At quantity 100 from Shenzhen, BOM drops below $19.
Wiring diagram
Firmware: deep sleep is the trick
The ESP32-S3 idles at 8 ยตA in deep sleep. The NEO-6M, however, draws 35 mA continuously. That's your battery's enemy. Strategy: power the GPS via a MOSFET, take a fix, send, sleep. Use an RTC to fire every 15 minutes.
#include <LoRaWan_APP.h>
#include <TinyGPS++.h>
TinyGPSPlus gps;
#define GPS_PWR 5
RTC_DATA_ATTR int boot = 0;
void onTxDone(void){ TimerSetValue(&wakeUp,15*60*1000); TimerStart(&wakeUp); deepSleep(); }
void loop(){
digitalWrite(GPS_PWR, HIGH); // power GPS
unsigned long t=millis();
while(millis()-t < 90000) if(Serial2.available()) gps.encode(Serial2.read());
digitalWrite(GPS_PWR, LOW);
uint8_t pl[11];
int32_t lat=gps.location.lat()*1e7, lon=gps.location.lng()*1e7;
memcpy(pl,&lat,4); memcpy(pl+4,&lon,4); pl[8]=getBatt();
LoRaWAN.send(11,pl,1,false);
}
Range tests we actually ran
On a clear morning in Berlin, with the tracker on a bicycle handlebar and a single TTN gateway on a 6th-floor balcony, we logged 11.4 km at SF7 before packet loss exceeded 50 %. Inside an underground garage, even SF12 didn't penetrate concrete — bake that into your product spec.
Productizing it
This BOM is the seed of a real business. Sell to:
- Construction sites tracking expensive tools (~$40 ARPU/month, 10 trackers per site)
- Bike fleets (Lime, Voi, local rentals) — they pay for hardware up-front
- Container loggers for short-haul logistics with custom geofencing
Build a 50-unit pilot, host the backend on a $5 Hetzner box with ChirpStack, and charge $7/tracker/month for the dashboard. Margins are healthy because the radio is essentially free.
Where it breaks (and how to fix it)
Cold-start GPS in canyons. Solder a 0.1 F supercap to the NEO-6M backup pin — fix time drops from 35 s to 2 s. Antenna nulls. The whip antenna has dead zones along its axis; orient it perpendicular to the gateway. FCC vs ETSI duty cycle. Europe limits you to 1 % airtime per hour at 868 MHz. The US is freer but use 915 MHz hardware.
Comments
Post a Comment