Πίνακας περιεχομένων:

ΓΕΩΛΟΑΚΩΣΗ: 5 Βήματα
ΓΕΩΛΟΑΚΩΣΗ: 5 Βήματα

Βίντεο: ΓΕΩΛΟΑΚΩΣΗ: 5 Βήματα

Βίντεο: ΓΕΩΛΟΑΚΩΣΗ: 5 Βήματα
Βίντεο: Сериал - "Сваты" (1-й сезон 1-я серия) фильм комедия для всей семьи 2024, Ιούλιος
Anonim
GEOLOACATION
GEOLOACATION

Είναι το καλοκαιρινό μου πρόγραμμα πρακτικής άσκησης. Πραγματικά εκπλήσσομαι όταν ακούω ότι μπορούμε να εντοπίσουμε την τοποθεσία οποιασδήποτε συσκευής χωρίς τη χρήση μονάδας GPS μόνο χρησιμοποιώντας το NodeMCU. Μέσω αυτού μπορούμε να εντοπίσουμε οποιαδήποτε συσκευή. Μπορείτε επίσης να εκπλήξετε πώς μπορούμε να εντοπίσουμε τη συσκευή χρησιμοποιώντας μόνο WiFi. Εδώ είναι η περιγραφή του είδους για να το καταλάβετε.

  • · Σαρώνει σχεδόν όλα τα WiFi σας.
  • · Αποστολή αυτής της τοποθεσίας συσκευής στην Google χρησιμοποιώντας το Google API
  • · Σύμφωνα με αυτό, Εντοπίστε τη θέση της συσκευής σας
  • · Έχετε ισχυρή σύνδεση δικτύου για αυτό το έργο.

Βήμα 1: Μέρη & εργαλείο

Ανταλλακτικά

  • NodeMCU (ESP8266 1.0 12E)
  • Καλώδιο USB

Εργαλεία

Arduino IDE με πίνακα NodeMcu 1.0 12E

API Google

Βήμα 2: Βρείτε το API Google

Εύρεση 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/el/
  • Προσθέστε τον πίνακα Node MCu στο Arduino IDE
  • Για τη μεταφόρτωση κώδικα στο NodeMCU πρέπει να προσθέσετε τον πίνακα NodeMCu στο ARDUINO IDE.

    • Μετάβαση στο αρχείο & Προτίμηση στο Arduino IDE
    • Και στην πρόσθετη ενότητα διαχείρισης πίνακα αντιγράψτε τον ακόλουθο σύνδεσμο
    • arduino.esp8266.com/stable/package_esp8266c…

    • και κάντε κλικ στο OK
    • Ο πίνακας κατεβαίνει
    • Μεταβείτε στα εργαλεία και στον πίνακα και επιλέξτε NodeMCU 1.0 12E
    • Δείτε την εικόνα avobe για εύκολη κατανόηση

Βήμα 4: Κατεβάστε τη βιβλιοθήκη ArduinoJson

Κατεβάστε τη βιβλιοθήκη ArduinoJson
Κατεβάστε τη βιβλιοθήκη ArduinoJson
  • μεταβείτε στο
  • Sketch Include Library Διαχείριση βιβλιοθήκης

    Πληκτρολογήστε Arduino Json στο πλαίσιο αναζήτησης

    Κατεβάστε την τελευταία έκδοση της βιβλιοθήκης ArduinoJson

    μετά τη λήψη της βιβλιοθήκης κάντε κλικ στο κλείσιμο

    Προσθήκη βιβλιοθήκης από

    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;

String 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

Δίκτυο WiFi

Serial.print ( Σύνδεση με

);

Serial.println (myssid);

WiFi.begin (myssid, mypass);

ενώ (WiFi.status ()! = WL_CONNECTED) {

καθυστέρηση (500)?

Serial.print (".");

}

Serial.println (".");

}

void loop () {

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 …");

αν (more_text) {

// Εκτυπώστε το μορφοποιημένο json…

Serial.println ("{");

Serial.println ("\" homeMobileCountryCode / ": 234,"); // αυτό είναι ένα πραγματικό βρετανικό MCC

Serial.println ("\" homeMobileNetworkCode / ": 27,"); // και ένα πραγματικό βρετανικό MNC

Serial.println ("\" radioType / ": \" gsm / ","); // για gsm

Serial.println ("\" carrier / ": \" 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));

αν (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:");

// ---- Λάβετε το Api Key των Χαρτών Google εδώ, Σύνδεσμος:

Serial.println ("https://" + (String) Host + thisPage + "PUT-YOUR-GOOGLE-MAPS-API-KEY-HERE");

Serial.println ("");

if (client.connect (Host, 443)) {

Serial.println ("Συνδεδεμένο");

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

client.println ("Host:" + (String) Host);

client.println ("Σύνδεση: κλείσιμο");

client.println ("Τύπος περιεχομένου: εφαρμογή/json");

client.println ("User-Agent: Arduino/1.0");

client.print ("Περιεχόμενο-Μήκος:");

client.println (jsonString.length ());

client.println ();

client.print (jsonString);

καθυστέρηση (500)?

}

// Διαβάστε και αναλύστε όλες τις γραμμές του

η απάντηση από το διακομιστή

while (client.available ()) {

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

αν (more_text) {

Serial.print (γραμμή);

}

JsonObject & root = jsonBuffer.parseObject (γραμμή);

εάν (root.success ()) {

γεωγραφικό πλάτος = root ["location"] ["lat"];

γεωγραφικό μήκος = ρίζα ["τοποθεσία"] ["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).

}

Συνιστάται: