- كيف تعمل:
- المكونات المطلوبة:
- شرح الدائرة:
- GPS درجة دقيقة إلى درجة عشرية تقارب الإحداثيات:
- شرح البرمجة:
أصبح نظام تتبع المركبات مهمًا جدًا في أيامنا هذه ، خاصةً في حالة السيارات المسروقة. إذا كان لديك نظام GPS مثبت في سيارتك ، فيمكنك تتبع موقع السيارة الخاص بك ، ويساعد الشرطة على تتبع المركبات المسروقة. لقد قمنا سابقًا ببناء مشروع مشابه يتم فيه إرسال إحداثيات موقع السيارة على الهاتف الخلوي ، تحقق هنا 'متعقب المركبات القائم على Arduino باستخدام GPS و GSM.
نحن هنا نبني إصدارًا أكثر تقدمًا من نظام تتبع المركبات الذي يمكنك من خلاله تتبع سيارتك على خرائط Google. في هذا المشروع ، سنرسل إحداثيات الموقع إلى الخادم المحلي وتحتاج فقط إلى فتح "صفحة ويب" على جهاز الكمبيوتر أو الهاتف المحمول الخاص بك ، حيث ستجد رابطًا لخرائط Google مع إحداثيات موقع المركبات الخاصة بك. عندما تنقر على هذا الرابط ، يأخذك إلى خرائط Google ، ويظهر موقع المركبات الخاصة بك. في نظام تتبع المركبات هذا باستخدام خرائط Google ، يتم استخدام وحدة GPS للحصول على إحداثيات الموقع ووحدة Wi-Fi للحفاظ على إرسال البيانات إلى الكمبيوتر أو الهاتف المحمول عبر Wi-Fi ويستخدم Arduino لإجراء اتصال GPS و Wi-Fi مع بعضهما البعض.
كيف تعمل:
لتتبع السيارة ، نحتاج إلى العثور على إحداثيات السيارة باستخدام وحدة GPS. تتواصل وحدة GPS باستمرار مع القمر الصناعي للحصول على إحداثيات. ثم نحتاج إلى إرسال هذه الإحداثيات من GPS إلى Arduino باستخدام UART. ثم يقوم Arduino باستخراج البيانات المطلوبة من البيانات المستلمة بواسطة GPS.
قبل ذلك ، يرسل Arduino الأمر إلى Wi-Fi Module ESP8266 للتكوين والاتصال بالموجه والحصول على عنوان IP. بعد ذلك يقوم Arduino بتهيئة GPS للحصول على الإحداثيات وتعرض شاشة LCD رسالة "Page Refresh". هذا يعني أن المستخدم يحتاج إلى تحديث صفحة الويب. عندما يقوم المستخدم بتحديث صفحة الويب ، يحصل Arduino على إحداثيات GPS ويرسلها إلى صفحة الويب (الخادم المحلي) عبر Wi-Fi ، مع بعض المعلومات الإضافية ورابط خرائط Google فيها. الآن عن طريق النقر فوق هذا الرابط ، يقوم المستخدم بإعادة التوجيه إلى خرائط Google مع الإحداثيات ومن ثم سيحصل على الموقع الحالي للسيارة في النقطة الحمراء على خرائط Google. تظهر العملية برمتها بشكل صحيح في الفيديو في النهاية.
المكونات المطلوبة:
- اردوينو UNO
- وحدة Wi-Fi ESP8266
- وحدة GPS
- كابل USB
- توصيل الأسلاك
- حاسوب محمول
- مزود الطاقة
- 16x2 LCD
- مجلس الخبز
- موزع انترنت
شرح الدائرة:
إن حلبة " تتبع المركبات باستخدام مشروع خرائط Google" بسيطة للغاية ونحتاج بشكل أساسي إلى Arduino UNO و GPS Module ووحدة ESP8266 Wi-Fi. هناك شاشة LCD مقاس 16 × 2 متصلة اختياريًا لعرض الحالة. شاشة LCD هذه متصلة بـ 14-19 (A0-A5) دبابيس Arduino.
هنا يتم توصيل Tx pin الخاص بوحدة GPS مباشرة برقم التعريف الرقمي 10 من Arduino. باستخدام Software Serial Library هنا ، سمحنا بالاتصال التسلسلي على الدبوس 10 و 11 ، وجعلناهما Rx و Tx على التوالي وتركنا دبوس Rx لوحدة GPS مفتوحًا. بشكل افتراضي ، يتم استخدام Pin 0 و 1 من Arduino للاتصال التسلسلي ولكن باستخدام مكتبة SoftwareSerial ، يمكننا السماح بالاتصال التسلسلي على دبابيس رقمية أخرى في Arduino. يستخدم محول 12 فولت لتشغيل وحدة GPS. انتقل من هنا لمعرفة "كيفية استخدام GPS مع Arduino" واحصل على الإحداثيات.
تتصل دبابيس Vcc و GND بوحدة Wi-Fi ESP8266 مباشرةً بـ 3.3 فولت و GND من Arduino و CH_PD متصل أيضًا بـ 3.3 فولت. دبابيس Tx و Rx من ESP8266 متصلة مباشرة بالدبوس 2 و 3 من Arduino. تُستخدم مكتبة البرامج التسلسلية هنا أيضًا للسماح بالاتصال التسلسلي على الدبوس 2 و 3 من Arduino. لقد قمنا بالفعل بتغطية واجهة وحدة ESP8266 Wi-Fi إلى Arduino بالتفصيل ، ويرجى أيضًا الاطلاع على "كيفية إرسال البيانات من Arduino إلى صفحة الويب باستخدام WiFi" قبل القيام بهذا المشروع. فيما يلي صورة ESP8266:
يحتوي ESP8266 على مصباحي LED ، أحدهما أحمر ، للإشارة إلى الطاقة والثاني أزرق وهو مؤشر LED لاتصالات البيانات. يومض مؤشر LED الأزرق عندما يرسل ESP بعض البيانات عبر دبوس Tx الخاص به. أيضًا ، لا تقم بتوصيل ESP بمصدر +5 فولت وإلا فقد يتلف جهازك. هنا في هذا المشروع ، اخترنا 9600 معدل باود لجميع اتصالات UART.
يمكن للمستخدم أيضًا رؤية الاتصال بين وحدة Wi-Fi ESP8266 و Arduino ، على Serial Monitor ، بمعدل الباود 9600:
تحقق أيضًا من الفيديو في نهاية هذا المشروع ، للحصول على عملية عمل مفصلة.
GPS درجة دقيقة إلى درجة عشرية تقارب الإحداثيات:
تستقبل وحدة GPS الإحداثيات من القمر الصناعي في تنسيق الدرجة الدقيقة (ddmm.mmmm) وهنا نحتاج إلى تنسيق الدرجة العشرية للبحث عن الموقع على خرائط Google. لذلك نحتاج أولاً إلى تحويل الإحداثيات من تنسيق دقيقة الدرجة إلى تنسيق الدرجة العشرية باستخدام صيغة معينة.
افترض أن 2856.3465 (ddmm.mmmm) هي خط العرض الذي نتلقاها من وحدة GPS. الآن أول رقمين هما الدرجات والباقي هما الدقائق.
إذن 28 درجة و 56.3465 دقيقة.
الآن هنا ، لا داعي لتحويل جزء الدرجة (28) ، ولكن تحتاج فقط إلى تحويل جزء الدقيقة إلى درجة عشرية بقسمة 60:
تنسيق الدرجة العشرية = درجة + دقيقة / 60
تنسيق الدرجة العشرية = 28 + 56.3465 / 60
تنسيق الدرجة العشرية = 28 + 0.94
تنسيق الدرجة العشرية = 28.94
سيتم إجراء نفس العملية لبيانات خط الطول. لقد قمنا بتحويل الإحداثيات من الدرجة الدقيقة إلى الدرجة العشرية باستخدام الصيغ أعلاه في Arduino Sketch:
تعويم دقيقة = lat_minut.toFloat () ، دقيقة = دقيقة / 60 ؛ درجة تعويم = lat_degree.toFloat () ؛ خط العرض = درجة + دقيقة ؛ دقيقة = long_minut.toFloat () ، دقيقة = دقيقة / 60 ؛ درجة = long_degree.toFloat () ، اللوغاريتم = درجة + دقيقة ؛
شرح البرمجة:
في هذا الكود ، استخدمنا مكتبة SerialSoftware لواجهة ESP8266 ووحدة GPS مع Arduino. ثم حددنا دبابيس مختلفة لكليهما وقمنا بتهيئة UART بمعدل 9600 باود. وشملت أيضًا مكتبة LiquidCrystal لواجهة LCD مع Arduino.
#تضمن
بعد ذلك ، نحتاج إلى تحديد أو التصريح عن متغير وسلسلة لغرض مختلف.
سلسلة صفحة الويب = "" ؛ int أنا = 0 ، ك = 0 ؛ int gps_status = 0 ؛ اسم السلسلة = "
1. الاسم: اسمك
"؛ // 22 سلسلة دوب ="2. تاريخ الميلاد: 12 فبراير 1993
"؛ // 21 رقم السلسلة ="4. رقم المركبة: RJ05 XY 4201
"؛ // 29 String cordinat ="إحداثيات:
"؛ // 17 String latitude =" "؛ String logitude =" "؛ String gpsString =" "؛ char * test =" $ GPGGA "؛ثم قمنا بعمل بعض الوظائف لأغراض مختلفة مثل:
وظيفة للحصول على بيانات GPS مع الإحداثيات:
باطل gpsEvent () {gpsString = ""؛ while (1) {while (gps.available ()> 0) {char inChar = (char) gps.read ()؛ gpsString + = inChar ؛ إذا (i <7) {if (gpsString! = test) {i = 0 ؛……………….
وظيفة لاستخراج البيانات من سلسلة GPS وتحويل تلك البيانات إلى تنسيق درجة عشرية من تنسيق الدقيقة العشرية ، كما هو موضح سابقًا.
تنسيق باطل 2dec () {String lat_degree = ""؛ لـ (i = 18 ؛ i <20 ؛ i ++) lat_degree + = gpsString ؛ سلسلة lat_minut = "" ؛ لـ (i = 20 ؛ i <28 ؛ i ++) lat_minut + = gpsString ؛……………….
وظيفة لإرسال الأوامر إلى ESP8266 لتكوينها وتوصيلها بـ WIFI.
void connect_wifi (String cmd، int t) {int temp = 0، i = 0؛ بينما (1) {Serial.println (cmd) ؛ Serial1.println (كمد) ؛ بينما (Serial1.available ()> 0)……………….
void show_coordinate () لإظهار الإحداثيات على شاشة LCD و Serial Monitor ووظيفة get_ip () الباطلة للحصول على عنوان IP.
وظيفة Void Send () لإنشاء سلسلة من المعلومات التي سيتم إرسالها إلى صفحة الويب باستخدام وظيفة ESP8266 ووظيفة sendwebdata () باطلة لإرسال سلسلة معلومات إلى صفحة ويب باستخدام UART.
في وظيفة الحلقة الفارغة ، ينتظر Arduino باستمرار للحصول على صفحة ويب نموذج الطلب (تحديث صفحة الويب).
حلقة باطلة () {k = 0 ؛ Serial.println ("الرجاء تحديث صفحة Ur") ؛ lcd.setCursor (0،0) ؛ lcd.print ("الرجاء التحديث") ؛ lcd.setCursor (0،1) ؛ lcd.print ("صفحتك على الويب..") ؛ بينما (ك <1000)……………………
تحقق من الكود الكامل أدناه.