Πίνακας περιεχομένων:
2025 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2025-01-13 06:57
Το να είναι θύμα παρενόχλησης κατά τη μετακίνηση είναι ένα αρκετά συνηθισμένο πράγμα για πολλούς ανθρώπους, ειδικά για τις γυναίκες. Όποια και αν είναι η χώρα, η μεταφορά με δημόσια μέσα μεταφοράς ισοδυναμεί συχνά με το να γνωρίζετε ότι μπορείτε να παρενοχληθείτε σεξουαλικά ή ακόμη και να σας ακολουθήσουν ενώ περπατάτε στο σπίτι. Σε αυτές τις καταστάσεις, δεν είναι πάντα εύκολο να αντιδράσετε και να αξιολογήσετε την απειλή, από έναν απλό φόβο από μια κλήση σε μια πραγματική ανησυχία ότι κάτι κακό θα μπορούσε να συμβεί. Ο φόβος είναι πάντα ένας παράγοντας και το να μην θέλουμε να προσελκύσουμε την προσοχή του δυνητικού παρενοχλητή μπορεί να μας εμποδίσει να ειδοποιήσουμε κάποιον που εμπιστευόμαστε.
Το Talos είναι μια μικρή συσκευή που συνδέεται με το τηλέφωνό σας και σας επιτρέπει να στείλετε ένα κείμενο στο άτομο της επιλογής σας. Το SMS περιλαμβάνει αυτόματα την τελευταία γνωστή τοποθεσία σας και το προ-ηχογραφημένο κείμενο της επιλογής σας. Με την εμφάνιση ενός απλού μπρελόκ, το Talos παραμένει κολλημένο στην τσάντα σας και σας επιτρέπει να το ενεργοποιήσετε διακριτικά πατώντας το, το οποίο ενεργοποιεί την αποστολή του μηνύματος κειμένου. Η χαμηλή κατανάλωση ενέργειας σημαίνει ότι δεν χρειάζεται να το φορτίζετε καθημερινά και κινδυνεύετε να το ξεχάσετε - ή απλώς να σας υπενθυμίζει καθημερινά την απειλή που αντιμετωπίζετε.
Υπάρχουν τρία μέρη σε αυτό το έργο:
- Φυσική ενότητα: Χρησιμοποίησα μια μονάδα Puck-js, η οποία βασίζεται στην ενότητα nRF52832 και μπορεί να προγραμματιστεί χρησιμοποιώντας Javascript χάρη στην εφαρμογή Espruino- Android: Δημιούργησα μια απλή εφαρμογή που συνδέεται με τη μονάδα- Κάλυμμα μπρελόκ: Έφτιαξα ένα απλό κάλυμμα για το Puck JS να μοιάζει με ένα απλό μπρελόκ
Προμήθειες
- Ενότητα Puck.js (https://www.puck-js.com)
- Android Phone με τουλάχιστον έκδοση 8.0- Υπολογιστής με Android Studio εγκατεστημένο
- 3D εκτυπωτής (προαιρετικός)
Βήμα 1: Επισκόπηση
Αυτό το διάγραμμα θα πρέπει να σας δώσει μια ιδέα για τα διάφορα συστατικά: ο κώδικας στην ίδια τη μονάδα Puck είναι πραγματικά απλός και αφήνουμε την εφαρμογή Android να φροντίσει τη σύνδεση αντί να κάνει τη σάρωση Puck για το τηλέφωνο. Θα χρησιμοποιούμε Bluetooth Low Energy και τα χαρακτηριστικά του για επικοινωνία μεταξύ της εφαρμογής και της συσκευής, προκειμένου να διατηρηθεί η διάρκεια ζωής της μπαταρίας
Βήμα 2: Προγραμματισμός του Puck
Αφού ελέγξετε στο puck-js.com ότι το πρόγραμμα περιήγησης και ο υπολογιστής σας υποστηρίζει Web Bluetooth, μεταβείτε στη διεύθυνση www.espruino.com/ide και συνδεθείτε στο Puck σας κάνοντας κλικ στο εικονίδιο του βύσματος στην επάνω αριστερή γωνία της σελίδας.
Στη συνέχεια, μπορείτε να αντιγράψετε και να επικολλήσετε τον κωδικό από το συνημμένο αρχείο στον επεξεργαστή και να τον στείλετε στο Puck.
Στο πρώτο μέρος του κώδικα, ορίζουμε τη λειτουργία Blink και updateCharacteristic, την οποία θα χρησιμοποιήσουμε αργότερα στον κώδικα. Στη συνάρτηση updateCharacteristic, αντιστοιχίζουμε την τρέχουσα ημερομηνία στο χαρακτηριστικό για να βεβαιωθούμε ότι πράγματι θα θεωρηθεί ως νέα τιμή. Στη συνέχεια, ειδοποιούμε οποιονδήποτε συνδρομητή αυτής της ενημέρωσης.
Μετά από αυτές τις δηλώσεις, στον κώδικα που θα εκτελεστεί:
Ο κώδικας στη γραμμή 56 σάς επιτρέπει να ανακτήσετε τη φυσική διεύθυνση του Puck σας, την οποία θα χρειαστεί να κάνετε σε εφαρμογή Android: αποσυνδέστε αυτήν τη γραμμή και θα δείτε τη διεύθυνση στα αρχεία καταγραφής στην αριστερή πλευρά του IDE (δείτε συνημμένο στιγμιότυπο οθόνης). Μόλις αποκτήσετε αυτήν την τιμή, μπορείτε να σχολιάσετε τη γραμμή ή να την αφήσετε έτσι.
Μετά από αυτό, ορίζουμε μια προσαρμοσμένη υπηρεσία BLE (τα UUID είναι τυχαίες τιμές) με τρία διαφορετικά χαρακτηριστικά, τα οποία είναι όλα γνωστοποιήσιμα. Δεν θα χρησιμοποιήσουμε τις ίδιες τις αξίες για να μεταφέρουμε το μήνυμά μας αλλά μόνο το γεγονός ότι έχουν αλλάξει.
Στις γραμμές 78 και 79, θέτουμε ορισμένους ακροατές που θα κάνουν το ενσωματωμένο LED να αναβοσβήνει κάθε φορά που η συσκευή είναι συνδεδεμένη ή αποσυνδεδεμένη από άλλη συσκευή Bluetooth. Τέλος, στη γραμμή 81, επισυνάπτουμε μια διακοπή στο ενσωματωμένο κουμπί, έτσι ώστε το πάτημα του να καλέσει την ενημέρωση Χαρακτηριστική συνάρτηση
Βήμα 3: Δημιουργία της εφαρμογής Android
Δεδομένου ότι ολόκληρη η εφαρμογή περιλαμβάνει μερικές αρκετά βαριές βιβλιοθήκες, έχω συμπεριλάβει μόνο τα αρχεία προέλευσης και το αρχείο gradle για την εφαρμογή μέσα στο συνημμένο zip. Για να λειτουργήσει, πρέπει να ξεκινήσετε το Android studio και να δημιουργήσετε ένα νέο έργο (επιλέξτε Empty Activity, δείτε το στιγμιότυπο οθόνης). Επιλέξτε 26 (Android 8.0, Oreo) ως ελάχιστη έκδοση για την εφαρμογή καθώς ορισμένοι από τους κώδικες που έγραψα χρησιμοποιούν API που δεν υπήρχαν πριν από αυτό. Μόλις ρυθμιστεί το έργο σας, θα έχετε ένα αρχείο build.gradle για την εφαρμογή (επισημασμένο build.gradle - Ενότητα: Εφαρμογή). Ανοίξτε το και αντιγράψτε το περιεχόμενο από το αρχείο zip: το IDE θα σας ζητήσει να κάνετε έναν συγχρονισμό Gradle κατά τον οποίο θα κατεβάσει τη σκανδιναβική βιβλιοθήκη στην οποία βασίζεται η εφαρμογή. Στη συνέχεια, μπορείτε να ξεκινήσετε την εφαρμογή μία φορά και να ελέγξετε ότι λειτουργεί.
Μόλις εγκατασταθεί η εφαρμογή στη συσκευή σας, μεταβείτε στο μενού ρυθμίσεων, επιλέξτε Εφαρμογές και βρείτε την εφαρμογή στη λίστα. Επιλέξτε το και κάντε κλικ στο "Autorisations". Εκεί, θα έχετε μερικά κουμπιά επιλογής που θα είναι απενεργοποιημένα από προεπιλογή: ελέγξτε τα όλα για να βεβαιωθείτε ότι η εφαρμογή έχει πρόσβαση σε όλα όσα χρειάζεται.
Τώρα μπορείτε να εισαγάγετε τα αρχεία προέλευσης από το αρχείο zip: ο ευκολότερος τρόπος για να το κάνετε αυτό είναι να δημιουργήσετε νέες κλάσεις (δεξί κλικ, νέο αρχείο/τάξη Kotlin) και να τους δώσετε το ίδιο όνομα με αυτά του αρχείου. Μόλις ανοίξει το αρχείο κλάσης, μπορείτε να αντιγράψετε και να επικολλήσετε τον κώδικα σε αυτά.
Εάν θέλετε να χρησιμοποιήσετε μόνο την εφαρμογή, απλώς τροποποιήστε τη διεύθυνση στη γραμμή 31 της κατηγορίας BTService και εισαγάγετε τη διεύθυνση που λάβατε στο προηγούμενο βήμα. Θα πρέπει τώρα να μπορείτε να μεταγλωττίσετε την εφαρμογή και να την εκτελέσετε στη συσκευή σας!
Αν θέλετε να μάθετε περισσότερα για το πώς λειτουργεί η εφαρμογή, διαβάστε παρακάτω:-)
Το παρακάτω διάγραμμα θα σας δώσει καλύτερη κατανόηση για το τι συμβαίνει μέσα στην εφαρμογή: θα ήθελαν να επικοινωνήσουν όταν χρησιμοποιούν το Talos, καθώς και το κείμενο για να τους στείλουν.
- Η υπηρεσία BTService είναι μια υπηρεσία σε πρώτο πλάνο, πράγμα που σημαίνει ότι κάθε φορά που ξεκινά, δημιουργεί μια επίμονη ειδοποίηση που περιορίζει την ομοιότητα της υπηρεσίας που σκοτώνεται από το Android. Αυτή η υπηρεσία προσπαθεί να συνδεθεί στο Talos χρησιμοποιώντας την κλασική διαδικασία Bluetooth Low Energy - έχω χρησιμοποιήσει τον δείγμα κώδικα της Nordic και τους άλλους πόρους που θα μπορούσα να βρω. Αυτή τη στιγμή, φαίνεται συγκεκριμένα για το UUID του Puck: θα πρέπει να αλλάξετε αυτήν την τιμή (private val remoteMacAddress = "CF: EB: 2F: 6E: 33: 30") για να ταιριάζει με τη διεύθυνση της συσκευής σας που λάβατε στο προηγούμενο βήμα. Αφού εντοπίσει τη συσκευή και ελέγξει ότι διαθέτει την υπηρεσία που ψάχνουμε, εγγράφεται στις ειδοποιήσεις για το χαρακτηριστικό που θα ενημερώνεται κάθε φορά που ο χρήστης πατάει το κουμπί.
Όταν η υπηρεσία BTS λάβει μια ενημέρωση για αυτό το χαρακτηριστικό, θα ενεργοποιήσει ένα αντικείμενο LocalBroadcast για να αντιδράσουν τα άλλα στοιχεία της εφαρμογής. Θα καλέσει επίσης την υπηρεσία SMSIntentService για να στείλει το SMS
- Η υπηρεσία SMSIntentService θα ανακτήσει τον αριθμό τηλεφώνου και το κείμενο από τις προτιμήσεις του SharePreferences για να καταχωρήσει τις τελευταίες τιμές ο χρήστης. Στη συνέχεια, θα στείλει αυτόματα το SMS χωρίς να αλληλεπιδρά ο χρήστης με την εφαρμογή και θα προσθέσει την τελευταία γνωστή τοποθεσία του χρήστη στο SMS.
Βήμα 4: Σχεδιασμός θήκης
Η τρέχουσα θήκη με την οποία έρχεται το Puck περιλαμβάνει ήδη έναν μικρό βρόχο για να στερεωθεί σε ένα μπρελόκ, ώστε να μπορούμε σχεδόν να το αφήσουμε έτσι. Το ολόλευκο κάλυμμα σιλικόνης που έτυχε να νιώθω ακόμα αρκετά περίεργο, οπότε για να μην προσελκύσει καμιά υποψία, σχεδίασα ένα απλό αντικείμενο για να το βάλω πάνω από το Puck. Λένε ότι μια εικόνα αξίζει όσο χίλιες λέξεις, σκέφτηκα να σας δώσω 25 εικόνες ανά δευτερόλεπτο: στο παρακάτω βίντεο, θα δείτε πώς χρησιμοποίησα το Fusion 360 για να δημιουργήσω το σχέδιο, συμπεριλαμβανομένων των εντολών και των συντομεύσεων που χρησιμοποίησα:
Βήμα 5: Το βάζουμε όλα μαζί
Τώρα που έχετε τα διαφορετικά συστατικά, ήρθε η ώρα να τα συνδυάσετε! Η τρέχουσα θήκη της μονάδας Puck έχει ήδη μια τρύπα που μπορείτε να χρησιμοποιήσετε για να τοποθετήσετε μια αλυσίδα - έτυχε να έχω ένα παλιό μπρελόκ που το έσπασα, αλλά μπορείτε επίσης να το αγοράσετε εύκολα. Αφαιρέστε το δαχτυλίδι χρησιμοποιώντας πένσες - μόλις εντοπίσετε το άνοιγμα του δακτυλίου, μετακινήστε το κάθε μισό σε αντίθετες κατευθύνσεις, το ένα προς εσάς και το άλλο μακριά σας. Στη συνέχεια, μπορείτε να τοποθετήσετε το δαχτυλίδι στο Puck και να το κλείσετε πίσω.
Τρισδιάστατη εκτύπωση του σχεδίου που μόλις δημιουργήσατε - χρησιμοποίησα λίγο μοβ PLA και κουμπώσα πάνω στο Puck