📍
Location
27.66224, 85.31734
🏎️
Speed
45 km/h
🏔️
Altitude
—
🛰️
Satellites
—
📶
Signal
—
🔋
Battery
—
🗺️ Route Playback
Live View
⛽ Fuel Level
Volt: —
Resolving address...
Resolving address...
📊 Data History (Last 50 Records)
| # | Lat | Lng | Speed | Fuel | Sats | Signal | Batt | Device Time | Server Time |
|---|---|---|---|---|---|---|---|---|---|
| 9 | 27.66224 | 85.31734 | 45 | 85% | — | — | — | 2026-03-24 10:05:35 | 2026-03-24 10:05:37 |
| 8 | 27.6661 | 85.30933 | 55 | 13% | — | — | — | 2026-03-24 09:58:06 | 2026-03-24 09:58:06 |
| 7 | 27.68792 | 85.3168 | 26 | 55% | — | — | — | 2026-03-24 09:57:58 | 2026-03-24 09:57:58 |
| 6 | 27.70038 | 85.31405 | 26 | 65% | — | — | — | 2026-03-24 09:57:54 | 2026-03-24 09:57:54 |
| 5 | 27.71841 | 85.31847 | 45 | 85% | — | — | — | 2026-03-24 09:57:48 | 2026-03-24 09:57:49 |
| 4 | 27.73254 | 85.32826 | 45 | 85% | — | — | — | 2026-03-24 09:57:47 | 2026-03-24 09:57:47 |
| 3 | 27.73938 | 85.33926 | 45 | 85% | — | — | — | 2026-03-24 09:57:45 | 2026-03-24 09:57:45 |
| 2 | 27.73589 | 85.31503 | 45 | 85% | — | — | — | 2026-03-24 09:57:42 | 2026-03-24 09:57:43 |
| 1 | 27.72464 | 85.34527 | 45 | 85% | — | — | — | 2026-03-24 09:57:36 | 2026-03-24 09:57:37 |
🧪 Test This Device
Send Data
curl -X POST https://gps.aitalim.com/api/post_data.php \
-H "Content-Type: application/json" \
-d '{"device_id": "sundeep", "latitude": 27.72, "longitude": 85.33, "speed": 50.0, "fuel_level": 60.0}'
Fetch Data
curl "https://gps.aitalim.com/api/get_data.php?device_id=sundeep&limit=10"
🔌 ESP32 Firmware (TTGO T-Call SIM800)
Copy this Arduino sketch. DEVICE_ID is pre-filled with
sundeep.
firmware_sundeep.ino
/**
* TTGO T-Call SIM800L v1.4 — GPS + Fuel Tracker
* Device: sundeep
* Server: https://gps.aitalim.com
*
* Pinout (FIXED for TTGO T-Call):
* SIM800 TX→GPIO26, RX→GPIO27, PWR→GPIO4, RST→GPIO5
* Battery ADC→GPIO35, LED→GPIO13
* External GPS: TX→GPIO16, RX→GPIO17
* Fuel sensor: GPIO34
*/
#define TINY_GSM_MODEM_SIM800
#define MODEM_TX 27
#define MODEM_RX 26
#define MODEM_PWR 4
#define LED_PIN 13
#include <TinyGsmClient.h>
#include <ArduinoHttpClient.h>
#include <TinyGPSPlus.h>
#include <ArduinoJson.h>
const char* DEVICE_ID = "sundeep";
const char* DEVICE_NAME = "sundeep";
const char* SERVER_HOST = "gps.aitalim.com";
const int SERVER_PORT = 80;
const char* SERVER_PATH = "/api/post_data.php";
const char* APN = "ntc"; // Change: Ncell="ncellgprs"
HardwareSerial gpsSerial(1);
TinyGPSPlus gps;
TinyGsm modem(Serial1);
TinyGsmClient client(modem);
HttpClient http(client, SERVER_HOST, SERVER_PORT);
void setup() {
Serial.begin(115200);
pinMode(LED_PIN, OUTPUT);
pinMode(MODEM_PWR, OUTPUT);
pinMode(23, OUTPUT); // POWER_ON
pinMode(5, OUTPUT); // RST
digitalWrite(23, HIGH);
digitalWrite(5, HIGH);
digitalWrite(MODEM_PWR, LOW);
delay(1000);
digitalWrite(MODEM_PWR, HIGH);
delay(2000);
Serial1.begin(115200, SERIAL_8N1, MODEM_RX, MODEM_TX);
gpsSerial.begin(9600, SERIAL_8N1, 16, 17);
modem.restart();
modem.waitForNetwork(60000);
modem.gprsConnect(APN, "", "");
}
void loop() {
while (gpsSerial.available()) gps.encode(gpsSerial.read());
static unsigned long last = 0;
if (millis() - last > 300000 || last == 0) {
sendData(); last = millis();
}
delay(100);
}
void sendData() {
digitalWrite(LED_PIN, HIGH);
float fuelV = (analogRead(34)/4095.0)*3.3;
float fuel = constrain(((fuelV-0.5)/(3.0-0.5))*100, 0, 100);
float batt = (analogRead(35)/4095.0)*3.3*2;
DynamicJsonDocument doc(512);
doc["device_id"] = DEVICE_ID;
doc["device_name"] = DEVICE_NAME;
if (gps.location.isValid()) {
doc["latitude"] = gps.location.lat();
doc["longitude"] = gps.location.lng();
doc["speed"] = gps.speed.kmph();
doc["altitude"] = gps.altitude.meters();
doc["satellites"]= gps.satellites.value();
}
doc["fuel_level"] = fuel;
doc["fuel_voltage"] = fuelV;
doc["battery_voltage"] = batt;
doc["signal_strength"] = modem.getSignalQuality();
String p; serializeJson(doc, p);
http.beginRequest();
http.post(SERVER_PATH);
http.sendHeader("Content-Type","application/json");
http.sendHeader("Content-Length", p.length());
http.beginBody(); http.print(p);
http.endRequest();
Serial.printf("[%d] %s\n", http.responseStatusCode(), http.responseBody().c_str());
digitalWrite(LED_PIN, LOW);
}