Αναπαράσταση Δεδομένων του Πρωτοκόλλου OBD-ΙΙ σε Android Συσκευές

Σχετικά έγγραφα
Γιώργος Γιαννής, Καθηγητής Εθνικό Μετσόβιο Πολυτεχνείο Τομέας Μεταφορών και Συγκοινωνιακής Υποδομής

Γενικές πληροφορίες για το OBD-ΙΙ ή OBD-2. Πηγή : CarCode Muller (Germany) Τι είναι το OBD-2/EOBD;

1. Από ποια μέρη αποτελείται η περιστροφική αντλία πετρελαίου ; Πώς διανέμεται το καύσιμο στους διάφορους κυλίνδρους ;

Ανάλυση του κωδικού βλάβης DTC OBD II σύμφωνα με το πρότυπο SAE J2012.

Εφαρμογή Διαχείρισης Στόλου Οχημάτων «RouteΤracker»

Διατίθεται εφαρμογή για κινητά τηλέφωνα android και ios. Γενική Αρχιτεκτονική Συστήματος

Τεχνικές Προδιαγραφές Συστήματος

Εξειδικευμένη τεχνική πληροφόρηση για επαγγελματίες μηχανικούς και ηλεκτρολόγους αυτοκινήτων

2. Ποιο είναι το πρώτο βήμα της μεθοδολογίας διάγνωσης βλαβών ; 165

RobotArmy Περίληψη έργου

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Πτυχιακή εργασία ΟΛΙΣΘΗΡΟΤΗΤΑ ΚΑΙ ΜΑΚΡΟΥΦΗ ΤΩΝ ΟΔΟΔΤΡΩΜΑΤΩΝ ΚΥΚΛΟΦΟΡΙΑΣ

Ηλεκτρονικός οδηγός για τους φοιτητές ενός Α.Ε.Ι.

WIRELESS SENSOR NETWORKS (WSN)

Θέματα Ατομικής Διπλωματικής Εργασίας Ακαδημαϊκό Έτος 2017/2018. Γεωργία Καπιτσάκη (Επίκουρη Καθηγήτρια)

Διάγνωση WOW! Me Snooper +

Υλοποίηση του συστήματος ecall εντός του Oχήματος - IVS

Μάθημα 4.2 Η μητρική πλακέτα

Κεφάλαιο 1.6: Συσκευές αποθήκευσης

Το πρώτο αυτοκίνητο Diesel Blend κυκλοφόρησε

SNMP ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 3 Μέτρηση Θερμοκρασίας Σύστημα Ελέγχου Θερμοκρασίας. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων

Σύστημα Αυτόματης Ταυτοποίησης. AIS Automatic Identification System

Κεφάλαιο 4. Διδακτικοί Στόχοι. Για την αναγκαιότητα, τον τρόπο συνεργασίας, τις δυνατότητες και τον τρόπο εγκατάστασης των περιφερειακών συσκευών.

Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές

Ανάλυση, Στατιστική Επεξεργασία και Παρουσίαση Δεδομένων με χρήση Ανοικτών Λογισμικών Δρ. Φίλιππος Σοφός

Κατασκευή Πληροφοριακού Συστήματος Διαχείρισης Στόλου Οχημάτων

ΑΝΑΠΤΥΞΗ ΛΟΓΙΣΜΙΚΟΥ ΓΙΑ ΤΗ ΔΙΕΝΕΡΓΕΙΑ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΜΕΛΕΤΩΝ

Περισσότερες εφαρµογές, απεριόριστες δυνατότητες

Σύστημα Διαχείρισης, Ελέγχου και Παρακολούθησης Ασθενοφόρων και Περιστατικών

Αρχιτεκτονική Υπολογιστών

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή

Ασφάλεια σε χώρους αναψυχής: Ένα σύστημα από έξυπνα αντικείμενα

ΑΝΑΚΟΙΝΩΣΗ ΔΙΑΔΙΚΑΣΙΑΣ ΑΠΕΥΘΕΙΑΣ ΑΝΑΘΕΣΗΣ. Αριθμ. Πρωτ.: /2017 Ο ΕΙΔΙΚΟΣ ΛΟΓΑΡΙΑΣΜΟΣ ΚΟΝΔΥΛΙΩΝ ΕΡΕΥΝΑΣ

ΑΠΑΝΤΗΣΕΙΣ ΣΤΑ ΘΕΜΑΤΑ ΤΩΝ ΠΑΝΕΛΛΑΔΙΚΩΝ ΕΞΕΤΑΣΕΩΝ HMEΡΗΣΙΩΝ ΚΑΙ ΕΣΠΕΡΙΝΩΝ ΕΠΑΓΓΕΛΜΑΤΙΚΩΝ ΛΥΚΕΙΩΝ

Συστήματα μεταβλητής πολλαπλής εισαγωγής. Τα συστήματα μεταβλητής πολλαπλής εισαγωγής παρουσιάζουν τα

Μάθημα 5: To Μοντέλο Αναφοράς O.S.I.

Μάθημα 4.1 Βασικές μονάδες προσωπικού υπολογιστή

Εκτέλεση προγράμματος

FIRE PROTECTION NETWORK

ΡΗΜΑΤΟΔΟΤΕΙΤΑΙ ΑΠΟ ΤΟ ΕΥΡΩΠΑΪΚΟ ΤΑΜΕΙΟ ΠΕΡΙΦΕΡΕΙΑΚΗΣ ΑΝΑΠΤΥΞΗΣ

ΕΝΙΑΙΟ ΠΛΑΙΣΙΟ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΠΟΥΔΩΝ

Εφαρμογή Διαχείρισης Στόλου Οχημάτων. «RouteΤracker»

Υλοποίηση Εφαρμογής Διαγνωστικών Οχήματος σε Πλατφόρμα Android ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ

Κεφάλαιο 1 Εισαγωγή.

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2008

Speed-0 WMP: Web and Mobile Platform Software Requirements Specification

Λειτουργίες CNC-DNC. Επισκόπηση λειτουργιών CNC Επισκόπηση λειτουργιών DNC Επικοινωνίες. Λειτουργίες CNC-DNC. Γ.Βοσνιάκος-ΕΡΓΑΛΕΙΟΜΗΧΑΝΕΣ

ΘΕΡΜΙΚΕΣ ΜΗΧΑΝΕΣ (Σύστημα Εισαγωγής Ψεκασμός Καυσίμου)

ΣΥΣΤΗΜΑ ΤΗΛΕΔΙΑΧΕΙΡΙΣΗΣ & ΤΗΛΕ-ΕΛΕΓΧΟΥ ΔΙΚΤΥΟΥ ΗΛΕΚΤΡΟΦΩΤΙΣΜΟΥ

Εφαρμογές Υπολογιστών. Κεφάλαιο 4 Λογισμικό Συστήματος

Παραδείγματα Δεδομένων: Οι τιμές στο κυλικείο, μια λίστα από ονόματα, τα σήματα της τροχαίας.

Ψηφιακές Επικοινωνίες

Γιώργος Μουτουσίδης. Υπεύθυνος Οργάνωσης και Εμπορικού

ΡΟΜΠΟΤΙΚΗ. ΕΡΓΑΣΙΑ ΠΑΝΩ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΝΧΤ ΚΑΙ ΤΑ ΠΡΩΤΟΚΟΛΛΑ ΕΠΙΚΟΙΝΩΝΙΑΣ BLUETOOTH, I2C και serial communication

Ανατομία ενός πομποδέκτη σταθμού βάσης HSDPA (Node-B)

Έλεγχος με Μικροϋπολογιστές Εργαστήριο ενσωματωμένων συστημάτων

Περιεχόµενα. Πληροφοριακά Συστήµατα: Κατηγορίες και Κύκλος Ζωής. Π.Σ. ιαχείρισης Πράξεων. Π.Σ. ιοίκησης. Κατηγορίες Π.Σ. Ο κύκλος ζωής Π.Σ.

1. Σύστημα μέτρησης πολλαπλών καταναλώσεων με αισθητήρες και οπτικοποίηση σε PC, smartphone ή tablet - CMS

ΕΡΩΤΗΣΕΙΣ ΚΑΙ ΑΠΑΝΤΗΣΕΙΣ ΣΤΑ ΘΕΜΑΤΑ ΤΩΝ ΠΑΝΕΛΛΗΝΙΩΝ ΕΞΕΤΑΣΕΩΝ ΑΠΟΦΟΙΤΩΝ ΗΜΕΡΗΣΙΩΝ ΕΠΑ.Λ ΣΤΟ ΜΑΘΗΜΑ : «ΜΕΚ ΙΙ»

Σχεδόν ένα στα τέσσερα νέα μοντέλα οχημάτων διαθέτουν σύστημα αναγνώρισης κόπωσης οδηγού.

Bread Online. Παναγιώτης Ιωαννίδης Επιβλέπων καθηγητής: Μηνάς Δασυγένης

MarineTraffic Έρευνα & Εφαρμογές. Δημήτρης Λέκκας, Πανεπιστήμιο Αιγαίου

Πτυχιακή Εργασία Οδηγώντας ένα Ρομποτικό Αυτοκίνητο με το WiFi. Η Ασύρματη Επικοινωνία, χρησιμοποιώντας

Π2.4: Σύστημα εντός οχήματος

Ανάπτυξη Δικτύων Ελέγχου και Αυτοματισμού Ενεργειακών Εγκαταστάσεων

Θεσσαλονίκη Alert - Αναλυτική παρουσίαση εφαρμογής

ΕΡΩΤΗΣΕΙΣ ΚΑΙ ΑΠΑΝΤΗΣΕΙΣ ΣΤΑ ΘΕΜΑΤΑ ΤΩΝ ΠΑΝΕΛΛΗΝΙΩΝ ΕΞΕΤΑΣΕΩΝ ΣΤΟ ΜΑΘΗΜΑ : «ΜΕΚ ΙΙ»

Λογικά σύμβολα των CPU, RAM, ROM και I/O module

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 5. Ρυθμίζοντας τη Φορά Περιστροφής. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων

ΚΕΦΑΛΑΙΟ. Βασικές αρχές λειτουργίας και χρήσης του υπολογιστή

Τεχνολογίες & Εφαρμογές Πληροφορικής Ενότητα 10: Κινητή Τηλεφωνία

Αρχές Δικτύων Επικοινωνιών. Επικοινωνίες Δεδομένων Μάθημα 4 ο

Για τους Χρήστες του RICOH Smart Device Connector: Διαμόρφωση του Μηχανήματος

Ενότητα 1η. Εισαγωγή στην Πληροφορική

Βασικές Έννοιες Πληροφορικής

1. Ηλεκτρικοί κινητήρες- σερβοκινητήρας 2. Ελεγκτές. ΜΠΔ, 9 Ο Εξάμηνο Σάββας Πιπερίδης

Ψηφιακά Αντικείμενα Μάθημα 1 Δραστηριότητα 2. Προγραμματισμός Φυσικών Συστημάτων. Συστήματα Πραγματικών Εφαρμογών. Νέα Ψηφιακά Αντικείμενα

Σχεδιασμός Επεξεργασίας και Τηλεπεξεργασίας

Εξειδικευμένη τεχνική πληροφόρηση για επαγγελματίες μηχανικούς και ηλεκτρολόγους αυτοκινήτων.

Στόχοι. Υπολογιστικά συστήματα: Στρώματα. Βασικές έννοιες [7]

ΕΠΛ 001: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δίκτυα Υπολογιστών

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

Linux Terminal Server Project

Υδρόμετρα. Συστήματα Ανάγνωσης Μετρητών από Απόσταση AMR

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Προσδιορισμός των κρίσιμων παραμέτρων επιρροής της υπέρβασης των ορίων ταχύτητας με δεδομένα από έξυπνα κινητά τηλέφωνα Αριστοτέλης Κοκκινάκης

Μέτρηση Θερμοκρασίας με τον αισθητήρα TMP36. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων. Βασική δομή ενός προγράμματος στο LabVIEW.

Σχολή Διοίκησης και Οικονομίας. Μεταπτυχιακή διατριβή

Απαντήσεις Διευκρινίσεων για το έργο «Τηλεματικές υπηρεσίες επέκτασης διαχείρισης Αστικού ΚΤΕΛ Χανίων Α.Ε. και εξυπηρέτησης επιβατικού κοινού»

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι

Σχολή Μηχανικής και Τεχνολογίας. Πτυχιακή εργασία

Δεδομένων. Μοναστηρίου 7, Άγιος Στέφανος. Tηλ.: Φαξ: Website:

Arduino applications for drone development & programming. 18 th Panhellenic Conference in Informatics 2 nd 4 th of October, 2014

Σχολή Μηχανικής και Τεχνολογίας. Πτυχιακή διατριβή

ΔΙΚΤΥΑ ΕΠΙΚΟΙΝΩΝΙΩΝ. Ιωάννης Σταυρακάκης, Καθηγητής Password: edi

Κεφάλαιο 4 Λογισμικό συστήματος. Εφαρμογές Πληροφορικής Κεφ.4 Καραμαούνας Πολύκαρπος 1

Απαντήστε στις παρακάτω ερωτήσεις πολλαπλής επιλογής (μόνο μία ερώτηση είναι σωστή):

Σύστημα Διαχείρισης Φωτισμού. Εφαρμογές, Δυνατότητες & Πλεονεκτήματα

ΜΕΛΕΤΗ ΚΑΙ ΚΑΤΑΣΚΕΥΗ ΣΥΣΤΗΜΑΤΟΣ ΜΕΤΡΗΣΗΣ ΑΤΜΟΣΦΑΙΡΙΚΩΝ ΠΑΡΑΜΕΤΡΩΝ ΠΟΥ ΕΠΗΡΕΑΖΟΥΝ ΤΗΝ ΔΙΕΝΕΡΓΕΙΑ ΑΣΤΡΟΝΟΜΙΚΩΝ ΠΑΡΑΤΗΡΗΣΕΩΝ ΚΑΙ ΜΕΤΡΗΣΕΩΝ.

Transcript:

Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πρόγραμμα Μεταπτυχιακών Σπουδών Επιστήμη και Τεχνολογία Υπολογιστών Αναπαράσταση Δεδομένων του Πρωτοκόλλου OBD-ΙΙ σε Android Συσκευές Αλκιβιάδης Χριστοδούλου Α.Μ. 965 Επιβλέποντες Γεώργιος Παυλίδης, Καθηγητής - Κυριάκος Βλάχος, Αναπληρωτής Καθηγητής Συνεπιβλέπων ΕΔΙΠ Αριστείδης Ηλίας Πάτρα, 2016

Τριμελής Εξεταστική Επιτροπή Παυλίδης Γεώργιος: Επιβλέπων Καθηγητής, Καθηγητής του Τμήματος Μηχανικών Η/Υ και Πληροφορικής του Πανεπιστημίου Πατρών. Βλάχος Κυριάκος: Μέλος τριμελούς επιτροπής, Αναπληρωτής Καθηγητής του Τμήματος Μηχανικών Η/Υ και Πληροφορικής του Πανεπιστημίου Πατρών. Λυκοθανάσης Σπυρίδων: Μέλος τριμελούς επιτροπής, Καθηγητής του Τμήματος Μηχανικών Η/Υ και Πληροφορικής του Πανεπιστημίου Πατρών.

Περίληψη Ο κλάδος των έξυπνων κινητών συσκευών εξελίσσεται με ταχύτατους ρυθμούς τα τελευταία χρόνια. Οι τελευταίας τεχνολογίας κινητές συσκευές εξοπλίζονται με διάφορες ασύρματες διεπαφές και η υπολογιστική τους ισχύ είναι αρκετά μεγάλη ώστε να είναι σε θέση να εκτελούν μια ευρεία ποικιλία εργασιών. Ανάλογη δραστηριότητα παρατηρείται τα τελευταία χρόνια και στην περιοχή των ευφυών συστημάτων μεταφορών (Intelligent Transportation Systems) με δύο σημαντικά μειονεκτήματα: τον αργό ρυθμό με τον οποίο τα οχήματα γίνονται εξυπνότερα και το μεγάλο κόστος υλοποίησής τους. Από την άλλη πλευρά, στο χώρο της αυτοκίνησης έχει εισαχθεί αρκετά χρόνια τώρα, η έννοια του Διαγνωστικού Ελέγχου (On Board Diagnostics, OBD), αρχικά ως εργαλείο συνεχούς ελέγχου εκπομπών καυσαερίων. Με την ανάπτυξη των ηλεκτρονικών συστημάτων ελέγχου των κινητήρων εξελίχθηκε το πρωτόκολλο ΟΒD-II, το οποίο ανάλογα με τον κατασκευαστή, μπορεί να πραγματοποιεί πολύ περισσότερους ελέγχους σε ένα όχημα και καταγράφει διάφορες μετρήσεις από αισθητήρες που ελέγχει πάνω στο όχημα. Μερικές από αυτές τις μετρήσεις είναι το φορτίο του κινητήρα, η ταχύτητα περιστροφής του κινητήρα, η ταχύτητα του οχήματος, η θερμοκρασία του ψυκτικού μέσου του κινητήρα, κ.ά. Εάν υπάρχει πρόβλημα, ένας διαγνωστικός κώδικας (DTC) αποθηκεύεται στη μνήμη της εσωτερικής πλακέτας στο όχημα. Ο συνδυασμός των έξυπνων κινητών συσκευών στα υπάρχοντα οχήματα, τα οποία διαθέτουν ενσωματωμένα συστήματα αυτοδιάγνωσης (OBD II), με την υλοποίηση της κατάλληλης διεπαφής μπορεί να αναπτύξει νέες λειτουργίες και υπηρεσίες για τους οδηγούς, την οδήγηση και την κατάσταση ενός οχήματος. Στην παρούσα εργασία μελετάται η μεθοδολογία για την άντληση των κατάλληλων δεδομένων από την ηλεκτρονική πλακέτα ενός αυτοκινήτου, ο τρόπος με τον οποίο μπορεί αυτή η πληροφορία να διοχετευθεί προς ένα σύστημα αναπαράστασης και ο σχεδιασμός και η ανάπτυξη μιας ολοκληρωμένης πλατφόρμας για την αναπαράσταση των δεδομένων του πρωτοκόλλου OBD-II σε Android συσκευές. Το σύστημα θα δίνει τη δυνατότητα στους χρήστες να παρακολουθούν τα δεδομένα του οχήματος σε πραγματικό χρόνο και επιπλέον να τα καταγράφουν σε κάποιο αρχείο στην κινητή

συσκευή, έτσι ώστε να τα μεταφορτώσουν στη συνέχεια σε κάποιο διαδικτυακό εξυπηρετητή για περαιτέρω ανάλυση. Επιπρόσθετα, τα δεδομένα θα μπορούν να αποτυπώνονται σε μορφή γραφημάτων και θα γίνεται καταγραφή της διαδρομής που ακολουθεί ο χρήστης μέσω του GPS της συσκευής. Τέλος, θα υπολογίζονται και θα αναπαριστάνονται άλλες χρήσιμες πληροφορίες, όπως η κατανάλωση καυσίμου για την ολοκληρωμένη στατιστική ανάλυση της διαδρομής που ακολουθεί ο χρήστης και θα αποδειχτεί με πραγματικές δοκιμές η ορθότητα λειτουργίας της εφαρμογής. Abstract In recent years the smartphone industry is advancing rapidly. The latest technology mobile devices are equipped with various wireless interfaces and their computational power is large enough to be able to perform a wide variety of tasks. In addition, a similar activity is observed in Intelligent Transportation Systems area with two major drawbacks: the slow pace at which the vehicles become smarter and their large implementation cost. On the other hand, in the automotive area has been introduced several years now the concept of On Board Diagnostics, initially as an exhaust emission continuous monitoring tool. With the development of electronic engine control systems, was developed the OBD II protocol, which, depending on the manufacturer, can perform many more diagnostic checks in a vehicle and record various measurements from sensors that control on the vehicle. Some of these measurements are the engine load, the engine speed, the vehicle speed, the engine coolant temperature, etc. If there is a malfunction, a diagnostic code is stored in the internal board s memory of the vehicle. The combination of smartphones on existing vehicles, which are equipped with On Board Diagnostic Systems, and the implementation of an appropriate interface can develop new functionality and services for the drivers, the driving and a vehicle s condition. In the present thesis is studied the methodology for the extraction of the appropriate data from a vehicle s electronic board, the way in which this information can be directed to a representation system and the design and development of an integrated

platform for OBD II protocol s data representation on Android devices. The system will allow users to monitor vehicle s data in real time and in addition to store them in a file on the mobile device, so that they can upload them afterwards to a web server for further analysis. Additionally, data will be presented to graphs and will be recorded the user s route via the device s GPS. Finally, will be calculated and represented other useful information, such as fuel consumption for the comprehensive statistical analysis of the route followed by the user and will be proved with real testing the application s correct operation.

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ Κεφάλαιο 1. Ενσωματωμένα Συστήματα Διάγνωσης και Εφαρμογές.. 1 1.1 Ενσωματωμένα συστήματα διάγνωσης... 2 1.1.1 Πρότυπα OBD... 4 1.1.1.1 ALDL... 4 1.1.1.2 OBD-I... 4 1.1.1.3 OBD-1.5... 5 1.1.1.4 OBD-II... 5 1.1.2 Εργαλεία ανάγνωσης OBD δεδομένων... 6 1.1.2.1 Φορητά εργαλεία ανάγνωσης... 6 1.1.2.2 Εργαλεία ανάγνωσης βασιζόμενα σε υπολογιστές... 7 1.1.2.3 Εργαλεία ανάγνωσης βασιζόμενα σε κινητές συσκευές... 8 1.1.2.4 Καταγραφείς δεδομένων... 8 1.2 Εφαρμογές OBD συστημάτων... 9 1.2.1 Απομακρυσμένα συστήματα διάγνωσης... 9 1.2.2 Συστήματα ανίχνευσης και αναφοράς ατυχημάτων... 11 1.2.3 Συστήματα υποβοήθησης οδήγησης... 12 1.2.4 Άλλες εφαρμογές των OBD δεδομένων... 13 1.3 Προκλήσεις... 14 Κεφάλαιο 2. Εφαρμοζόμενες Τεχνολογίες... 17 2.1 Το πρότυπο OBD-II... 18 2.1.1 Διαγνωστική θύρα... 18 2.1.2 Πρωτόκολλα σηματοδοσίας... 20 2.1.3 Διαγνωστικά δεδομένα... 22 2.2 Λειτουργικό σύστημα Android... 24 2.2.1 Εκδόσεις Android... 25 2.2.2 Αρχιτεκτονική του Android... 28 2.2.2.1 Πυρήνας Linux... 29 2.2.2.2 Βιβλιοθήκες... 30 2.2.2.3 Περιβάλλον εκτέλεσης... 30 2.2.2.4 Πλαίσιο εφαρμογής... 31 2.2.2.5 Εφαρμογές... 32 2.2.3 Βασικά χαρακτηριστικά και Συστατικά εφαρμογών Android... 32 2.2.4 Συνδεσιμότητα... 37 2.2.5 Εντοπισμός θέσης... 38 Κεφάλαιο 3. Υλοποίηση Android Εφαρμογής... 40 3.1 Εξοπλισμός... 41 3.1.1 Εργαλείο σάρωσης OBD-II... 41 3.1.1.1 Πρωτόκολλο επικοινωνίας IDD- 212B... 42 3.1.1.2 Λειτουργία IDD- 212B... 44 3.1.2 Android συσκευή... 45 Αλκιβιάδης Χριστοδούλου - ΑΜ 965 i

3.2 Λειτουργίες εφαρμογής... 47 3.3 Δομή εφαρμογής... 50 3.4 Ζητήματα υλοποίησης... 51 3.4.1 Δημιουργία Bluetooth σύνδεσης... 51 3.4.2 Λήψη των δεδομένων και αποθήκευση σε αρχείο... 54 3.4.3 Αναπαράσταση των δεδομένων... 59 3.4.4 Καταγραφή διαδρομής χρήστη... 62 3.4.5 Μεταφόρτωση του αρχείου στο Dropbox... 63 3.5 Υπολογισμός χρήσιμων πληροφοριών από OBD δεδομένα... 66 Κεφάλαιο 4. Πειραματική Αξιολόγηση... 69 4.1 Πειραματικά αποτελέσματα... 69 4.2 Συμπεράσματα... 73 Κεφάλαιο 5. Επίλογος και Μελλοντικές Κατευθύνσεις... 75 5.1 Μελλοντικές κατευθύνσεις... 76 Παράρτημα: Κώδικας... 78 Βιβλιογραφία-Αναφορές... 138 Αλκιβιάδης Χριστοδούλου - ΑΜ 965 ii

ΛΙΣΤΑ ΕΙΚΟΝΩΝ Εικόνα 1: Σύστημα OBD... 4 Εικόνα 2: Φορητό εργαλείο ανάγνωσης... 7 Εικόνα 3: Εργαλείο σάρωσης με USB... 7 Εικόνα 4: OBD-II θύρα αυτοκινήτου... 19 Εικόνα 5: Pin-outs OBD-II θύρας... 19 Εικόνα 6: Μορφή μηνύματος J1850, ISO 9141-2, ISO 14230... 22 Εικόνα 7: Μορφή μηνύματος ISO 15765... 22 Εικόνα 8: Κατανομή εκδόσεων Android... 28 Εικόνα 9: Αρχιτεκτονική Android... 29 Εικόνα 10: Κύκλος ζωής ενός Activity... 34 Εικόνα 11: Κύκλος ζωής ενός Service... 36 Εικόνα 12: IDD-212B... 41 Εικόνα 13: Πρόγραμμα διαμόρφωσης εργαλείου σάρωσης... 42 Εικόνα 14: Sony Ericsson Xperia Ray... 45 Εικόνα 15: (α) Αρχική οθόνη, (β) Πλαϊνό μενού... 47 Εικόνα 16: Διάγραμμα ροής σύνδεσης... 49 Εικόνα 17: Άδεια ενεργοποίησης Bluetooth... 52 Εικόνα 18: Αντιστοιχισμένες συσκευές... 52 Εικόνα 19: Αναζήτηση νέων συσκευών... 53 Εικόνα 20: Επιτυχής σύνδεση... 54 Εικόνα 21: Ανάκτηση αποθηκευμένων δεδομένων... 56 Εικόνα 22: Ρυθμίσεις... 59 Εικόνα 23: Δεδομένα πραγματικού χρόνου... 59 Εικόνα 24: Πίνακας οργάνων... 60 Εικόνα 25: (α) Γράφημα ταχύτητας, (β) Γράφημα στροφών... 61 Εικόνα 26: Ειδοποιήσεις... 62 Εικόνα 27: Διαδρομή... 63 Εικόνα 28: Μεταφόρτωση αρχείου... 64 Εικόνες 29: Άδεια πρόσβασης στο Dropbox... 65 Εικόνα 30: Διαδικασία μεταφόρτωσης αρχείου... 65 Εικόνα 31: Ταχύτητα αυτοκινήτου... 70 Εικόνα 32: Μέση ταχύτητα από υπολογιστή ταξιδίου... 70 Εικόνα 33: Στιγμιαία κατανάλωση καυσίμου... 71 Εικόνα 34: Μέση κατανάλωση καυσίμου από υπολογιστή ταξιδίου... 72 Αλκιβιάδης Χριστοδούλου - ΑΜ 965 iii

ΛΙΣΤΑ ΠΙΝΑΚΩΝ Πίνακας 1: Pin-outs OBD-II θύρας... 20 Πίνακας 2: Εκδόσεις Android... 27 Πίνακας 3: Χαρακτηριστικά του Xperia Ray... 46 Πίνακας 4: Δεδομένα ταξιδιού... 58 Αλκιβιάδης Χριστοδούλου - ΑΜ 965 iv

Πρόλογος Ενδιαφέρον παρουσιάζει τα τελευταία χρόνια η ανάπτυξη ευφυών συστημάτων μεταφορών και η προσπάθεια της αυτοκινητοβιομηχανίας για την ενσωμάτωσή τους στα σύγχρονα αυτοκίνητα. Το γεγονός, όμως, ότι οι άνθρωποι έχουν στην ιδιοκτησία τους τα αυτοκίνητα για αρκετά χρόνια έχει οδηγήσει στην ανάγκη για εξεύρεση εναλλακτικών λύσεων που θα εκμεταλλεύονται την υπάρχουσα τεχνολογία των αυτοκινήτων. Μία τέτοια λύση αποτελεί και ο συνδυασμός της ήδη υπάρχουσας τεχνολογίας των αυτοκινήτων, και συγκεκριμένα των ενσωματωμένων συστημάτων διάγνωσης, με τις έξυπνες κινητές συσκευές. Οι σύγχρονες έξυπνες κινητές συσκευές εφαρμόζουν διάφορες διεπαφές επικοινωνίας και αισθητήρες που, σε συνδυασμό με την τεχνολογία των αυτοκινήτων, μπορούν να προσφέρουν εξελιγμένες υπηρεσίες για τον τελικό χρήστη κατά τη διάρκεια της οδήγησης. Στην παρούσα διπλωματική εργασία θα μελετήσουμε τη μεθοδολογία για την άντληση των κατάλληλων δεδομένων από την ηλεκτρονική πλακέτα ενός αυτοκινήτου και τον τρόπο με τον οποίο μπορεί αυτή η πληροφορία να διοχετευθεί προς ένα σύστημα αναπαράστασης. Επιπλέον, θα προχωρήσουμε στο σχεδιασμό και την ανάπτυξη μιας ολοκληρωμένης πλατφόρμας για την αναπαράσταση των δεδομένων του πρωτοκόλλου OBD-II σε Android συσκευές. Στο Κεφάλαιο 1 γίνεται μία εισαγωγή στα ενσωματωμένα συστήματα διάγνωσης καθώς και στα διάφορα πρότυπα και εργαλεία ανάγνωσης που έχουν αναπτυχθεί κατά καιρούς για την άντληση των δεδομένων από τα συστήματα αυτά. Επίσης, αναφέρονται διάφορες εφαρμογές των δεδομένων αυτών και η αξιοποίησή τους μέσα από κάποιες έρευνες που έχουν πραγματοποιηθεί πάνω στο συγκεκριμένο τομέα. Τέλος, παρουσιάζονται και οι προκλήσεις που καλούνται να αντιμετωπίσουν οι ερευνητές. Οι διαθέσιμες τεχνολογίες τόσο των αυτοκινήτων όσο και των έξυπνων κινητών συσκευών που εφαρμόζονται στη πράξη για την υλοποίηση συστημάτων άντλησης δεδομένων από τα ενσωματωμένα συστήματα διάγνωσης των αυτοκινήτων αναλύονται στο Κεφάλαιο 2. Συγκεκριμένα, αναλύονται όλες οι βασικές πτυχές του προτύπου OBD-II που εφαρμόζεται κατά κόρον σε όλα τα αυτοκίνητα από τις αρχές του 2000 και Αλκιβιάδης Χριστοδούλου - ΑΜ 965 v

μετά. Επιπλέον, γίνεται εκτενής αναφορά στα βασικά χαρακτηριστικά του λειτουργικού συστήματος Android που χρησιμοποιήθηκε για την ανάπτυξη της πλατφόρμας αναπαράστασης των δεδομένων του πρωτοκόλλου OBD-II. Στο Κεφάλαιο 3 περιγράφεται η υλοποίηση της Android εφαρμογής. Αρχικά, γίνεται μία αναφορά στον εξοπλισμό που χρησιμοποιήθηκε καθώς επίσης και στις βασικές λειτουργίες της εφαρμογής. Στη συνέχεια, παρουσιάζουμε αναλυτικά τα διάφορα ζητήματα υλοποίησης και τον τρόπο υπολογισμού άλλων χρήσιμων πληροφοριών από τα OBD δεδομένα. Το Κεφάλαιο 4 περιλαμβάνει την πειραματική αξιολόγηση της εφαρμογής που υλοποιήσαμε με πραγματικές δοκιμές και τα συμπεράσματα που προέκυψαν από αυτή. Τέλος, στο Κεφάλαιο 5 δίνονται ορισμένες μελλοντικές κατευθύνσεις τις οποίες, κατά τη γνώμη μας, πρέπει να ακολουθήσει η έρευνα για τη βελτίωση της πλατφόρμας έτσι ώστε να αποτελέσει μία πραγματική εναλλακτική λύση για τα ευφυή συστήματα μεταφορών. Κλείνοντας, θα ήθελα να ευχαριστήσω τον κ. Γεώργιο Παυλίδη, Καθηγητή του Τμήματος Μηχανικών Η/Υ και Πληροφορικής του Πανεπιστημίου Πατρών, για την επίβλεψη αυτής της διπλωματικής εργασίας. Επίσης, θα ήθελα να ευχαριστήσω τον κ. Κυριάκο Βλάχο, Αναπληρωτή Καθηγητή του Τμήματος Μηχανικών Η/Υ και Πληροφορικής του Πανεπιστημίου Πατρών, καθώς και τον κ. Αριστείδη Ηλία για την πολύτιμη συμβολή τους κατά τη διάρκεια εκπόνησης της εργασίας. Αλκιβιάδης Χριστοδούλου - ΑΜ 965 vi

Κεφάλαιο 1. Ενσωματωμένα Συστήματα Διάγνωσης και Εφαρμογές Τα τελευταία χρόνια παρατηρείται μία αυξανόμενη δραστηριότητα ως προς την ανάπτυξη ευφυών συστημάτων μεταφορών (Intelligent Transportation Systems- ITS), τα οποία θα μπορούν να παρέχουν καινοτόμες υπηρεσίες που θα αφορούν στους διάφορους τρόπους μεταφοράς και διαχείρισης της κυκλοφορίας και θα επιτρέπουν στους διάφορους χρήστες να ενημερώνονται καλύτερα και να κάνουν πιο ασφαλή, πιο συντονισμένη και εξυπνότερη χρήση των δικτύων μεταφορών. Στην ανάπτυξη τέτοιων συστημάτων βασίζεται σήμερα και η αυτοκινητοβιομηχανία, έτσι ώστε τα αυτοκίνητα που παράγονται να είναι σε θέση να παρέχουν ανάλογες υπηρεσίες στους οδηγούς. Ωστόσο, παρουσιάζονται δύο σημαντικά μειονεκτήματα: ο αργός ρυθμός με τον οποίο τα αυτοκίνητα γίνονται εξυπνότερα και το μεγάλο κόστος υλοποίησης τους. Τα μειονεκτήματα αυτά σε συνδυασμό με το γεγονός ότι οι άνθρωποι δεν αγοράζουν συχνά καινούριο αυτοκίνητο έχουν σαν αποτέλεσμα να αναζητούνται άλλοι τρόποι για να παρέχονται τέτοιες υπηρεσίες, οι οποίοι θα εκμεταλλεύονται την ήδη υπάρχουσα τεχνολογία των αυτοκινήτων. Τα περισσότερα αυτοκίνητα σήμερα, αν όχι όλα, είναι εξοπλισμένα με πολλές μονάδες ηλεκτρονικού ελέγχου (Electronic Control Units- ECUs), οι οποίες είναι υπεύθυνες για τον συντονισμό και τον έλεγχο των εσωτερικών εξαρτημάτων και υποσυστημάτων των αυτοκινήτων. Η επικοινωνία μεταξύ αυτών πραγματοποιείται μέσω της αρτηρίας CAN (Controller Area Network Bus) και τα όποια δεδομένα προκύπτουν καταλήγουν σε ένα ενσωματωμένο σύστημα διάγνωσης (On Board Diagnostic System- OBD System). Μέσω αυτού του συστήματος δίνεται η δυνατότητα τόσο στους οδηγούς όσο και στους Αλκιβιάδης Χριστοδούλου- ΑΜ 965 1

μηχανικούς να έχουν πρόσβαση στα διάφορα υποσυστήματα των αυτοκινήτων και να καταγράφουν διάφορες μετρήσεις από αισθητήρες που υπάρχουν σε αυτά. Από την άλλη πλευρά, ο κλάδος των έξυπνων κινητών συσκευών εξελίσσεται με ταχύτατους ρυθμούς τα τελευταία χρόνια. Οι τελευταίας τεχνολογίας κινητές συσκευές εξοπλίζονται με διάφορες ασύρματες διεπαφές και η υπολογιστική τους ισχύ είναι αρκετά μεγάλη ώστε να είναι σε θέση να εκτελούν μια ευρεία ποικιλία εργασιών. Επιπλέον, οι κινητές συσκευές αναβαθμίζονται πιο συχνά ως προς το υλικό και το λογισμικό τους διότι οι χρήστες τις ανανεώνουν πολύ συχνότερα σε σύγκριση με τα αυτοκίνητα. Επομένως, μία καλή προσέγγιση θα ήταν ο συνδυασμός των έξυπνων κινητών συσκευών με την ήδη υπάρχουσα τεχνολογία των αυτοκινήτων και συγκεκριμένα των ενσωματωμένων συστημάτων διάγνωσης για την παροχή αντίστοιχων υπηρεσιών. Πέρα από αυτό, η χρήση των έξυπνων κινητών συσκευών δίνει τη δυνατότητα χρησιμοποίησης περαιτέρω αισθητήρων και διεπαφών επικοινωνίας που επιτρέπουν τη βελτίωση των χαρακτηριστικών οδήγησης του αυτοκινήτου χωρίς να αλλάζει τίποτα στο αυτοκίνητο. Για το λόγο αυτό, οι έρευνες έχουν επικεντρωθεί και στην ανάπτυξη συστημάτων σε επίπεδο υλικού που θα συνδέονται με το ενσωματωμένο σύστημα διάγνωσης των αυτοκινήτων για να είναι δυνατή η άντληση των διάφορων δεδομένων, αλλά και στην ανάπτυξη εφαρμογών σε επίπεδο λογισμικού που θα παρουσιάζουν τα δεδομένα στους χρήστες και θα προσφέρουν κατ επέκταση προηγμένες υπηρεσίες. 1.1 Ενσωματωμένα συστήματα διάγνωσης Γενικά ένα ενσωματωμένο σύστημα διάγνωσης (On Board Diagnostic- OBD) είναι ένα σύστημα που χρησιμοποιείται κατά κόρον στην αυτοκινητοβιομηχανία και αναφέρεται στην αυτοδιάγνωση και στην ικανότητα αναφοράς προβλημάτων ενός οχήματος [1]. Δηλαδή, δίνει τη δυνατότητα στους ιδιοκτήτες των οχημάτων αλλά και στους τεχνικούς να έχουν πρόσβαση στα διάφορα υποσυστήματα του οχήματος έτσι ώστε να ελέγχουν την κατάστασή τους. Αλκιβιάδης Χριστοδούλου - ΑΜ 965 2

Συγκεκριμένα, πρόκειται για ένα υπολογιστικό σύστημα που αρχικά είχε σχεδιαστεί για την συνεχή παρακολούθηση των εκπομπών ρύπων των αυτοκινήτων και της απόδοσης σημαντικών εξαρτημάτων των κινητήρων. Στη συνέχεια, και με την ανάπτυξη των ηλεκτρονικών συστημάτων ελέγχου των κινητήρων, εξελίχθηκαν τα διάφορα πρότυπα OBD μέσω των οποίων είναι εφικτή η πραγματοποίηση πολύ περισσότερων ελέγχων σε ένα αυτοκίνητο και η καταγραφή διάφορων μετρήσεων από αισθητήρες που ελέγχει το OBD. Μερικές από αυτές τις μετρήσεις είναι το φορτίο του κινητήρα, η ταχύτητα περιστροφής του κινητήρα, η ταχύτητα του αυτοκινήτου, η θερμοκρασία του ψυκτικού μέσου του κινητήρα, κ.ά. Επιπλέον, σε περίπτωση που εμφανιστεί κάποιο πρόβλημα ένας διαγνωστικός κωδικός (Digital Trouble Code- DTC) αποθηκεύεται στη μνήμη της εσωτερικής πλακέτας στο αυτοκίνητο. Οι παλαιότερες εκδόσεις του OBD άναβαν απλά μία ενδεικτική λυχνία σε περίπτωση που εντοπιζόταν κάποια δυσλειτουργία, αλλά δεν παρείχαν καμία άλλη πληροφορία σχετικά με τη φύση του προβλήματος. Αντίθετα, οι σύγχρονες εκδόσεις του OBD χρησιμοποιούν μία τυποποιημένη θύρα ψηφιακής επικοινωνίας έτσι ώστε να παρέχουν δεδομένα σε πραγματικό χρόνο, πέρα από τους διαγνωστικούς κωδικούς προβλημάτων. Πλέον, ένα βασικό σύστημα OBD αποτελείται από μία μονάδα ηλεκτρονικού ελέγχου (Electronic Control Unit- ECU), η οποία χρησιμοποιεί δεδομένα από διάφορους αισθητήρες με σκοπό τον έλεγχο των διάφορων μηχανισμών κίνησης του κινητήρα. Για παράδειγμα, χρησιμοποιεί δεδομένα από τους αισθητήρες οξυγόνου, οι οποίοι είναι τοποθετημένοι στην εξάτμιση του αυτοκινήτου για να παρακολουθείται πόσο άκαυστο οξυγόνο εξέρχεται με τα καυσαέρια του κινητήρα, έτσι ώστε να ελέγχεται η ποσότητα ψεκασμού του καυσίμου για να επιτυγχάνεται η επιθυμητή απόδοση του κινητήρα. Επιπλέον, η ECU είναι υπεύθυνη για την ενεργοποίηση διάφορων ενδεικτικών λυχνιών (Malfunction Indicator Light- MIL) σε περίπτωση που παρουσιαστεί κάποια δυσλειτουργία στον κινητήρα και για την προώθηση διάφορων άλλων παραμέτρων που υποστηρίζουν τα σύγχρονα αυτοκίνητα σε μία τυποποιημένη θύρα ψηφιακής επικοινωνίας (Diagnostic Link Connector- DLC), όπως αναφέραμε και παραπάνω. Οι παράμετροι αυτοί είναι διαθέσιμοι μέσω της θύρας αυτής χρησιμοποιώντας μία συσκευή που ονομάζεται εργαλείο σάρωσης. Αλκιβιάδης Χριστοδούλου - ΑΜ 965 3

Εικόνα 1: Σύστημα OBD 1.1.1 Πρότυπα OBD 1.1.1.1 ALDL Το πρότυπο ALDL (Assembly Line Diagnostic Link) αναπτύχθηκε από την General Motors και αποτελεί προκάτοχο του OBD I. Οι διαφορετικές εκδόσεις του, ανάλογα με την μονάδα ηλεκτρονικού ελέγχου (ECU) που χρησιμοποιούνταν κάθε φορά, είχαν μικρές διαφορές ως προς τα pin-outs και τον ρυθμό των δεδομένων. Οι παλαιότερες εκδόσεις χρησιμοποιούσαν ρυθμό 160 bits/sec, ενώ οι νεότερες έφταναν μέχρι 8192 bits/sec με αμφίδρομη επικοινωνία με την ECU. 1.1.1.2 OBD-I Η ανάπτυξη του προτύπου OBD I είχε ως σκοπό να ενθαρρύνει τους κατασκευαστές αυτοκινήτων να σχεδιάζουν αξιόπιστα συστήματα ελέγχου των εκπομπών ρύπων που θα παραμένουν αποτελεσματικά για πολύ μεγάλο χρονικό διάστημα. Οι διαγνωστικοί κωδικοί προβλημάτων (DTCs) ήταν διαθέσιμοι χρησιμοποιώντας ένα φθηνό εργαλείο σάρωσης, ωστόσο κάθε κατασκευαστής χρησιμοποιούσε την δική του ψηφιακή θύρα επικοινωνίας (DLC), τους δικούς του ορισμούς και διαδικασία ανάγνωσης των DTCs. Γενικά, οι DTCs ερμηνεύονταν διαφορετικά ανάλογα τον κατασκευαστή και η όλη διαδικασία δεν ήταν τυποποιημένη όπως συμβαίνει στο πρότυπο OBD II. Επιπλέον, οι διαθέσιμοι DTCs σε αυτοκίνητα που χρησιμοποιούν το OBD I πρότυπο είναι λιγότεροι από τους διαθέσιμους σε αυτοκίνητα που χρησιμοποιούν το OBD II. Αλκιβιάδης Χριστοδούλου - ΑΜ 965 4

1.1.1.3 OBD-1.5 Πρόκειται για μία ενδιάμεση έκδοση μεταξύ του OBD I και του OBD II που αναπτύχθηκε από την General Motors και χρησιμοποιήθηκε σε κάποια από τα αυτοκίνητά της το 1994 και 1995. Ουσιαστικά είναι μία μερική υλοποίηση του OBD II και περιλαμβάνει πρόσθετα διαγνωστικά κυκλώματα και κυκλώματα ελέγχου των οποίων τα δεδομένα είναι διαθέσιμα στην ψηφιακή θύρα. 1.1.1.4 OBD-II Το πρότυπο OBD II αποτελεί μία βελτιωμένη έκδοση σε σχέση με το πρότυπο OBD I τόσο ως προς την ικανότητα ανάγνωσης περισσότερων δεδομένων, όσο και ως προς την τυποποίηση. Στο συγκεκριμένο πρότυπο καθορίζεται ο τύπος της ψηφιακής θύρας και τα pin-outs της, τα ηλεκτρικά πρωτόκολλα σηματοδοσίας που είναι διαθέσιμα και η μορφή των μηνυμάτων. Επιπλέον, στη θύρα OBD II υπάρχει ένα pin που παρέχει ενέργεια στο εργαλείο σάρωσης από την μπαταρία του αυτοκινήτου, έτσι ώστε να μην απαιτείται η σύνδεση του εργαλείου σε ξεχωριστή πηγή τροφοδοσίας. Βέβαια, υπάρχει η δυνατότητα σύνδεσης του εργαλείου και σε δευτερεύουσα πηγή τροφοδοσίας για την προστασία των δεδομένων σε περίπτωση απώλειας της ηλεκτρικής ενέργειας του αυτοκινήτου λόγω βλάβης. Όσον αφορά την ικανότητα ανάγνωσης περισσότερων δεδομένων που αναφέραμε παραπάνω, το OBD II παρέχει μία λίστα υποψήφιων παραμέτρων του αυτοκινήτου για παρακολούθηση μαζί με τον τρόπο που κωδικοποιούνται τα δεδομένα για κάθε μία από αυτές τις παραμέτρους. Επιπρόσθετα, παρέχεται μία εκτεταμένη λίστα από διαγνωστικούς κωδικούς οι οποίοι είναι ίδιοι για όλα τα αυτοκίνητα και αποτελούνται από τέσσερα ψηφία μαζί με ένα γράμμα να προηγείται και να αναφέρεται αντίστοιχα σε διαφορετικό μέρος του αυτοκινήτου όπου εντοπίζεται το εκάστοτε πρόβλημα. Συγκεκριμένα, οι αντιστοιχίες των γραμμάτων είναι οι εξής: P για τον κινητήρα και την μετάδοση κίνησης (powertrain), B για το σώμα του αυτοκινήτου, C για το σασί και U για το δίκτυο διασύνδεσης των ηλεκτρονικών συστημάτων. Παρόλο που η ανάγκη για την τυποποίηση του OBD II προέκυψε από τις απαιτήσεις για την μέτρηση των εκπομπών ρύπων και μόνο τα δεδομένα σχετικά με αυτές Αλκιβιάδης Χριστοδούλου - ΑΜ 965 5

απαιτούνταν να μεταδίδονται, οι περισσότεροι κατασκευαστές χρησιμοποιούν τη θύρα OBD II ως μοναδική στο αυτοκίνητο μέσω της οποίας μπορούν να έχουν πρόσβαση σε όλα τα συστήματα τόσο για διάγνωση όσο και για προγραμματισμό. Τέλος, αποτέλεσμα αυτής της τυποποίησης αποτελεί ακόμα και η θέση που πρέπει να βρίσκεται η θύρα OBD II στο αυτοκίνητο. Κατά κανόνα απαιτείται να βρίσκεται εντός περίπου πενήντα εκατοστών αριστερά και κάτω από το τιμόνι, εκτός και αν ο κατασκευαστής κατ εξαίρεση την έχει τοποθετήσει σε άλλο μέρος, αλλά και πάλι σε σημείο που θα έχει άμεση πρόσβαση ο οδηγός. Οι αντίστοιχες εκδόσεις του OBD II σε Ευρώπη, Ιαπωνία και Αυστραλία είναι οι EOBD, JOBD και ADR 79/01 & 79/02 χωρίς να διαφέρουν ουσιαστικά από την βασική έκδοση. Αναλυτικά για το πρότυπο OBD II και τα συγκεκριμένα χαρακτηριστικά του θα αναφερθούμε σε επόμενο κεφάλαιο. 1.1.2 Εργαλεία ανάγνωσης OBD δεδομένων Για την πρόσβαση στις λειτουργίες του OBD έχουν αναπτυχθεί διάφορα εργαλεία που συνδέονται στη θύρα OBD του αυτοκινήτου. Τα εργαλεία αυτά ποικίλουν από απλά εργαλεία που μπορεί να χρησιμοποιήσει οποιοσδήποτε χρήστης μέχρι εξειδικευμένα εργαλεία για τους μηχανικούς. 1.1.2.1 Φορητά εργαλεία ανάγνωσης Σε αυτή την κατηγορία συναντάμε απλά εργαλεία ανάγνωσης κωδικών βλαβών και επαναφοράς που απευθύνονται στους απλούς χρήστες καθώς και επαγγελματικά εργαλεία τα οποία διαθέτουν πιο προηγμένες λειτουργίες. Τέτοιες λειτουργίες είναι η πρόσβαση σε πιο εξειδικευμένες διαγνώσεις, σε ειδικές παραμέτρους της ECU του αυτοκινήτου αλλά και σε μονάδες ελέγχου άλλων συστημάτων όπως το σύστημα των αερόσακων. Επιπλέον, σε κάποια από αυτά τα εργαλεία προσφέρεται η δυνατότητα παρακολούθησης σε πραγματικό χρόνο των παραμέτρων του κινητήρα ακόμα και η απεικόνιση σε γραφήματα με σκοπό να διευκολυνθεί είτε η διάγνωση είτε η βελτίωση της απόδοσης του κινητήρα. Αλκιβιάδης Χριστοδούλου - ΑΜ 965 6

Εικόνα 2: Φορητό εργαλείο ανάγνωσης 1.1.2.2 Εργαλεία ανάγνωσης βασιζόμενα σε υπολογιστές Πρόκειται ουσιαστικά για προγράμματα υπολογιστών το λογισμικό των οποίων αναλαμβάνει να μετατρέψει τα δεδομένα που λαμβάνει σε μορφή που να μπορεί να διαβαστεί από τον εκάστοτε χρήστη. Τα δεδομένα αυτά παρέχονται στον υπολογιστή μέσω του εργαλείου σάρωσης που τοποθετείται στη θύρα OBD του αυτοκινήτου και είναι υπεύθυνο για την μετατροπή των OBD σημάτων σε σειριακά δεδομένα τα οποία μέσω της USB ή της σειριακής θύρας αποστέλλονται στον υπολογιστή. Τα περισσότερα εργαλεία σάρωσης βασίζονται στα ολοκληρωμένα κυκλώματα ELM [2] ή STN1110 [3] για τη μετατροπή από OBD μορφή σε σειριακή. Εικόνα 3: Εργαλείο σάρωσης με USB Αλκιβιάδης Χριστοδούλου - ΑΜ 965 7

Εκτός από τις λειτουργίες των φορητών εργαλείων ανάγνωσης, τα εργαλεία που βασίζονται σε υπολογιστή προσφέρουν γενικά μεγάλη χωρητικότητα αποθήκευσης για την καταγραφή δεδομένων και για άλλες λειτουργίες, υψηλότερη ανάλυση εικόνας και την ικανότητα να χρησιμοποιούν διάφορα προγράμματα προσθέτοντας ευελιξία. 1.1.2.3 Εργαλεία ανάγνωσης βασιζόμενα σε κινητές συσκευές Οι διάφορες εφαρμογές κινητών συσκευών που αναπτύσσονται δίνουν τη δυνατότητα σε κινητά τηλέφωνα ή tablets να εμφανίζουν και να επεξεργάζονται δεδομένα στα οποία έχουν πρόσβαση μέσω του OBD. Απαραίτητη προϋπόθεση είναι η σύνδεση ενός εργαλείου σάρωσης στη θύρα OBD του αυτοκινήτου και έπειτα η σύνδεση της κινητής συσκευής με αυτό τον προσαρμογέα είτε ενσύρματα με καλώδιο USB είτε ασύρματα μέσω Bluetooth και Wi-Fi. Η λειτουργικότητα αυτών των εργαλείων είναι παρόμοια με αυτή των εργαλείων σε υπολογιστές που αναφέραμε παραπάνω. Αναλυτικά στην υλοποίηση τέτοιων εφαρμογών θα αναφερθούμε σε επόμενη ενότητα αφού αποτελεί και αντικείμενο της παρούσας διπλωματικής εργασίας. 1.1.2.4 Καταγραφείς δεδομένων Οι καταγραφείς δεδομένων είναι εργαλεία σάρωσης τα οποία περιλαμβάνουν εσωτερική μνήμη αποθήκευσης για την καταγραφή των δεδομένων, ενώ το αυτοκίνητο βρίσκεται σε κανονική λειτουργία, ώστε να χρησιμοποιηθούν για μεταγενέστερη ανάλυση. Αυτή είναι και η κύρια διαφορά τους από τα εργαλεία σάρωσης που χρησιμοποιούνται για τις εφαρμογές υπολογιστών και κινητών συσκευών, αν και τα περισσότερα σύγχρονα εργαλεία σάρωσης περιλαμβάνουν μνήμη αποθήκευσης σε περίπτωση που δεν υπάρχει σύνδεση πραγματικού χρόνου με κάποια εφαρμογή ανάγνωσης. Μερικές ασφαλιστικές εταιρίες προσφέρουν μειωμένα ασφάλιστρα σε περίπτωση που εγκατασταθεί στο αυτοκίνητο ένας τέτοιος καταγραφέας δεδομένων [4], αρκεί βέβαια η οδηγική συμπεριφορά του οδηγού να πληροί τις προϋποθέσεις που θέτει η εταιρία. Επιπλέον, αντίστοιχοι καταγραφείς χρησιμοποιούνται και από εταιρίες που διαθέτουν στόλους οχημάτων για να παρακολουθούν τους οδηγούς τους. Αλκιβιάδης Χριστοδούλου - ΑΜ 965 8

Ουσιαστικά μπορούν να λειτουργήσουν ως τα μαύρα κουτιά των αυτοκινήτων και τα δεδομένα τους να συλλέγονται σε περιοδική βάση ή αμέσως μετά από κάποιο τροχαίο ατύχημα ή σε περίπτωση που προκύψει κάποια μηχανική βλάβη. 1.2 Εφαρμογές OBD συστημάτων Όπως αναφέραμε και παραπάνω οι έρευνες έχουν επικεντρωθεί τόσο στην ανάπτυξη συστημάτων σε επίπεδο υλικού που θα συνδέονται με το ενσωματωμένο σύστημα διάγνωσης των αυτοκινήτων για να είναι δυνατή η άντληση των διάφορων δεδομένων, όσο και στην ανάπτυξη εφαρμογών σε επίπεδο λογισμικού που θα παρουσιάζουν τα δεδομένα στους χρήστες και θα προσφέρουν κατ επέκταση προηγμένες υπηρεσίες. Αυτές οι έρευνες έχουν σαν αποτέλεσμα την ανάπτυξη διάφορων απομακρυσμένων συστημάτων διάγνωσης της κατάστασης των αυτοκινήτων, συστημάτων που θα παρέχουν έγκαιρη ενημέρωση σε περίπτωση ατυχήματος και συστημάτων που παρέχουν χρήσιμες συμβουλές στους οδηγούς. Στη συνέχεια θα αναφερθούμε σε κάποια από αυτά τα συστήματα αλλά και σε άλλες εφαρμογές των OBD δεδομένων. 1.2.1 Απομακρυσμένα συστήματα διάγνωσης Από την αρχή των ερευνών βασικό σημείο μελέτης αποτέλεσε η ανάγκη για την απομακρυσμένη διάγνωση σε περίπτωση κάποιας βλάβης. Η απομακρυσμένη διάγνωση είναι αρκετά σημαντική διότι ανά πάσα στιγμή ο οδηγός έχει την δυνατότητα να αποστέλλει τα διαγνωστικά δεδομένα σε έναν εξειδικευμένο μηχανικό ώστε αυτός να είναι σε θέση να πραγματοποιήσει μία πρώτη εκτίμηση της βλάβης που έχει παρουσιαστεί. Ο Lin κ.ά. ασχολήθηκαν με την ανάπτυξη ενός on- line και πραγματικού χρόνου συστήματος έγκαιρης προειδοποίησης για τα αυτοκίνητα [5]. Συγκεκριμένα, ανέπτυξαν υλικό που χρησιμοποιεί το ολοκληρωμένο κύκλωμα ELM323 για την επικοινωνία με το OBD σύστημα του αυτοκινήτου καθώς και ολοκληρωμένα κυκλώματα GPS και GPRS. Κύριος στόχος τους είναι η ανάκτηση των διαγνωστικών κωδικών βλαβών και η αποστολή τους σε κάποιον εξυπηρετητή μέσω GPRS. Το υλικό δεν παρέχει καμία Αλκιβιάδης Χριστοδούλου - ΑΜ 965 9

διεπαφή επικοινωνίας με τον χρήστη και τα δεδομένα είναι προσβάσιμα μόνο από τον εξυπηρετητή. Αντίστοιχα ο Wei κ.ά. ανέπτυξαν και αυτοί δικό τους υλικό για την παρακολούθηση και διάγνωση βλαβών στο οποίο, πέρα από τα άλλα, έχουν ενσωματώσει και κάρτα μνήμης για την αποθήκευση των δεδομένων που έχουν ανακτηθεί [6]. Επιπλέον, παρέχουν και διεπαφή επικοινωνίας με τον χρήστη έχοντας εγκαταστήσει το λειτουργικό σύστημα WinCE 6.0 (Windows Embedded Compact) της Microsoft. Μέσω αυτού του συστήματος εκτελείται το λογισμικό που έχουν αναπτύξει για την ανάκτηση και επεξεργασία των δεδομένων που παρέχει η ECU. Παρόμοια έρευνα πραγματοποίησαν και ο Quanqi κ.ά. οι οποίοι παρουσιάζουν τα σφάλματα που εντοπίζονται σε μία LCD οθόνη χρησιμοποιώντας την μέθοδο του δέντρου σφαλμάτων [7]. Στις προηγούμενες έρευνες τα εργαλεία σάρωσης του OBD που αναπτύχθηκαν περιελάμβαναν ολοκληρωμένα κυκλώματα GPRS για την απευθείας μετάδοση των δεδομένων σε κάποιο απομακρυσμένο εξυπηρετητή. Με την εξέλιξη των κινητών συσκευών και τις δυνατότητες που πλέον παρέχουν, κάποιες έρευνες εστίασαν στη μετάδοση των δεδομένων από τα εργαλεία σάρωσης, μέσω Bluetooth, στις συσκευές αυτές με σκοπό τόσο την παρουσίαση των δεδομένων στην οθόνη των κινητών συσκευών όσο και την προώθησή τους σε κάποιο εξυπηρετητή. Συγκεκριμένα, ο Tahat κ.ά. υλοποίησαν το δικό τους εργαλείο σάρωσης το οποίο βασίζεται στο ολοκληρωμένο κύκλωμα ELM327, για την ανάγνωση των δεδομένων από το OBD σύστημα του αυτοκινήτου, και περιλαμβάνει και ένα ολοκληρωμένο κύκλωμα Bluetooth για τη σύνδεση με τις κινητές συσκευές [8]. Επιπλέον, υλοποίησαν μία εφαρμογή Android μέσω της οποίας συνδέεται η κινητή συσκευή με Bluetooth στο εργαλείο σάρωσης και ανακτώνται τα διάφορα δεδομένα και έπειτα τα δεδομένα αυτά παρουσιάζονται στην οθόνη της συσκευής και μεταφορτώνονται σε κάποιο εξυπηρετητή. Μία εξέλιξη της έρευνας [8] είναι αυτή του Nille κ.ά. οι οποίοι πρόσθεσαν και κάποιους άλλους αισθητήρες στον μικροεπεξεργαστή για παρακολούθηση [9]. Δηλαδή, πέρα από τα OBD δεδομένα συλλέγουν και δεδομένα από διάφορους άλλους αισθητήρες, όπως οι αισθητήρες στάθμης καυσίμου, θερμοκρασίας, ζώνης ασφαλείας Αλκιβιάδης Χριστοδούλου - ΑΜ 965 10

και αγγίγματος για την ανίχνευση εγγύτητας. Αντίστοιχα, τα δεδομένα μεταφέρονται μέσω Bluetooth σε μία Android κινητή συσκευή, παρουσιάζονται μέσα από την αντίστοιχη εφαρμογή και υπάρχει η δυνατότητα μεταφόρτωσης σε κάποιο εξυπηρετητή. Τέλος, ο Yang κ.ά. επικεντρώθηκαν στην ανάπτυξη ενός ολοκληρωμένου συστήματος παρακολούθησης δεδομένων και διάγνωσης βλαβών για υβριδικά ηλεκτρικά αυτοκίνητα [10]. Το σύστημα αυτό παρέχει μία εφαρμόσιμη λύση για την ανάκτηση πληροφοριών από το OBD σύστημα και για την απομακρυσμένη παρακολούθηση αυτών με βάση την πλατφόρμα Android. Πιο συγκεκριμένα, χρησιμοποιεί ένα εργαλείο σάρωσης ELM327, που κυκλοφορεί στο εμπόριο, για την ανάγνωση των δεδομένων από το OBD σύστημα και μέσω Bluetooth τα προωθεί στην Android συσκευή. Πέρα από την εμφάνιση των δεδομένων αυτών στην οθόνη της συσκευής και της δυνατότητας μεταφόρτωσής τους σε κάποιο εξυπηρετητή, εντοπίζει τη θέση του χρήστη μέσω του GPS της Android συσκευής και την αποτυπώνει σε χάρτη. Με αυτό τον τρόπο και ο χρήστης μπορεί να παρακολουθεί παράλληλα την τοποθεσία στην οποία βρίσκεται, αλλά και μέσω του εξυπηρετητή δίνεται η δυνατότητα σε τρίτους να γνωρίζουν ανά πάσα στιγμή που βρίσκεται το αυτοκίνητο. 1.2.2 Συστήματα ανίχνευσης και αναφοράς ατυχημάτων Ορισμένες ερευνητικές εργασίες, που αφορούν στην εισαγωγή των έξυπνων κινητών συσκευών στην αυτοκινητοβιομηχανία, επικεντρώνονται στην ανίχνευση και αναφορά ατυχημάτων. Τέτοιες περιπτώσεις είναι το WreckWatch [11] και η πρόταση του Zaldivar κ.ά. [12]. Αμφότερες επικεντρώνονται στη σημασία της γρήγορης ανταπόκρισης των υπηρεσιών έκτακτης ανάγκης σε περίπτωση ατυχήματος. Στην εργασία WreckWatch έχει υλοποιηθεί ένας μηχανισμός που παρέχει εντοπισμό και γνωστοποίηση ενός ατυχήματος με τη χρήση των ενσωματωμένων αισθητήρων και των διεπαφών επικοινωνίας των έξυπνων κινητών συσκευών. Παρουσιάζεται ένα τυπικό μοντέλο για την ανίχνευση των ατυχημάτων, συνδυάζοντας τους αισθητήρες των κινητών συσκευών και δεδομένα του πλαισίου αναφοράς, και σε συνδυασμό με διαδικτυακές υπηρεσίες παρέχεται μία πρώτη επίγνωση της κατάστασης σε αυτούς που θα κινητοποιηθούν άμεσα. Αλκιβιάδης Χριστοδούλου - ΑΜ 965 11

Κάποια από τα δεδομένα που αποστέλλονται σε περίπτωση ανίχνευσης ενός ατυχήματος είναι η τοποθεσία από το GPS, η ταχύτητα του αυτοκινήτου πριν τη σύγκρουση, οι επιταχύνσεις που μετρήθηκαν πριν και κατά τη διάρκεια της σύγκρουσης και ένα ηχητικό αρχείο του γεγονότος. Τα αποτελέσματα αυτής της έρευνας είναι πολύ ενθαρρυντικά διότι προκύπτει ότι η διαφορά μεταξύ της επιτάχυνσης που παρουσιάζεται σε μία κινητή συσκευή όταν συμβεί ένα ατύχημα είναι πολύ διαφορετική από την επιτάχυνση σε οποιαδήποτε άλλη κατάσταση. Με τον τρόπο αυτό μπορούν να αποφευχθούν οι λάθος διαγνώσεις ενός ατυχήματος. Στην περίπτωση της πρότασης του Zaldivar κ.ά., έχει αναπτυχθεί ένα παρόμοιο σύστημα χρησιμοποιώντας επιπλέον δεδομένα από το OBD σύστημα του αυτοκινήτου. Οι συγγραφείς έχουν υλοποιήσει μία εφαρμογή σε Android η οποία παρακολουθεί διάφορα OBD δεδομένα και σε περίπτωση ανίχνευσης ατυχήματος αποστέλλεται αυτόματα ένα SMS ή ένα e-mail σε μία προκαθορισμένη διεύθυνση με στοιχεία σχετικά με το ατύχημα, ακολουθούμενο από μία κλήση έκτακτης ανάγκης. Για την ανίχνευση του ατυχήματος ελέγχεται εάν η επιβράδυνση του αυτοκινήτου που μετρήθηκε είναι μεγαλύτερη από 5g και εάν έχει ανοίξει κάποιος από τους αερόσακους. Για την αποφυγή λανθασμένων καταστάσεων συναγερμού, ο χρήστης έχει τη δυνατότητα μέσα σε ένα λεπτό να ακυρώσει τις ενέργειες που πρόκειται να ακολουθήσουν. 1.2.3 Συστήματα υποβοήθησης οδήγησης Πέρα από τις έρευνες που έχουν ως αντικείμενο μελέτης την ανίχνευση και αναφορά ενός ατυχήματος, έχουν πραγματοποιηθεί και έρευνες οι οποίες στοχεύουν στην παροχή χρήσιμων συμβουλών στους οδηγούς των αυτοκινήτων. Οι συμβουλές αυτές μπορούν να βοηθήσουν τους οδηγούς να αποφύγουν ανεπιθύμητες καταστάσεις αλλά και να βελτιώσουν την οδηγική τους συμπεριφορά. Ο Ruta κ.ά. παρουσίασαν ένα σύστημα που βασίζεται στην απόκτηση γνώσης για την παροχή βοήθειας σε έναν οδηγό μέσω της κινητής του συσκευής [13]. Συνδυάζει δεδομένα που ανακτώνται από το OBD σύστημα του αυτοκινήτου, δεδομένα που λαμβάνονται από τους ενσωματωμένους αισθητήρες των κινητών συσκευών καθώς και πληροφορίες από το διαδίκτυο και μέσω ενός απλού αλγορίθμου συγχώνευσης των Αλκιβιάδης Χριστοδούλου - ΑΜ 965 12

δεδομένων πραγματοποιείται συλλογή και σημασιολογικός σχολιασμός σχετικών γεγονότων ασφάλειας. Τα ανιχνεύσιμα γεγονότα περιλαμβάνουν την ομαλή λειτουργία του αυτοκινήτου και των συστημάτων ασφάλειας, περιβαλλοντικούς παράγοντες, όπως η κίνηση στους δρόμους και η κατάσταση του οδοστρώματος, ακόμα και του τρόπου οδήγησης. Όλα αυτά συνδυάζονται και παρέχουν τελικά χρήσιμες συστάσεις για ασφαλή οδήγηση και αποδεικνύεται μέσα από πειραματικές αξιολογήσεις ότι οι συμβουλές αυτές είναι ακριβείς για την ελαχιστοποίηση των παραγόντων κινδύνου. Από την άλλη, ο Orfila κ.ά. παρουσίασαν ένα σύστημα υποβοήθησης της οικολογικής οδήγησης που στόχο έχει τόσο την αποδοτικότητα της οδήγησης όσο και την ασφάλεια [14]. Συγκεκριμένα, υλοποίησαν μία Android εφαρμογή η οποία θα εκμεταλλεύεται OBD δεδομένα, πληροφορίες χαρτών, δεδομένα των αισθητήρων των κινητών συσκευών και την υπολογιστική τους ισχύ για την παροχή προσιτής οικονομικά και υψηλού επιπέδου υποβοήθησης στην οδήγηση. Πέρα από την εκτίμηση του επιπέδου της οικολογικής οδήγησης, της κατανάλωσης καυσίμου και της ένδειξης αλλαγής ταχύτητας, παρέχει πραγματικού χρόνου εκτίμηση της οδηγικής συμπεριφοράς, συμβουλές σχετικά με επερχόμενα γεγονότα καθώς και ανάλυση προηγούμενων ενεργειών. Επομένως, οι οδηγοί, έχοντας πρόσβαση σε λεπτομερείς και υψηλού επιπέδου πληροφορίες σχετικά με τις δικές τους επιδόσεις στην οδήγηση αλλά και με βάση τις συμβουλές που τους παρέχονται, μπορούν να βελτιώσουν την ασφάλεια και την αποδοτικότητα κατά την οδήγηση. 1.2.4 Άλλες εφαρμογές των OBD δεδομένων Όπως είδαμε και παραπάνω πραγματοποιήθηκαν διάφορες έρευνες που σκοπό έχουν την διάγνωση πιθανών βλαβών των αυτοκινήτων, την ανίχνευση και αναφορά ατυχημάτων και την παροχή συμβουλών στους οδηγούς έχοντας ως κύριο συστατικό τα δεδομένα που ανακτώνται από το OBD σύστημα των αυτοκινήτων. Πέρα από αυτές τις έρευνες όμως, πραγματοποιήθηκαν και άλλες οι οποίες χρησιμοποιούν τα δεδομένα αυτά για την εξαγωγή μοντέλων υπολογισμού της κατανάλωσης καυσίμου και των εκπομπών ρύπων των αυτοκινήτων. Αλκιβιάδης Χριστοδούλου - ΑΜ 965 13

Ο Lee κ.ά. πρότειναν μία μέθοδο εκτίμησης της κατανάλωσης καυσίμου από την ταχύτητα του κινητήρα (RPM- Rounds Per Minute) και την θέση της πεταλούδας του γκαζιού (TPS- Throttle Position) χρησιμοποιώντας πολυωνυμικές εξισώσεις [15]. Η μοντελοποίηση πραγματοποιήθηκε χρησιμοποιώντας τετραγωνικά και γραμμικά μοντέλα που περιλαμβάνουν την ταχύτητα του κινητήρα, την θέση της πεταλούδας του γκαζιού και την κατανάλωση καυσίμου όπως αυτή δίνεται από τον κατασκευαστή. Με αυτό τον τρόπο προέκυψαν τρία διαφορετικά μοντέλα εκ των οποίων το πρώτο χρησιμοποιεί μόνο την ταχύτητα του κινητήρα, το δεύτερο μόνο την θέση της πεταλούδας του γκαζιού και το τρίτο και τις δύο παραμέτρους. Έπειτα από πειράματα απέδειξαν ότι η προτεινόμενη μέθοδος μπορεί να εκτιμήσει με ακρίβεια την κατανάλωση καυσίμου μόνο από αυτές τις δύο παραμέτρους. Παρατηρήθηκε ότι ο συντελεστής προσδιορισμού της κατανάλωσης για τα τρία μοντέλα είναι 76%, 88% και 71% αντίστοιχα. Αντίστοιχα, ο Alessandrini κ.ά. παρουσίασαν κάποιες μεθόδους υπολογισμού της κατανάλωσης καυσίμου από OBD δεδομένα οι οποίες απαιτούν μία διαδικασία βαθμονόμησης της καμπύλης ισχύος του κινητήρα που προκύπτει από δοκιμές σε δυναμόμετρο [16]. Ακόμη, ο Ortenzi κ.ά. παρουσίασαν μία νέα μέθοδο υπολογισμού των στιγμιαίων εκπομπών ρύπων του αυτοκινήτου χρησιμοποιώντας OBD δεδομένα ως τιμές εισόδου για τα μοντέλα εκπομπών CO2, CO, HC και NOX [17]. Οι εκπομπές CO2 και CO υπολογίζονται από ένα μοντέλο χημικής ισορροπίας εσωτερικής καύσης ενώ οι εκπομπές HC και NOX αποδεικνύεται ότι εξαρτώνται από την κλίση του πεντάλ γκαζιού, δηλαδή την θέση της πεταλούδας του γκαζιού, και σε περίπτωση που ο κινητήρας είναι κρύος εξαρτώνται επιπλέον από τη θερμοκρασία του καταλύτη. 1.3 Προκλήσεις Οι εφαρμογές που θα προσεγγίζουν τα ευφυή συστήματα μεταφορών συνδυάζοντας τις έξυπνες κινητές συσκευές με την υπάρχουσα τεχνολογία των αυτοκινήτων βρίσκονται ακόμα σε πρώιμο στάδιο ανάπτυξης. Για το λόγο αυτό υπάρχουν αρκετά ζητήματα που θα πρέπει να μελετηθούν περαιτέρω, από τους διάφορους περιορισμούς που Αλκιβιάδης Χριστοδούλου - ΑΜ 965 14

επιβάλλονται από τις κινητές συσκευές μέχρι τις πληροφορίες που μοιράζονται οι κατασκευάστριες εταιρίες αυτοκινήτων και άλλα. Πρώτα από όλα, ένα από τα σημαντικότερα προβλήματα που παρουσιάζονται σε τέτοιες εφαρμογές είναι η γρήγορη κατανάλωση της μπαταρίας των κινητών συσκευών. Το γεγονός αυτό οφείλεται στη ταυτόχρονη χρήση των ασύρματων διεπαφών, όπως το Bluetooth και το GPS, αλλά και στην επεξεργασία του μεγάλου όγκου δεδομένων που λαμβάνουν. Επομένως, θα πρέπει να γίνει προσπάθεια οι εφαρμογές αυτές να καταναλώνουν λιγότερη μπαταρία και να λειτουργούν όσο το δυνατόν πιο αποδοτικά και ομαλά. Μία άλλη πρόκληση που καλούνται να αντιμετωπίσουν οι ερευνητές είναι ο περιορισμένος αριθμός πληροφοριών που μοιράζονται οι κατασκευάστριες εταιρίες αυτοκινήτων για τα αυτοκίνητά τους. Η έλλειψη γνώσης συγκεκριμένων πληροφοριών αποτελούν τροχοπέδη τόσο στη δυνατότητα προσαρμογής των εφαρμογών στα αυτοκίνητα με διαφορετικά χαρακτηριστικά όσο και στην πλήρη ανάπτυξη αναλυτικών μοντέλων για την αξιολόγηση της συμπεριφοράς των αυτοκινήτων, όσον αφορά τα διαγνωστικά συστήματα, αλλά και των ικανοτήτων οδήγησης των οδηγών στα συστήματα παροχής συμβουλών κατά την οδήγηση. Απαιτείται, λοιπόν, έρευνα ως προς το συνδυασμό των πληροφοριών που παρέχουν οι κατασκευαστές των αυτοκινήτων με πληροφορίες που μπορούν να συλλεχθούν από εμπειρογνώμονες και εξειδικευμένους μηχανικούς προκειμένου τα συστήματα αξιολόγησης να είναι πιο ακριβή και αξιόπιστα. Όσον αφορά την ανίχνευση και αναφορά ατυχημάτων θα πρέπει να πραγματοποιηθούν περισσότερες μελέτες προς την κατεύθυνση της έγκυρης ανίχνευσης ενός ατυχήματος, ώστε να αποφευχθούν λανθασμένες αναφορές, και να γίνει αξιολόγηση αυτών εκτελώντας πραγματικές δοκιμές πρόσκρουσης. Επίσης, θα πρέπει να μελετηθεί και ο τρόπος αναφοράς των ατυχημάτων, μέσα από την υλοποίηση ολοκληρωμένων μηχανισμών και πρωτοκόλλων επικοινωνίας, διότι η έγκαιρη και όσο το δυνατόν πιο αναλυτική ενημέρωση των υπηρεσιών έκτακτης ανάγκης είναι καθοριστικής σημασίας. Τέλος, η υλοποίηση διάφορων αλγορίθμων για την αξιολόγηση των ικανοτήτων οδήγησης των οδηγών και της οικολογικής τους συμπεριφοράς αλλά και αλγορίθμων υπολογισμού κατανάλωσης καυσίμου και εκπομπών ρύπων σε αντίστοιχες εφαρμογές Αλκιβιάδης Χριστοδούλου - ΑΜ 965 15

αποτελεί άλλη μία σημαντική πρόκληση εξαιτίας της πολυπλοκότητάς τους και της απαίτησης χρήσης πολλών υπολογιστικών πόρων για την εκτέλεσή τους. Αλκιβιάδης Χριστοδούλου - ΑΜ 965 16

Κεφάλαιο 2. Εφαρμοζόμενες Τεχνολογίες Η υλοποίηση εφαρμογών που θα μπορούν να προσφέρουν ανάλογες υπηρεσίες με τα ευφυή συστήματα μεταφορών απαιτεί τη γνώση των διαθέσιμων τεχνολογιών. Η ανάπτυξη μίας νέας εφαρμογής δεν υποχρεώνει κάποιον να δημιουργήσει νέες τεχνολογίες, αλλά να συνδυάσει κατάλληλα τις ήδη υπάρχουσες τεχνολογίες ώστε να εξυπηρετήσει με τον καλύτερο τρόπο το σκοπό του. Οι διαθέσιμες τεχνολογίες που συνδυάζονται ώστε να προκύψουν οι αντίστοιχες εφαρμογές κινητών συσκευών είναι το πρότυπο OBD-ΙΙ που χρησιμοποιείται κατά κόρον στα ενσωματωμένα συστήματα διάγνωσης των σύγχρονων αυτοκινήτων και οι τεχνολογίες που ενσωματώνονται στις έξυπνες κινητές συσκευές. Το πρότυπο OBD-II αποτελεί την τελευταία εξέλιξη μεταξύ των προτύπων που αναπτύχθηκαν για τα ενσωματωμένα συστήματα διάγνωσης των αυτοκινήτων και αυτό που προσφέρει τη μεγαλύτερη τυποποίηση. Από το 1996 η ενσωμάτωση του OBD-II είναι υποχρεωτική για όλα τα αυτοκίνητα που κατασκευάζονται στην Αμερική. Αργότερα αναπτύχθηκε η ευρωπαϊκή έκδοση EOBD του OBD-II η οποία, παρά τις μικρές βελτιώσεις που εισάγει, είναι παρόμοια με το OBD-II και χρησιμοποιεί τις ίδιες συνδέσεις και διεπαφές. Στην Ευρώπη η ενσωμάτωση του OBD-II έγινε υποχρεωτική το 2001 για όλα τα βενζινοκίνητα αυτοκίνητα και το 2003 για όλα τα πετρελαιοκίνητα αυτοκίνητα αντίστοιχα. Αντίθετα, τα σύγχρονα smartphones βασίζονται σε λειτουργικά συστήματα τα οποία εξελίσσονται διαρκώς και σε συνδυασμό με τις νέες τεχνολογίες που ενσωματώνονται σε αυτά έχουν μετατραπεί σε πολυχρηστικές συσκευές με προηγμένη υπολογιστική ικανότητα. Διαθέτουν οθόνες αφής υψηλής ανάλυσης, διεπαφές ασύρματης Αλκιβιάδης Χριστοδούλου- ΑΜ 965 17

επικοινωνίας, μονάδες πλοήγησης GPS καθώς και άλλες τεχνολογίες οι οποίες χρησιμοποιούνται για την ανάπτυξη διάφορων εφαρμογών. Τα πιο διαδεδομένα λειτουργικά συστήματα που χρησιμοποιούνται στα smartphones είναι το Android της Google, το ios της Apple και το Windows Phone της Microsoft. Από αυτά, το Android είναι το πιο συχνά χρησιμοποιούμενο και κατέχει σημαντικό μερίδιο της αγοράς σε σχέση με τους ανταγωνιστές του, ios και Windows Phone. Η μεγάλη επιτυχία και διάδοση που έχει γνωρίσει ως σήμερα το Android οφείλεται στο γεγονός ότι πρόκειται για ένα ανοιχτού κώδικα και παραμετροποιήσιμο λειτουργικό σύστημα που χρησιμοποιείται σε συσκευές υψηλής τεχνολογίας. 2.1 Το πρότυπο OBD-II Όπως αναφέραμε και σε προηγούμενο κεφάλαιο τα ενσωματωμένα συστήματα διάγνωσης λαμβάνουν δεδομένα από τις μονάδες ηλεκτρονικού ελέγχου των αυτοκινήτων, οι οποίες είναι υπεύθυνες για τον έλεγχο των εσωτερικών εξαρτημάτων και υποσυστημάτων τους, και μέσω του τυποποιημένου προτύπου OBD-II τα καθιστούν διαθέσιμα στους διάφορους χρήστες. Δηλαδή, το πρότυπο OBD-II είναι το ενδιάμεσο μέσο για την αποκωδικοποίηση των σημάτων που λαμβάνει το σύστημα διάγνωσης από την ECU και τη μετατροπή τους σε αναγνώσιμη μορφή για τους χρήστες. Η τυποποίηση του OBD-II αναφέρεται σε έναν καθορισμένο τύπο ψηφιακής θύρας επικοινωνίας και των pin-outs της, σε συγκεκριμένα πρωτόκολλα σηματοδοσίας και συγκεκριμένη μορφή μηνυμάτων για την επικοινωνία με τον διαγνωστικό εξοπλισμό. Επίσης, παρέχει μία λίστα υποψήφιων παραμέτρων του αυτοκινήτου για παρακολούθηση, όπου κάθε παράμετρος έχει προκαθορισμένο αριθμό αναγνώρισης και συγκεκριμένη κωδικοποίηση, και μία εκτεταμένη λίστα με διαγνωστικούς κωδικούς οι οποίοι είναι ίδιοι για όλα τα αυτοκίνητα. 2.1.1 Διαγνωστική θύρα Λόγω της τυποποίησης του OBD-II η ένωση μηχανικών αυτοκινήτων (Society of Automotive Engineers- SAE) αντικατέστησε το ευρύ φάσμα των διαγνωστικών θυρών Αλκιβιάδης Χριστοδούλου - ΑΜ 965 18

με μία κοινή για όλα τα αυτοκίνητα θύρα που αποτελείται από δεκαέξι pins και περιγράφεται αναλυτικά στο πρότυπο SAE J1962 [18]. Στην εικόνα 4 φαίνεται η θύρα OBD-II που υπάρχει σε οποιοδήποτε σύγχρονο αυτοκίνητο. Εικόνα 4: OBD-II θύρα αυτοκινήτου Συνήθως η θύρα αυτή βρίσκεται εντός περίπου πενήντα εκατοστών αριστερά και κάτω από το τιμόνι, εκτός και αν ο κατασκευαστής κατ εξαίρεση την έχει τοποθετήσει σε άλλο μέρος, αλλά και πάλι σε σημείο που θα έχει άμεση πρόσβαση ο οδηγός. Στην εικόνα 5 παρουσιάζεται το σχηματικό διάγραμμα της θύρας και ο αριθμός των pins. Σύμφωνα με το πρότυπο J1962 υπάρχουν κάποια pins των οποίων η χρήση τους αφήνεται στην διακριτική ευχέρεια των κατασκευαστών, έτσι ώστε οι κατασκευαστές να τα χρησιμοποιήσουν για οποιοδήποτε σκοπό επιθυμούν. Επιπλέον, υπάρχουν pins που είναι αφιερωμένα σε διαφορετικά πρότυπα επικοινωνίας, λόγω της υποστήριξης πέντε διαφορετικών πρωτοκόλλων σηματοδοσίας από το OBD-II. Στα περισσότερα αυτοκίνητα υλοποιείται μόνο ένα πρωτόκολλο πράγμα το οποίο γίνεται αντιληπτό κοιτάζοντας στη θύρα ποια pins υπάρχουν και ποια όχι. Εικόνα 5: Pin-outs OBD-II θύρας Στον παρακάτω πίνακα δίνεται ο αριθμός των pins και μία περιγραφή για κάθε ένα από αυτά. Αλκιβιάδης Χριστοδούλου - ΑΜ 965 19

Αριθμός Pin Περιγραφή 1 Καθορίζεται από τον κατασκευαστή 2 SAE J1850 PWM και VPW (Bus +) 3 Καθορίζεται από τον κατασκευαστή 4 Γείωση σασί 5 Γείωση σήματος 6 CAN-High (ISO 15765-4 / SAE J2284) 7 K-Line (ISO 9141-2 / ISO 14230-4) 8 Καθορίζεται από τον κατασκευαστή 9 Καθορίζεται από τον κατασκευαστή 10 SAE J1850 PWM (Bus -) 11 Καθορίζεται από τον κατασκευαστή 12 Καθορίζεται από τον κατασκευαστή 13 Καθορίζεται από τον κατασκευαστή 14 CAN-Low (ISO 15765-4 / SAE J2284) 15 L-Line (ISO 9141-2 / ISO 14230-4) 16 Ρεύμα από την μπαταρία Πίνακας 1: Pin-outs OBD-II θύρας 2.1.2 Πρωτόκολλα σηματοδοσίας Το πρότυπο OBD II υποστηρίζει πέντε διαφορετικά πρωτόκολλα σηματοδοσίας [1]. Κάθε ένα από αυτά παρουσιάζει μικρές διαφορές σε σχέση με τα υπόλοιπα ως προς τον Αλκιβιάδης Χριστοδούλου - ΑΜ 965 20

τρόπο επικοινωνίας μεταξύ του OBD συστήματος και των εργαλείων σάρωσης. Τα πρωτόκολλα αυτά είναι τα εξής: SAE J1850 PWM: Πρόκειται για ένα πρωτόκολλο που εφαρμόζει διαμόρφωση πλάτους παλμού (pulse width modulation) με ρυθμό μετάδοσης 41.6 kb/s. Χρησιμοποιεί τα pins 2 και 10 της θύρας, το μήκος των μηνυμάτων περιορίζεται στα 12 bytes συμπεριλαμβανομένου του κώδικα ανίχνευσης λαθών CRC και ως σχήμα διαιτησίας χρησιμοποιεί το CSMA/NDA (Carrier Sense Multiple Access with Non-Destructive Arbitration). SAE J1850 VPW: Είναι παρόμοιο με το J1850 PWM με τη διαφορά ότι χρησιμοποιεί παλμό μεταβλητού πλάτους με ρυθμό μετάδοσης τα 10.4 kb/s και μόνο το pin 2 της θύρας. ISO 9141-2: Σε αυτό το πρωτόκολλο τα δεδομένα μεταδίδονται ασύγχρονα και σειριακά με ρυθμό 10.4 kb/s. Είναι παρόμοιο με το πρωτόκολλο σειριακής μετάδοσης RS-232, ωστόσο τα επίπεδα σήματος είναι διαφορετικά και η επικοινωνία πραγματοποιείται μέσω μίας ενιαίας αμφίδρομης γραμμής χωρίς πρόσθετα σήματα χειραψίας. Τα pins της θύρας που χρησιμοποιεί είναι το 7 και προαιρετικά το 15. ISO 14230: Ουσιαστικά είναι το πρωτόκολλο Keyword 2000 (KWP 2000) με το ρυθμό μετάδοσης να κυμαίνεται από 1.2 έως 10.4 kb/s. Αντίστοιχα με το ISO 9141-2 χρησιμοποιεί το pin 7 και προαιρετικά το 15. ISO 15765: Το συγκεκριμένο πρωτόκολλο χρησιμοποιεί την αρτηρία CAN (Controller Area Network Bus), η οποία επιτρέπει σε μικροελεγκτές και άλλες συσκευές να επικοινωνούν μεταξύ τους χωρίς τη διαμεσολάβηση ενός κεντρικού υπολογιστή. Σε αντίθεση με τα άλλα πρωτόκολλα, αυτό χρησιμοποιείται ευρέως και σε εφαρμογές εκτός αυτοκινητοβιομηχανίας. Ο ρυθμός μετάδοσης καθορίζεται στα 500 kb/s στο CAN High και στα 250 kb/s στο CAN Low με τα αντίστοιχα pins της θύρας να είναι το 6 και το 14. Αλκιβιάδης Χριστοδούλου - ΑΜ 965 21

Η μορφή των μηνυμάτων για τα πρωτόκολλα SAE J1850, ISO 9141-2 και ISO 14230 είναι ίδια, σε αντίθεση με το πρωτόκολλο ISO 15765 όπως φαίνεται και στις εικόνες 6 και 7. Εικόνα 6: Μορφή μηνύματος J1850, ISO 9141-2, ISO 14230 Εικόνα 7: Μορφή μηνύματος ISO 15765 2.1.3 Διαγνωστικά δεδομένα Το OBD-II παρέχει πρόσβαση σε διαγνωστικά δεδομένα της μονάδας ηλεκτρονικού ελέγχου του κινητήρα (ECU) και κατ επέκταση προσφέρει μία πολύτιμη πηγή πληροφοριών για την αντιμετώπιση προβλημάτων που πιθανόν προκύψουν σε ένα αυτοκίνητο. Η μέθοδος για την αίτηση ανάγνωσης διάφορων διαγνωστικών δεδομένων και μία λίστα με τις τυπικές παραμέτρους που ενδεχομένως είναι διαθέσιμες από την ECU καθορίζονται από το πρότυπο SAE J1979 [19]. Οι διάφορες αυτές παράμετροι που είναι διαθέσιμες ονοματίζονται με αριθμούς αναγνώρισης παραμέτρων (PIDs- Parameter IDs) και ορίζονται στο J1979. Με αυτό τον τρόπο, η PID αίτηση και η ανάκτηση δεδομένων του συστήματος δίνει πρόσβαση σε στοιχεία απόδοσης σε πραγματικό χρόνο καθώς και σε διαγνωστικούς κωδικούς (DTCs) που έχουν προκύψει. Στο σημείο αυτό να αναφέρουμε ότι οι κατασκευαστές δεν υποχρεούνται να εφαρμόσουν όλα τα PIDs που απαριθμούνται στο J1979 και επιπλέον τους δίνεται η δυνατότητα να περιλαμβάνουν ιδιόκτητα PIDs που δεν έχουν καταγραφεί. Ακόμα, μπορούν να προσθέσουν και περισσότερους DTCs από τους προκαθορισμένους. Αλκιβιάδης Χριστοδούλου - ΑΜ 965 22

Η ανάγνωση των PIDs γίνεται μέσα από δέκα διαφορετικές καταστάσεις λειτουργίας και σε κάθε μία από αυτές αναφέρονται διαφορετικοί τύποι δεδομένων. Μπροστά από κάθε PID υπάρχει ο κωδικός της αντίστοιχης κατάστασης λειτουργίας ώστε να ξεχωρίζουν τα PIDs διαφορετικών καταστάσεων. Οι καταστάσεις λειτουργίας είναι οι ακόλουθες: Κατάσταση λειτουργίας 01: Παρέχει διάφορα δεδομένα απόδοσης του κινητήρα σε πραγματικό χρόνο, όπως η ταχύτητα του αυτοκινήτου, η ταχύτητα περιστροφής του κινητήρα, η θερμοκρασία του ψυκτικού μέσου του κινητήρα και άλλα. Κατάσταση λειτουργίας 02: Όταν παρουσιαστεί κάποιος DTC τότε αποθηκεύονται τα τρέχοντα δεδομένα του κινητήρα. Επομένως, στην κατάσταση 02 επιστρέφεται ο ίδιος τύπος δεδομένων με την κατάσταση 01, αλλά οι τιμές τους είναι αυτές που είχαν μόλις εμφανίστηκε ο DTC. Κατάσταση λειτουργίας 03: Σε αυτή την κατάσταση λειτουργίας εμφανίζονται όλοι οι αποθηκευμένοι DTCs που έχουν παρουσιαστεί. Κατάσταση λειτουργίας 04: Μέσω αυτής της κατάστασης δίνεται η δυνατότητα διαγραφής των DTCs και των αποθηκευμένων τιμών τους. Κατάσταση λειτουργίας 05: Σε αυτοκίνητα που δεν χρησιμοποιούν την αρτηρία CAN αποθηκεύονται στην κατάσταση 05 τα αποτελέσματα παρακολούθησης των αισθητήρων οξυγόνου. Κατάσταση λειτουργίας 06: Γενικά, αποθηκεύονται τα αποτελέσματα άλλων συστημάτων παρακολούθησης, αλλά σε αυτοκίνητα που χρησιμοποιούν την αρτηρία CAN αποθηκεύονται και τα αποτελέσματα παρακολούθησης των αισθητήρων οξυγόνου. Κατάσταση λειτουργίας 07: Στη συγκεκριμένη κατάσταση εμφανίζονται οι DTCs που εκκρεμούν και ανιχνεύθηκαν κατά την τωρινή ή την προηγούμενη οδήγηση του αυτοκινήτου. Κατάσταση λειτουργίας 08: Χρησιμοποιείται για τον έλεγχο λειτουργίας των ενσωματωμένων συστημάτων και των εξαρτημάτων τους. Αλκιβιάδης Χριστοδούλου - ΑΜ 965 23

Κατάσταση λειτουργίας 09: Μέσω αυτής της κατάστασης είναι διαθέσιμες διάφορες μη μεταβαλλόμενες πληροφορίες του αυτοκινήτου, όπως ο αριθμός αναγνώρισης του αυτοκινήτου, η έκδοση του λογισμικού που είναι εγκατεστημένη στην ECU και άλλα. Κατάσταση λειτουργίας 0Α: Σε αυτή την κατάσταση λειτουργίας απαριθμούνται όλοι οι DTCs που σχετίζονται με τις εκπομπές ρύπων και δεν μπορούν να διαγραφούν. Ο κωδικός κάθε κατάστασης λειτουργίας και τα PIDs είναι σε δεκαεξαδική μορφή και για να δηλώσουμε την ανάγνωση ενός συγκεκριμένου PID θα πρέπει να χρησιμοποιήσουμε τον κωδικό της κατάστασης ακολουθούμενο από το PID [20]. Για παράδειγμα, εάν θέλουμε να διαβάσουμε την ταχύτητα του αυτοκινήτου θα πρέπει στην αίτηση ανάγνωσης να χρησιμοποιήσουμε τον κωδικό 010D. 2.2 Λειτουργικό σύστημα Android Το λειτουργικό σύστημα Android της Google είναι ένα από τα πιο εξελιγμένα και ευρέως διαδεδομένα λειτουργικά συστήματα που κυκλοφορούν σήμερα στην αγορά και έχει σχεδιαστεί για κινητές συσκευές με οθόνες αφής, όπως smartphones και tablets [21]. Η διεπαφή χρήστη βασίζεται στον άμεσο χειρισμό και χρησιμοποιεί κινήσεις αφής για την αλληλεπίδραση του χρήστη με τα αντικείμενα που εμφανίζονται στην οθόνη και για την εισαγωγή κειμένου μέσω ενός εικονικού πληκτρολογίου. Επιπλέον, βασίζεται στον πυρήνα του συστήματος Linux και είναι λογισμικό ανοιχτού κώδικα, το μεγαλύτερο μέρος του οποίου το δημοσιεύει η Google υπό τους όρους του Apache License 2.0 και του GPL v2. Με αυτό τον τρόπο όλοι οι χρήστες έχουν πρόσβαση στον πηγαίο κώδικα του Android και στην πλατφόρμα προγραμματισμού που προσφέρει, και δεν απαιτείται κάποια ειδική άδεια της Google για την χρήση, την παραμετροποίηση και την επέκταση του λειτουργικού συστήματος. Παρόλα αυτά, οι περισσότερες Android συσκευές κυκλοφορούν τελικά με ένα συνδυασμό ανοιχτού και ελεύθερου λογισμικού και κλειστού και ιδιόκτητου λογισμικού, το οποίο ιδιόκτητο λογισμικό αφορά προσθήκες του εκάστοτε κατασκευαστή της συσκευής αλλά και υλοποίηση της πρόσβασης στις υπηρεσίες της Google. Αλκιβιάδης Χριστοδούλου - ΑΜ 965 24

Λόγω της ανοιχτής φύσης του, το Android έχει ενθαρρύνει μία μεγάλη κοινότητα προγραμματιστών να χρησιμοποιήσουν τον ανοιχτό πηγαίο κώδικα για την προσθήκη νέων χαρακτηριστικών στο λειτουργικό σύστημα αλλά και για τη μεταφορά του σε συσκευές που αρχικά δεν το υποστήριζαν. Επίσης, είναι δημοφιλές σε εταιρίες που χρειάζονται ένα χαμηλού κόστους και παραμετροποιήσιμο λειτουργικό σύστημα για συσκευές υψηλής τεχνολογίας. Εκτός από το Android για smartphones και tablets, η Google έχει αναπτύξει το Android TV για τηλεοράσεις, το Android Auto για αυτοκίνητα και το Android Watch για ρολόγια χειρός, το καθένα με ένα εξειδικευμένο περιβάλλον εργασίας χρήστη. Επίσης, διάφορες παραλλαγές του Android χρησιμοποιούνται σε φορητούς υπολογιστές, κονσόλες παιχνιδιών, ψηφιακές φωτογραφικές μηχανές και άλλες ηλεκτρονικές συσκευές. 2.2.1 Εκδόσεις Android Η πρώτη έκδοση του Android είναι η beta έκδοση και κυκλοφόρησε το Νοέμβριο του 2007, και η πρώτη εμπορική έκδοση, η Android 1.0, κυκλοφόρησε το Σεπτέμβριο του 2008. Από εκεί και έπειτα, το Android βρίσκεται υπό συνεχή ανάπτυξη από την Google και έχει υπάρξει μία σειρά από ενημερώσεις, οι οποίες συνεχίζονται μέχρι σήμερα. Κάθε έκδοση Android διαθέτει το δικό της επίπεδο διεπαφής προγραμματισμού εφαρμογών, γνωστό και ως API Level (Application Programming Interface). Το API Level είναι ένας ακέραιος αριθμός που προσδιορίζει μοναδικά την αναθεώρηση του πλαισίου API που προσφέρεται από μία έκδοση της πλατφόρμας Android. Η πλατφόρμα Android παρέχει ένα πλαίσιο API, το οποίο οι εφαρμογές μπορούν να χρησιμοποιούν για να αλληλεπιδρούν με το υποκείμενο σύστημα Android. Το πλαίσιο API αποτελείται από: ένα βασικό σύνολο πακέτων και κλάσεων ένα σύνολο από XML (Extensible Markup Language) στοιχεία και χαρακτηριστικά για τη δήλωση ενός manifest αρχείου ένα σύνολο από XML στοιχεία και χαρακτηριστικά για τη δήλωση και την πρόσβαση στους πόρους Αλκιβιάδης Χριστοδούλου - ΑΜ 965 25

μία σειρά ασύγχρονων μηνυμάτων, τα intents ένα σύνολο δικαιωμάτων των εφαρμογών, καθώς και άδειες πρόσβασης που περιλαμβάνονται στο σύστημα. Κάθε διαδοχική έκδοση του Android μπορεί να περιλαμβάνει ενημερώσεις για το πλαίσιο API που προσφέρει. Οι ενημερώσεις του πλαισίου API σχεδιάζονται έτσι ώστε το νέο API να παραμένει συμβατό με προηγούμενες εκδόσεις του. Δηλαδή, οι περισσότερες αλλαγές είναι αθροιστικές και εισάγουν νέα λειτουργικότητα ή αντικαθιστούν την προηγούμενη. Καθώς αναβαθμίζονται κάποια τμήματα του API, τα παλαιότερα αντικαθίστανται αλλά δεν αφαιρούνται, ώστε οι υπάρχουσες εφαρμογές να μπορούν ακόμα να τα χρησιμοποιούν. Σε ένα πολύ μικρό αριθμό περιπτώσεων, τα μέρη ενός API μπορεί να τροποποιηθούν ή να αφαιρεθούν, αν και συνήθως τέτοιες αλλαγές γίνονται μόνο για να εξασφαλιστεί η ανθεκτικότητα και η ασφάλεια του συστήματος. Όλα τα υπόλοιπα μέρη του API, από τις προηγούμενες αναβαθμίσεις, μεταφέρονται χωρίς τροποποίηση. Κάθε έκδοση της πλατφόρμας Android υποστηρίζει ακριβώς ένα επίπεδο API, αν και η υποστήριξη είναι αυτονόητη για όλα τα προηγούμενα επίπεδα API μέχρι το επίπεδο ένα. Η αρχική έκδοση έχει API Level 1 και στις επόμενες εκδόσεις αυτό αυξάνεται. Ο παρακάτω πίνακας προσδιορίζει το API Level που υποστηρίζεται από κάθε έκδοση του Android. Έκδοση Android API Level Όνομα έκδοσης Android 6.0 23 MARSHMALLOW Android 5.1 22 Android 5.0 21 LOLLIPOP Android 4.4W 20 KIT_KAT (for Wearables only) Android 4.4.x 19 KIT_KAT Android 4.3 18 JELLY_BEAN Αλκιβιάδης Χριστοδούλου - ΑΜ 965 26

Android 4.2, 4.2.2 17 Android 4.1, 4.1.1 16 Android 4.0.3, 4.0.4 15 Android 4.0, 4.0.1, 4.0.2 14 ICE_CREAM_SANDWICH Android 3.2 13 Android 3.1.x 12 HONEYCOMB Android 3.0.x 11 Android 2.3.3, 2.3.4 10 Android 2.3, 2.3.1, 2.3.2 9 GINGERBREAD Android 2.2.x 8 FROYO Android 2.1.x 7 Android 2.0.1 6 ECLAIR Android 2.0 5 Android 1.6 4 DONUT Android 1.5 3 CUPCAKE Android 1.1 2 BASE_1_1 Android 1.0 1 BASE Πίνακας 2: Εκδόσεις Android Η έκδοση Android 6.0 με API Level 23 και όνομα Marshmallow, ανακοινώθηκε από την Google το Μάιο του 2015 και θα κυκλοφορήσει τον Οκτώβριο του ίδιου έτους. Αλκιβιάδης Χριστοδούλου - ΑΜ 965 27

Στην επόμενη εικόνα παρουσιάζεται η κατανομή των εκδόσεων του Android μέχρι σήμερα. Εικόνα 8: Κατανομή εκδόσεων Android 2.2.2 Αρχιτεκτονική του Android Το Android είναι μία στοίβα λογισμικού που αποτελείται από διαφορετικά επίπεδα. Κάθε ένα από τα επίπεδα αυτά είναι μία ομάδα στοιχείων προγράμματος και παρέχει διάφορες υπηρεσίες στο επίπεδο που βρίσκεται ακριβώς πάνω από αυτό. Όλα αυτά τα επίπεδα μαζί περιλαμβάνουν το λειτουργικό σύστημα, ενδιάμεσο λογισμικό και σημαντικές εφαρμογές. Ωστόσο, τα όρια μεταξύ των επιπέδων δεν είναι πάντα ξεκάθαρα και αρκετές φορές υπάρχει επικάλυψη. Στην παρακάτω εικόνα παρουσιάζεται η αρχιτεκτονική του Android και στη συνέχεια θα αναλύσουμε τα επίπεδα αυτά ξεκινώντας από το χαμηλότερο. Αλκιβιάδης Χριστοδούλου - ΑΜ 965 28

Εικόνα 9: Αρχιτεκτονική Android 2.2.2.1 Πυρήνας Linux Το βασικό επίπεδο είναι ο πυρήνας Linux. Το λειτουργικό σύστημα Android είναι χτισμένο πάνω στον πυρήνα του Linux 2.6 με κάποιες περαιτέρω αρχιτεκτονικές αλλαγές που έγιναν από την Google. Ουσιαστικά, το Linux είναι αυτό που αλληλεπιδρά με το υλικό και περιέχει όλα τα απαραίτητα προγράμματα οδήγησης υλικού. Τα προγράμματα οδήγησης είναι υπεύθυνα για τον έλεγχο και την επικοινωνία με το υλικό. Ο πυρήνας του Linux λειτουργεί επίσης ως ένα επίπεδο αφαίρεσης μεταξύ του υλικού και των άλλων επιπέδων λογισμικού. Το Android χρησιμοποιεί το Linux για όλες τις βασικές λειτουργίες του, όπως τη διαχείριση της μνήμης, τη διαχείριση των διαδικασιών, τη δικτύωση, τις ρυθμίσεις ασφαλείας και άλλες. Δεδομένου ότι το Android είναι χτισμένο σε ένα πιο δημοφιλές και δοκιμασμένο σύστημα, έκανε την φορητότητά του με την ποικιλία του υλικού μία σχετικά ανώδυνη εργασία. Βέβαια, το Android δεν αποτελεί ακόμα μία διανομή του Linux όπως το Ubuntu και το opensuse με αποτέλεσμα αρκετά πράγματα που είναι κοινά σε μία διανομή του Linux να απουσιάζουν από το Android, ενώ αντίθετα να προστίθενται νέες δυνατότητες στον Αλκιβιάδης Χριστοδούλου - ΑΜ 965 29

πυρήνα Linux του Android. Για παράδειγμα, απουσιάζει ο διαχειριστής παραθύρων και η βασική βιβλιοθήκη ρουτινών της C, ενώ προστίθεται ένας μηχανισμός απομόνωσης διεργασιών για επιπλέον ασφάλεια και ένας γρήγορος μηχανισμός επικοινωνίας διεργασιών ο Binder. 2.2.2.2 Βιβλιοθήκες Το επόμενο επίπεδο είναι οι εγγενείς βιβλιοθήκες. Είναι το επίπεδο το οποίο επιτρέπει στη συσκευή να χειρίζεται διαφορετικούς τύπους δεδομένων. Αυτές οι βιβλιοθήκες είναι γραμμένες σε γλώσσα προγραμματισμού C ή C++ και είναι ειδικές για συγκεκριμένο υλικό. Μερικές από τις σημαντικές βιβλιοθήκες περιλαμβάνουν τα ακόλουθα: Surface Manager: Χρησιμοποιείται για τη σύνθεση του διαχειριστή παραθύρων με off- screen buffering. Το off- screen buffering σημαίνει ότι δεν μπορεί κάποιος να συντάξει απευθείας στην οθόνη, αλλά τα σχέδια πηγαίνουν στον off- screen buffer. Εκεί συνδυάζονται με άλλα σχέδια και αποτελούν την τελική οθόνη που βλέπει ο χρήστης. Αυτός ο off- screen buffer είναι ο λόγος πίσω από τη διαφάνεια των παραθύρων. Media Framework: Το Media Framework παρέχει διαφορετικούς κωδικοποιητές (codecs) που επιτρέπουν την καταγραφή και αναπαραγωγή διαφορετικών ειδών πολυμέσων. SQLite: SQLite είναι ο μηχανισμός διαχείρισης βάσεων δεδομένων που χρησιμοποιούνται στο Android για σκοπούς αποθήκευσης δεδομένων. WebKit: Είναι η μηχανή περιήγησης που χρησιμοποιείται για την εμφάνιση HTML περιεχομένου. OpenGL: Χρησιμοποιείται για την απόδοση 2D ή 3D περιεχομένου γραφικών στην οθόνη. 2.2.2.3 Περιβάλλον εκτέλεσης Το περιβάλλον εκτέλεσης βρίσκεται στο ίδιο επίπεδο με τις βιβλιοθήκες και αποτελείται από την εικονική μηχανή Dalvik και βιβλιοθήκες του πυρήνα της Java. Αλκιβιάδης Χριστοδούλου - ΑΜ 965 30

Η εικονική μηχανή Dalvik είναι ένα είδος της εικονικής μηχανής της Java, που χρησιμοποιείται σε συσκευές Android για να τρέχει εφαρμογές και έχει βελτιστοποιηθεί για περιβάλλοντα χαμηλής επεξεργαστικής ισχύος και χαμηλής μνήμης. Σε αντίθεση με την εικονική μηχανή της Java, η Dalvik δεν εκτελεί.class αρχεία αλλά.dex αρχεία. Τα.dex αρχεία δημιουργούνται από τα.class αρχεία κατά την μεταγλώττιση και προσφέρουν υψηλότερη απόδοση σε περιβάλλοντα χαμηλών πόρων. Η Dalvik επιτρέπει τη δημιουργία πολλαπλών στιγμιότυπων της εικονικής μηχανής ταυτόχρονα, παρέχοντας ασφάλεια, απομόνωση, διαχείριση της μνήμης και υποστήριξη νημάτων. Οι βιβλιοθήκες του πυρήνα της Java είναι διαφορετικές από αυτές της Java SE και Java ME. Ωστόσο, οι βιβλιοθήκες αυτές παρέχουν τις περισσότερες από τις λειτουργίες που ορίζονται στις βιβλιοθήκες της Java SE. 2.2.2.4 Πλαίσιο εφαρμογής Στο αμέσως παραπάνω επίπεδο βρίσκεται το πλαίσιο εφαρμογής. Το επίπεδο αυτό περιλαμβάνει όλα τα δομικά προγράμματα με τα οποία αλληλεπιδρούν οι εφαρμογές. Τα προγράμματα αυτά διαχειρίζονται τις βασικές λειτουργίες του τηλεφώνου, όπως η διαχείριση των πόρων, των φωνητικών κλήσεων και άλλων. Ουσιαστικά, περιλαμβάνει τα βασικά εργαλεία με τα οποία υλοποιούμε τις εφαρμογές. Σημαντικά τμήματα του πλαισίου εφαρμογής είναι τα εξής: Activity Manager: Διαχειρίζεται τον κύκλο ζωής των εφαρμογών. Content Providers: Διαχειρίζονται την ανταλλαγή δεδομένων μεταξύ των εφαρμογών. Telephony Manager: Διαχειρίζεται όλες τις φωνητικές κλήσεις. Location Manager: Διαχειρίζεται την τοποθεσία της συσκευής με χρήση του GPS ή του πύργου κινητής τηλεφωνίας. Resource Manager: Διαχειρίζεται τους διάφορους τύπους των πόρων που χρησιμοποιούνται στις εφαρμογές. Αλκιβιάδης Χριστοδούλου - ΑΜ 965 31

2.2.2.5 Εφαρμογές Οι εφαρμογές είναι το ανώτερο επίπεδο της αρχιτεκτονικής του Android. Πολλές βασικές εφαρμογές υπάρχουν προεγκατεστημένες στις συσκευές. Τέτοιες εφαρμογές είναι ο εξυπηρετητής SMS, το πρόγραμμα κλήσης τηλεφωνικών αριθμών, το πρόγραμμα περιήγησης στο διαδίκτυο, ο διαχειριστής επαφών και άλλες. 2.2.3 Βασικά χαρακτηριστικά και Συστατικά εφαρμογών Android Η ανάπτυξη εφαρμογών για το Android γίνεται σε γλώσσα προγραμματισμού Java χρησιμοποιώντας ένα πακέτο ανάπτυξης λογισμικού που παρέχει το Android και ονομάζεται Android SDK (Software Development Kit) [22]. Το Android SDK αποτελείται από ένα ολοκληρωμένο σύνολο εργαλείων ανάπτυξης. Αυτά περιλαμβάνουν ένα πρόγραμμα εντοπισμού σφαλμάτων, διάφορες βιβλιοθήκες, ένα προσομοιωτή κινητού τηλεφώνου που βασίζεται στον εξομοιωτή QEMU (Quick EMUlator), έγγραφα τεκμηρίωσης, δείγματα κώδικα και προγράμματα εκμάθησης. Τα εργαλεία του Android SDK είναι υπεύθυνα για την μεταγλώττιση του κώδικα μίας εφαρμογής σε ένα αρχείο APK (Android Application Package). Ουσιαστικά πρόκειται για ένα συμπιεσμένο αρχείο με κατάληξη.apk και περιλαμβάνει, εκτός από τον Dalvik Byte κώδικα, όλα τα απαραίτητα αρχεία για την εκτέλεση της εφαρμογής. Το συγκεκριμένο αρχείο χρησιμοποιείται και για την εγκατάσταση της εφαρμογής σε μία Android συσκευή. Από τη στιγμή που εγκατασταθεί στη συσκευή, κάθε Android εφαρμογή αντιμετωπίζεται από το σύστημα Linux ως ένας διαφορετικός χρήστης. Το σύστημα αποδίδει ένα μοναδικό αναγνωριστικό χρήστη σε κάθε εφαρμογή και ορίζει τα δικαιώματα για όλα τα αρχεία μίας εφαρμογής έτσι ώστε μόνο αυτή να έχει πρόσβαση σε αυτά. Επίσης, κάθε εφαρμογή έχει τη δική της εικονική μηχανή με αποτέλεσμα αυτή να εκτελείται ξεχωριστά από τις άλλες. Εξ ορισμού, κάθε εφαρμογή τρέχει στη δική της διαδικασία Linux την οποία ξεκινά το Android, όταν οποιαδήποτε από τα στοιχεία της θα πρέπει να εκτελεστούν, και την τερματίζει όταν δεν είναι πλέον αναγκαία ή όταν το σύστημα πρέπει να ανακτήσει τη μνήμη για άλλες εφαρμογές. Αλκιβιάδης Χριστοδούλου - ΑΜ 965 32

Με αυτό τον τρόπο το Android εφαρμόζει την αρχή των ελάχιστων δικαιωμάτων. Δηλαδή, κάθε εφαρμογή έχει πρόσβαση μόνο στα συστατικά που χρειάζεται και έτσι δημιουργείται ένα πολύ ασφαλές περιβάλλον στο οποίο μία εφαρμογή δεν θα έχει πρόσβαση σε τμήματα του συστήματος για τα οποία δεν της έχει δοθεί η αντίστοιχη άδεια. Βέβαια, υπάρχει τρόπος μία εφαρμογή να μοιράζεται δεδομένα με άλλες εφαρμογές και να έχει πρόσβαση σε υπηρεσίες του συστήματος. Για τον διαμοιρασμό των δεδομένων αρκεί η ανάθεση του ίδιου αναγνωριστικού χρήστη σε δύο διαφορετικές εφαρμογές και για την πρόσβαση σε υπηρεσίες του συστήματος πρέπει να ζητηθεί η άδεια χρήσης τους, η οποία χορηγείται από τον χρήστη κατά την διαδικασία εγκατάστασης της εφαρμογής. Μία εφαρμογή Android αποτελείται από κάποια βασικά δομικά συστατικά, κάθε ένα από τα οποία αποτελεί ένα διαφορετικό σημείο εισόδου του συστήματος στην εφαρμογή. Στην πραγματικότητα δεν αποτελούν όλα τα συστατικά σημεία εισόδου για τον χρήστη, διότι κάποια εξαρτώνται το ένα από το άλλο, αλλά κάθε ένα υφίσταται ως δική του οντότητα και διαδραματίζει ένα συγκεκριμένο ρόλο που βοηθά στον καθορισμό της συνολικής συμπεριφοράς της εφαρμογής. Συγκεκριμένα, υπάρχουν πέντε διαφορετικοί τύποι συστατικών. Κάθε τύπος εξυπηρετεί ένα συγκεκριμένο σκοπό και έχει ένα ξεχωριστό κύκλο ζωής που καθορίζει τον τρόπο με τον οποίο δημιουργείται και καταστρέφεται το συστατικό. Οι πέντε τύποι συστατικών είναι οι εξής: Intents: Ένα Intent είναι ένα αντικείμενο ανταλλαγής μηνυμάτων που χρησιμοποιείται για να ζητηθεί η εκτέλεση μίας ενέργειας από ένα άλλο συστατικό. Αν και τα Intents χρησιμοποιούνται γενικά για να διευκολύνουν την επικοινωνία μεταξύ των συστατικών με διάφορους τρόπους, υπάρχουν τρεις βασικές περιπτώσεις χρήσης τους που είναι η εκκίνηση ενός Activity, η εκκίνηση ενός Service και η παράδοση ενός Broadcast μηνύματος. Χωρίζονται σε δύο κατηγορίες τα άμεσα και τα έμμεσα, όπου τα άμεσα αναφέρονται σε συγκεκριμένα συστατικά ενώ τα έμμεσα δηλώνουν μία γενική ενέργεια προς εκτέλεση και αφήνουν στο σύστημα την επιλογή του κατάλληλου συστατικού για την ολοκλήρωσή της. Αλκιβιάδης Χριστοδούλου - ΑΜ 965 33

Activities: Το βασικότερο συστατικό μίας εφαρμογής είναι το Activity, το οποίο είναι υπεύθυνο για το περιεχόμενο της οθόνης που βλέπει ο χρήστης σε μία δεδομένη χρονική στιγμή και με το οποίο αλληλεπιδρά προκειμένου να πραγματοποιήσει μία συγκεκριμένη ενέργεια. Μία εφαρμογή μπορεί να αποτελείται από πολλά διαφορετικά Activities τα οποία είναι ανεξάρτητα μεταξύ τους. Συνήθως, ένα Activity ορίζεται ως κύριο και είναι αυτό που παρουσιάζεται στην οθόνη όταν ξεκινά μία εφαρμογή για πρώτη φορά και στη συνέχεια κάθε Activity μπορεί να ξεκινά ένα άλλο Activity προκειμένου να εκτελεστούν διάφορες ενέργειες. Εικόνα 10: Κύκλος ζωής ενός Activity Αλκιβιάδης Χριστοδούλου - ΑΜ 965 34

Κάθε φορά που ξεκινά ένα νέο Activity το προηγούμενο σταματά αλλά διατηρείται από το σύστημα σε μία στοίβα ώστε να συνεχίσει τη λειτουργία του μόλις ο χρήστης επιστρέψει σε αυτό. Όταν γίνεται επιστροφή στο προηγούμενο Activity, τότε αυτό μπορεί να ανακτήσει τους απαραίτητους πόρους του συστήματος και να συνεχίσει ενέργειες που είχαν διακοπεί. Όλες οι καταστάσεις από τις οποίες μεταβαίνει ένα Activity αποτελούν μέρος του κύκλου ζωής του ο οποίος παρουσιάζεται στην επόμενη εικόνα. Services: Τα Services είναι συστατικά που δίνουν τη δυνατότητα εκτέλεσης εργασιών μακράς διάρκειας στο παρασκήνιο και δεν παρέχουν διεπαφή χρήστη. Η εκτέλεση ενός Service μπορεί να ξεκινήσει από κάποιο άλλο συστατικό και θα συνεχίσει να εκτελείται στο παρασκήνιο ακόμα και αν ο χρήστης μεταβεί σε κάποια άλλη εφαρμογή. Γενικά, ένα Service μπορεί είτε να εκκινηθεί από κάποιο άλλο συστατικό είτε να δεσμευτεί. Όταν εκκινείται ένα Service τότε μπορεί να εκτελείται στο παρασκήνιο επ αόριστον ακόμα και αν καταστραφεί το συστατικό που το ξεκίνησε. Συνήθως, ένα τέτοιο Service εκτελεί μία μοναδική λειτουργία και δεν επιστρέφει κάποιο αποτέλεσμα στον καλούντα. Αντίθετα, ένα δεσμευμένο Service προσφέρει μία διεπαφή πελάτη- εξυπηρετητή που επιτρέπει στα συστατικά να αλληλεπιδρούν με το Service, να στέλνουν αιτήσεις και να λαμβάνουν αποτελέσματα. Ένα τέτοιο Service μπορούν να το δεσμεύσουν πολλαπλά συστατικά, εκτελείται μόνο για όσο διάστημα είναι δεσμευμένο και καταστρέφεται όταν αποδεσμευτεί από όλα τα συστατικά που το είχαν δεσμεύσει. Ο κύκλος ζωής ενός Service είναι αρκετά πιο απλός από εκείνον του Activity. Ωστόσο, απαιτείται ιδιαίτερη προσοχή στον τρόπο με τον οποίο δημιουργούνται και καταστρέφονται τα Services, γιατί μπορεί να εκτελούνται στο παρασκήνιο χωρίς να το γνωρίζει ο χρήστης. Αλκιβιάδης Χριστοδούλου - ΑΜ 965 35

Εικόνα 11: Κύκλος ζωής ενός Service Content providers: Οι Content providers είναι υπεύθυνοι για τη διαχείριση ενός κοινού συνόλου δεδομένων των εφαρμογών. Επειδή οι Android εφαρμογές εκτελούνται ανεξάρτητα η μία από την άλλη, αν κάποια εφαρμογή θέλει να μοιραστεί τα δεδομένα της με κάποια άλλη θα πρέπει να παρέχει έναν Content provider. Με αυτό τον τρόπο δεδομένα μίας εφαρμογής που είναι αποθηκευμένα στο σύστημα αρχείων, σε μία βάση δεδομένων στη συσκευή, στο διαδίκτυο ή σε οποιαδήποτε άλλη θέση αποθήκευσης θα είναι προσβάσιμα από άλλες εφαρμογές μέσω του Content provider. Όταν πραγματοποιηθεί κλήση στα δεδομένα του Content provider μίας εφαρμογής από μία άλλη, τότε αυτός ενεργοποιείται και επιπλέον ο Content provider μίας εφαρμογής θα εκτελείται όσο υπάρχει έστω και ένα συστατικό αυτής στη μνήμη της συσκευής. Broadcast receivers: O Broadcast receiver είναι ένα συστατικό που ανταποκρίνεται στη μετάδοση ειδοποιήσεων του συστήματος. Πολλές από αυτές τις ειδοποιήσεις προέρχονται από το σύστημα, όπως για παράδειγμα ότι η οθόνη είναι απενεργοποιημένη ή ότι η στάθμη της μπαταρίας είναι χαμηλή. Επίσης, Αλκιβιάδης Χριστοδούλου - ΑΜ 965 36

ειδοποιήσεις μπορούν να μεταδώσουν και οι εφαρμογές, για παράδειγμα να ειδοποιήσει μία εφαρμογή ότι έκανε λήψη κάποιων δεδομένων και ότι αυτά είναι πλέον διαθέσιμα προς άλλες εφαρμογές. Παρόλο που οι Broadcast receivers δεν παρέχουν διεπαφή χρήστη, μπορούν να δημιουργήσουν μία ειδοποίηση στη γραμμή κατάστασης όταν συμβεί κάποια μετάδοση αντίστοιχης ειδοποίησης. Πιο συχνά, όμως, ένας Broadcast receiver αποτελεί απλά μία πύλη προς άλλα συστατικά τα οποία θα ειδοποιηθούν μόλις συμβεί κάποιο γεγονός. Οι δύο πιθανές καταστάσεις του Broadcast receiver είναι η κατάσταση καταστροφής και η κατάσταση εκτέλεσης. Κάθε φορά που ειδοποιείται ένας Broadcast receiver μεταβαίνει στην κατάσταση εκτέλεσης και αφού ολοκληρωθεί η εκτέλεση μεταβαίνει στην κατάσταση καταστροφής και το αντικείμενό του διαγράφεται από τη μνήμη της συσκευής. 2.2.4 Συνδεσιμότητα Το Android παρέχει πλούσια APIs που επιτρέπουν στις εφαρμογές να συνδεθούν και να αλληλεπιδρούν με άλλες συσκευές μέσω Bluetooth, NFC (Near Field Communication), Wi-Fi P2P (Peer-to-Peer), USB και του πρωτοκόλλου SIP (Session Initiation Protocol) πέρα από τις κλασσικές συνδέσεις δικτύου. Συγκεκριμένα, το Android περιλαμβάνει υποστήριξη για τη στοίβα του Bluetooth δικτύου, η οποία επιτρέπει σε μία συσκευή να ανταλλάσσει δεδομένα με άλλες συσκευές ασύρματα μέσω Bluetooth. Το πλαίσιο εφαρμογής παρέχει πρόσβαση στις λειτουργίες του Bluetooth μέσα από τα Android Bluetooth APIs και έτσι μία εφαρμογή έχει τη δυνατότητα να εκτελέσει σάρωση για άλλες Bluetooth συσκευές, εντοπισμό των αντιστοιχισμένων συσκευών, εγκαθίδρυση καναλιών RFCOMM (Radio Frequency Communication) και άλλες λειτουργίες. Από την έκδοση Android 4.3 και μετά (API level 18), το Android εισάγει υποστήριξη και για συσκευές Bluetooth χαμηλής κατανάλωσης έχοντας σχεδιάσει ένα ολοκληρωμένο API που προσφέρει σημαντικά χαμηλότερη κατανάλωση σε σχέση με το κλασσικό Bluetooth. Αντίστοιχα με το Bluetooth, το Android υποστηρίζει από την έκδοση Android 4.0 (API level 14) και συνδέσεις Wi-Fi P2P. Σύμφωνα με το Wi-Fi P2P οι συσκευές μπορούν να συνδεθούν μεταξύ τους απευθείας χωρίς την ύπαρξη ενός ενδιάμεσου σημείου Αλκιβιάδης Χριστοδούλου - ΑΜ 965 37

πρόσβασης. Σε αντίθεση με τις Bluetooth συνδέσεις, οι Wi-Fi P2P συνδέσεις είναι πιο γρήγορες και καλύπτουν μεγαλύτερες αποστάσεις. Επιπλέον, το Android υποστηρίζει και NFC και USB συνδέσεις. Το NFC είναι ένα σύνολο ασύρματων τεχνολογιών μικρής εμβέλειας, που απαιτεί συνήθως μία απόσταση τεσσάρων εκατοστών ή λιγότερο για να ξεκινήσει μία σύνδεση και επιτρέπει τον διαμοιρασμό δεδομένων με μικρά ωφέλιμα φορτία μεταξύ Android συσκευών και NFC tags ή με άλλες Android συσκευές. Όσον αφορά τις USB συνδέσεις το Android μπορεί να υποστηρίξει τη λειτουργία των συσκευών και ως εξυπηρετητές που θα ενεργοποιούν τις συνδέσεις και ως πελάτες που θα ανταποκρίνονται σε αιτήσεις άλλων εξυπηρετητών. Τέλος, το Android περιλαμβάνει μία πλήρη στοίβα του πρωτοκόλλου έναρξης συνόδου SIP που είναι ένα πρωτόκολλο επικοινωνίας που επιτρέπει τη μεταφορά πολυμεσικών πληροφοριών είτε μέσω διαδικτύου είτε μέσω τοπικού δικτύου. Ακόμα, παρέχει ένα ολοκληρωμένο API που το υποστηρίζει καθώς και ολοκληρωμένες υπηρεσίες διαχείρισης κλήσεων που επιτρέπουν στις εφαρμογές να δημιουργούν εισερχόμενες και εξερχόμενες κλήσεις φωνής χωρίς να διαχειρίζονται τις συνεδρίες, την επικοινωνία στο επίπεδο μεταφοράς και την αναπαραγωγή ή εγγραφή του ήχου άμεσα. 2.2.5 Εντοπισμός θέσης Ένα από τα μοναδικά χαρακτηριστικά των εφαρμογών των smartphones είναι ο εντοπισμός της θέσης του χρήστη. Οι χρήστες των κινητών τηλεφώνων τα έχουν μαζί τους παντού και η προσθήκη του εντοπισμού της θέσης τους σε μία εφαρμογή τους προσφέρει μία πιο εμπεριστατωμένη εμπειρία, αφού η εφαρμογή θα έχει τη δυνατότητα να προσφέρει καλύτερη ενημέρωση προς αυτούς. Ο εντοπισμός της θέσης της συσκευής σε μία εφαρμογή Android μπορεί να γίνει είτε μέσω του GPS είτε μέσω ενός παρόχου δικτύου του Android που καθορίζει την τοποθεσία με βάση τους πύργους κινητής τηλεφωνίας και των Wi-Fi σημείων πρόσβασης. Η μέθοδος του GPS είναι πιο ακριβής, ωστόσο λειτουργεί μόνο σε εξωτερικούς χώρους, καταναλώνει πιο γρήγορα την μπαταρία και δεν επιστρέφει τη θέση το συντομότερο δυνατόν. Αντίθετα, η μέθοδος του παρόχου δικτύου του Android μπορεί να λειτουργήσει αποτελεσματικά και σε εσωτερικούς και σε εξωτερικούς Αλκιβιάδης Χριστοδούλου - ΑΜ 965 38

χώρους, ανταποκρίνεται ταχύτερα και καταναλώνει λιγότερη μπαταρία αλλά δεν είναι το ίδιο ακριβής. Βέβαια, το Android επιτρέπει τη χρήση και των δύο μεθόδων ταυτόχρονα και έτσι ο προγραμματιστής μπορεί να επιλέξει ανάλογα με τις ανάγκες της εφαρμογής που αναπτύσσει. Το Android παρέχει ένα ειδικό API για τον εντοπισμό της θέσης, αλλά πλέον έχει αναπτυχθεί από την Google το Google Location Services API, που αποτελεί μέρος των Google Play Services και παρέχει ένα υψηλού επιπέδου και πιο ισχυρό API που αυτοματοποιεί εργασίες όπως η επιλογή του παρόχου τοποθεσίας, η διαχείριση της ενέργειας της μπαταρίας και προσθέτει και κάποια νέα χαρακτηριστικά. Επίσης, μπορεί να χρησιμοποιηθεί σε συνδυασμό με το Google Maps Android API για την προσθήκη χαρτών σε κάποια εφαρμογή που βασίζονται σε δεδομένα του Google Maps. Το συγκεκριμένο API χειρίζεται αυτόματα την πρόσβαση στους διακομιστές του Google Maps, τη λήψη δεδομένων, την απεικόνιση του χάρτη και την επεξεργασία του και αποτελεί και αυτό μέρος των Google Play Services. Τα Google Play Services είναι ένα σύνολο ιδιόκτητων υπηρεσιών κλειστού κώδικα της Google για Android συσκευές και παρέχουν διάφορα APIs μέσω των οποίων δίνεται η δυνατότητα στους προγραμματιστές να ενσωματώσουν στις εφαρμογές τους υπηρεσίες της Google. Τέτοιες υπηρεσίες είναι η πρόσβαση στο Gmail, το Google+, το Google Drive καθώς και στο Google Maps και στις υπηρεσίες τοποθεσίας της Google. Αλκιβιάδης Χριστοδούλου - ΑΜ 965 39

Κεφάλαιο 3. Υλοποίηση Android Εφαρμογής Ο κύριος στόχος της παρούσας διπλωματικής εργασίας είναι να αποδείξει ότι ο συνδυασμός των έξυπνων κινητών συσκευών με την ήδη υπάρχουσα τεχνολογία των αυτοκινήτων και συγκεκριμένα των ενσωματωμένων συστημάτων διάγνωσης αποτελεί μία καλή προσέγγιση για την ανάπτυξη νέων λειτουργιών και υπηρεσιών για τους οδηγούς, την οδήγηση και την κατάσταση ενός αυτοκινήτου. Στα προηγούμενα κεφάλαια μελετήσαμε την μεθοδολογία για την άντληση των κατάλληλων δεδομένων από την ηλεκτρονική πλακέτα ενός αυτοκινήτου και τον τρόπο με τον οποίο μπορεί να διοχετευθεί αυτή η πληροφορία προς ένα σύστημα αναπαράστασης. Σε αυτό το κεφάλαιο θα παρουσιάσουμε αναλυτικά μία ολοκληρωμένη Android εφαρμογή που αναπτύξαμε με σκοπό την αναπαράσταση των δεδομένων του πρωτοκόλλου OBD-II σε Android συσκευές. Πιο συγκεκριμένα, η εφαρμογή θα δίνει τη δυνατότητα στους χρήστες να παρακολουθούν τα δεδομένα του οχήματος σε πραγματικό χρόνο και επιπλέον να τα καταγράφουν σε κάποιο αρχείο στην κινητή συσκευή, έτσι ώστε να τα μεταφορτώσουν στη συνέχεια σε κάποιο διαδικτυακό εξυπηρετητή για περαιτέρω ανάλυση. Επιπρόσθετα, τα δεδομένα θα μπορούν να αποτυπώνονται τόσο σε μορφή γραφημάτων όσο και σε μορφή πίνακα οργάνων, και θα γίνεται καταγραφή της διαδρομής που ακολουθεί ο χρήστης μέσω του GPS της συσκευής. Τέλος, θα υπολογίζονται και θα αναπαριστώνται άλλες χρήσιμες πληροφορίες, όπως η κατανάλωση καυσίμου για την ολοκληρωμένη στατιστική ανάλυση της διαδρομής που ακολουθεί ο χρήστης. Στη συνέχεια του κεφαλαίου θα αναφερθούμε στον εξοπλισμό που χρησιμοποιήθηκε τόσο για την άντληση των δεδομένων από το OBD-II σύστημα του αυτοκινήτου όσο Αλκιβιάδης Χριστοδούλου- ΑΜ 965 40

και για την υλοποίηση της εφαρμογής, καθώς επίσης και στις λειτουργίες και σε ζητήματα υλοποίησης της εφαρμογής. 3.1 Εξοπλισμός 3.1.1 Εργαλείο σάρωσης OBD-II Για να διαβάσουμε τα δεδομένα από την OBD-II θύρα του αυτοκινήτου χρησιμοποιήσαμε ένα χαμηλού κόστους εργαλείο σάρωσης το IDD- 212B της Sinocastel [23]. Το εργαλείο αυτό υλοποιεί και τα πέντε διαφορετικά πρωτόκολλα OBD-II και περιλαμβάνει μία μονάδα Bluetooth καθώς και μνήμη στην οποία αποθηκεύονται τα διάφορα δεδομένα όταν δεν υπάρχει επικοινωνία μέσω Bluetooth μεταξύ του εργαλείου σάρωσης και της Android συσκευής. Εικόνα 12: IDD-212B Γενικά, το εργαλείο σάρωσης έχει τη δυνατότητα να διαβάζει διάφορα διαγνωστικά δεδομένα, όπως η ταχύτητα του οχήματος, οι στροφές του κινητήρα και η θερμοκρασία του, η ροή μάζας αέρα και άλλα. Συγκεκριμένα, μπορεί να διαβάσει μέχρι και δέκα διαφορετικούς τύπους δεδομένων ανά τακτά χρονικά διαστήματα. Πέρα από αυτά τα δεδομένα, μπορεί να αναφέρει τα διάφορα DTCs που προκύπτουν καθώς και ειδοποιήσεις, όπως υψηλή θερμοκρασία κινητήρα, υψηλές στροφές κινητήρα, υπερβολική ταχύτητα και άλλα. Τα δεδομένα που μπορεί να μας επιστρέφει το εργαλείο σάρωσης με βάση τα PIDs που υποστηρίζει κάθε όχημα, ο καθορισμός των ορίων πέρα από τα οποία δημιουργούνται οι αντίστοιχες ειδοποιήσεις, ο καθαρισμός της μνήμης και γενικότερα η συνολική διαμόρφωση του εργαλείου σάρωσης γίνεται μέσω ενός προγράμματος που παρέχει Αλκιβιάδης Χριστοδούλου - ΑΜ 965 41

δωρεάν ο κατασκευαστής αρκεί να συνδέσουμε το εργαλείο με το κατάλληλο καλώδιο στη θύρα usb του υπολογιστή. Η διαμόρφωση μπορεί να πραγματοποιηθεί και μέσω Bluetooth. Εικόνα 13: Πρόγραμμα διαμόρφωσης εργαλείου σάρωσης 3.1.1.1 Πρωτόκολλο επικοινωνίας IDD- 212B Για την υλοποίηση της επικοινωνίας μέσω Bluetooth μεταξύ του εργαλείου σάρωσης και της Android συσκευής χρησιμοποιήσαμε το πρωτόκολλο επικοινωνίας που μας παρέχει ο κατασκευαστής. Σύμφωνα με το πρωτόκολλο αυτό τα πακέτα που ανταλλάσσονται έχουν συγκεκριμένη μορφή και απαιτείται ειδική επεξεργασία για την ακριβή αποτύπωση των δεδομένων που λαμβάνουμε. Η γενική μορφή των πακέτων που ανταλλάσσονται μέσω Bluetooth μεταξύ του εργαλείου σάρωσης και της Android συσκευής είναι η ακόλουθη: Αλκιβιάδης Χριστοδούλου - ΑΜ 965 42

1. Μορφή πακέτων προς το εργαλείο σάρωσης Header Length Device ID Type Data Checksum Tail A B C D E F G Όπου: A: Επικεφαλίδα, 2 bytes, ορίζεται ως 4040. B: Μήκος πακέτου από την επικεφαλίδα ως την ουρά, 2 bytes. C: Το ID του εργαλείου σάρωσης, 20 bytes. D: Η εντολή που στέλνουμε, 2 bytes. E: Δεδομένα σχετικά με την εντολή, μη προκαθορισμένος αριθμός bytes. F: Κώδικας ανίχνευσης λαθών, 2 bytes, υπολογίζεται από την επικεφαλίδα ως τα δεδομένα. Για τον υπολογισμό παρατίθεται από τον κατασκευαστή ο αλγόριθμος τον οποίο υλοποιήσαμε σε java ώστε να χρησιμοποιηθεί στον κώδικα της εφαρμογής. G: Ουρά, 2 bytes, ορίζεται ως 0d0a. Όταν στέλνουμε, λοιπόν, τις διάφορες εντολές προς το εργαλείο σάρωσης θα πρέπει να δημιουργήσουμε τα αντίστοιχα πακέτα με την κατάλληλη μορφή, όπως φαίνεται παραπάνω, έτσι ώστε να μας απαντήσει το εργαλείο με τα δεδομένα που ζητήσαμε. 2. Μορφή πακέτων από το εργαλείο σάρωσης Header Length Device ID Type Data Checksum Tail A B C D E F G Όπου: A: Επικεφαλίδα, 2 bytes, ορίζεται ως 2424. B: Μήκος πακέτου από την επικεφαλίδα ως την ουρά, 2 bytes. C: Το ID του εργαλείου σάρωσης, 20 bytes. D: Η εντολή που λαμβάνουμε, 2 bytes. Αλκιβιάδης Χριστοδούλου - ΑΜ 965 43

E: Δεδομένα σχετικά με την εντολή, μη προκαθορισμένος αριθμός bytes. F: Κώδικας ανίχνευσης λαθών, 2 bytes, υπολογίζεται από την επικεφαλίδα ως τα δεδομένα. G: Ουρά, 2 bytes, ορίζεται ως 0d0a. Τα πακέτα που ανταλλάσσονται μεταξύ της Android συσκευής και του εργαλείου σάρωσης είναι σε δεκαεξαδική μορφή οπότε θα πρέπει κάθε φορά να γίνονται οι κατάλληλες τροποποιήσεις. 3.1.1.2 Λειτουργία IDD- 212B Εφόσον το εργαλείο σάρωσης έχει συνδεθεί στην OBD-II θύρα ξεκινά η επικοινωνία μεταξύ αυτού και της ECU. Τα δεδομένα οργανώνονται σε ταξίδια τα οποία είτε αποθηκεύονται στη μνήμη είτε στέλνονται σε πραγματικό χρόνο στην Android συσκευή. Συγκεκριμένα, μόλις ο κινητήρας τεθεί σε λειτουργία τότε πραγματοποιείται έναρξη του ταξιδιού και μόλις τεθεί εκτός λειτουργίας πραγματοποιείται λήξη του ταξιδιού. Στο ενδιάμεσο αποθηκεύονται τα διάφορα δεδομένα όπως ταχύτητα αυτοκινήτου, στροφές του κινητήρα, ειδοποιήσεις και λοιπά. Σύμφωνα με την τωρινή διαμόρφωση του εργαλείου σάρωσης, τα δεδομένα από τα PIDs καταγράφονται ανά δύο δευτερόλεπτα και κάθε δέκα δευτερόλεπτα αποθηκεύονται στη μνήμη οι πέντε διαφορετικές τιμές αυτών των δεδομένων. Όταν πραγματοποιηθεί η σύνδεση μέσω Bluetooth μεταξύ του εργαλείου σάρωσης και της Android συσκευής, τότε το εργαλείο σάρωσης αποστέλλει μία εντολή login, η οποία προτρέπει τον χρήστη να συνδεθεί ώστε να ξεκινήσει να λαμβάνει τα δεδομένα. Η εντολή αυτή επιστρέφει επιπλέον το τρέχον ταξίδι και κάποια άλλα δεδομένα όπως η ώρα και οι ειδοποιήσεις που τυχόν έχουν προκύψει. Σε περίπτωση που δεν απαντήσει η εφαρμογή με την κατάλληλη εντολή, το εργαλείο σάρωσης συνεχίζει να στέλνει αυτή την εντολή ανά τακτά χρονικά διαστήματα και τα όποια δεδομένα διαβάζονται από την ECU αποθηκεύονται στην εσωτερική μνήμη του εργαλείου. Σε αντίθετη περίπτωση, απαντώντας με την κατάλληλη εντολή δηλώνουμε ότι θέλουμε να λάβουμε τα δεδομένα και ξεκινά η λήψη τους. Αλκιβιάδης Χριστοδούλου - ΑΜ 965 44

Δηλαδή, για κάθε ταξίδι που έχει καταγραφεί στη μνήμη επιστρέφονται με την ακόλουθη σειρά: Η έναρξη του ταξιδιού μαζί με την ημερομηνία και την ώρα. Το OBD πρωτόκολλο που υποστηρίζει η συγκεκριμένη ECU. Τα υποστηριζόμενα PIDs του οχήματος. Τα δεδομένα που καταγράφονται και οι ειδοποιήσεις που προκύπτουν. Η λήξη του ταξιδιού μαζί με την ημερομηνία και την ώρα. Σε περίπτωση που είμαστε στο τρέχον ταξίδι επιστρέφονται και δεδομένα σε πραγματικό χρόνο. 3.1.2 Android συσκευή Η Android συσκευή που χρησιμοποιήθηκε για την υλοποίηση του συστήματος αναπαράστασης των δεδομένων του πρωτοκόλλου OBD-II είναι το Sony Ericsson Xperia Ray [24]. Το Ray είναι ένα κινητό τηλέφωνο που χρησιμοποιεί το λειτουργικό σύστημα Android 4.0.4 με κωδικό όνομα Ice Cream Sandwich και API Level 15. Επιπλέον, διαθέτει όλα τα χαρακτηριστικά που απαιτούνταν για την υλοποίηση της εφαρμογής. Εικόνα 14: Sony Ericsson Xperia Ray Στον παρακάτω πίνακα παρουσιάζονται αναλυτικά τα χαρακτηριστικά της συγκεκριμένης συσκευής. Αλκιβιάδης Χριστοδούλου - ΑΜ 965 45

Sony Ericsson Xperia Ray Διαστάσεις Ύψος: 111mm Πλάτος: 53mm Πάχος: 9.4 mm Επεξεργαστής Chipset: Qualcomm MSM8255 Snapdragon CPU: 1 GHz Scorpion GPU: Adreno 205 Λειτουργικό Σύστημα Μνήμη Android 4.0.4, Ice Cream Sandwich Εξωτερική: 4 GB microsd Εσωτερική: 1 GB RAM: 512 MB Οθόνη 3.3 ίντσες, LED-backlit LCD, capacitive οθόνη αφής Ανάλυση: 480 x 854 pixels Συνδεσιμότητα GSM: 850 / 900 / 1800 / 1900 HSDPA: 7.2 Mbps HSUPA: 5.8 Mbps Wi-Fi: 802.11 b/g/n, DLNA, Wi-Fi hotspot Bluetooth: v2.1 with A2DP, EDR USB: microusb v2.0 Αισθητήρες Επιταχυνσιόμετρο, εγγύτητας, μαγνητόμετρο A-GPS (Assisted GPS) Πίνακας 3: Χαρακτηριστικά του Xperia Ray Αλκιβιάδης Χριστοδούλου - ΑΜ 965 46

3.2 Λειτουργίες εφαρμογής Στη συγκεκριμένη εφαρμογή χρησιμοποιήσαμε την τεχνολογία Bluetooth για να δημιουργήσουμε μία σύνδεση δεδομένων μεταξύ της Android συσκευής και του OBD- II εργαλείου σάρωσης. Επιπλέον, για να έχουμε την δυνατότητα να μεταφορτώσουμε τα δεδομένα σε κάποιο διαδικτυακό εξυπηρετητή χρησιμοποιήσαμε το Wi-Fi ή το 3G αντίστοιχα για σύνδεση στο διαδίκτυο. Τέλος, χρησιμοποιήσαμε και το GPS για την εύρεση της θέσης του χρήστη. Στις παρακάτω εικόνες φαίνονται η αρχική οθόνη της εφαρμογής και το πλαϊνό μενού πλοήγησης. Εικόνα 15: (α) Αρχική οθόνη, (β) Πλαϊνό μενού Οι βασικές λειτουργίες της εφαρμογής είναι οι ακόλουθες: Σύνδεση μέσω Bluetooth με κάποια από τις αντιστοιχισμένες συσκευές. Αναζήτηση των συσκευών που είναι εντός εμβέλειας του Bluetooth και αντιστοίχηση με την Android συσκευή. Ανάκτηση των δεδομένων που είναι αποθηκευμένα στη μνήμη του OBD II εργαλείου σάρωσης και αποθήκευση σε κάποιο αρχείο στη συσκευή. Αλκιβιάδης Χριστοδούλου - ΑΜ 965 47

Εμφάνιση των δεδομένων που λαμβάνουμε σε πραγματικό χρόνο τόσο σε απλή μορφή (πλαϊνό μενού), όσο και σε μορφή πίνακα οργάνων (αρχική οθόνη) και αποθήκευση αυτών σε κάποιο αρχείο στη συσκευή. Εμφάνιση των ειδοποιήσεων που έχουν προκύψει. Δυνατότητα ρύθμισης του OBD-II εργαλείου σάρωσης μέσω Bluetooth. Εμφάνιση γραφημάτων για τα δεδομένα που έχουμε λάβει. Καταγραφή της διαδρομής που ακολουθεί ο χρήστης μέσω GPS και αποτύπωση σε χάρτη. Μεταφόρτωση του αρχείου με τα δεδομένα που έχουμε καταγράψει στο Dropbox. Για να είναι δυνατή η λήψη των δεδομένων από το OBD-II εργαλείο σάρωσης και να έχει ο χρήστης τη δυνατότητα να παρακολουθήσει αυτά τα δεδομένα θα πρέπει να ακολουθηθούν συγκεκριμένα βήματα. Δηλαδή, εάν είναι ενεργοποιημένο το Bluetooth θα πρέπει ο χρήστης αρχικά να ελέγξει αν το εργαλείο σάρωσης υπάρχει στις αντιστοιχισμένες συσκευές. Εάν υπάρχει θα προσπαθήσει να συνδεθεί και εάν όχι θα πρέπει να πραγματοποιήσει αναζήτηση της συσκευής μέσα από την αντίστοιχη λειτουργία της εφαρμογής. Εφόσον εντοπιστεί η κατάλληλη συσκευή, στη συνέχεια ο χρήστης πρέπει να αντιστοιχήσει τη συσκευή αυτή με την Android συσκευή του και μετά να προσπαθήσει να συνδεθεί. Σε περίπτωση επιτυχούς σύνδεσης ξεκινά η λήψη των δεδομένων από το εργαλείο σάρωσης. Όλα αυτά τα βήματα περιγράφονται στο διάγραμμα ροής της εικόνας 16. Αλκιβιάδης Χριστοδούλου - ΑΜ 965 48

Εικόνα 16: Διάγραμμα ροής σύνδεσης Κατά τη διαδικασία λήψης των δεδομένων αρχικά πραγματοποιείται ανάκτηση των δεδομένων που έχουν αποθηκευτεί στη μνήμη του εργαλείου σάρωσης και στη συνέχεια λαμβάνονται τα δεδομένα πραγματικού χρόνου. Από εκεί και έπειτα τα δεδομένα αποθηκεύονται σε ένα αρχείο στη συσκευή και παράλληλα ο χρήστης μπορεί Αλκιβιάδης Χριστοδούλου - ΑΜ 965 49

να παρακολουθήσει τα διάφορα δεδομένα πραγματικού χρόνου μέσα από τις αντίστοιχες λειτουργίες που παρέχονται από την εφαρμογή. Επιπλέον, έχει τη δυνατότητα να παρακολουθεί σε χάρτη τη διαδρομή που ακολουθεί καθώς και να μεταφορτώσει το αρχείο στο οποίο καταγράφονται τα δεδομένα στο Dropbox. 3.3 Δομή εφαρμογής Η εφαρμογή που υλοποιήσαμε αποτελείται από ένα κύριο Activity και τρία δευτερεύοντα. Το κύριο Activity της εφαρμογής είναι υπεύθυνο για την υλοποίηση της βασικής λειτουργικότητας της εφαρμογής, ενώ τα υπόλοιπα Activities προσθέτουν επιπλέον λειτουργικότητα στην εφαρμογή κατά περίπτωση. Πιο αναλυτικά, στο αρχείο SensorsData.java όπου βρίσκεται το κύριο Activity της εφαρμογής υλοποιούνται όλες οι βασικές συναρτήσεις. Δηλαδή, υλοποιούνται οι συναρτήσεις που είναι υπεύθυνες για την ενεργοποίηση του Bluetooth της Android συσκευής, την αναζήτηση νέων συσκευών, την αντιστοίχηση συσκευών και τη δημιουργία σύνδεσης μέσω Bluetooth μεταξύ της Android συσκευής και του εργαλείου σάρωσης. Επιπλέον, υλοποιούνται οι συναρτήσεις για την αποστολή δεδομένων από και προς το εργαλείο σάρωσης καθώς και συναρτήσεις που κωδικοποιούν τα δεδομένα που πρόκειται να αποσταλούν σε μορφή κατάλληλων πακέτων και αποκωδικοποιούν τα πακέτα που λαμβάνονται για να μπορούν να αναγνωστούν. Μέσα από το κύριο Activity γίνεται, ακόμα, αποθήκευση των δεδομένων που λαμβάνονται σε ένα αρχείο στη συσκευή, εντοπισμός της θέσης του χρήστη, καταγραφή της διαδρομής που ακολουθεί και αποτύπωσή της σε χάρτη καθώς επίσης και υπολογισμός της στιγμιαίας κατανάλωσης καυσίμου και της σχέσης στο κιβώτιο ταχυτήτων του αυτοκινήτου. Τα πακέτα που αποστέλλονται προς το εργαλείο σάρωσης περιέχουν και έναν κώδικα ανίχνευσης λαθών CRC, ο οποίος δίνεται από τον κατασκευαστή του εργαλείου σάρωσης και τον οποίο υλοποιούμε εμείς σε java στο αρχείο CrcAlg.java. Τα δευτερεύοντα Activities είναι υπεύθυνα για την πρόσθετη λειτουργικότητα της εφαρμογής που είναι η αναπαράσταση των δεδομένων σε μορφή πίνακα οργάνων και Αλκιβιάδης Χριστοδούλου - ΑΜ 965 50

σε μορφή γραφημάτων και η μεταφόρτωση του αρχείου με τα δεδομένα στο Dropbox. Στο αρχείο GaugeActivity.java υλοποιούνται οι αντίστοιχες συναρτήσεις για την αναπαράσταση των δεδομένων σε μορφή πίνακα οργάνων και στο αρχείο GraphActivity.java οι συναρτήσεις για την αναπαράσταση των δεδομένων σε μορφή γραφημάτων. Τα δεδομένα που αναπαριστώνται από τα δύο αυτά Activities προωθούνται σε αυτά από το κύριο Activity της εφαρμογής. Επίσης, στο αρχείο UploadFile.java υλοποιούνται οι συναρτήσεις για τη μεταφόρτωση του αρχείου δεδομένων στο Dropbox και οι οποίες περιλαμβάνουν τη διαδικασία πιστοποίησης του λογαριασμού χρήστη στο Dropbox και τη μεταφόρτωση του αρχείου. Η μεταφόρτωση γίνεται μέσω μίας ασύγχρονης διαδικασίας η οποία υλοποιείται στο αρχείο BackgroundUploading.java. Κάθε ένα από τα διαφορετικά Activities έχει το δικό του layout το οποίο είναι υλοποιημένο στο αντίστοιχο xml αρχείο. Συγκεκριμένα, το layout του κύριου Activity βρίσκεται στο αρχείο main.xml και τα layouts των υπόλοιπων Activities βρίσκονται στα αρχεία gauge.xml, graph.xml και upload.xml αντίστοιχα. Τέλος, στο AndroidManifest.xml αρχείο δηλώνονται οι ιδιότητες της εφαρμογής, δηλαδή το μικρότερο API Level στο οποίο μπορεί να εκτελεστεί η εφαρμογή, οι διάφορες άδειες χρήσης που απαιτεί η εφαρμογή, όπως για παράδειγμα η χρήση του Bluetooth και του GPS, και τα διάφορα Activities που περιλαμβάνει η εφαρμογή. Στην επόμενη ενότητα θα αναφερθούμε πιο αναλυτικά στην υλοποίηση των λειτουργιών της εφαρμογής και θα παρουσιάσουμε τα διάφορα χαρακτηριστικά τους. 3.4 Ζητήματα υλοποίησης 3.4.1 Δημιουργία Bluetooth σύνδεσης Αρχικά να αναφέρουμε ότι εάν δεν είναι ενεργοποιημένο το Bluetooth πριν την έναρξη της εφαρμογής, ζητείται αυτόματα άδεια από τον χρήστη για την ενεργοποίησή του, όπως φαίνεται στην παρακάτω εικόνα. Αλκιβιάδης Χριστοδούλου - ΑΜ 965 51

Εικόνα 17: Άδεια ενεργοποίησης Bluetooth Εφόσον το Bluetooth είναι ενεργοποιημένο εμφανίζονται στη λίστα των αντιστοιχισμένων συσκευών, μέσα από την επιλογή του πεδίου Paired Devices του πλαϊνού μενού, όλες οι συσκευές Bluetooth με τις οποίες η Android συσκευή έχει ανταλλάξει κλειδιά με αποτέλεσμα να έχουν δημιουργηθεί τα αντίστοιχα ζεύγη. Συγκεκριμένα εμφανίζεται το όνομα της κάθε συσκευής και η μοναδική MAC διεύθυνσή της. Σε αντίθετη περίπτωση δεν εμφανίζεται καμία αντιστοιχισμένη συσκευή. Εικόνα 18: Αντιστοιχισμένες συσκευές Αλκιβιάδης Χριστοδούλου - ΑΜ 965 52

Στο ενδεχόμενο που η συσκευή με την οποία επιθυμεί ο χρήστης να συνδεθεί δεν εμφανίζεται στη συγκεκριμένη λίστα θα πρέπει να πραγματοποιηθεί αναζήτηση νέων συσκευών επιλέγοντας το αντίστοιχο πεδίο Discover new devices. Η αναζήτηση νέων συσκευών είναι μία διαδικασία σάρωσης που ψάχνει την περιοχή εμβέλειας του Bluetooth της Android συσκευής για άλλες συσκευές Bluetooth. Εάν μία συσκευή είναι ανιχνεύσιμη τότε θα ανταποκριθεί στο αίτημα ανακάλυψης ανταλλάσσοντας κάποιες πληροφορίες όπως το όνομά της και η MAC διεύθυνσή της. Σε περίπτωση που δεν υπάρχουν νέες συσκευές εμφανίζεται αντίστοιχο μήνυμα. Κάθε νέα συσκευή που ανακαλύπτεται προστίθεται στη λίστα με τις νέες συσκευές μέχρι να ολοκληρωθεί η αναζήτηση. Στη συνέχεια, ο χρήστης έχει τη δυνατότητα να δημιουργήσει ζεύγος με όποια συσκευή επιθυμεί επιλέγοντάς τη. Όταν δημιουργείται ζεύγος με μία συσκευή τότε αποθηκεύονται οι βασικές πληροφορίες αυτής ώστε να μην απαιτείται εκ νέου αναζήτηση για να μπορέσει να συνδεθεί σε αυτή η Android συσκευή, αφού βέβαια η συσκευή βρίσκεται εντός εμβέλειας. Εικόνα 19: Αναζήτηση νέων συσκευών Μόλις πραγματοποιηθεί με επιτυχία η αντιστοίχηση της νέας συσκευής τότε αυτή εμφανίζεται στη λίστα των αντιστοιχισμένων συσκευών και μπορεί ο χρήστης να την επιλέξει για σύνδεση. Για να δημιουργηθεί μία Bluetooth σύνδεση μέσω της εφαρμογής θα πρέπει να υλοποιηθούν μηχανισμοί πελάτη - εξυπηρετητή, όπου ο εξυπηρετητής θα δημιουργεί ένα socket και ο πελάτης θα ξεκινά τη σύνδεση χρησιμοποιώντας τη MAC Αλκιβιάδης Χριστοδούλου - ΑΜ 965 53

διεύθυνση του εξυπηρετητή. Ο εξυπηρετητής και ο πελάτης θεωρούνται ότι συνδέονται μεταξύ τους όταν ο κάθε ένας έχει ένα συνδεδεμένο Bluetooth socket στο ίδιο RFCOMM κανάλι. Στην περίπτωση της δικής μας εφαρμογής το εργαλείο σάρωσης αποτελεί τον εξυπηρετητή, οπότε αρκεί η υλοποίηση του μηχανισμού πελάτη. Αφού γίνουν οι κατάλληλες αρχικοποιήσεις και η δημιουργία του αντίστοιχου RFCOMM socket χρησιμοποιώντας το αντίστοιχο UUID (Universally Unique Identifier) που είναι γνωστό στον εξυπηρετητή καλούμε τη συνάρτηση connect(). Εάν η απομακρυσμένη συσκευή αποδεχτεί τη σύνδεση τότε οι δύο συσκευές θα μοιραστούν το ίδιο RFCOMM κανάλι, ενώ αν για οποιοδήποτε λόγο η σύνδεση αποτύχει θα εμφανιστεί μήνυμα σφάλματος. Στην παρακάτω εικόνα παρουσιάζεται το μήνυμα επιτυχούς σύνδεσης με το IDD- 212B. Εικόνα 20: Επιτυχής σύνδεση 3.4.2 Λήψη των δεδομένων και αποθήκευση σε αρχείο Από τη στιγμή που έχει συνδεθεί η Android συσκευή με το εργαλείο σάρωσης IDD- 212B, επόμενο βήμα είναι η λήψη των δεδομένων. Αρχικά, όπως αναφέραμε και προηγουμένως, το εργαλείο σάρωσης αποστέλλει μία εντολή login, η οποία προτρέπει τον χρήστη να συνδεθεί ώστε να ξεκινήσει να λαμβάνει τα δεδομένα. Αλκιβιάδης Χριστοδούλου - ΑΜ 965 54

