/Bike-Fall-Detector

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

Primary LanguageJava

Εφαρμογή ανίχνευσης πτώσης

Εφαρμογή ανίχνευσης πτώσης και ατυχημάτων για ποδήλατα και μηχανές για τον 4ο Μαθητικό και Φοιτητικό Διαγωνισμό Προγραμματισμού, με θέμα «Κοζάνη 2030: Στον δρόμο για την κλιματική ουδετερότητα». Η εφαρμογή αφορά τον τομέα της ασφάλειας σε μία έξυπνη πόλη εστιάζοντας το ενδιαφέρον της στην ασφάλεια όλων των ηλικιακών ομάδων και ειδικότερα αυτών που βρίσκονται σε υψηλό κίνδυνο.

Ασφάλεια σε μία Έξυπνη Πόλη

Οι ασφαλείς πόλεις αποτελούν βασικό πυλώνα που υποστηρίζει την ανάπτυξη έξυπνων πόλεων σε όλο τον κόσμο. Παρέχουν την ασφάλεια που απαιτείται για την προστασία των πολιτών από το έγκλημα, τα ατυχήματα, καθώς και για τον μετριασμό, όσο το δυνατόν περισσότερο, των επιπτώσεων των φυσικών καταστροφών και άλλων απειλών. Μια επιτυχημένη λύση ασφαλούς έξυπνης πόλης θα πρέπει να υποστηρίζει τις υπηρεσίες ασφαλείας μιας πόλης όπως τα τμήματα πυροσβεστικής και διάσωσης, τα τμήματα δημόσιας υγείας και κοινωνικών υπηρεσιών πριν, κατά τη διάρκεια και μετά από μια εκδήλωση ενός συμβάντος, και να ενσωματώνει τις διαφορετικές τεχνολογίες και τα κυβερνητικά τμήματα που είναι υπεύθυνα για την ασφάλεια των πολιτών.
Τέσσερα βασικά προαπαιτούμενα είναι τα εξής:

  1. Πρόληψη: Παρέχει αξιόπιστα και ολοκληρωμένα μέτρα ασφαλείας για την πρόβλεψη απειλών και επικίνδυνων καταστάσεων. Οι αρχές της πόλης πρέπει να είναι σε θέση να λάβουν μέτρα για να αποτρέψουν εξαρχής την εμφάνιση απειλών
  2. Ανίχνευση: Βοηθά τους οργανισμούς δημόσιας ασφάλειας να συλλέγουν, να μοιράζονται και να αναλύουν δεδομένα πιο αποτελεσματικά για την παροχή έγκαιρων προειδοποιήσεων και την ευαισθητοποίηση της κατάστασης. Τα συστήματα αισθητήρων στην πόλη θα συλλέγουν προληπτικά πληροφορίες. Ο τύπος του αισθητήρα που χρησιμοποιείται καθορίζεται από το εύρος του έργου ασφαλούς πόλης και από το πόση διαλειτουργικότητα απαιτείται. Οι πληροφορίες μπορούν να χρησιμοποιηθούν για την παροχή έγκαιρης ανίχνευσης και ειδοποιήσεων όταν συμβαίνουν γεγονότα.
  3. Απάντηση: Δίνει τη δυνατότητα στους βασικούς οργανισμούς της πόλης να αντιδρούν σε απειλές για την ασφάλεια σε πραγματικό χρόνο. Οι αρχές της πόλης πρέπει να είναι σε θέση να αποτρέψουν την κλιμάκωση ενός ανεπιθύμητου συμβάντος.
  4. Ανάκτηση: Παρέχει εξέταση και ανάλυση μετά το συμβάν, ταυτοποιεί τα θύματα και παρέχει βοήθεια σε ενέργειες διάσωσης. Μετά από ένα συμβάν, οι αρχές της πόλης πρέπει να είναι σε θέση να εξετάζουν και να αναλύουν γρήγορα όλα τα δεδομένα που λαμβάνονται από τα σχετικά συστήματα αισθητήρων. Οι πληροφορίες μπορούν να χρησιμοποιηθούν για τη διευκόλυνση των ενεργειών διάσωσης και των διαδικασιών αναγνώρισης και βοήθειας των Θυμάτων.

Σύντομη Περιγραφή

Στόχος

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

Τι εργαλεία χρησιμοποιήθηκαν

Η εφαρμογή έχει υλοποιηθεί για την πλατφόρμα Android χρησιμοποιώντας τη γλώσσα προγραμματισμού Java και τη γλώσσα σήμανσης XML. H Java χρησιμοποιήθηκε για τη λογική της εφαρμογής ενώ η XML για την σχεδίαση της διεπαφής χρήστη. Επίσης, χρησιμοποιήθηκε σαν βάση δεδομένων η Firebase της Google, η οποία είναι εύχρηστη και συνδέεται πολύ εύκολα με οποιαδήποτε Android εφαρμογή. Στην βάση δεδομένων αποθηκεύονται πληροφορίες χρηστών, όπως οι επαφές στις οποίες θα σταλθούν οι ειδοποιήσεις(SMS) εάν συμβεί ένα ατύχημα, και τα στοιχεία λογαριασμού χρήστη.

