გეოლოკაცია: 5 ნაბიჯი
გეოლოკაცია: 5 ნაბიჯი
Anonim
გეოლოკაცია
გეოლოკაცია

ეს არის ჩემი საზაფხულო სტაჟირების პროექტი. მე ნამდვილად მიკვირს, როდესაც მესმის, რომ ჩვენ შეგვიძლია მოვძებნოთ ნებისმიერი მოწყობილობის ადგილმდებარეობა GPS მოდულის გამოყენების გარეშე მხოლოდ NodeMCU- ს გამოყენებით. ამის საშუალებით ჩვენ შეგვიძლია მივაკვლიოთ ნებისმიერ მოწყობილობას.თქვენ ასევე გაგიკვირდებათ როგორ შეგვიძლია მოწყობილობის კვალი მხოლოდ WiFi- ს გამოყენებით. აქ არის სახის აღწერილობა მის გასაგებად.

  • · ეს არის თქვენი თითქმის ყველა WiFi სკანირება.
  • · ამ მოწყობილობის მდებარეობის გაგზავნა Google- ში Google API გამოყენებით
  • · ამის თანახმად, იპოვეთ თქვენი მოწყობილობის ადგილმდებარეობა
  • · თქვენ გაქვთ ძლიერი ქსელური კავშირი ამ პროექტისთვის.

ნაბიჯი 1: ნაწილები და ინსტრუმენტი

ნაწილები

  • NodeMCU (ESP8266 1.0 12E)
  • USB კაბელი

ინსტრუმენტები

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 ღილაკს
  • თქვენი 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/en/
  • დაამატეთ Node MCu დაფა Arduino IDE- ზე
  • NodeMCU- ზე კოდის ასატვირთად თქვენ უნდა დაამატოთ NodeMCu დაფა ARDUINO IDE- ზე.

    • გადადით ფაილზე და პარამეტრებზე Arduino IDE- ში
    • და დამატებითი საბჭოს მენეჯმენტის განყოფილებაში დააკოპირეთ შემდეგი ბმული
    • arduino.esp8266.com/stable/package_esp8266c…
    • და დააწკაპუნეთ Ok
    • დაფა გადმოწერილია
    • გადადით ინსტრუმენტებსა და დაფაზე და აირჩიეთ NodeMCU 1.0 12E
    • იხილეთ ავობეს სურათი ადვილად გასაგები

ნაბიჯი 4: ჩამოტვირთეთ ArduinoJson ბიბლიოთეკა

ჩამოტვირთეთ ArduinoJson ბიბლიოთეკა
ჩამოტვირთეთ ArduinoJson ბიბლიოთეკა
  • გადადით
  • ესკიზი მოიცავს ბიბლიოთეკას მართვა ბიბლიოთეკა

    ჩაწერეთ Arduino Json საძიებო ველში

    ჩამოტვირთეთ ArduinoJson ბიბლიოთეკის უახლესი ვერსია

    ბიბლიოთეკის გადმოტვირთვის შემდეგ დააჭირეთ დახურვას

    ბიბლიოთეკის დამატება აქედან

    ესკიზი მოიცავს ბიბლიოთეკასარდინო ჯსონი

ნაბიჯი 5: პროგრამა

ატვირთეთ შემდეგი პროგრამა NodeMCU დაფაზე. და ნახეთ თქვენი მოწყობილობის (NodeMCU 1.0 12E დაფა) მდებარეობა სერიულ მონიტორზე.

#ჩართეთ

#ჩართეთ

#ჩართეთ

char myssid = "შენი SSID"; // თქვენი ქსელის SSID (სახელი)

char mypass = "შენი პაროლი"; // თქვენი ქსელის პაროლი

// რწმუნებათა სიგელები Google GeoLocation API- სთვის…

const char* მასპინძელი = "www.googleapis.com";

სიმებიანი thisPage = "/geolocation/v1/geolocate? Key =";

// --- მიიღეთ google maps ap გასაღები აქ:

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

სიმებიანი გასაღები = "თქვენი Google API გასაღები"; // იპოვეთ ნაბიჯი 2 -დან

ინსტრუქცია

int სტატუსი = WL_IDLE_STATUS;

სიმებიანი jsonString = "{ n";

ორმაგი გრძედი = 0.0;

ორმაგი გრძედი = 0.0;

ორმაგი სიზუსტე = 0.0;

int more_text = 1; // დააყენეთ 1 -ზე მეტი გამართვის გამომუშავებისთვის

void setup () {

სერიული.დაწყება (9600);

Serial.println ("დაწყება");

// დააყენეთ WiFi სადგურის რეჟიმში და

გათიშეთ AP- დან, თუ ის ადრე იყო დაკავშირებული

WiFi.mode (WIFI_STA);

WiFi. გათიშვა ();

დაგვიანება (100);

Serial.println ( დაყენება

შესრულებულია );

// ვიწყებთ a- სთან დაკავშირებით

WiFi ქსელი

Serial.print ( დაკავშირება

);

Serial.println (myssid);

WiFi. დასაწყისი (myssid, mypass);

ხოლო (WiFi.status ()! = WL_CONNECTED) {

დაგვიანება (500);

Serial.print (".");

}

Serial.println (".");

}

ბათილი მარყუჟი () {

char bssid [6];

DynamicJsonBuffer jsonBuffer;

Serial.println ("სკანირების დაწყება");

// WiFi.scanNetworks დაბრუნდება

ნაპოვნი ქსელების რაოდენობა

int n = WiFi.scanNetworks ();

Serial.println ("სკანდონი");

თუ (n == 0)

Serial.println ("ქსელები ვერ მოიძებნა");

სხვა

{

სერიული. ბეჭდვა (n);

Serial.println ("ქსელები აღმოაჩინეს …");

თუ (მეტი_ტექსტი) {

// დაბეჭდე ფორმატირებული json…

Serial.println ("{");

Serial.println ("\" homeMobileCountryCode / ": 234,"); // ეს არის ნამდვილი გაერთიანებული სამეფოს MCC

Serial.println ("\" homeMobileNetworkCode / ": 27,"); // და ნამდვილი გაერთიანებული სამეფოს MNC

Serial.println ("\" რადიოტიპი / ": \" gsm / ","); // gsm- ისთვის

Serial.println ("\" გადამზიდავი / ": \" ვოდაფონი / ","); // ასოცირდება Vodafone- თან

Serial.println ("\" cellTowers / ": ["); // მე არ ვაცნობებ საკნის კოშკებს

Serial.println ("],");

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

for (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));

თუ (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 += "\" რადიოტიპი / ": \" gsm / ", / n"; // gsm- ისთვის

jsonString += "\" გადამზიდავი / ": \" Vodafone / ", / n"; // ასოცირდება Vodafone- თან

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

for (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://" + (სიმებიანი) მასპინძელი + ეს გვერდი + "განათავსე-შენი-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 ("შინაარსი-სიგრძე:");

client.println (jsonString.length ());

client.println ();

client.print (jsonString);

დაგვიანება (500);

}

// წაიკითხეთ და გაანალიზეთ ყველა სტრიქონი

პასუხი სერვერზე

while (client.available ()) {

სიმებიანი ხაზი = client.readStringUntil ('\ r');

თუ (მეტი_ტექსტი) {

სერიული. ბეჭდვა (სტრიქონი);

}

JsonObject & root = jsonBuffer.parseObject (ხაზი);

თუ (root.success ()) {

გრძედი = ფესვი ["მდებარეობა"] ["ლათ"];

გრძედი = ფესვი ["მდებარეობა"] ["lng"];

სიზუსტე = ფესვი ["სიზუსტე"];

}

}

Serial.println ("კავშირის დახურვა");

Serial.println ();

client.stop ();

Serial.print ("გრძედი =");

Serial.println (გრძედი, 6);

Serial.print ("განედი =");

Serial.println (გრძედი, 6);

Serial.print ("სიზუსტე =");

Serial.println (სიზუსტე);

დაგვიანება (10000);

Serial.println ();

Serial.println ("გადატვირთვა …");

Serial.println ();

დაგვიანება (2000);

}

გირჩევთ: