Inhaltsverzeichnis:
2025 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2025-01-13 06:56
Opfer von Belästigungen beim Pendeln zu werden, ist für viele Menschen, insbesondere für Frauen, eine ziemlich häufige Angelegenheit. Was auch immer das Land ist, öffentliche Verkehrsmittel zu nehmen bedeutet oft zu wissen, dass Sie sexuell belästigt oder sogar auf dem Heimweg verfolgt werden können. In solchen Situationen ist es nicht immer einfach, auf die Bedrohung zu reagieren und sie einzuschätzen, von einer einfachen Panikattacke bis hin zu einer echten Besorgnis, dass etwas Schlimmes passieren könnte. Angst ist immer ein Faktor, und der Wunsch, die Aufmerksamkeit des potenziellen Belästigers nicht auf sich zu ziehen, kann uns daran hindern, jemanden zu alarmieren, dem wir vertrauen.
Talos ist ein kleines Gerät, das sich mit Ihrem Telefon verbindet und es Ihnen ermöglicht, einer Person Ihrer Wahl eine SMS zu senden. Die SMS enthält automatisch Ihren letzten bekannten Standort und den zuvor aufgezeichneten Text Ihrer Wahl. In der Anmutung eines einfachen Schlüsselanhängers bleibt Talos an Ihrer Tasche geclipst und lässt sich durch Drücken dezent aktivieren, was den Versand der SMS auslöst. Sein geringer Stromverbrauch bedeutet, dass Sie es nicht jeden Tag aufladen müssen und riskieren, es zu vergessen – oder einfach nur jeden Tag an die Bedrohung erinnert zu werden, der Sie ausgesetzt sind.
Dieses Projekt besteht aus drei Teilen:
- Physikalisches Modul: Ich habe ein Puck-js-Modul verwendet, das auf dem nRF52832-Modul basiert und dank Espruino mit Javascript programmiert werden kann - Android-App: Ich habe eine einfache App erstellt, die sich mit dem Modul verbindet - Schlüsselanhänger-Abdeckung: Ich habe eine einfache Hülle für den Puck JS, die wie ein einfacher Schlüsselanhänger aussieht
Lieferungen
- Puck.js-Modul (https://www.puck-js.com)
- Android Phone mit mindestens Version 8.0 - Ein Computer mit installiertem Android Studio
- 3D-Drucker (optional)
Schritt 1: Übersicht
Dieses Diagramm sollte Ihnen eine Vorstellung von den verschiedenen Komponenten geben: Der Code auf dem Puck-Modul selbst ist wirklich einfach, und wir überlassen die Verbindung der Android-App, anstatt den Puck für das Telefon scannen zu lassen. Wir werden Bluetooth Low Energy und seine Eigenschaften verwenden, um zwischen der App und dem Gerät zu kommunizieren, um die Akkulaufzeit zu verlängern
Schritt 2: Programmierung des Pucks
Nachdem Sie auf puck-js.com überprüft haben, ob Ihr Browser und Computer Web-Bluetooth unterstützen, gehen Sie zu www.espruino.com/ide und stellen Sie eine Verbindung zu Ihrem Puck her, indem Sie auf das Steckersymbol in der oberen linken Ecke der Seite klicken.
Sie können dann den Code aus der angehängten Datei kopieren und in den Editor einfügen und an den Puck senden.
Im ersten Teil des Codes definieren wir die Funktionen Blink und updateCharacteristic, die wir später im Code verwenden werden. In der Funktion updateCharacteristic weisen wir dem Merkmal das aktuelle Datum zu, um sicherzustellen, dass es tatsächlich als neuer Wert angesehen wird. Wir benachrichtigen dann jeden Abonnenten über dieses Update.
Nach diesen Deklarationen auf den Code, der ausgeführt wird:
Der Code in Zeile 56 ermöglicht es Ihnen, die physische Adresse Ihres Pucks abzurufen, die Sie in der Android-App harcdode müssen: Entkommentieren Sie diese Zeile und Sie sehen die Adresse in den Protokollen auf der linken Seite der IDE (siehe Anhang) Bildschirmfoto). Sobald Sie diesen Wert haben, können Sie die Zeile kommentieren oder so belassen.
Danach definieren wir einen benutzerdefinierten BLE-Dienst (die UUIDs sind Zufallswerte) mit drei verschiedenen Merkmalen, die alle meldepflichtig sind. Wir werden nicht die Werte selbst verwenden, um unsere Botschaft zu vermitteln, sondern nur die Tatsache, dass sie sich verändert haben.
In den Zeilen 78 und 79 stellen wir einige Listener ein, die die integrierte LED zum Blinken bringen, wenn das Gerät mit einem anderen Bluetooth-Gerät verbunden oder von diesem getrennt wird. Schließlich fügen wir in Zeile 81 einen Interrupt an die integrierte Schaltfläche an, damit durch Drücken die Funktion updateCharacteristic aufgerufen wird
Schritt 3: Erstellen der Android-App
Da die gesamte App einige ziemlich umfangreiche Bibliotheken enthält, habe ich nur die Quelldateien und die Gradle-Datei für die App in die angehängte ZIP-Datei eingefügt. Damit es funktioniert, müssen Sie Android Studio starten und ein neues Projekt erstellen (wählen Sie Leere Aktivität, siehe Screenshot). Wählen Sie 26 (Android 8.0, Oreo) als Mindestversion für die App aus, da ein Teil des Codes, den ich geschrieben habe, APIs verwendet, die vorher nicht existierten. Sobald Ihr Projekt eingerichtet ist, haben Sie eine build.gradle-Datei für die App (gekennzeichnet als build.gradle - Module: App). Öffnen Sie es und kopieren Sie den Inhalt aus der ZIP-Datei: Die IDE fordert Sie auf, eine Gradle-Synchronisierung durchzuführen, bei der die nordische Bibliothek heruntergeladen wird, auf die die App angewiesen ist. Anschließend können Sie die App einmal starten und überprüfen, ob sie funktioniert.
Sobald die App auf Ihrem Gerät installiert ist, gehen Sie zu Ihrem Einstellungsmenü, wählen Sie Apps und suchen Sie die App in der Liste. Wählen Sie es aus und klicken Sie auf "Autorisationen". Dort haben Sie einige Optionsfelder, die standardmäßig deaktiviert sind: Überprüfen Sie alle, um sicherzustellen, dass die App Zugriff auf alles hat, was sie benötigt.
Sie können nun die Quelldateien aus dem Zip-Archiv importieren: Am einfachsten erstellen Sie neue Klassen (Rechtsklick, neue Kotlin-Datei/Klasse) und geben ihnen denselben Namen wie die aus dem Archiv. Sobald die Klassendatei geöffnet ist, können Sie den Code kopieren und einfügen.
Wenn Sie nur die App verwenden möchten, ändern Sie einfach die Adresse in Zeile 31 der BTService-Klasse und geben Sie stattdessen die Adresse ein, die Sie im vorherigen Schritt erhalten haben. Sie sollten nun in der Lage sein, die App zu kompilieren und auf Ihrem Gerät auszuführen!
Wenn Sie mehr über die Funktionsweise der App erfahren möchten, lesen Sie weiter:-)
Das folgende Diagramm gibt Ihnen ein besseres Verständnis dafür, was in der App passiert: - Die MainActivity ist diejenige, die der Benutzer nur gelegentlich verwendet: Ihr Hauptzweck besteht darin, die Telefonnummer der Person eingeben zu können Sie möchten Kontakt aufnehmen, wenn sie Talos verwenden, sowie den Text, um sie zu senden.
- Der BTService ist ein Vordergrunddienst, was bedeutet, dass bei jedem Start eine dauerhafte Benachrichtigung erstellt wird, die die Wahrscheinlichkeit begrenzt, dass der Dienst von Android getötet wird. Dieser Dienst versucht, eine Verbindung zum Talos über den klassischen Bluetooth Low Energy-Prozess herzustellen - ich habe den Beispielcode von Nordic und die anderen Ressourcen verwendet, die ich finden konnte. Im Moment sucht es speziell nach der UUID des Pucks: Sie sollten diesen Wert ändern (private val remoteMacAddress = "CF:EB:2F:6E:33:30"), damit er mit der im vorherigen Schritt erhaltenen eigenen Adresse Ihres Geräts übereinstimmt. Nachdem das Gerät gefunden und überprüft wurde, ob es über den gesuchten Dienst verfügt, abonniert es die Benachrichtigungen für das Merkmal, die jedes Mal aktualisiert werden, wenn der Benutzer die Taste drückt.
Wenn der BTService ein Update für dieses Merkmal erhält, wird ein LocalBroadcast-Objekt ausgelöst, damit die anderen Komponenten der App reagieren können. Es ruft auch den SMSIntentService an, damit er die SMS sendet
- Der SMSIntentService ruft die Telefonnummer und den Text aus den SharePreferences ab, damit die letzten Werte vom Benutzer eingegeben werden. Anschließend wird die SMS automatisch gesendet, ohne dass der Benutzer mit der App interagieren muss, und fügt der SMS den letzten bekannten Standort des Benutzers hinzu.
Schritt 4: Entwerfen eines Gehäuses
Das aktuelle Etui, das dem Puck beiliegt, enthält bereits eine kleine Schlaufe, um ihn an einem Schlüsselbund zu befestigen, sodass wir es fast so belassen könnten. Die ganz weiße Silikonhülle, die ich zufällig gesehen hatte, fühlte sich immer noch ziemlich seltsam an. Um keinen Verdacht zu erregen, entwarf ich ein einfaches Objekt, das ich auf den Puck legen konnte. Sie sagen, dass ein Bild mehr sagt als tausend Worte, ich dachte, ich gebe Ihnen 25 Bilder pro Sekunde: Im folgenden Video sehen Sie, wie ich mit Fusion 360 das Design erstellt habe, einschließlich der Befehle und Verknüpfungen, die ich verwendet habe:
Schritt 5: Alles zusammenfügen
Jetzt, da Sie die verschiedenen Komponenten haben, ist es an der Zeit, sie zusammenzusetzen! Das aktuelle Gehäuse des Puck-Moduls hat bereits ein Loch, in das man eine Kette einführen kann - ich hatte zufällig einen alten Schlüsselanhänger, den ich zerlegt habe, den man aber auch problemlos kaufen kann. Nehmen Sie den Ring mit einer Zange auseinander. Wenn Sie die Öffnung des Rings gefunden haben, bewegen Sie jede Hälfte in entgegengesetzte Richtungen, eine zu sich hin und die andere von Ihnen weg. Anschließend können Sie den Ring in den Puck einsetzen und wieder schließen.
3D-Druck des Designs, das Sie gerade erstellt haben - ich habe lila PLA verwendet und oben auf dem Puck eingerastet