Location Library
You can use this library to get your GeoLocation (latitude and longitude) and address by using NodeMCU without needing to GPS chip.
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.
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" على برنامج الاردوبنو.
You will need Google Maps Geolocation API key and Google Maps Geocoding API key.
From http://www.mcc-mnc.com/ get your country MCC, MNC and 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.
- افتح شاشة المنفذ التسلسلى لمشاهدة موقعك وعنوانك.
يمكنك مشاهدة الشرح فى الفيديو التالى
شكرا
ردحذفمجهود رائع الصراحة الف مبروك ودائما في تقدم ونجاح يا بشمهندس محمد
ردحذفربنا يبارك فى حضرتك، خالص شكرى وتقديرى.
حذفشكرا جيدا لمجهود حضرتك و لكن لما بجربه علي ESP32 و ارفع الكود location الحضرتك كتبو بيظهر error في سطر
ردحذف#include
حضرتك المكتبة خاصة بالبوردة NodeMCU كما هو مكتوب فى المقال، والتى تعمل على الشريحة ESP8266 وليست الشريحة ESP32
حذفالسلام عليكم. ما هو سبب إستخدام إسم شبكة الموبايل داخل البرنامج ، حيث أنه لا يوجد موبايل أو شريحة في المشروع
ردحذفوعليكم السلام ورحمة الله، لكى يتم تحديد موقعك (الإحداثيات الجغرافية)، فإن خدمة جوجل تحدد موقعك من خلال معلومات أبراج المحمول cell towers، والـ WiFi nodes التى يستخدمها هاتفك المحمول، حيث عندما تقوم باستخدام هاتفك الأندرويد فى إجراء عملية اتصال أو دخول على الانترنت من خلال شبكة المحمول، فانه يتم الحصول على بياناتك الجغرافية من برج المحمول الذى يستخدم فى عملية الاتصال، وبذلك يتم تتبعك أثناء تحركك من مكان إلى مكان أخر (حيث يمكن تتبع أى هاتف محمول طالما يوجد اتصال بينه وبين شبكة الهاتف المحمول)، والكود يستفيد من هذه الخدمة، حيث يقوم بالتواصل مع جوجل صاحبة نظام الاندرويد (من خلال خدمة Geolocation API) للحصول على هذه المعلومات وعرضها كما هو موضح بالمثال، وتتطلب هذه الخدمة الحصول على معلومات MCC, MNC كما هو موضح بشرح المثال الموجود بالفيديو.
حذفجزاكم الله خيرا على الرد السريع . طبعا المشروع لا يفترض وجود هاتف أندرويد على الإطلاق ، صحيح ؟ أعتقد ما يتم إستعماله في "Geolocation" هو فقط ال IP Address لشبكة الوافاي ، أما معلومات شبكة المحمول فهي لا تحدد الموقع لأنه لا يوجد إتصال مع أى برج محمول أساسا . هل ما أقوله صحيح ؟ أم هناك شيء غير واضح لي ؟ وشكرا على وقتك
ردحذفإستمرارا على تعليقي السابق يبدو أن البرنامج يرسل إلى Google Geolocation معلومات ال MAC address لجميع الراوترز التي تمكن ال nodemcu من سماعها ، وبإستخدام هذه المعلومات يتم تحديد موقع ال nodemcu . ما رأي سيادتك في صحة هذا الكلام ؟ وشكرا
ردحذفتحياتى لحضرتك، ستجد على الرابط التالى الخاص بشركة جوجل العبارة التالية
حذف“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
شكرا مهندسنا الرائع تعلمنا منك الكثير ........نشعر بالاحترام والعرفان لحضرتك
ردحذفالعفو، الشكر لله، كل الامتنان والتقدير لكم.
حذف