مشروع · GPS · دون سحابة
ابنِ متعقّب GPS على ESP32 / ESP8266 مع لوحة معلومات ويب ذاتية الاستضافة
وحدة NEO-6M ومتحكّم دقيق بـ 3 دولارات يُقدّمان خريطة حيّة وسياجًا جغرافيًّا للمنزل وتصدير مسارات GPX وتحديثات OTA — مباشرةً من اللوحة. دون سحابة، دون تطبيق، دون اشتراك.
معظم متعقّبات GPS المصنوعة يدويًّا تدفع موقعك إلى سحابة شخص آخر. هذا لا يفعل ذلك. ESP32 أو ESP8266 ووحدة NEO-6M بـ 3 دولارات يُقدّمان لوحة معلومات ويب كاملة مباشرةً من اللوحة — خريطة حيّة، وسرعة، وأقمار صناعية، وسياج جغرافي للمنزل مع إنذار، وتصدير مسارات GPX / CSV يمكنك فتحه في Strava أو OsmAnd أو Google Earth. دون حساب، دون تطبيق، دون رسوم شهرية.
مبنية بـ RisalDash، وهي مكتبة Arduino مفتوحة المصدر تحوّل حفنة من استدعاءات
dash.metric(...) / dash.map(...) إلى لوحة معلومات حيّة ومتجاوبة
عبر WebSocket.
ماذا يفعل
- خريطة حيّة مع أثر — موقعك والمسار الذي قطعته، على بلاطات OpenStreetMap.
- سياج جغرافي للمنزل — نصف قطر حول «المنزل»؛ اخرج منه فيُطلق إنذار اهتزاز (ورسالة Telegram اختيارية)، مع إزالة الارتداد حتى لا يُطلق بلا انقطاع.
- تسجيل المسار — ملفات CSV يومية تُكتب بأمان إلى الذاكرة الوميضية. يعمل دون اتصال تمامًا: قُدْ دون Wi-Fi وسيسجّل الرحلة كاملةً.
- تصدير بلمسة واحدة — صفحة
/tracksمدمجة تسرد كل سجلٍّ مع روابط CSV وبثّ GPX. - تحديثات OTA — حمّل برنامجًا ثابتًا جديدًا من المتصفّح. دون كابل USB بعد أول تحميل.
- ذاتية الاستضافة — يُقدّم الـ ESP لوحة المعلومات؛ وموقعك لا يغادر شبكتك أبدًا.
العتاد
- ESP8266 (Wemos D1 mini) أو ESP32 — ~$3–5
- وحدة GPS من نوع NEO-6M — ~$3
- محرّك اهتزاز للإنذار (اختياري) — ~$1
التوصيل (ESP8266): NEO-6M TX → D5، RX → D6، VCC → 3V3، GND → GND؛ ومحرّك الاهتزاز على D1. يسحب محرّك اهتزاز عارٍ نحو 70–100 مِلّي أمبير ولا يمكن تشغيله من دبّوس GPIO (~12 مِلّي أمبير) مباشرةً — ضع ترانزستورًا بين الدبّوس والمحرّك، مع صمّام ثنائي عكسي (flyback).
الكود
لوحة المعلومات بأكملها تصريحية. هذه عمليًّا كامل واجهة المستخدم:
#include <RisalDash.h>
RisalUI dash("GPS Tracker");
dash.map("Track", &lat, &lon).geofence(&homeLat, &homeLon, &fenceRadius);
dash.gauge("Speed", &speedKmh, 0, 40, "km/h");
dash.metric("Satellites", &sats);
dash.chart("Altitude", &altM, "m");
dash.link("History", "Download tracks", "/tracks");
dash.enableOTA();
dash.begin(); // بوابة أسر، ثم ينضم إلى شبكة Wi-Fi لديك غذِّ المتغيّرات من TinyGPSPlus في loop()، فتتحدّث الخريطة والمقاييس
والرسم البياني حيّةً في كل متصفّح مفتوح. أما النقاط الطرفية المخصّصة (قائمة المسارات، تنزيل
CSV، بثّ GPX) فتتفرّع من dash.server() على المنفذ نفسه.
لماذا يهمّ غياب السحابة
المتعقّب الذي «يتّصل بالبيت» هو خطرٌ على الخصوصية واشتراكٌ ينتظر أن يقع. تقديم لوحة المعلومات من الجهاز يُبقي موقعك على شبكتك المحلية، ويُبقي المتعقّب يعمل حين ينقطع الإنترنت، ولا يترك شيئًا تدفع مقابله أو يُغلَق. بعيدًا عن Wi-Fi المنزل يسجّل إلى الذاكرة الوميضية؛ وحين تعود إلى شبكتك يُعيد الاتصال تلقائيًّا وتسحب GPX اليوم.
مصدر كامل ومُختبَر البناء لأجهزة ESP32 & ESP8266.