فهرست مطالب:

GEOLOACATION: 5 مرحله
GEOLOACATION: 5 مرحله

تصویری: GEOLOACATION: 5 مرحله

تصویری: GEOLOACATION: 5 مرحله
تصویری: Every Trick a Pro GeoGuessr Player Uses to Win (ft. RAINBOLT) | WIRED 2024, جولای
Anonim
GEOLOACATION
GEOLOACATION

این پروژه کارآموزی تابستانی من است. وقتی می شنوم که می توانیم هر دستگاهی را بدون استفاده از ماژول GPS تنها با استفاده از NodeMCU ردیابی کنیم ، واقعاً تعجب می کنم. از طریق این ما می توانیم هر دستگاهی را ردیابی کنیم. شما همچنین تعجب می کنید که چگونه می توان دستگاه را تنها با استفاده از WiFi ردیابی کرد. در اینجا توضیحات نوع برای درک آن آمده است.

  • · تقریباً تمام وای فای شما را اسکن می کند.
  • · این دستگاه را با استفاده از API Google به Google ارسال کنید
  • · با توجه به این مکان دستگاه شما را تعیین می کند
  • · برای این پروژه اتصال شبکه قوی دارید.

مرحله 1: قطعات و ابزار

قطعات

  • NodeMCU (ESP8266 1.0 12E)
  • کابل یو اس بی

ابزارها

Arduino IDE با برد NodeMcu 1.0 12E

Google API

مرحله 2: Google API را پیدا کنید

Google API را پیدا کنید
Google API را پیدا کنید
Google API را پیدا کنید
Google API را پیدا کنید
Google API را پیدا کنید
Google API را پیدا کنید
  • مرورگر خود را باز کرده و تایپ کنید: console.developer.google.com
  • یک پروژه جدید ایجاد کنید
  • پس از ایجاد یک پروژه جدید ، روی اعتبار کلیک کنید
  • روی API Key کلیک کنید
  • کلید API شما ایجاد شده است

    برای درک آسان به تصویر زیر مراجعه کنید |>

مرحله 3: NodeMCu را در Arduino IDE راه اندازی کنید

NodeMCu را روی Arduino IDE راه اندازی کنید
NodeMCu را روی Arduino IDE راه اندازی کنید
NodeMCu را بر روی Arduino IDE راه اندازی کنید
NodeMCu را بر روی Arduino IDE راه اندازی کنید
NodeMCu را بر روی Arduino IDE راه اندازی کنید
NodeMCu را بر روی Arduino IDE راه اندازی کنید
  • Arduino IDE را از پیوند زیر بارگیری کنید:- https:// www. اصلی/نرم افزار arduino.cc/fa/
  • برد Node MCu را در Arduino IDE اضافه کنید
  • برای بارگذاری کد در NodeMCU باید برد NodeMCu را در ARDUINO IDE اضافه کنید.

    • به فایل & Preference در Arduino IDE بروید
    • و در بخش اضافی managementrsectionction پیوند زیر را کپی کنید
    • arduino.esp8266.com/stable/package_esp8266c…
    • و روی Ok کلیک کنید
    • صفحه بارگیری می شود
    • به ابزارها و برد بروید و NodeMCU 1.0 12E را انتخاب کنید
    • برای درک آسان تصویر avobe را ببینید

مرحله 4: کتابخانه ArduinoJson را بارگیری کنید

کتابخانه ArduinoJson را بارگیری کنید
کتابخانه ArduinoJson را بارگیری کنید
  • برو به
  • Sketch Include Library مدیریت کتابخانه

    Arduino Json را در کادر جستجو تایپ کنید

    آخرین نسخه کتابخانه ArduinoJson را بارگیری کنید

    پس از بارگیری کتابخانه روی close کلیک کنید

    افزودن کتابخانه از

    SketchincludeLibraryArduinoJson

مرحله 5: برنامه

برنامه زیر را روی برد NodeMCU بارگذاری کنید. و مکان دستگاه خود (برد NodeMCU 1.0 12E) را در مانیتور سریال ببینید.

#عبارتند از

#عبارتند از

#عبارتند از

char myssid = "SSID شما"؛ // SSID شبکه شما (نام)

char mypass = "گذرواژه شما"؛ // رمز شبکه شما

// اعتبارنامه Google GeoLocation API…

const char* Host = "www.googleapis.com"؛

رشته thisPage = "/geolocation/v1/geolocate؟ key ="؛

// --- یک کلید ap google maps در اینجا دریافت کنید:

developers.google.com/maps/documentation/geolocation/intro

کلید رشته = "کلید API Google شما" ؛ // از مرحله 2 پیدا کنید

دستورالعمل

وضعیت int = WL_IDLE_STATUS؛

رشته jsonString = "{ n"؛

عرض جغرافیایی دو برابر = 0.0؛

طول جغرافیایی دو برابر = 0.0؛

دقت مضاعف = 0.0 ؛

int more_text = 1؛ // برای خروجی اشکال زدایی بیشتر روی 1 تنظیم شده است

void setup () {

Serial.begin (9600)؛

Serial.println ("شروع") ؛

// WiFi را روی حالت ایستگاه تنظیم کنید و

اگر قبلاً وصل بودید ، یک AP را قطع کنید

WiFi.mode (WIFI_STA) ؛

WiFi.disconnect ()؛

تأخیر (100) ؛

Serial.println ( راه اندازی

انجام شده )؛

// ما با اتصال به a شروع می کنیم

شبکه وای فای

Serial.print ( اتصال به

);

Serial.println (myssid)؛

WiFi.begin (myssid ، mypass) ؛

while (WiFi.status ()! = WL_CONNECTED) {

تأخیر (500) ؛

Serial.print (".") ؛

}

Serial.println (".") ؛

}

حلقه خالی () {

char bssid [6]؛

DynamicJsonBuffer jsonBuffer؛

Serial.println ("شروع اسکن") ؛

// WiFi.scanNetworks باز می گردد

تعداد شبکه های پیدا شده

int n = WiFi.scanNetworks ()؛

Serial.println ("scandone") ؛

اگر (n == 0)

Serial.println ("هیچ شبکه ای یافت نشد")؛

دیگری

{

Serial.print (n)؛

Serial.println ("networkfound…") ؛

if (بیشتر_متن) {

// json فرمت شده را چاپ کنید…

Serial.println ("{")؛

Serial.println ("\" homeMobileCountryCode / ": 234 ،") ؛ // این MCC واقعی انگلستان است

Serial.println ("\" homeMobileNetworkCode / ": 27 ،") ؛ // و MNC واقعی انگلستان

Serial.println ("\" radioType / ": \" gsm / "،")؛ // برای gsm

Serial.println ("\" حامل / ": \" Vodafone / "،")؛ // مرتبط با Vodafone

Serial.println ("\" cellTowers / ": [")؛ // من هیچ برج سلولی را گزارش نمی کنم

Serial.println ("] ،") ؛

Serial.println ("\" wifiAccessPoints / ": [")؛

برای (int i = 0 ؛ i <n؛ ++ i)

{

Serial.println ("{")؛

Serial.print ("\" macAddress / ": \" ")؛

Serial.print (WiFi. BSSIDstr (i)) ؛

Serial.println ("\" ، ") ؛

Serial.print ("\" signalStrength / ":")؛

Serial.println (WiFi. RSSI (i)) ؛

اگر (من <n - 1)

{

Serial.println ("} ،") ؛

}

دیگری

{

Serial.println ("}") ؛

}

}

Serial.println ("]") ؛

Serial.println ("}") ؛

}

Serial.println ("")؛

}

// اکنون jsonString را بسازید…

jsonString = "{ n"؛

jsonString += "\" homeMobileCountryCode / ": 234 ، / n"؛ // این MCC واقعی انگلستان است

jsonString += "\" homeMobileNetworkCode / ": 27 ، / n"؛ // و MNC واقعی انگلستان

jsonString += "\" radioType / ": \" gsm / "، / n"؛ // برای gsm

jsonString += "\" حامل / ": \" Vodafone / "، / n"؛ // مرتبط با Vodafone

jsonString += "\" wifiAccessPoints / ": [n"؛

برای (int j = 0 ؛ j <n؛ ++ j)

{

jsonString += "{ n"؛

jsonString += "\" macAddress / ": \" "؛

jsonString += (WiFi. BSSIDstr (j)) ؛

jsonString += "\" ، / n "؛

jsonString += "\" signalStrength / ":"؛

jsonString += WiFi. RSSI (j) ؛

jsonString += "\ n"؛

اگر (j <n - 1)

{

jsonString += "} ، / n"؛

}

دیگری

{

jsonString += "} n"؛

}

}

jsonString += ("] n")؛

jsonString += ("} n")؛

//--------------------------------------------------------------------

Serial.println ("")؛

مشتری WiFiClientSecure ؛

// به مشتری متصل شوید و api را برقرار کنید

Serial.print ("URL درخواست:")؛

// ---- Google Maps Api Key را از اینجا دریافت کنید ، پیوند:

Serial.println ("https://" + (رشته) میزبان + این صفحه + "PUT-YOUR-GOOGLE-MAPS-API-KEY-HERE") ؛

Serial.println ("")؛

if (client.connect (میزبان ، 443)) {

Serial.println ("متصل") ؛

client.println ("POST" + thisPage + key + "HTTP/1.1")؛

client.println ("میزبان:" + (رشته) میزبان)؛

client.println ("اتصال: بستن")؛

client.println ("نوع محتوا: برنامه/json") ؛

client.println ("عامل کاربر: Arduino/1.0") ؛

client.print ("Content-Length:")؛

client.println (jsonString.length ()) ؛

client.println ()؛

client.print (jsonString) ؛

تأخیر (500) ؛

}

// همه سطرها را بخوانید و تجزیه کنید

پاسخ از سرور

while (client.available ()) {

String line = client.readStringUntil ('\ r')؛

if (بیشتر_متن) {

Serial.print (خط) ؛

}

JsonObject & root = jsonBuffer.parseObject (خط) ؛

if (root.success ()) {

عرض جغرافیایی = ریشه ["محل"] ["لات"]؛

طول جغرافیایی = ریشه ["محل"] ["lng"]؛

دقت = ریشه ["دقت"]؛

}

}

Serial.println ("بستن اتصال") ؛

Serial.println ()؛

client.stop ()؛

Serial.print ("Latitude =")؛

Serial.println (عرض جغرافیایی ، 6) ؛

Serial.print ("طول جغرافیایی =")؛

Serial.println (طول جغرافیایی ، 6) ؛

Serial.print ("دقت =")؛

Serial.println (دقت) ؛

تاخیر (10000) ؛

Serial.println ()؛

Serial.println ("راه اندازی مجدد …") ؛

Serial.println ()؛

تاخیر (2000) ؛

}

توصیه شده: