Ο Ψηφιακός Μίτος Του...Google

Πρίν απο μερικές ημέρες, είχαμε μια πολύ ενδιαφέρουσα συζήτηση με τον asynadak του Newsfilter.gr στα σχόλια των θεμάτων "Google Maps και MyLocations" (εδώ και εδώ) σχετικά με το πώς καταφέρνει η υπηρεσία MyLocation του Google να εντοπίσει τη θέση της συσκευής που το τρέχει επάνω στο χάρτη.

Αποφάσισα λοιπόν να γράψω ετούτο εδώ το άρθρο για να τεκμηριώσω με ένα πρακτικό παράδειγμα το πώς ακριβώς νομίζω οτι μπορεί να εντοπίσει τη θέση μας το Google ή κάθε άλλη εφαρμογή που έχει πρόσβαση σε ένα δίκτυο κινητής τηλεφωνίας. Αλλά κατά κάποιο τρόπο αναμένω κιόλας (και επιθυμώ) την αντίδραση κάποιου αναγνώστη που ίσως έχει περισσότερη γνώση απάνω στο θέμα ώστε να επωφεληθούμε όλοι τα κοματάκια γνώσης που αγνοούμε αυτή τη στιγμή.

Google MyLocation:
Στη περίπτωση που δεν έχετε υπ' όψην σας την εφαρμογή MyLocation του Google, πρόκειται για μια προσθήκη στην εφαρμογή Google Maps στην έκδοση για φορητά τηλέφωνα και συσκευές. Τρέχοντας την εφαρμογή βλέπετε στο κινητό σας το γνωστό χάρτη του Google Maps και μπορείτε για παράδειγμα να του ζητήσετε να σας δώσει τη διαδρομή απο το σημείο Α στο σημείο Β. Το πρώτο βήμα όμως για να πάτε κάπου είναι να εντοπίσετε πρώτα τη τρέχουσα θέση σας στο χάρτη. Αυτό είναι ίσως ένα πρόβλημα στη περίπτωση που είσαστε σε ένα ξένο τόπο και δεν έχετε GPS. Σε αυτή τη περίπτωση (και αν το κινητό σας το υποστηρίζει) μπορείτε να πατήσετε το πλήκτρο "μηδέν" και η εφαρμογή θα προσπαθήσει να προσδιορίσει τη θέση σας με κάποια ακρίβεια επάνω στο χάρτη μέσω του σήματος του κινητού. Αυτή η "ακρίβεια" μπορεί στη χειρότερη περίπτωση να είναι ένας κύκλος ακτίνας 5000 μέτρων....Το οποίο όπως πολύ σωστά σημειώνει ο asynadak μπορεί να καλύπτει ολόκληρη τη πόλη της Θεσσαλονίκης!!!

Παρ΄ όλο που αυτό ακούγεται γελοίο είναι πραγματικό ευεργέτημα όταν δεν έχεις απολύτως καμία ιδέα για το που είσαι αλλά και όταν δεν μιλάς τη γλώσσα. Το παρακάτω video απο το Google δίνει μια συνοπτική εικόνα για την υπηρεσία:


Η αλήθεια είναι οτι το video δεν είναι ξεκάθαρο για το πώς ακριβώς προσδιορίζεται η θέση του δέκτη επάνω στο χάρτη εκτός ίσως απο το οτι χρησιμοποιεί τις κεραίες κινητής τηλεφωνίας. Χρησιμοποιεί όμως μόνο μια κεραία; Χρησιμοποιεί παρα πάνω απο μια κεραίες και τοποθετεί το δέκτη στο σημείο τομής των περιοχών κάλυψης της κάθε κεραίας;

GSM Κινητή Τηλεφωνία:
Τα δίκτυα κινητής τηλεφωνίας GSM αποτελούνται απο ένα σύνολο απο σταθερούς σταθμούς (κεραίες) που ανάλογα με την ισχύ ή τον "προσανατολισμό" τους προσφέρουν κάλυψη σε μια γεωγραφική περιοχή για 8-16 περίπου κινητά τηλέφωνα σε ταυτόχρονη λειτουργία.

