Inhaltsverzeichnis:
- Lieferungen
- Schritt 1: Die Hardwareeinheit
- Schritt 2: Schaltung
- Schritt 3: Über Firebase
- Schritt 4: Echtzeit-Datenbank
- Schritt 5: Firebase-Funktionen einrichten
- Schritt 6: Code
- Schritt 7: Optionaler Schritt (Erstellen eines Gehäuses)
- Schritt 8: In Aktion…
- Schritt 9: Weiter bewegen…
Video: Der Mappifier - Mapping + Benachrichtigungssystem - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:17
Nachtfahrten machen sehr viel Spaß. Aber oft entpuppt es sich als Albtraum in Form von Tieren, die die Straße überqueren (insbesondere diese streunenden Katzen und Hunde, die darauf warten, dass Sie in ihre Nähe fahren, damit sie überqueren können!!). Also dachte ich daran, etwas zu machen, das Sie warnt, wenn Sie sich diesen gefährdeten Orten nähern, damit Sie vorsichtiger fahren können.
Das System besteht aus zwei Teilen: Datenerfassung und Datenabruf. Der erste Teil enthält die Standortdaten, also die Standorte, an denen eine höhere Wahrscheinlichkeit einer Tierkreuzung besteht. Diese Daten müssen manuell hinzugefügt werden und werden auf einer Karte aktualisiert. Der letztere Teil nimmt unseren aktuellen Standort und vergleicht ihn dann mit den gesammelten Daten und es werden entsprechende Benachrichtigungen oder Warnungen bereitgestellt.
Lieferungen
Verwendete Hardware
ESP8266 WiFi-Entwicklungsboard
Ublox NEO-6M GPS-Modul
LEDs
Momentaner Druckknopf
Verwendete Software
Arduino-IDE
Jeder JavaScript-Editor
Firebase (zum Speichern und Abrufen von Daten)
Schritt 1: Die Hardwareeinheit
Die Hardware muss auf zwei Arten (Modi) arbeiten: 1) Speichern des Standorts in der Datenbank: Dies ist ein wichtiger Teil des Datenerfassungsprozesses; Der vom GPS-Modul abgerufene Standort wird über ein ESP8266-WLAN-Entwicklungsboard an die Firebase-Datenbank gesendet.
2) Benachrichtigungen während der Navigation bereitstellen: Während der Navigation wird der aktuelle Standort abgerufen und an die Datenbank gesendet. Bei jeder Aktualisierung des Standorts wird die Entfernung zwischen dem aktuellen Standort und diesen Standorten (die während des Datenerfassungsprozesses gespeichert wurden) berechnet und vom ESP8266-Modul wiederhergestellt, das den Benutzer dann warnt, je nachdem, wie nahe sich der Benutzer von diesen gespeicherten Standorten befindet.
Ich habe drei LEDs hinzugefügt, um die Änderung der Modi sowie eine erfolgreiche Aktualisierung der Datenbank und eine Warnlampe zu melden, um die Nähe des Benutzers zum gespeicherten Standort anzuzeigen.
Der Druckknopf dient dazu, den Standort mit nur einem Klick zu speichern (im Speicher-/Datenerfassungsmodus) und auch zwischen diesen Modi zu wechseln.
Stromversorgung
Anfangs wurde ein 3,7V 300mAh Lipo-Akku verwendet, der jedoch einige Probleme aufwies. Das Hauptproblem war das Zurücksetzen des ESP8266 (kann an den Stromspitzen liegen). Auch der Akku hielt nicht lange. Endlich kam mir eine Powerbank zu Hilfe.
Schritt 2: Schaltung
Schritt 3: Über Firebase
Firebase ist eine Entwicklungsplattform für Mobil- und Webanwendungen, die sich im Besitz von Google befindet. Es hat viele Funktionen, aber hier verwende ich nur zwei davon, Realtime Database und Cloud Functions.
Um mit Firebase zu beginnen, 1. Rufen Sie zuerst die Firebase-Webseite auf.
2. Navigieren Sie nun zur Konsole und klicken Sie auf Neues Projekt erstellen.
3. Sie müssen einen Projektnamen zusammen mit anderen Details angeben, um ein Projekt zu erstellen.
4. Nachdem das Projekt erstellt wurde, klicken Sie im Seitenbereich auf die Datenbankoption, um eine neue Datenbank zu erstellen.
5. Machen Sie dasselbe für die Funktionen.
Dies sind allgemeine Schritte zum Erstellen eines Projekts, Firebase ist gut dokumentiert und es gibt viele YouTube-Videoserien für Anfänger. Bitte gehen Sie durch, um mehr zu verstehen.
Schritt 4: Echtzeit-Datenbank
Nachdem Sie die Datenbank erstellt haben, müssen Sie im nächsten Schritt sehen, wie die Daten in der Datenbank gespeichert werden und auf sie zugegriffen werden kann. Zum Schreiben oder Lesen in/von der Datenbank müssen Sie die Datenbankregeln konfigurieren. Für Entwicklungszwecke können wir eine offene Regel verwenden, damit jeder mit der Datenbankreferenz lesen/schreiben kann, aber seien Sie beim Konfigurieren der Regeln vorsichtig. Die Datenbank speichert die Daten im JSON-Format und wird mit allen Geräten synchronisiert, die mit dem verbunden sind Datenbank. Sie können untergeordnete Knoten mit dem '+'-Zeichen hinzufügen, aber Knoten können auch programmgesteuert generiert werden. Alle Daten, die wir im 'Store'-Modus (Speicherort gesammelt) in die Datenbank hochladen, werden hier als separate Knoten gespeichert, während Daten im 'Benachrichtigungs'-Modus (Daten bei der Navigation abrufen) jedes Mal aktualisiert werden (siehe Bild).
Schritt 5: Firebase-Funktionen einrichten
Wir brauchen etwas, um die Nähe des aktuellen Standorts zu den gespeicherten Standorten zu berechnen, und die von der Hintergrunddatenbank ausgelösten Funktionen würden unsere Arbeit erledigen. Funktionen sind in Javascript geschrieben und müssen auf der Firebase bereitgestellt werden.
Auf Ihrem Computer muss node.js installiert sein.
1) Laden Sie nun die Firebase-Befehlszeilenschnittstelle mit dem Befehl "npm install -g firebase-tools" in Ihrer Eingabeaufforderung herunter
2) Jetzt müssen Sie sich mit dem Befehl "firebase login" bei Firebase anmelden (Sie müssen Ihr Google Mail-Login-Passwort angeben, wenn Sie noch nicht angemeldet sind)
3) Navigieren Sie danach in Ihr Projektverzeichnis und starten Sie die Funktion mit dem Befehl "firebase init". Sie müssen die Option "Funktionen" auswählen, um Firebase-Funktionen für Ihr Projekt zu initiieren.
4) Jetzt müssen Sie in Ihrem Projektverzeichnis in den Ordner 'functions' gehen und die Datei 'index.js' finden.
5) Bearbeiten Sie die Datei mit einem Texteditor und bearbeiten Sie die Datei / ersetzen Sie die Datei durch mappifier_function.txt. (Dies wäre effektiv unsere Funktion)
6) Stellen Sie Ihre Funktion schließlich mit "firebase deploy" an der Eingabeaufforderung bereit.
Sie können im Funktionsmenü Ihrer Firebase-Konsole überprüfen, ob die Funktion bereitgestellt wird
Schritt 6: Code
Für ESP8266:
Das Board verbindet sich mithilfe von Anmeldeinformationen mit dem WLAN und der Firebase und wartet auf einen Tastendruck. Je nach Dauer des Tastendrucks werden verschiedene Modi eingeleitet. Im Datenerfassungsmodus (nennen wir diesen Modus "Speichern") führt jeder Tastendruck dazu, dass die aktuelle Position an die Datenbank gesendet wird, während im Datenabrufmodus ("Benachrichtigungsmodus") der aktuelle Standort an die Datenbank gesendet wird und Entfernung wird automatisch aus der Datenbank abgerufen. Ich habe LEDs für Warnungen (Nähe zum markierten Standort) und Benachrichtigungen (wie GPS-Fix, WiFi-Verbindung, erfolgreiches Schreiben in die Datenbank, Moduswechsel usw.) hinzugefügt.
Für Firebase-Funktion:
Diese Funktion prüft auf einen Schreibzugriff auf den Knoten 'aktueller Standort' in der Datenbank und berechnet die Entfernung zwischen den Standorten in der Datenbank und dem aktuellen Standort und findet dann die kleinste Entfernung, die dann in den Knoten 'Entfernung' in der Datenbank geschrieben wird.
Denken Sie daran, Ihre WLAN-Anmeldeinformationen und Firebase-Authentifizierungsinformationen hinzuzufügen, bevor Sie Ihr Programm hochladen. (Bitte sehen Sie sich die Bilder an). Wenn Sie ESP8266 noch nicht kennen und sie in der Arduino IDE codieren möchten, lesen Sie diese.
Schritt 7: Optionaler Schritt (Erstellen eines Gehäuses)
Um das Hardwareteil kompakt zu machen, damit es montiert werden kann, habe ich ein kleines Gehäuse gemacht, um sie hineinzupassen. Ein paar Löcher wurden gemacht, um die LEDs zu montieren und das USB-Kabel anzuschließen. Aber das endgültige Gehäuse hat meine Erwartungen übertroffen!! Es passte perfekt in meine Handfläche und war sehr einfach am Fahrradgriff und am Lenkrad zu montieren.
Schritt 8: In Aktion…
Hier ist ein kleines Video, das beide Modi (Speichern und Benachrichtigung) mit Warn- und Benachrichtigungs-LEDs demonstriert.
Schritt 9: Weiter bewegen…
Dieses System kann für verschiedene Zwecke verwendet werden, zum Beispiel unter Berücksichtigung des gegenwärtigen Szenarios: Wenn Sie die Orte der Krankheitsausbreitung ermitteln und in einer Datenbank speichern können, werden von diesem System Warnungen ausgegeben, wenn Sie sich näher an diesen Orten befinden. Aber ich denke ernsthaft darüber nach, Tierkreuzungsdaten aus der ganzen Welt zu beschaffen, um die Fahrer vorsichtig zu machen und viele Tiere vor Unfällen zu retten. Ich habe eine einfache Webseite erstellt (aber noch nicht gehostet), die alle von mir gesammelten Daten enthält. Dies sind die Daten, die ich beim Gehen oder Radfahren gesammelt habe (wenn ich eine Katze oder einen Hund am Straßenrand finde, da sie anfälliger für Überquerungen sind), aber wir benötigen viel mehr Daten, um dies zu implementieren.
Ich bin ziemlich neu in der Erstellung von Webseiten (hauptsächlich Javascript) und anderen Dingen und würde gerne Ihre Vorschläge und Ihr Fachwissen haben:)