Tech Gyan Set
Published © MIT

Smart Diesel Theft Detection System (Truck / Generator)

Smart IoT system that detects diesel theft in real-time and sends instant alerts for trucks and generators. πŸš›πŸ”₯

BeginnerFull instructions provided8 hours380
Smart Diesel Theft Detection System (Truck / Generator)

Things used in this project

Software apps and online services

Arduino IDE
Arduino IDE

Story

Read more

Code

1️⃣ Required Libraries + Pin Definitions

C/C++
πŸ“ Use:
Ultrasonic sensor aur LTE communication ke liye hardware setup.
// ===== Libraries =====
#include <HardwareSerial.h>

// ===== Pin Configuration =====
#define TRIG_PIN 5       // Ultrasonic trigger
#define ECHO_PIN 18      // Ultrasonic echo
#define LTE_RX 27        // LTE TX connected here
#define LTE_TX 26
#define BUZZER_PIN 23    // Alert buzzer

// ===== Objects =====
HardwareSerial LTE_Serial(2);  // UART2 for LTE

πŸ”Ÿ Main Loop

C/C++
πŸ“ Use:
Har 10 second fuel check + cloud update karega.
void loop() {

  if (millis() - lastCheckTime > 10000) {  // Every 10 sec
    checkFuelDrop();
    sendToServer();
    lastCheckTime = millis();
  }

  delay(1000);
}

2️⃣ Global Variables

C/C++
πŸ“ Use:
Fuel level tracking aur theft detection threshold define karta hai.
float tankHeight = 100.0;      // Tank height in cm (calibrate)
float fuelLevelCM = 0.0;
float previousFuelLevel = 0.0;
float suddenDropThreshold = 5.0;  // 5 cm drop alert threshold

unsigned long lastCheckTime = 0;
bool theftDetected = false;

3️⃣ Setup Function

C/C++
πŸ“ Use:
Sensor aur LTE initialize karta hai.
void setup() {
  Serial.begin(115200);

  pinMode(TRIG_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);
  pinMode(BUZZER_PIN, OUTPUT);

  digitalWrite(BUZZER_PIN, LOW);

  LTE_Serial.begin(9600, SERIAL_8N1, LTE_RX, LTE_TX);

  delay(2000);
  initLTE();

  Serial.println("πŸš› Diesel Theft Detection System Started");
}

4️⃣ LTE Initialization

C/C++
πŸ“ Use:
LTE network connection establish karta hai.
void initLTE() {
  sendAT("AT");               // Check module
  sendAT("ATE0");             // Echo OFF
  sendAT("AT+CGATT=1");       // Attach to network
}

5️⃣ AT Command Helper

C/C++
πŸ“ Use:
LTE module ko AT command bhejne aur response dekhne ke liye.
void sendAT(String cmd) {
  LTE_Serial.println(cmd);
  delay(1000);

  while (LTE_Serial.available()) {
    Serial.write(LTE_Serial.read());
  }
}

6️⃣ Ultrasonic Distance Read Function

C/C++
πŸ“ Use:
Fuel surface tak distance measure karta hai
Distance β†’ Fuel height convert karta hai
float readFuelLevel() {

  digitalWrite(TRIG_PIN, LOW);
  delayMicroseconds(2);

  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);

  long duration = pulseIn(ECHO_PIN, HIGH, 30000);

  float distance = duration * 0.034 / 2;  // cm

  float fuelHeight = tankHeight - distance;

  return fuelHeight;
}

7️⃣ Theft Detection Logic

C/C++
πŸ“ Use:
Agar fuel level sudden drop kare threshold se zyada β†’ theft alert trigger karega.
void checkFuelDrop() {

  fuelLevelCM = readFuelLevel();

  Serial.print("Fuel Level: ");
  Serial.println(fuelLevelCM);

  if (previousFuelLevel == 0) {
    previousFuelLevel = fuelLevelCM;
  }

  float drop = previousFuelLevel - fuelLevelCM;

  if (drop > suddenDropThreshold) {
    theftDetected = true;
    Serial.println("🚨 Sudden Fuel Drop Detected!");
    triggerAlert(drop);
  }

  previousFuelLevel = fuelLevelCM;
}

8️⃣ Alert Function (SMS + Buzzer)

C/C++
πŸ“ Use:
Sudden drop hone par SMS alert + buzzer activate karta hai.
void triggerAlert(float dropValue) {

  digitalWrite(BUZZER_PIN, HIGH);

  LTE_Serial.println("AT+CMGF=1");
  delay(500);

  LTE_Serial.println("AT+CMGS=\"+919999999999\"");  // Replace number
  delay(500);

  LTE_Serial.print("Diesel Theft Alert! Fuel Drop: ");
  LTE_Serial.print(dropValue);
  LTE_Serial.print(" cm");
  delay(500);

  LTE_Serial.write(26);  // CTRL+Z

  delay(5000);
  digitalWrite(BUZZER_PIN, LOW);
}

9️⃣ Send Fuel Data to Cloud (HTTP Example)

C/C++
πŸ“ Use:
Real-time fuel level server pe send karta hai.
void sendToServer() {

  String url = "http://yourserver.com/fuel?"
               "level=" + String(fuelLevelCM);

  LTE_Serial.println("AT+HTTPINIT");
  delay(500);

  LTE_Serial.println("AT+HTTPPARA=\"URL\",\"" + url + "\"");
  delay(500);

  LTE_Serial.println("AT+HTTPACTION=0");
  delay(3000);

  LTE_Serial.println("AT+HTTPTERM");
}

Credits

Tech Gyan Set
32 projects β€’ 14 followers
Tech Gyan Set | IoT & Embedded Systems Creator | Arduino, ESP32, GSM & NodeMCU Projects | Smart Home & Real-Life Automation Tutorials
Thanks to Tech Gyan Set .

Comments