Το κάθε κινητό τηλέφωνο τώρα, διατηρεί εσωτερικά μια λίστα απο 6 (μέγιστος αριθμός) σταθμούς στους οποίους θα μπορούσε να συνδεθεί. Ανά τακτά χρονικά διαστήματα, η λίστα ανανεώνεται και το κινητό επιλέγει τον ένα και μοναδικό σταθμό με τον οποίο έχει τη καλύτερη επικοινωνία για να συνδεθεί παρ' όλο που ορισμένες περιοχές μπορεί να καλύπτονται το ίδιο καλά απο δύο ή περισσότερες κεραίες. Η διαδικασία της μετάβασης απο τη μια κεραία στην άλλη πραγματοποιείται σε ελάχιστο χρόνο και δεν γίνεται κάν αντιληπτή στο χρήστη ή τις εφαρμογές του τηλεφώνου. (Περισσότερες πληροφορίες καθώς επίσης και αναλυτικοί χάρτες με τη τρέχουσα κάλυψη για κάθε χώρα απο το GSMWorld.com)

Κάθε μια απο αυτές τις κεραίες στοιχίζει στην εταιρία παροχής κινητής τηλεφωνίας ένα σημαντικό πάγιο κόστος κάθε μήνα σε ενοίκιο για το χώρο που καταλαμβάνουν (είτε πρός το δήμο, το κράτος ή ιδιώτες ανάλογα με τη τοποθεσία), σε ηλεκτρικό ρεύμα και σε έξοδα συντήρησης. Η κάθε επιπλέον κεραία λοιπόν θα πρέπει να δικαιολογεί το κόστος της μέσω του αριθμού διαφορετικών συνδρομητών που συνδέονται επάνω της.

Άρα λοιπόν, ότι και να κάνει η εφαρμογή MyLocation του Google το κάνει εκμεταλευόμενη τις πληροφορίες που μπορεί να ξέρει απο μια και μόνο κεραία.....Πώς ακριβώς όμως και απο που προέρχονται τα σφάλματα στο προσδιορισμό της θέσης;

Ας πειραματιστούμε!

Η Διαδικασία Εντοπισμού Θέσης Μέσω GSM:
Σε περίπτωση που θέλετε να ακολουθήσετε τις δραστηριότητες που ακολουθούν, θα χρειαστείτε:
  • Ένα υπολογιστή (κατά προτίμηση με δυνατότητα σύνδεσης στο internet)
  • Ένα οποιοδήποτε κινητό τηλέφωνο το οποίο να μπορεί να συνδεθεί με τον υπολογιστή είτε μέσω Bluetooth είτε μέσω καλωδίου.
  • Μια εφαρμογή τερματικού (Hyperterminal στα windows για παράδειγμα ή το minicom στη περίπτωση που τρέχετε Linux)
  • Μια Bluetooth USB Dongle συσκευή αν το PC σας δεν έχει ΒΤ ή ένα καλώδιο που να επιτρέπει τη σύνδεση του κινητού με τον υπολογιστή.
Αυτά τα εξαρτήματα θα μας επιτρέψουν να βρούμε τη τοποθεσία μας επάνω στο χάρτη μέσω της κεραίας στην οποία είναι συνδεδεμένο το κινητό.

Για να εντοπίσουμε τη θέση μας χρειαζόμαστε τα εξης:
  • Την ταυτότητα της κεραίας στην οποία είναι συνδεδεμένο το κινητό τηλέφωνο
  • Την ακριβή θέση της κεραίας
  • Την ισχύ εκπομπής της κεραίας
  • Την τρέχουσα ένταση του λαμβανόμενου σήματος ώστε να προσδιορίσουμε κατα προσέγγιση τη θέση μας.
Αν συνδέετε το κινητό σας με καλώδιο στον υπολογιστή, το πιο πιθανό είναι να έχει προστεθεί ένα εικονικό σειριακό port με το όνομα COM3. Θυμηθείτε αυτό το όνομα γιατί θα το χρειαστείτε σε λίγο.

Αν συνδέετε το κινητό σας μέσω BT τότε αφού έχετε κάνει pair το κινητό μέσω Bluetooth και έχετε συνδεθεί στο "Serial Port Service", ξεκινήστε το Hyperterminal (Start->All Programs->Accessories->Communications->Hyperterminal)

Τα παρακάτω βήματα είναι κοινά είτε συνδέεστε με BT είτε συνδέεστε με καλώδιο.

