26‏/2‏/2018

Location Library


 Location Library  

You can use this library to get your GeoLocation (latitude and longitude) and address by using NodeMCU without needing to GPS chip. 

يمكنك استخدام هذه المكتبة للحصول على الموقع الجغرافي الخاص بك (خطوط الطول والعرض) وعنوانك باستخدام NodeMCU دون الحاجة إلى رقاقة GPS.




In order to determine your location (geographical coordinates), the Google service determines your location through cell towers, and WiFi nodes used by your mobile phone, when you use your Android phone to make a connection or access the Internet through the mobile network, your geographic data is obtained from the mobile tower that is used in the communication process, and thus you are tracked while you are moving from one place to another (where any mobile phone can be tracked as long as there is a connection between it and the mobile network), and the code takes advantage of this service, where it communicates with Google, the owner of the Android system (through a service Geolocation API) to obtain and display this information as shown in the example.

لكى يتم تحديد موقعك (الإحداثيات الجغرافية)، فإن خدمة جوجل تحدد موقعك من خلال معلومات أبراج المحمول cell towers، والـ WiFi nodes التى يستخدمها هاتفك المحمول، حيث عندما تقوم باستخدام هاتفك الأندرويد فى إجراء عملية اتصال أو دخول على الانترنت من خلال شبكة المحمول، فانه يتم الحصول على بياناتك الجغرافية من برج المحمول الذى يستخدم فى عملية الاتصال، وبذلك يتم تتبعك أثناء تحركك من مكان إلى مكان أخر (حيث يمكن تتبع أى هاتف محمول طالما يوجد اتصال بينه وبين شبكة الهاتف المحمول)، والكود يستفيد من هذه الخدمة، حيث يقوم بالتواصل مع جوجل صاحبة نظام الاندرويد (من خلال خدمة Geolocation API) للحصول على هذه المعلومات وعرضها كما هو موضح بالمثال.

 License 

 ===================================
Title :     Location Library
Author : Eng. Mohamed Sayed Yousef - Mansoura, Egypt
                https://electronics010.blogspot.com.eg/
Date :     25/02/2018
ver :       1.0
Based on Post from http://m0xpd.blogspot.com.eg/2016/08/esp8266-geolocation.html

Copyright (c) 2018 Mohamed Sayed Yousef.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice, author and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,  TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
=================================

 Download Link 


 Requirements 

"Location" library requires "ArduinoJson" library to be installed on your Arduino IDE.

تطلب مكتبة "Location" تثبيت مكتبة "ArduinoJson" على برنامج الاردوبنو.



سوف تحتاج الى الحصول على مفتاح  Google Maps Geolocation API ومفتاح   Google Maps Geocoding API  

From http://www.mcc-mnc.com/ get your country MCC, MNC and Network

من رابط  http://www.mcc-mnc.com/ احصل على MCC, MCN, Network الخاصة بدولتك

 Installation and Working 


After download "Location" library, install it in Arduino IDE.

بعد تنزيل مكتبة "Location"، قم بتركيبها على بيئة الاردوينو.


From File menu open "Location" sketch. 
File / Examples / Location / Location

من قائمة "File" قم بفتح مثال "Location" ثم قم بتحميله الى NodeMCU
File / Examples / Location / Location



- Type Google API keys.
- Type your WiFi network's password and ssid.
- Type MCC, MNC and Network for your country . (Note: If the first digit (from left side) is Zero, you must cancel it.)
- Load the sketch into your NodeMCU.
- Open the serial monitor to see your location and address.

- أكتب مفاتيح جوجل.
- أكتب اسم شبكة الواى فاى، وكلمة السر.
- أكتب MCC, MNC , Network الخاصة بدولتك. (ملحوظة: اذا كان العدد الاول (من ناحية اليسار) هو صفر، فيجب عليك ألا تكتبه.)
- حمل البرنامج الى NodeMCU.
- افتح شاشة المنفذ التسلسلى لمشاهدة موقعك وعنوانك.



يمكنك مشاهدة الشرح فى الفيديو التالى







Video

كورس إنترنت الأشياء