Ένα ατύχημα ανιχνεύεται χρησιμοποιώντας την πλακέτα Arduino Nano 33 BLE(Bluetooth Low Energy) Sense τοποθετημένη επάνω σε ένα shield συνδεόμενη με μία μπαταρία 9V. Έπειτα, η πλακέτα τοποθετήται στο ποδήλατο η στην μηχανή. Επίσης, ένα ατύχημα η μία πτώση μπορεί να ανιχνευθεί χρησιμοποιώντας αισθητήρες οι οποίοι ήδη υπάρχουν στις κινητές μας συσκευές(smartphones).

Arduino Nano 33 BLE Sense

Το Arduino Nano 33 BLE είναι μια εξέλιξη του παραδοσιακού Arduino Nano, αλλά διαθέτει πολύ πιο ισχυρό επεξεργαστή. Αυτό μας δίνει την δυνατότητα να δημιουργήσουμε μεγαλύτερα προγράμματα από ό,τι με το Arduino Uno και με πολύ περισσότερες μεταβλητές. Ο κύριος επεξεργαστής περιλαμβάνει άλλες εκπληκτικές δυνατότητες όπως Bluetooth ζευγαρώνοντας μέσω NFC και εξαιρετικά χαμηλής κατανάλωσης. Το Nano 33 BLE διαθέτει μονάδα αδρανειακής (inertial) μέτρησης 9 αξόνων (IMU) που σημαίνει ότι περιλαμβάνει επιταχυνσιόμετρο, γυροσκόπιο και μαγνητόμετρο με ανάλυση 3 αξόνων το καθένα. Το chipset επικοινωνιών στο Nano 33 BLE μπορεί να είναι ταυτόχρονα BLE και Bluetooth® client και host συσκευή. Κάτι πολύ μοναδικό στον κόσμο των πλατφορμών μικροελεγκτών.

Λειτουργία εφαρμογής

Λαμβάνοντας υπόψη και τους δύο τρόπους ανίχνευσης ατυχημάτων, η συσκευή(arduino nano η smartphone) τοποθετείται με κατάλληλο τρόπο στην μηχανή η στο ποδήλατο, έτσι ώστε αν γέρνει αρκετά προς τα αριστερά η δεξιά να ανιχνεύεται η πτώση η το ατύχημα. Στην περίπτωση που χρησιμοποιείται η συσκευή Arduino, θα στέλνεται ένα BLE σήμα στην κινητή συσκευή, και στη συνέχεια θα ειδοποιούνται οι επαφές. Υποθέτουμε πως όταν η μηχανή η το ποδήλατο γέρνουν αρκετά στα δεξιά η αριστερά, σημαίνει πως δεν βρίσκονται στην συνηθισμένη θέση λειτουργίας, και έτσι χαρακτηρίζουμε την κατάσταση ως πτώση η ατύχημα. Μετά την ανίχνευση, η ειδοποίηση θα στέλνεται μετά το πέρας 30 δευτερολέπτων, ώστε ο χρήστης να έχει ένα χρονικό περιθώριο να ακυρώσει την αποστολή ειδοποιησης σε περίπτωση λανθασμένης ανίχνευσης. Πριν σταλεί το σήμα στην κινητή συσκευή, ανάβει ένα LED στο Arduino για να ειδοποιήσει τον χρήστη ότι έχει ανιχνευθεί μία πτώση/ατύχημα. Ο χρήστης θα έχει την δυνατότητα να ακυρώσει την χρονομέτρηση κουνώντας το χέρι του/της κοντά στον αισθητήρα χειρονομιών που παρέχει η πλακέτα, η τοποθετώντας την μηχανή η το ποδήλατο σε μία κατάσταση ισορροπίας. Με αυτό τον τρόπο εξασφαλίζουμε ότι εάν υπάρχουν λανθασμένες ειδοποιήσεις θα ειδοποιηθεί ο χρήστης και θα μπορεί να τις ακυρώσει.
Για να είναι η εφαρμογή ανθεκτική σε σφάλματα και για να εξαλείψουμε τα μοναδικά σημεία αστοχίας, η εφαρμογή χρησιμοποιεί το επιταχυνσιόμετρο της κινητής συσκευής για να υπολογίζει την θέση του χρήστη και να ανιχνεύει ξαφνικές, έντονες και γρήγορες κινήσεις. Με αυτό τον τρόπο, αν το επιταχυνσιόμετρο της πλακέτας αποτύχει να ανιχνεύσει μια πτώση/ατύχημα, η ο χρήστης βρίσκεται σε μακρινή απόσταση έτσι ώστε να είναι εκτός της εμβέλειας σήματος BLE, να καταφέρει παρ' όλα αυτά να ειδοποιήσει τις επαφές του/της.

Λεπτομερής Περιγραφή

Αρχικά ο χρήστης βρίσκεται στην κύρια "σελίδα" της εφαρμογής. Από αυτή την σελίδα μπορεί να συνδεθεί στην εφαρμογή η να κάνει εγγραφή.

Για να συνδεθεί θα πρέπει να συμπληρώσει το email και τον κωδικό πρόσβασης.

Για να εγγραφεί θα πρέπει να συμπληρώσει το ονοματεπώνυμο, το email, το όνομα χρήστη και τον κωδικό πρόσβασης.

Στην κεντρική "σελίδα" πλοήγησης ο χρήστης μπορεί να

  1. Επιλέξει να προσθέσει επαφές ώστε όταν συμβεί ένα ατύχημα να ειδοποιηθούν.
  2. Να αλλάξει τον τρόπο ανίχνευσης μέσω των ρυθμίσεων.
  3. Να ελέγξει και να παρακολουθήσει την λειτουργία ανίχνευσης πτώσης/ατυχήματος.

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

Αρχικά δεν υπάρχουν επαφές οπότε εμφανίζεται η παρακάτω "σελίδα".

Για να προστεθούν επαφές πρέπει να συμπληρωθεί το όνομα της επαφής και ο αριθμός κινητού τηλεφώνου.

Αφού προστεθούν οι επαφές, η κύρια "σελίδα" θα έχει την παρακάτω μορφή.

Για να ενημερωθεί μία επαφή, αρκεί να ενημερωθεί το όνομα και το τηλέφωνο της επαφής.

Από τις ρυθμίσεις μπορεί να επιλεχθεί ο τρόπος ανίχνευσης πτώσης/ατυχήματος. Πιο συγκεκριμένα, υπάρχουν δύο τρόποι λειτουργίας.

  1. Η ανίχνευση γίνεται από την πλακέτα Arduino Nano και στέλνεται ένα BLE σήμα όταν ανιχνεύεται ένα ατύχημα η μία πτώση.
  2. Η ανίχνευση γίνεται από την κινητή συσκευή χρησιμοποιώντας το ενσωματομένο επιταχυνσιόμετρο.

Από αυτή τη "σελίδα" ο χρήστης μπορεί:

  1. Να ξεκινήσει την ανίχνευση.
  2. Να σταματήσει την ανίχνευση.
  3. Να σταματήσει την αποστολή μηνύματος βοήθειας αφού ανιχνευθεί μία πτώση η ένα ατύχημα.
  4. Να στείλει μήνυμα βοήθειας χειροκίνητα.

Στην περίπτωση που ο χρήστης επιλέξει να ανιχνεύονται τα ατυχήματα από την πλακέτα Arduino, όταν ανιχνεύθει μία πτώση η ένα ατύχημα, το πράσινο LED θα ανάψει.

Αν στη συνέχεια θελήσει να ακυρώσει την ειδοποίηση, μπορεί να κουνήσει το χέρι πάνω από την πλακέτα η να τοποθετήσει το ποδήλατο η τη μηχανή σε μία κατάσταση ισοοροποίας. Έτσι, το κόκκινο LED θα ανάψει.

Αν περάσουν 30 δευτερόλεπτα από την ανίχνευση, τότε θα σταλεί ένα BLE σήμα και θα ανάψει το μπλε LED.

Στην περίπτωση που ο χρήστης επιλέξει να ανιχνεύονται τα ατυχήματα από την κινητή συσκευή, όταν ανιχνεύθει μία πτώση η ένα ατύχημα ο χρονομετρητής θα έχει την παρακάτω μορφή.

Το μήνυμα βοήθειας θα έχει την παρακάτω μορφή και στην ανίχνευση με το Arduino, και με την κινητή συσκευή.

Πατώντας τον σύνδεσμο στο μήνυμα βοήθειας θα μπορούν οι επαφές του χρήστη να δουν την τοποθεσία στο Google Maps.

Περίληψη

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

Στοιχεία

Κώδικας για ανίχνευση πτώσεων και ατυχημάτων για την πλακέτα Arduino Nano 33 BLE Sense: https://github.com/GeorgeM2000/Arduino/blob/main/Bike_Fall_Detector/Bike_Fall_Detector.ino

Η παρουσίαση είναι στον παρακάτω σύνδεσμο https://drive.google.com/file/d/1KbCCacrSdH_l0PVPIZFVxo-BdQ-9f4OL/view?usp=sharing η https://docs.google.com/presentation/d/1LVrbpPeBbXzDYNB-ZveCeSEmSfoBbXK239u4MUOUNo0/edit?usp=sharing

Σε περίπτωση που δεν εμφανίζονται οι εικόνες, μπορείτε να τις δείτε από εδώ https://drive.google.com/drive/folders/1zTMa-_Fk8uf72OeIzPYscJI8u81itaHd?usp=share_link