Ξεκινήστε την εφαρμογή Hyperterminal των windows (ή το Minicom στο linux) και συνδεθείτε στην αντίστοιχη σειριακή (COM3 ή COM5...Το BT module θα σας αναφέρει σε ποιό port είναι συνδεδεμένο το τηλέφωνο).

Στο δικό μου υπολογιστή για παράδειγμα, το Bluetooth χρησιμοποιεί το εικονικό port COM5 στο οποίο έχω συνδεθεί μέσω του Hyperterminal στα 115200 Baud, 8 data bit, 1 stop bit, no parity, hardware flow control. Για λεπτομέρειες για αυτές τις ρυθμίσεις αφήστε κάποια ερώτηση στα σχόλια αλλά σε γενικές γραμμές αυτές οι ρυθμίσεις θα πρέπει να δουλέψουν στο κινητό σας.

Το πρώτο πράγμα που σας ζητάει το Hyperterminal είναι ένα όνομα για τη σύνδεση...Εδώ έχω δώσει απλά MyPhone...

...αμέσως μετά θα χρειαστεί να ρυθμίσετε το τρόπο με τον οποίο συνδεέστε. Το Hyperterminal χρησιμοποιείται παραδοσιακά για Dial-Up συνδέσεις σαν τερματικό και γι' αυτό θα σας έχει προεπιλεγμένο το Dial-Up Modem σας (αν έχετε). Επιλέξτε το κατάλληλο COM port και οι τηλεφωνικές επιλογές θα εξαφανιστούν...

...τέλος, πατήστε configure και κάνετε τις τελευταίες ρυθμίσεις της σύνδεσης όπως φαίνεται παραπάνω. Για να ολοκληρώσετε τη σύνδεση πατήστε ΟΚ μέχρι να βρεθείτε στο κεντρικό παράθυρο του Hyperterminal...

...εδώ και αν δεν σας έχει ήδη συνδέσει το Hyperterminal απο μόνο του, απλά πατήστε το 3 κουμπί απο αριστερά στο toolbar. Έχετε συνδεθεί στο modem σας!

Αυτό που έχουμε καταφέρει μέχρι τώρα είναι να συνδεθούμε στο GSM modem του κινητού. Αυτό είναι το κομάτι του κινητού τηλεφώνου που ασχολείται αποκλειστικά με την αναγνώριση του κινητού στο δίκτυο και αναλαμβάνει όλη την επικοινωνία. Το κινητό τηλέφωνο επικοινωνεί με το Modem μέσω ενός διαύλου επικοινωνίας (RS232 - σειριακά, SPI, I2C, κλπ). Δείτε σημείωση στο τέλος του κειμένου για τα GSM Modem.

Για ιστορικούς λόγους, η λειτουργία όλων των modem ρυθμίζεται απο ένα σύνολο απο εντολές που ξεκινάνε με τα γράμματα "AT". Όλα τα GSM Modem υποστηρίζουν ένα συγκεκριμένο set απο τέτοιες εντολές αλλά η κάθε εταιρία παρέχει και ένα ιδιαίτερο σέτ για ιδιαίτερες λειτουργίες του κάθε κινητού. Οι παρακάτω εντολές υποστηρίζοντε απο όλα τα κινητά.

Προσδιορισμός της ταυτότητας της κεραίας στην οποία είναι συνδεδεμένο το κινητό:
Πληκτρολογήστε τις παρακάτω εντολές με τη σειρά που δίνονται:
AT+CREG=2 (Ρυθμίζετε το κινητό να σας αναφέρει πλήρης λεπτομέρειες για τη κεραία στην οποία είναι συνδεδεμένο.)
AT+CREG? ("Ρωτάτε" το κινητό σε ποιά κεραία είναι συνδεδεμένο)

Η τελευταία εντολή θα σας δώσει μια απάντηση απο το κινητό που μοιάζει με τη παρακάτω γραμμή:

+CREG: 1, "#LAC","##CELLID"

Το Local Area Code (LAC) είναι ένας δεκαεξαδικός κωδικός που αποτελείται απο δύο byte και σας πληροφορεί για τον κωδικό της περιοχής στην οποία είσαστε συνδεδεμένοι. Το CELLID είναι ο κωδικός της κεραίας και μπορεί να έχει μήκος 4 byte (ή 8 στις νεότερες κεραίες που υποστηρίζουν και 3G υπηρεσίες). Προφανώς, δύο κεραίες με τον ίδιο κωδικό CELLID μπορούν να συνυπάρχουν ΜΟΝΟ σε περιοχές με διαφορετικούς κωδικούς LAC.