هناك 12 تعليقًا:

  1. حسام الدين بيومي27 فبراير 2018 في 12:06 م

    مجهود رائع الصراحة الف مبروك ودائما في تقدم ونجاح يا بشمهندس محمد

    ردحذف
    الردود
    1. ربنا يبارك فى حضرتك، خالص شكرى وتقديرى.

      حذف
  2. شكرا جيدا لمجهود حضرتك و لكن لما بجربه علي ESP32 و ارفع الكود location الحضرتك كتبو بيظهر error في سطر
    #include

    ردحذف
    الردود
    1. حضرتك المكتبة خاصة بالبوردة NodeMCU كما هو مكتوب فى المقال، والتى تعمل على الشريحة ESP8266 وليست الشريحة ESP32

      حذف
  3. السلام عليكم. ما هو سبب إستخدام إسم شبكة الموبايل داخل البرنامج ، حيث أنه لا يوجد موبايل أو شريحة في المشروع

    ردحذف
    الردود
    1. وعليكم السلام ورحمة الله، لكى يتم تحديد موقعك (الإحداثيات الجغرافية)، فإن خدمة جوجل تحدد موقعك من خلال معلومات أبراج المحمول cell towers، والـ WiFi nodes التى يستخدمها هاتفك المحمول، حيث عندما تقوم باستخدام هاتفك الأندرويد فى إجراء عملية اتصال أو دخول على الانترنت من خلال شبكة المحمول، فانه يتم الحصول على بياناتك الجغرافية من برج المحمول الذى يستخدم فى عملية الاتصال، وبذلك يتم تتبعك أثناء تحركك من مكان إلى مكان أخر (حيث يمكن تتبع أى هاتف محمول طالما يوجد اتصال بينه وبين شبكة الهاتف المحمول)، والكود يستفيد من هذه الخدمة، حيث يقوم بالتواصل مع جوجل صاحبة نظام الاندرويد (من خلال خدمة Geolocation API) للحصول على هذه المعلومات وعرضها كما هو موضح بالمثال، وتتطلب هذه الخدمة الحصول على معلومات MCC, MNC كما هو موضح بشرح المثال الموجود بالفيديو.

      حذف
  4. جزاكم الله خيرا على الرد السريع . طبعا المشروع لا يفترض وجود هاتف أندرويد على الإطلاق ، صحيح ؟ أعتقد ما يتم إستعماله في "Geolocation" هو فقط ال IP Address لشبكة الوافاي ، أما معلومات شبكة المحمول فهي لا تحدد الموقع لأنه لا يوجد إتصال مع أى برج محمول أساسا . هل ما أقوله صحيح ؟ أم هناك شيء غير واضح لي ؟ وشكرا على وقتك

    ردحذف
  5. إستمرارا على تعليقي السابق يبدو أن البرنامج يرسل إلى Google Geolocation معلومات ال MAC address لجميع الراوترز التي تمكن ال nodemcu من سماعها ، وبإستخدام هذه المعلومات يتم تحديد موقع ال nodemcu . ما رأي سيادتك في صحة هذا الكلام ؟ وشكرا

    ردحذف
    الردود
    1. تحياتى لحضرتك، ستجد على الرابط التالى الخاص بشركة جوجل العبارة التالية
      “The Geolocation API returns a location and accuracy radius based on information about cell towers and WiFi nodes that the mobile client can detect.”
      https://developers.google.com/maps/documentation/geolocation/intro
      وكما هو واضح من العبارة السابقة أنه يتم الاتصال بين الموبايل وبين أبرج شبكة المحمول لتحديد الموقع، وستجد أيضا على الرابط التالى الخاص بشركة جوجل العبارة التالية والتى تكرر نفس المعنى
      “Android's Network Location Provider determines user location using cell tower and Wi-Fi signals, providing location information in a way that works indoors and outdoors”
      https://developer.android.com/guide/topics/location/strategies
      وكما أشرت حضرتك فى تعليقك ، فمن المحتمل أنه يتم استخدام معلومات الشبكة الخاصة بالراوتر أو الـ access point الذى تستخدمه الـ NodeMCU للدخول على الشبكة، ومن خلالها يتم تحديد الموقع، ولكنى لا أستطيع تأكيد هذه المعلومة، إلا انه لا يمكن استخدام الـ MAC فقط لتحديد الموقع (كما هو موضح على الرابط التالى)، وإنما يتم استخدام الـ IP address فى ذلك، شكرا جزيلا لإهتمام حضرتك.
      https://www.lifewire.com/tracing-mac-address-stolen-computer-3971329

      حذف
  6. شكرا مهندسنا الرائع تعلمنا منك الكثير ........نشعر بالاحترام والعرفان لحضرتك

    ردحذف
    الردود
    1. العفو، الشكر لله، كل الامتنان والتقدير لكم.

      حذف