Σε περίπτωση που δεν απαντήσει η εφαρμογή με την κατάλληλη εντολή, το εργαλείο σάρωσης συνεχίζει να στέλνει αυτή την εντολή ανά τακτά χρονικά διαστήματα και τα όποια δεδομένα διαβάζονται από την ECU αποθηκεύονται στην εσωτερική μνήμη του εργαλείου. Σε αντίθετη περίπτωση, απαντώντας με την κατάλληλη εντολή δηλώνουμε ότι θέλουμε να λάβουμε τα δεδομένα και ξεκινά η λήψη τους. Ουσιαστικά, το πρωτόκολλο επικοινωνίας του εργαλείου σάρωσης απαιτεί την αποστολή ενός πακέτου όπου θα δηλώνεται από την εφαρμογή η τελευταία θέση μνήμης που διαβάστηκε, ώστε να ξεκινήσει να στέλνει δεδομένα το εργαλείο από εκείνη τη θέση μνήμης και μετά. Δηλαδή, πρόκειται για ένα είδος συγχρονισμού μεταξύ της εφαρμογής και του εργαλείου σάρωσης και για το λόγο αυτό διατηρούμε στη μνήμη της Android συσκευής το id του τελευταίου πακέτου που διαβάστηκε προτού διακοπεί η σύνδεση. Συγκεκριμένα, για κάθε πακέτο που μας στέλνει το εργαλείο σάρωσης μας στέλνει επιπλέον και το id που έχει στη μνήμη. Με αυτό τον τρόπο μας δίνεται η δυνατότητα κάθε φορά που συγχρονίζουμε την εφαρμογή με το εργαλείο να μην διαβάζουμε ολόκληρη τη μνήμη αλλά από το πακέτο που διαβάσαμε τελευταίο και έπειτα. Για το λόγο αυτό αποθηκεύουμε στη μνήμη του κινητού τηλεφώνου το id του τελευταίου πακέτου που λάβαμε ώστε την επόμενη φορά που θα στείλουμε την εντολή GSM login response (1001) να βάλουμε στο πεδίο FixedDataNum της εντολής αυτό το id. Σε περίπτωση που διαγράψουμε τη μνήμη του εργαλείου το id δεν διαγράφεται. Επομένως την επόμενη φορά με τον ίδιο τρόπο θα διαβάσουμε από την αρχή τη μνήμη και το id του πακέτου της πρώτης θέσης μνήμης δεν θα είναι το 1 αλλά το επόμενο του id που διαβάσαμε τελευταίο. Εάν για κάποιο λόγο σβήσουμε τα δεδομένα της εφαρμογής από το κινητό τηλέφωνο, την επόμενη φορά το id που θα στείλουμε θα είναι το μηδέν. Σε αυτή την περίπτωση αν η πρώτη θέση μνήμης του εργαλείου σάρωσης περιέχει το πακέτο με id 1 τότε θα μας στείλει κανονικά τα δεδομένα από την αρχή της μνήμης, αλλιώς το εργαλείο θα σβήσει αυτόματα τη μνήμη του και θα ξεκινήσει νέο ταξίδι. Γενικά, αυτό συμβαίνει κάθε φορά που θα του στείλουμε την εντολή 1001 με κάποιο id που δεν θα υπάρχει στη μνήμη του. Οπότε για να γίνει ο συγχρονισμός θα πρέπει, αφού συνδεθούμε, να επιλέξουμε το πεδίο Stored data από το πλαϊνό μενού πλοήγησης και ακολούθως να πατήσουμε το Αλκιβιάδης Χριστοδούλου - ΑΜ 965 55

κουμπί Get stored data. Η οθόνη της εφαρμογής κατά τη λήψη των αποθηκευμένων δεδομένων στη μνήμη του εργαλείου σάρωσης φαίνεται στην παρακάτω εικόνα. Εικόνα 21: Ανάκτηση αποθηκευμένων δεδομένων Με αυτό τον τρόπο η εφαρμογή μας λαμβάνει όλα τα δεδομένα των ταξιδιών που έχουν αποθηκευτεί στη μνήμη του εργαλείου σάρωσης. Τόσο τα PIDs που καταγράφονται όσο και τα χρονικά διαστήματα μεταξύ των διαδοχικών καταγραφών ορίζονται εκ των προτέρων. Εμείς έχουμε επιλέξει τα PIDs αυτά να είναι η ταχύτητα του αυτοκινήτου (Speed), οι στροφές του κινητήρα (Rounds Per Minute- RPM), η θερμοκρασία του ψυκτικού μέσου του κινητήρα (Engine Coolant Temperature- ECT), ο ρυθμός ροής μάζας αέρα (Mass Air Flow- MAF) ή η απόλυτη πίεση του αέρα (Manifold Air Pressure- MAP) στην εισαγωγή του κινητήρα ανάλογα με τον αντίστοιχο αισθητήρα που διαθέτει το κάθε αυτοκίνητο, ο χρόνος που έχει περάσει από την ώρα που τέθηκε σε λειτουργία ο κινητήρας (Time since engine start) και η θερμοκρασία του αέρα στην εισαγωγή του κινητήρα (Intake Air Temperature- IAT). Βέβαια, δεν διαθέτουν όλα τα οχήματα τους κατάλληλους αισθητήρες για την λήψη όλων των δεδομένων, ωστόσο τα βασικά που είναι η ταχύτητα του αυτοκινήτου, οι στροφές του κινητήρα, η θερμοκρασία του και το MAF ή το MAP αντίστοιχα τα διαβάζουν όλα τα οχήματα. Επίσης, έχουμε ορίσει η καταγραφή αυτών των δεδομένων να γίνεται ανά δύο δευτερόλεπτα. Το εργαλείο σάρωσης αποθηκεύει αυτά τα δεδομένα και για να τα Αλκιβιάδης Χριστοδούλου - ΑΜ 965 56

στείλει στην εφαρμογή τα οργανώνει σε πακέτα ανά πέντε διαφορετικές καταγραφές. Δηλαδή, στέλνει ένα πακέτο που αποτελείται από πέντε διαφορετικές καταγραφές των PIDs. Για παράδειγμα το εργαλείο στέλνει το πακέτο: 24246f00323132424d31313434313031323237000000000020044e0100002d0300009 cbcee559c17000001000105210d210c2105210f210b0601020cf87d5d30010d7e7d5d2 4000f367d5d34010c547d5d31010e497d5d2406212e04232e05213306223106252e000 00000e4bc0d0a το οποίο είναι σε δεκαεξαδική μορφή και για να αντλήσουμε τα δεδομένα έχουμε υλοποιήσει αντίστοιχη συνάρτηση. Όλο αυτό τον όγκο δεδομένων που λαμβάνουμε τον αποθηκεύουμε σε ένα αρχείο της μορφής.csv στην εξωτερική κάρτα μνήμης της κινητής συσκευής. Αν το αρχείο υπάρχει τότε το ανοίγουμε και γράφουμε τα δεδομένα κάτω από τα ήδη υπάρχοντα, αλλιώς αν δεν υπάρχει το δημιουργούμε. Επιπλέον, σε ξεχωριστό αρχείο καταγράφουμε και τα πακέτα που μας στέλνει το εργαλείο σάρωσης, πράγμα το οποίο μας βοήθησε στην αποκωδικοποίηση των δεδομένων. Επομένως, εμείς καταγράφουμε σε αυτό το αρχείο με τη σειρά το πότε ξεκίνησε ένα ταξίδι, το OBD πρωτόκολλο που υποστηρίζει η συγκεκριμένη ECU, τα υποστηριζόμενα PIDs, τις ειδοποιήσεις και τα DTCs που τυχόν έχουν προκύψει, τα δεδομένα από τα PIDs που έχουμε ορίσει να διαβάζει το εργαλείο σάρωσης και το τέλος του ταξιδιού. Στον παρακάτω πίνακα παρουσιάζεται μέρος ενός ταξιδιού που έχουμε καταγράψει: Trip started at 8/09/2015 12:32 OBD Protocol: ISO 14230- KWP_5BPS Alarms 8/09/2015 12:30 Power On Supported PIDs: 2101 2103 214f 2104 2105 2106 2107 210b 210c 210d 210e 210f 2111 2113 2115 211c 2121 2134 2156 DTCs: 2096 Speed RPM ECT MAF MAP Time since engine start IAT Αλκιβιάδης Χριστοδούλου - ΑΜ 965 57

10 1472 56 0.0 38 0 44 13 1951 56 0.0 35 0 44 16 1945 56 0.0 24 0 44 16 1309 57 0.0 36 0 44 17 1441 57 0.0 31 0 44 18 1518 57 0.0 31 0 44 20 1591 57 0.0 26 0 44 20 1574 57 0.0 25 0 44 Trip ended at 8/09/2015 12:47 Πίνακας 4: Δεδομένα ταξιδιού Οι τιμές του MAF και του χρόνου που έχει περάσει από την ώρα που τέθηκε σε λειτουργία ο κινητήρας είναι μηδέν διότι δεν υποστηρίζονται από την ECU του συγκεκριμένου κινητήρα. Μόλις πραγματοποιηθεί ο συγχρονισμός, δηλαδή αφού διαβάσουμε τη μνήμη μέχρι το τρέχον ταξίδι, το εργαλείο σάρωσης πέρα από τα δεδομένα που καταγράφει και μας στέλνει κάθε δέκα δευτερόλεπτα, μας στέλνει και δεδομένα σε πραγματικό χρόνο του τρέχοντος ταξιδιού. Όταν λαμβάνουμε δεδομένα πραγματικού χρόνου μπορούμε να ζητήσουμε και την ανάγνωση του αριθμού πλαισίου του αυτοκινήτου, ωστόσο δεν είναι διαθέσιμο μέσω του OBD-ΙΙ από όλους τους κατασκευαστές αυτοκινήτων. Τέλος, να αναφέρουμε ότι στο πρόγραμμα υπολογιστή που παρέχει ο κατασκευαστής του εργαλείου σάρωσης τα PIDs που εμφανίζονται για επιλογή καταγραφής είναι αυτά που υποστηρίζει το τελευταίο αυτοκίνητο στο οποίο χρησιμοποιήθηκε το εργαλείο. Επομένως, εάν θέλουμε να καταγράφουμε ένα PID που δεν υποστήριζε το προηγούμενο αυτοκίνητο αυτό δεν θα εμφανίζεται στην αντίστοιχη λίστα του προγράμματος. Για το λόγο αυτό υλοποιήσαμε την αντίστοιχη συνάρτηση για τον καθορισμό των PIDs που θέλουμε να καταγράφουμε. Επιπλέον, υλοποιήσαμε και τη λειτουργία για διαγραφή της μνήμης του εργαλείου σάρωσης ώστε να μην απαιτείται συνεχώς η σύνδεση του Αλκιβιάδης Χριστοδούλου - ΑΜ 965 58

εργαλείου στον υπολογιστή. Οι λειτουργίες αυτές είναι διαθέσιμες μέσω του πεδίου Settings του πλαϊνού μενού πλοήγησης. Εικόνα 22: Ρυθμίσεις 3.4.3 Αναπαράσταση των δεδομένων Στο αρχείο της μορφής.csv, όπου καταγράφουμε τα δεδομένα που ανακτούμε από τη μνήμη του εργαλείου σάρωσης, αποθηκεύουμε στη συνέχεια και τα δεδομένα πραγματικού χρόνου από το τρέχον ταξίδι που στέλνει το εργαλείο. Πέρα όμως από την αποθήκευσή τους, δίνεται η δυνατότητα στους χρήστες να παρακολουθούν αυτά τα δεδομένα μέσα από διαφορετικές λειτουργίες της εφαρμογής. Συγκεκριμένα, μπορούν να παρακολουθούν τις τιμές των PIDs που καταγράφονται ανά δύο δευτερόλεπτα από το πεδίο Real- time data του πλαϊνού μενού πλοήγησης, καθώς επίσης και των ειδοποιήσεων που προκύπτουν από το αντίστοιχο πεδίο Alarms. Επιπλέον, οι τιμές των PIDs αναπαριστώνται σε μορφή πίνακα οργάνων, αλλά και σε γραφήματα. Εικόνα 23: Δεδομένα πραγματικού χρόνου Αλκιβιάδης Χριστοδούλου - ΑΜ 965 59

Για την αναπαράσταση των δεδομένων σε μορφή πίνακα οργάνων χρησιμοποιήσαμε την Android βιβλιοθήκη ανοιχτού κώδικα GaugeView [25]. Η βιβλιοθήκη αυτή μας δίνει τη δυνατότητα να ορίσουμε και να επεξεργαστούμε γρήγορα και εύκολα νέα στοιχεία μετρητών μέσα από το xml αρχείο του layout της εφαρμογής που είναι υπεύθυνο για την εμφάνισή τους στην οθόνη της εφαρμογής. Στο σημείο αυτό να αναφέρουμε ότι η επικοινωνία μέσω Bluetooth και η λήψη των δεδομένων γίνεται στο κύριο Activity της εφαρμογής, ενώ η αναπαράσταση των δεδομένων σε μορφή πίνακα οργάνων γίνεται από ένα δευτερεύον Activity. Προκειμένου, λοιπόν, να είναι διαθέσιμα τα δεδομένα προς αναπαράσταση στο δευτερεύον Activity, στέλνουμε ένα τοπικό Broadcast μήνυμα από το κύριο Activity κάθε φορά που λαμβάνουμε νέα δεδομένα, και έχουμε υλοποιήσει τον αντίστοιχο τοπικό Broadcast receiver στο δευτερεύον Activity. Στην παρακάτω εικόνα παρουσιάζεται ένα στιγμιότυπο του πίνακα οργάνων ο οποίος εμφανίζεται επιλέγοντας το πεδίο Real Time Data από την αρχική οθόνη της εφαρμογής. Εικόνα 24: Πίνακας οργάνων Όσον αφορά την αναπαράσταση των δεδομένων σε γραφήματα χρησιμοποιήσαμε την Android βιβλιοθήκη ανοιχτού κώδικα GraphView [26]. Πρόκειται για μία βιβλιοθήκη που παρέχει απλούς μηχανισμούς τόσο για τη σχεδίαση γραφημάτων όσο και για τη προσαρμογή και ενσωμάτωσή τους με κατανοητό τρόπο και επιτρέπει τη δημιουργία γραφημάτων γραμμής, μπάρας και σημείων, αλλά και τη σχεδίαση πολλαπλών σειρών δεδομένων σε ένα μόνο γράφημα. Αλκιβιάδης Χριστοδούλου - ΑΜ 965 60

Επιπλέον, επιτρέπει τη χρήση διαφορετικών χρωμάτων για την αποτύπωση των δεδομένων, τη δημιουργία υπομνήματος, ακόμα και κλιμάκωση και κύλιση του γραφήματος. Μέσω της κλιμάκωσης και της κύλισης του γραφήματος ο χρήστης έχει τη δυνατότητα να μεγεθύνει το γράφημα σε κάποιο συγκεκριμένο σημείο αλλά και να κινείται κατά μήκος αυτού. Στη συγκεκριμένη εφαρμογή διατηρούμε όλα τα δεδομένα που λαμβάνονται σε πραγματικό χρόνο και όταν ο χρήστης εκκινήσει το αντίστοιχο Activity για την εμφάνιση των γραφημάτων εμφανίζονται τα δεδομένα που έχουν ληφθεί μέχρι εκείνη τη στιγμή. Επιπρόσθετα, έχουμε επιτρέψει την κλιμάκωση και την κύλιση των γραφημάτων. Τα γραφήματα εμφανίζονται στην οθόνη επιλέγοντας το πεδίο Logs από την αρχική οθόνη της εφαρμογής. Στις παρακάτω εικόνες παρουσιάζονται ένα στιγμιότυπο του γραφήματος της ταχύτητας του αυτοκινήτου και του γραφήματος των στροφών του κινητήρα. Εικόνα 25: (α) Γράφημα ταχύτητας, (β) Γράφημα στροφών Όπως αναφέραμε και προηγουμένως το εργαλείο σάρωσης εκτός από τις τιμές των PIDs καταγράφει και τυχόν ειδοποιήσεις που προκύπτουν κατά την οδήγηση. Τέτοιες ειδοποιήσεις είναι η εκκίνηση του κινητήρα, η υψηλή θερμοκρασία του κινητήρα, οι υψηλές στροφές κινητήρα, η υπερβολική ταχύτητα, η απότομη επιτάχυνση και επιβράδυνση και άλλες. Τα πακέτα που περιέχουν τις ειδοποιήσεις δεν αποστέλλονται ανά τακτά χρονικά διαστήματα, όπως τα πακέτα δεδομένων, αλλά κάθε φορά που Αλκιβιάδης Χριστοδούλου - ΑΜ 965 61

προκύπτει κάποια ειδοποίηση. Οι ειδοποιήσεις αυτές καταγράφονται σε μία λίστα και εμφανίζονται στο χρήστη μέσω του πεδίου Alarms του πλαϊνού μενού πλοήγησης. Εικόνα 26: Ειδοποιήσεις 3.4.4 Καταγραφή διαδρομής χρήστη Για την υλοποίηση του εντοπισμού της θέσης του χρήστη μέσω του GPS της Android συσκευής χρησιμοποιήσαμε τις κλάσεις και τις συναρτήσεις που παρέχει το Android API. Μέσω αυτού του API μπορούμε να ελέγχουμε αν είναι ενεργοποιημένο το GPS ή όχι καθώς επίσης και το πότε αλλάζει η θέση της συσκευής. Επιπλέον, μπορούμε να υπολογίζουμε την ταχύτητα με την οποία κινείται η συσκευή και κατ επέκταση το αυτοκίνητο στη δική μας περίπτωση, την απόσταση μέχρι τον προορισμό εφόσον έχει οριστεί, και άλλα. Η θέση της συσκευής επιστρέφεται με το γεωγραφικό μήκος και πλάτος της. Στη συνέχεια, και για την αποτύπωση της θέσης στο χάρτη χρησιμοποιήσαμε το Google Maps API v2 το οποίο παρέχει η Google ως μέρος των Google Play Services. Για να μπορούμε να χρησιμοποιήσουμε το συγκεκριμένο API έπρεπε να συμπεριλάβουμε τα Google Play Services ως βιβλιοθήκη στην εφαρμογή μας και να δημιουργήσουμε ένα έγκυρο κλειδί το οποίο είναι δωρεάν και δίνει πρόσβαση στους διακομιστές του Google Maps. Αλκιβιάδης Χριστοδούλου - ΑΜ 965 62

Η λειτουργία της καταγραφής της διαδρομής που ακολουθεί ο χρήστης και η εμφάνισή της στο χάρτη είναι διαθέσιμη από το πεδίο Location της αρχικής οθόνης της εφαρμογής. Την πρώτη φορά που θα ζητηθεί η εμφάνιση του χάρτη θα πρέπει να υπάρχει πρόσβαση στο διαδίκτυο ώστε αυτός να αποθηκευτεί αυτόματα, αλλά και γενικότερα η πρόσβαση στο διαδίκτυο βοηθά στην ομαλή επεξεργασία του χάρτη (zoom in, zoom out). Σε περίπτωση που δεν είναι ενεργοποιημένο το GPS ο χρήστης μεταφέρεται αυτόματα στις ρυθμίσεις της κινητής συσκευής για την ενεργοποίησή του. Μετά την ενεργοποίηση του GPS ο χρήστης έχει τη δυνατότητα να παρακολουθεί τη διαδρομή που ακολουθεί οποτεδήποτε το επιθυμεί. Ένα παράδειγμα μίας διαδρομής που έχει καταγραφεί παρουσιάζεται στην εικόνα 27. Εικόνα 27: Διαδρομή 3.4.5 Μεταφόρτωση του αρχείου στο Dropbox Εκτός από τις υπόλοιπες λειτουργίες, η συγκεκριμένη εφαρμογή δίνει τη δυνατότητα στους χρήστες να μεταφορτώσουν το αρχείο στο οποίο καταγράφονται τα δεδομένα σε κάποιο διαδικτυακό εξυπηρετητή για περαιτέρω ανάλυση αλλά και για απομακρυσμένη διάγνωση σε περίπτωση εμφάνισης κάποιου προβλήματος. Ως τέτοιο εξυπηρετητή επιλέξαμε το Dropbox που προσφέρει ολοκληρωμένες υπηρεσίες αποθήκευσης δεδομένων σε cloud. Αλκιβιάδης Χριστοδούλου - ΑΜ 965 63

Συγκεκριμένα, το Dropbox API παρέχει έναν ευέλικτο τρόπο για την ανάγνωση και εγγραφή αρχείων στο Dropbox μέσα από τις εκάστοτε εφαρμογές [27]. Επιπλέον, περιλαμβάνει υποστήριξη για προηγμένη λειτουργικότητα όπως αναζήτηση, αναθεώρηση και επαναφορά των αρχείων. Σε αυτή την εφαρμογή έχουμε υλοποιήσει την απλή λειτουργία που αφορά τη μεταφόρτωση ενός αρχείου με συγκεκριμένο όνομα στο Dropbox διατηρώντας παράλληλα και τα προηγούμενα αρχεία με το ίδιο όνομα που είχαν μεταφορτωθεί παλαιότερα. Η λειτουργία της μεταφόρτωσης είναι προσβάσιμη στο χρήστη από το πεδίο Upload Data της αρχικής οθόνης της εφαρμογής. Εικόνα 28: Μεταφόρτωση αρχείου Στο Activity της μεταφόρτωσης αρχείου υπάρχουν δύο κουμπιά. Το ένα αφορά την παροχή άδειας στην εφαρμογή για τη μεταφόρτωση του αρχείου στο λογαριασμό Dropbox του χρήστη και το άλλο για την μεταφόρτωση του αρχείου. Η παροχή άδειας ζητείται από τον χρήστη είτε μέσα από την αντίστοιχη Android εφαρμογή του Dropbox εφόσον είναι εγκατεστημένη στη συσκευή είτε μέσα από την ιστοσελίδα του Dropbox. Δηλαδή, μόλις ο χρήστης πατήσει στο κουμπί Login to Dropbox εμφανίζεται η αντίστοιχη οθόνη για την παροχή άδειας. Αλκιβιάδης Χριστοδούλου - ΑΜ 965 64

Εικόνες 29: Άδεια πρόσβασης στο Dropbox Σε περίπτωση που δεν επιτραπεί στην εφαρμογή να έχει πρόσβαση στο Dropbox του χρήστη εμφανίζεται αντίστοιχο μήνυμα στην οθόνη και δεν επιτρέπεται η μεταφόρτωση του αρχείου. Σε αντίθετη περίπτωση όταν ο χρήστης επιλέξει το κουμπί Upload File to Dropbox ξεκινά η μεταφόρτωση του αρχείου. Εικόνα 30: Διαδικασία μεταφόρτωσης αρχείου Η μεταφόρτωση του αρχείου πραγματοποιείται μέσω μίας ασύγχρονης διαδικασίας η οποία εκτελείται στο παρασκήνιο και επιτρέπει τη σωστή και εύκολη χρήση του Αλκιβιάδης Χριστοδούλου - ΑΜ 965 65