Ακριβής Θέση Και Ισχύς Της Κεραίας:
Πολύ ωραία, γνωρίζουμε την ταυτότητα της κεραίας στην οποία είμαστε συνδεδεμένοι...Πού είναι όμως αυτή η κεραία;
Σε αυτή τη περίπτωση θα μας βοηθήσει το internet.

Υπάρχουν διάφορα sites που συντηρούνται είτε απο οργανισμούς τηλεπικοινωνιών είτε απο ιδιώτες και έχουν σα σκοπό τους τη διατήρηση μιας βάσης δεδομένων με τα στοιχεία των κεραίων! Προσωπικά έχω βρεί πολύ χρήσιμες τις παρακάτω δύο:
  • cellspotting.com (Το συγκεκριμένο έχει και στοιχεία απο κεραίες στην Ελλάδα)
Για να ρωτήσετε οποιοδήποτε site πληροφορίες για τις κεραίες θα πρέπει να ξέρετε εκτός απο το LAC και το CELLID, δύο ακόμα κωδικούς που χρησιμοποιούντε στο δίκτυο GSM.

Αυτοί είναι ο Mobile Country Code (MCC) και ο Mobile Network Code (MNC). Τα ονόματα ερμηνεύονται απο μόνα τους. Για να βρείτε το MCC ρίξτε μια ματιά εδώ και για να βρείτε το MNC ρίξτε μια ματιά εδώ. Ενδεικτικά, ο MCC της Ελλάδας είναι 202 και το MNC της κινητής τηλεφωνίας που παρέχει ο Ελληνικός Τηλεπικοινωνιακός Οργανισμός μέσω της COSMOTE είναι 01.

Απο αυτά τα site λοιπόν προσδιορίζουμε οτι η κεραία στην οποία είναι συνδεδεμένο το κινητό τη στιγμή που ερωτήθηκε βρίσκεται -για παράδειγμα- σε αυτή εδώ τη τοποθεσία με τις εξής συντεταγμένες:

Γεωγραφικό Πλάτος: 38.460646 μοίρες
Γεωγραφικό Μήκος: 23.59211 μοίρες

Δυστυχώς, παρ' όλο που είναι ένα σημαντικό κομάτι πληροφορίας, η ισχύς της κεραίας δεν είναι διαθέσιμη για τις περισσότερες κεραίες που βρίσκονται στις παραπάνω βάσεις δεδομένων.....δε πειράζει όμως θα αυτοσχεδιάσουμε :-)

Προσδιορισμός Της Έντασης Του Λαμβανόμενου Σήματος:
Έχουμε προσδιορίσει που βρίσκεται η κεραία, πάμε τώρα να βρούμε την ένταση του λαμβανόμενου σήματος. Για να το κάνουμε αυτό, θα χρειαστεί να ξαναρωτήσουμε το κινητό, με μια ακόμα ΑΤ εντολή. Επιστρέφουμε στο Hyperterminal και δίνουμε την εντολή:

AT+CSQ


Στην οποία το κινητό μας απαντάει:

+CSQ: 14,99

Ο πρώτος αριθμός είναι η ισχύς του λαμβανόμενου σήματος σε μια κλίμακα που ανταποκρίνεται σε dBm (Δείτε σημείωση 2) και ο δεύτερος αριθμός είναι το Bit Error Rate (σε περίπτωση που έχουν μεταφερθεί δεδομένα απο τη τρέχουσα σύνδεση).

Χωρίς να μπώ σε λεπτομέρειες σε αυτό το σημείο (υπάρχει κάποια λογική πίσω απο τη παρακάτω μετατροπή), ας υποθέσουμε οτι αυτός ο αριθμός 14 ανταποκρίνεται σε -77dBm.

Απο τη Φυσική, γνωρίζουμε ότι η ένταση των ηλεκτρομαγνητικών κυμάτων μειώνεται αντιστρόφως ανάλογα με το τετράγωνο της απόστασης! Αυτό σημαίνει οτι αν η απόσταση του κινητού απο τη κεραία διπλασιαστεί η ένταση του λαμβανόμενου σήματος θα υποτετραπλασιαστεί (<- Η μεγαλύτερη λέξη που έχω γράψει μέχρι τώρα στο blog). Σε αυτό το σημείο θα βοηθούσε πολύ αν ξέραμε την ισχύ εκπομπής της κεραίας γιατί θα μπορούσαμε να βρούμε απλά την απόσταση αλλά δυστυχώς τα πράγματα δεν είναι έτσι. Οπότε ας υποθέσουμε οτι το κινητό και οι κεραίες βρίσκονται σε ανοιχτό χώρο και μάλιστα σε κενό (!!!!) και ας χρησιμοποιήσουμε τη κλασική σχέση της εξασθένησης του σήματος για να βρούμε ποιά απόσταση θα προκαλούσε εξασθένηση μεγέθους 77 dBm στο σήμα μας. Αυτή η απόσταση φαίνεται να είναι περίπου 190-200 μέτρα.

Άρα βρισκόμαστε σε κάποιο σημείο επάνω στη περιφέρεια ενός κύκλου με κέντρο τις συντεταγμένες της κεραίας και ακτίνα περίπου 200 μέτρα και θα μπορούσαμε να κεντράρουμε το χάρτη και να ζωγραφήσουμε το αντίστοιχο μπλέ κυκλάκι που σχηματίζει και το Google.

Γιατί αυτός ο τρόπος υπολογισμού έχει τόσο μεγάλο περιθώριο λάθους;

Η πραγματική απόσταση απο τη συγκεκριμένη κεραία που πιστεύω οτι είναι συνδεδεμένο το κινητό καθ όλη τη διάρκεια του πειράματος είναι κάτι περισσότερο απο 200 μέτρα επειδή τη βλέπω. Άρα αφού υπάρχει οπτική επαφή είναι πιο πιθανό το κινητό να έχει συνδεθεί με αυτή παρά με κάποια άλλη.

Όπως φαίνεται απο το τρόπο με τον οποίο γίνεται ο υπολογισμός της θέσης υπάρχουν δύο εξ ίσου σημαντικοί παράγοντες απο τους οποίους εξαρτάται η ακρίβεια του υπολογισμού:
  • Η ακριβής θέση της κεραίας
  • Το μοντέλο διάδοσης των ηλεκτρομαγνητικών κυμάτων που υποβάλει τη μαθηματική σχέση με την οποία βρίσκουμε την απόσταση.
Όσο αφορά το πρώτο παράγοντα και για τις δωρεάν υπηρεσίες που μπορεί να έχει κανείς ελεύθερη πρόσβαση απο το internet η ακριβής θέση της κεραίας εξαρτάται απο το GPS του χρήστη που έκανε τη καταχώρηση και δυστυχώς μπορεί να βρείτε καταχωρημένες κεραίες για τις οποίες δεν υπάρχουν αναλυτικά στοιχεία (ούτε κάν συντεταγμένες).

Όσο αφορά το δεύτερο παράγοντα τα πράγματα είναι ακόμα χειρότερα. Στο αστικό περιβάλον που είναι πιο πιθανό οτι θα χρησιμοποιήσετε αυτή την εφαρμογή η ένταση του σήματος δεν εξασθενεί σε καμία περίπτωση απλά με το αντίστροφο του τετραγώνου της απόστασης. Τις περισσότερες φορές ακόμα και αν η κεραία βρίσκεται στο διπλανό παράλληλο δρόμο και δεν έχετε απ' ευθείας οπτική επαφή το κινητό θα λαμβάνει το σήμα μετά απο πολλές ανακλάσεις στα διπλανά κτίρια. Αυτός ο τρόπος διάδοσης (μέσω των ανακλάσεων) εξασθενεί το σήμα πολύ περισσότερο απ' ότι η "φυσιολογική" εξασθένηση λόγο απόστασης, με αποτέλεσμα ενώ είσαστε κοντά στη κεραία να έχετε πολύ μικρή ακρίβεια στον υπολογισμό της θέσης.

Παρ' όλο που υπάρχουν και άλλα μοντέλα διάδοσης και εξασθένησης που λαμβάνουν υπ όψη τους (στατιστικά) το αστικό περιβάλλον και τις δυσκολίες του είναι πιο πιθανό το Google να έχει χρησιμοποιήσει μια και μοναδική σχέση με κάποιο συμβιβασμό της ακρίβειας μια και δεν είναι δυνατόν να γνωρίζει ο δέκτης τη φύση του περιβάλοντος για να διαλέγει το ανάλογο μοντέλο.


Αν βρισκόσαστε σε αστικό περιβάλλον και είσαστε ακόμα συνδεδεμένοι με το κινητό σας, αξίζει να το αφήσετε για λίγη ώρα και να παρατηρήσετε το CELLID. Απο τη στιγμή που του έχετε δώσει AT+CREG=2 δεν είναι ανάγκη να το ρωτάτε συνεχώς, όταν το κινητό θα αλλάξει κεραία θα σας "μιλήσει" μόνο του. Παρατηρήστε λοιπόν χωρίς να μετακινείτε το κινητό σας σε πόσες διαφορετικές κεραίες θα συνδεθεί για να βρείτε πόσες περίπου κεραίες έχετε γύρω σας.

Σε μια απο τις περιοχές που δοκίμασα τα παραπάνω, το τηλέφωνο άλλαξε 3 κεραίες μέσα σε διάστημα 30 λεπτών προσπαθόντας να κρατήσει σταθερό το σήμα της λήψης. Σε περίπτωση που αναρρωτιέστε, οι λόγοι για τους οποίους αλλάζουν οι συνθήκες μετάδοσης απο τη κεραία στο κινητό ενώ και τα δύο είναι σταθερά, είναι πολλοί. Απο περιβαλοντικές συνθήκες (άνεμος) μέχρι κινούμενα αντικείμενα όπως λεωφορεία ή δέντρα που τα παρασύρει ο άνεμος κλπ.

Κάπως έτσι λοιπόν πραγματοποιείται ο εντοπισμός θέσης μέσω του δικτύου GSM και με παρόμοιο τρόπο λειτουργεί και ο εντοπισμός θέσης μέσω WiFi (μέσω των θέσεων των hotspot).


Το σημείο το οποίω αγνοώ είναι το αν στα πιο νέα τηλέφωνα (αυτά για παράδειγμα που τρέχουν Symbian) έχει δωθεί μέσω κάποιου κατάλληλου Application Programming Interface (API) απο τους κατασκευαστές, η πρόσβαση σε αυτό τον προσωρινό κατάλογο που διατηρεί το κινητό με τους πιθανούς σταθμούς και τη ποιότητα σήματος προς αυτούς. Σε αυτή τη περίπτωση ο εντοπισμός θέσης θα γινόταν πιο ακριβείς με μόνη προυπόθεση βέβαια να καλύπτεται μια περιοχή απο περισσότερους σταθμούς χαμηλότερης ισχύος και όχι απο 1 σταθμό μεγάλης ισχύος...



Σημείωση 1: Κυκλοφορούν στο εμπόριο και ξεχωριστά modem (χωρίς το υπόλοιπο τηλέφωνο :-) ) με τα οποία ένα σύστημα μπορεί να επικοινωνήσει με το internet ή το δίκτυο κινητής τηλεφωνίας. Για παράδειγμα, ένας μετεωρολογικός σταθμός στη μέση του πουθενά (όπου το πουθενά καλύπτεται απο ένα δίκτυο κινητής τηλεφωνίας :-) ) θα μπορούσε να επικοινωνεί με ένα website συλλογής δεδομένων με ένα τέτοιο modem ή ένας συναγερμός θα μπορούσε να στέλνει ένα SMS μήνυμα στον ιδιοκτήτη για να τον ενημερώσει για κάποια πιθανή διάρηξη!

Σημείωση 2: Η μονάδα Decibel mW (dBm) είναι μια μονάδα μεγέθους ισχύος στην οποία μια τιμή εκφράζεται πάντα σε σχέση με μια ισχύ αναφοράς. Σε αυτή τη περίπτωση το 1 mW (Μιλιβάτ). Έχοντας τις τιμές ισχύος σε dBm μπορούμε να κάνουμε άνετα συγκρίσεις ανάμεσα σε διάφορες τιμές επειδή εκφράζονται ώς προς την κοινή μονάδα αναφοράς. Για περισσότερες λεπτομέρειες γενικά για τα dB ρίξτε μια ματιά εδώ.

