India mein LoRa Pet Tracker Kaise Banayein (No Monthly Fees)

Bina cellular network aur monthly subscription ke, apne pets ko kilometer door tak track karne ka apna system banayein.

LoRa Pet Tracker System Overview
System Overview: Ek Base Station poore neighborhood ke pets ko track kar sakta hai.

Kyun Banayein Apna Tracker?

Agar aapne kabhi market mein milne wale commercial pet trackers dekhe hain, toh aap jante honge ki wo kitne mehenge hote hain. Unme har mahine subscription dena padta hai aur wo mobile network (SIM card) par chalte hain. Matlab agar aap trekking par gaye ya kisi gaon (rural area) mein hain jahan network nahi hai, toh wo tracker bekar ho jata hai.

Is guide mein, hum LoRa (Long Range) technology ka use karke ek private tracking system banayenge. Chahe aapke paas ek puppy ho ya poora pack, ye system sabke liye kaam karega—ek receiver kai saare pets ko ek saath track kar sakta hai.

1. Kharcha Kitna Aayega? (India Pricing)

Is project ki sabse achi baat ye hai ki "Base Station" (Receiver) ka kharcha bas ek baar hota hai. Aapko sirf "Tracker Node" (jo pet ke gale mein hoga) ko replicate karna hai. Yahan local suppliers (jaise Robu, RhydoLabz) ke hisaab se pricing di gayi hai.

Heltec LoRa Board
Heltec WiFi LoRa 32 V3: Is project ka dimaag aur radio.

Per-Pet Tracker (Transmitter)

Component Approx. Price (INR) Notes
Heltec WiFi LoRa 32 V3 ₹2,200 – ₹2,600 Inbuilt OLED display aur LoRa radio ke saath.
GPS Module (NEO-6M) ₹350 – ₹550 Ceramic antenna included hota hai.
LiPo Battery (1000mAh) ₹400 – ₹600 Robu.in par "3.7V Lithium Polymer" check karein.
Casing (3D Printed) ₹300 – ₹500 Local printing service ya filament cost.
Total (Per Pet) ~₹3,250 – ₹4,250
NEO-6M GPS
NEO-6M GPS Module
LiPo Battery
3.7V LiPo Battery

Base Station (Receiver)

Aapko sirf ek receiver chahiye, chahe aapke paas kitne bhi pets hon.

2. Tracking Multiple Pets (Ek Antenna se)

Jee haan, ye bilkul sach hai. LoRa WiFi ki tarah ek networking protocol hai. Jaise aapka WiFi router ghar ke 10 phones se connect ho sakta hai, waise hi aapka LoRa receiver multiple pet collars ko sun sakta hai.

Ye Kaise Kaam Karta Hai?

3. The Wiring (Universal)

Har collar ke liye wiring same rahegi. Connections bahut simple hain:

Wiring Circuit Diagram
GPS Module, Battery aur Heltec Board ke beech ka connection.
GPS VCC → Heltec 3V3
GPS GND → Heltec GND
GPS TX → Heltec GPIO 47
GPS RX → Heltec GPIO 48

4. The Code (Multi-Pet Ready)

A. Transmitter Code (The Collar)

Ye code pet ke board par upload karein. Zaruri: Har naye pet ke liye String deviceID change karna na bhulein!

#include 
#include 

// --- CONFIGURATION ---
String deviceID = "BUDDY_01"; // Pet 2 ke liye isse change kare (e.g., "DAISY_02")
// ---------------------

#define GPS_RX 47
#define GPS_TX 48

HardwareSerial gpsSerial(1);
TinyGPSPlus gps;

void setup() {
  heltec_setup();
  gpsSerial.begin(9600, SERIAL_8N1, GPS_RX, GPS_TX);
  
  // LoRa Settings for Long Range
  radio.setBandwidth(125.0);
  radio.setSpreadingFactor(12);
  radio.setCodingRate(8);
  radio.setOutputPower(22);
}

void loop() {
  heltec_loop();

  while (gpsSerial.available() > 0) {
    gps.encode(gpsSerial.read());
  }

  static unsigned long lastSend = 0;
  // Send every 15 seconds + a random delay to avoid collision
  int randomDelay = random(0, 2000); 
  
  if (millis() - lastSend > (15000 + randomDelay)) {
    if (gps.location.isValid()) {
      // Packet Format: "ID,Lat,Lng" -> "BUDDY_01,18.5204,73.8567"
      String payload = deviceID + "," + String(gps.location.lat(), 6) + "," + String(gps.location.lng(), 6);
      
      display.clear();
      display.printf("Sending: %s", payload.c_str());
      radio.transmit(payload.c_str());
    } else {
      display.clear();
      display.println("Waiting for GPS...");
    }
    lastSend = millis();
  }
}

B. Receiver Code (The Base Station)

Ye Python script aapke Debian PC ya Laptop par chalegi. Ye ab multiple pets ko handle karti hai aur sabko ek hi log file mein save karti hai.

import serial
import csv
import time

SERIAL_PORT = '/dev/ttyACM0' 
LOG_FILE = "/home/user/tracker_logs.csv"

def main():
    ser = serial.Serial(SERIAL_PORT, 115200, timeout=1)
    print(f"Tracking System Active on {SERIAL_PORT}...")

    with open(LOG_FILE, mode='a', newline='') as file:
        writer = csv.writer(file)
        # Add "Pet_ID" to the header if file is empty
        if file.tell() == 0:
            writer.writerow(["Timestamp", "Pet_ID", "Latitude", "Longitude", "RSSI"])

        while True:
            if ser.in_available():
                try:
                    # Expecting: "BUDDY_01,18.5204,73.8567"
                    line = ser.readline().decode('utf-8').strip()
                    
                    if "," in line:
                        parts = line.split(",")
                        if len(parts) >= 3:
                            pet_id = parts[0]
                            lat = parts[1]
                            lng = parts[2]
                            timestamp = time.strftime("%Y-%m-%d %H:%M:%S")
                            
                            print(f"[{timestamp}] {pet_id} is at {lat}, {lng}")
                            writer.writerow([timestamp, pet_id, lat, lng])
                            file.flush()
                except Exception as e:
                    print(f"Signal Glitch: {e}")

if __name__ == "__main__":
    main()

5. Summary & Tips for Indian Users

High Gain Antenna
Better Range ke liye External Antenna.