6 σχόλια:

Ανώνυμος είπε...

Ουάου! Εντυπωσιάστηκα!!!

Λογικά κάτι τέτοιο θα χρησιμοποιεί και η google για να δώσει μία εκτίμηση της θέσης. Αλλά σε αυτή τη περίπτωση δεν θα έπρεπε να περιμένουμε αποκλίσεις ακτίνας 1000 μέτρων το πολύ?

Αυτό το λέω, γιατί στον αστικό ιστό τα εμπόδια (όπως λες και εσύ) είναι πολλά, κατά συνέπεια η κεραία στην οποία συνδέετε το κινητό (και έχει σχεδόν πάντα φουλ σήμα) πρέπει να είναι σχετικά κοντά.

Ίσως να χρησιμοποιεί κάτι διαφορετικό η google. Εκτός των άλλων, χρειάζεται να είσαι συνδεδεμένος στο Internet εκείνη τη στιγμή. Η διαδικασία που περιέγραψε δεν το απαιτεί αυτό (θεωρητικά - αν όλες οι πληροφορίες ήταν μέσα στην εφαρμογή και αύξαναν το μέγεθός της)! Μπορεί να παίρνει και από εκεί κάτω.

Πολύ ωραίο άρθρο πάντως, συγχαρητήρια!

AA είπε...

Γειά χαρά asynadak.

Σε ευχαριστώ για τα καλά σου λόγια.

Όσο αφορά την ακρίβεια που αναφέρεις. Ένα κομάτι στο οποίο δεν αναφέρθηκα καθόλου στο άρθρο γιατι θα έπρεπε να γράψω άλλες 1-1.5 σελίδες είναι το πως μετράει το κινητό την λαμβανόμενη ένταση. Το δικό μου κινητό για παράδειγμα μπορεί να μετρήσει απο -51 dBm μέχρι -117 dBm...Αυτό δίνει μια ένδειξη για τα όρια της ακρίβειας που μπορεί να έχεις....Οπότε αν είσαι πάρα πολύ κοντά στη κεραία η απόσταση σου δεν θα πέφτει κάτω απο αυτή που αντιστοιχεί στα -51dBm.

Όσο για τη σύνδεση στο internet ίσως να μην ήταν ξεκάθαρο απο τη πλευρά μου, αλλά όντως θα πρέπει να είσαι συνδεδεμένος γιατί αλλιώς πώς θα επικοινωνήσεις με τον server που έχει τη database με τα στοιχεία των κεραιών;

Δε νομίζω αυτή η πληροφορία να κατεβαίνει μαζί με την εφαρμογή (και να είναι στατική).
Και πάλι για λόγους συντομίας του άρθρου έχω παραλήψει το query πρός το celldb.org αλλά μπορείς να ρίξεις μια ματιά στο API τους για να δείς πως μοιάζει.

Σε ένα ιδεατό κόσμο, για τη μέγιστη ακρίβεια που μπορεί να σου δώσει αυτή η μέθοδος εντοπισμού θα έπρεπε να ξέραμε:

1) Την απόλυτη γεωγραφική θέση της κεραίας

2) Την ισχύ με την οποία εκπέμπει

3) Το πολικό διάγραμμα της κεραίας (Το οποίο σου δίνει την ισχύ εκπομπής συναρτήσει της θέσης (στο χώρο) γύρω απο τη κεραία.

Δυστυχώς όμως αυτό που μπορεί να ξέρεις (ΤΟ ΠΟΛΥ) είναι η γεωγραφική θέση της κεραίας και αυτό όχι σαν ζεύγη τιμών μήκους / πλάτους, αλλά απλά σαν περιοχή (Κρίνι, Καλαμαριά, Εύοσμος, Σταυρούπολη, Τριανδρία, Κέντρο, Τούμπα - Ευχαριστώ τον ev1 για τις τοπικές πληροφορίες ;-) - )....Και απο τη περιοχή μπορείς να βγάλεις τη μέση γεωγραφική θέση. Αυτό τουλάχιστον με το Google είναι πανεύκολο.

Οπότε ίσως και γι' αυτό σου δίνει απλά τη περιοχή που είναι πιο πιθανό να βρίσκεσαι μέσα με βάση τη κεραία που συνδεέσαι.

Ανώνυμος είπε...

ΓΕΙΑ ΣΟΥ ΦΙΛΕ ΠΟΛΥ ΑΝΤΙΠΩΣΙΑΚΟ ΤΟ ΠΕΙΡΑΜΑ ΣΟΥ ΘΑ ΗΘΕΛΑ ΝΑ ΣΕ ΡΩΤΗΣΩ ΕΠΙΔΕΙ ΠΑΡΑΔΕΙΔΩ ΜΙΑ ΕΡΓΑΣΙΑ ΓΙΑ ΤΟ GSM ENTOPISMOS ΑΝ ΜΠΟΡΩ ΝΑ ΤΟ ΧΡΕΙΣΙΜΟΠΟΙΗΣΩ ΘΑ ΑΝΑΦΕΡΩ ΒΕΒΑΙΑ ΑΠΟ ΠΟΥ ΤΟ ΠΗΡΑ.KAI KATI ALLO ΣΥΝΔΕΩ ΤΟ ΚΙΝΗΤΟ ΜΟΥ ΔΕΙΝΩ ΤΙΣ ΕΝΤΟΛΕς ΑΤ kai AT+CSQ ΜΟΥ ΕΜΦΑΝΙΖΕΙ ΟΚ ΜΕΤΑ ΓΡΑΦΩ ΑΤ+CREG+2 KAI AT+CREG? ΚΑΙ ΜΟΥ ΒΓΑΖΕΙ EROR ΤΗ ΔΕΝ ΠΑΕΙ ΚΑΛΑ?

AA είπε...

Γειά χαρά Souker

Δε σε εμποδίζει τίποτα απο το να αναφέρεις το άρθρο μου.

Έχε υπ' όψην σου οτι ίσως χρειαστεί να κάνεις κάποια επαλήθευση στους υπολογισμούς και θα πρέπει οπωσδήποτε να βρείς ένα καλό database για τις κεραίες και τις θέσεις τους.

Όσο αφορά τις εντολές που αναφέρεις, αυτή είναι η σωστή συμπεριφορά. Όλες οι AT εντολές που έχουν ερωτηματικό "ρωτάνε" το κινητό αν υποστηρίζει τη συγκεκριμένη λειτουργία και στη συνέχεια με τις εντολές υπόλοιπες εντολές όπως η AT+CSQ για παράδειγμα σου επιστρέφει τις πληροφορίες που χρειάζεσαι.

Αν έχεις δώσει τις εντολές με τη σειρά και την ορθογραφία που αναφέροντε μέσα στο άρθρο και το κινητό σου υποστηρίζει αυτές τις εντολές (μπορείς να το τσεκάρεις απο τις απαντήσεις που σου δίνει στις AT εντολές) δεν θα πρέπει να έχεις κανένα πρόβλημα.

Να είσαι καλά και καλή επιτυχία.

Unknown είπε...

φιλε αα επιδει με ενδιαφερει το θεμα μπορεισ να μου εξηγησεις πωσ το 14 γινεται 77db η καποιο συνδεσμο που να με παραπεψεις

AA είπε...

Γειά σου και πάλι soukerman.

Ο κατασκευαστής του κινητού έχει δημιουργήσει εσωτερικά μια αντιστοίχιση ανάμεσα στη τιμή RSSI (Received Signal Strength Indication) και την ισχύ που αντιστοιχεί σε αυτό τον αριθμό. Στο δικό μου κινητό για παράδειγμα το 14 που μου επιστρέφει με την ΑΤ εντολή αντιστοιχεί σε 77dBm λαμβανόμενης ισχύος.

Αυτό το βρήκα απο το τεχνικό manual για το Sony Ericsson W810i το οποίο εξηγεί και τις AT εντολές.
Ανάλογο Manual μπορείς να βρείς για οποιοδήποτε κινητό, οποιασδήποτε εταιρίας ψάχνοντας για παράδειγμα στο Google για "Nokia AT Commands" ή "Samsung AT Commands" κλπ.

Περισσότερες πληροφορίες για το RSSI μπορείς να βρείς απο εδώ:
http://en.wikipedia.org/wiki/RSSI


Ελπίζω να βοήθησα.

Δημοσίευση σχολίου

top