SmartWay
Komponenten und Verbrauchsmaterialien
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Notwendige Werkzeuge und Maschinen
|
Apps und Onlinedienste
| ||||
|
Über dieses Projekt
Übersicht
Eltern sorgen sich immer um ihre Kinder. Eltern möchten, dass ihre Kinder pünktlich zur Schule kommen und auf dem vorgegebenen Weg pünktlich nach Hause kommen.
SmartWay möchte diese Sorge aus dem Alltag der Eltern nehmen. SmartWay überwacht Ihr Kind auf dem Weg zur und von der Schule und stellt sicher, dass Ihr Kind immer den richtigen Weg einschlägt, um sein Ziel, die Schule, zu erreichen.
SWay überwacht die Geolokalisierung Ihres Kindes per GPS und sendet den Eltern sofort eine E-Mail, wenn das Kind von dem von Ihnen zugewiesenen Weg abweicht. SmartWay sendet den Eltern auch eine E-Mail, wenn das Kind nach Hause oder in die Schule kommt, und informiert sie, wenn das Kind zu spät kommt. Auf diese Weise können sich Eltern zurücklehnen und ihren Kaffee genießen, da sie wissen, dass ihr Kind sicher in der Schule und nach Hause ankommt.
Funktionalität
SmartWay überwacht kontinuierlich die Geolokalisierung Ihres Kindes vom Aufwachen bis zu seiner Ankunft zu Hause. Das Gerät ist außerdem mit einer RGB-LED und einem Vibrationsmotor ausgestattet, um Ihr Kind zu warnen, wenn es nicht den richtigen Schulweg nimmt oder zu spät kommt, und gratuliert ihm, wenn es in der Schule angekommen ist.
Das Gerät arbeitet durch viele Funktionen, um sicherzustellen, dass Ihr Kind sicher ist.
- Die erste Schleife
if(off track)
erkennt, wenn das Kind vom zugewiesenen Pfad abweicht, das Gerät verfügt über ein System, das erkennt, wie oft dies auftritt; Wenn Ihr Kind das erste Mal vom Kurs abweicht, warnt es das Gerät, indem es die LED rot dreht und den Motor vibriert, dann hat das Kind zwei Minuten Zeit, um wieder auf den Kurs zu kommen. Bleibt das Kind für weitere zwei Minuten vom Kurs ab, erhalten die Eltern eine E-Mail mit der Warnung, dass ihr Kind zusammen mit seiner Geolokalisierung vom Kurs abweicht, die E-Mail wird im Abstand von 2 Minuten empfänglich bis zum Eintreffen des Kindes gesendet zu Hause oder in der Schule. if(Schulzeit)
undif(Heimatzeit)
Schleifen erkennen, ob es Zeit für Schule und Zuhause ist, dann überprüft das Gerät, ob das Kind in der Schule oder zu Hause angekommen ist. Wenn es rechtzeitig angekommen ist, wird die LED grün und das Gerät sendet den Eltern eine E-Mail, die sie darüber informiert, dass ihre Das Kind ist zusammen mit der Ankunftszeit am Zielort angekommen. Andernfalls, wenn es Zeit für den Schulbeginn ist und das Kind nicht in der Schule ist, wird es auch
Das Gerät kann nur 12 Byte an Informationen senden, daher wird beim Senden ein kompaktes Paket benötigt. Andere Variablen werden im SigFox-Backend konfiguriert.
Das Gerät kann vier Pakete senden
- Kind ist vom Kurs abgekommen - ("vom Kurs")
- Kind zu Hause angekommen - ("zu Hause")
- Kind zur Schule gekommen - ("in der Schule")
- Kind kommt zu spät - ("spät")
Warnsystem
Das Kind, das das Gerät trägt, wird benachrichtigt, wenn es zur Schule kommt, zu Hause ankommt, zu spät am Ziel ankommt oder vom Kurs abgewichen ist
Das Gerät in Aktion
Vorteile
Eltern, die dieses Gerät verwenden, profitieren in:
- sorgt dafür, dass ihr Kind sicher zur und von der Schule kommt
- sorgt dafür, dass ihr Kind pünktlich an diesen Orten ankommt
- sicherstellen, dass ihr Kind natürlich nicht abweicht
- Energiesparend und kostengünstig - Langlebige Batterien
Aufbau des Projekts
Schritt 1:Erforderliches Gerät
Um mit der Erstellung des Projekts zu beginnen, müssen wir unsere Materialien sammeln. Für dieses Projekt benötigen Sie:
- Überbrückungskabel
- 1, NPN-Transistor
- 1, Keramikkondensator (0,1µF)
- 3, Widerstände (220Ω)
- 1, Widerstand (1KΩ)
- 1, RGB-LED
- 1, GPS-Modul
- 1, vibrierende Motorzelle
- 1, Arduino MKR1200 Fuchs
- 1, 2x AAA/AA Batteriebox
- 2, AA-Batterien
Schritt 2:Stromkreis anschließen
Der nächste Schritt besteht darin, die Schaltung anzuschließen; Die Fritzing-Bilder unten veranschaulichen, wie dies geschieht. Die Verkabelung besteht aus mehreren Teilen, sodass sie in verschiedene Bilder aufgeteilt werden.
Schritt 3:Den Code bestätigen
Der Code besteht aus mehreren Funktionen, wobei jede Funktion eine bestimmte Rolle im Aufbau des Projekts übernimmt.
- Warnsystem
- GPS holen
- RTC synchronisieren
- Prozessstandort
- Paket senden
- Aktionen ausführen
Diese Abschnitte werden unten erklärt.
- Warnsystem
void setOutputs () { pinMode (R, OUTPUT); pinMode (G, AUSGANG); pinMode (B, AUSGANG); pinMode (motorPin, OUTPUT);}void vibrateMotor() // vibriere die Motorzelle {digitalWrite (motorPin, HIGH); Verzögerung (1000); digitalWrite (motorPin, LOW);}void ledGreen () // LED, Grün {analogWrite (R, 0); analogWrite (G, 255); analogWrite (B, 0);}void ledOrange () // LED, Orange { analogWrite (R, 255); analogWrite(G, 45); analogWrite (B, 0);}void ledRed () // LED, Rot { analogWrite (R, 255); analogWrite (G, 0); analogWrite (B, 0);}void resetLED () // LED ausschalten { AnalogWrite (R, 0); analogWrite (G, 0); analogWrite(B, 0);}
Dieser Abschnitt des Codes befindet sich in der functions.h
Datei. Der Code informiert das Kind, das das Gerät trägt, über den aktuellen Status. Insgesamt steuern diese Schleifen die RGB-LED und die vibrierende Motorzelle.
- GPS holen
bool getGPS(int run){ while(Serial1.available()> 0) { if(gps.encode(Serial1.read())) { if(run ==1) { processData(); aufrechtzuerhalten. Sonst if(run ==2) {synchRTC(); } if(gps.location.isValid() &&gps.time.isValid() &&gps.date.isValid()) { return true; aufrechtzuerhalten. Sonst { false zurückgeben; } } } if (millis ()> 10000 &&gps.charsProcessed () <10) { Serial.println ( "Fehler - GPS-Modul hat mit Fehler geantwortet"); Serial.println ( "Beendigungscode"); Serial.println("_________________________________________"); während(1) {}; }}
Dies ist die Schleife, die für den Empfang des Standorts und der Zeit vom GPS-Modul verantwortlich ist. Es gibt 3 Dinge, die diese Schleife macht, sie wird in der Setup-Schleife
verwendet Um das GPS zu synchronisieren, wird es dann verwendet, um die Onboard-RTC mit dem GPS zu synchronisieren, und es wird in der Hauptschleife verwendet, um die Geolokalisierung des Geräts zu erhalten.
- RTC synchronisieren
void synchRTC () { Serial.println ( "Synching RTC"); Serial.println("_________________________________________"); Serial.println ("OK - RTC initialisieren"); rtc.begin(); Serial.println ("OK - Synchronisierungszeit"); // wir müssen die ersten 2 Stellen der Variablen trimmen (2018 -> 18) uint16_t yearRAW =gps.date.year(); String yearString =String(yearRAW); yearString.remove(0,1); uint16_t year =yearString.toInt(); rtc.setTime(gps.time.hour(), gps.time.minute(), gps.time.second()); rtc.setDate(gps.date.day(), gps.date.month(), Jahr); Serial.println ("Erfolg - RTC synchronisiert"); Serial.println("_________________________________________"); Serial.println(""); Serial.println(""); Serial.println("");}
Dieser Codeabschnitt synchronisiert die Onboard-RTC mit der vom GPS-Modul empfangenen Zeit, liest zuerst die Daten vom GPS-Modul und verarbeitet sie dann. Die Schleife setzt dann die aktuelle Uhrzeit der Onboard-RTC auf die empfangene Zeit und startet die RTC.
- Prozess Standort
bool processData(){ if(gps.location.isValid()) { Breite =gps.location.lat(); Längengrad =gps.location.lng(); Breite =53,355504; Längengrad =-6.258452; if (check.isOut ()) { if (check.track ()) { Serial.println ( "OUT OF BOUNDS"); warn.offTrackLoop(); aufrechtzuerhalten. warn.arrivedHomeLoop(); } Else {Serial.println ("SPÄT -> HOME"); warn.lateLoop(); } } else if (check.isSchoolTime () &&angekommenHome) { Serial.println ( "."); if (check.isSchool ()) {Serial.println ( "AT SCHULE"); warn.arrivedSchoolLoop(); aufrechtzuerhalten. Sonst {Serial.println ("SPÄT -> SCHULE"); warn.lateLoop(); } } else {Serial.println ("AUF WEG"); } }}
Diese Schleife verarbeitet den Standort des Geräts und vergleicht ihn mit der aktuellen Uhrzeit, um zu sehen, wo sich das Kind zu diesem Zeitpunkt befinden sollte. Es wird dann basierend auf dem Ergebnis die entsprechende Aktion ausführen.
- Tun Aktionen
struct Do{ void offTrackLoop() { if(offTrackVar) { parseData(0); } vibrierenMotor (); ledRot(); Verzögerung (1000); vibrierenMotor(); resetLED(); offTrackVar =wahr; Verzögerung (120000); } void lateLoop() { if(!lateVar) { parseData(1); } vibrierenMotor (); ledOrange(); Verzögerung (1000); resetLED(); spätVar =wahr; aufrechtzuerhalten. Void angekommenHomeLoop() {lateVar =false; offTrackVar =false; vibrierenMotor(); ledGrün(); Verzögerung (1000); resetLED(); parseData(2); angekommenHeim =wahr; angekommenSchool =false; aufrechtzuerhalten. Void angekommenSchoolLoop() {lateVar =false; offTrackVar =false; vibrierenMotor(); ledGrün(); Verzögerung (1000); resetLED(); parseData(3); angekommenHome =false; angekommenSchool =wahr; }};
Diese Struktur wird aufgerufen, um auf die von Prozessstandort gegebene Antwort zu reagieren es warnt das Kind beim Umschalten der RGB-LED und der vibrierenden Motorzelle. Es wird bei Bedarf auch ein Paket an SigFox senden.
- Senden Paket
void parseData(int state){ SigFox.beginPacket(); // Beginnen Sie mit dem Senden der Nachricht if(state ==0) // off track { SigFox.print("off track"); // Nachricht senden} else if(state ==1) // spät { SigFox.print("late"); // Nachricht senden} else if(state ==2) // Zuhause angekommen { SigFox.print("at home"); // Nachricht senden } else // Schule angekommen { SigFox.print("in der Schule"); // Nachricht senden } SigFox.endPacket();}
Diese Funktion sendet die Daten an SigFox, der Paketversand wird gestartet und dann wird der entsprechende Wert geparst.
Einrichten der Variablen
Der Code enthält mehrere Variablen, nach denen TODO als Kommentar geschrieben wird. Diese Variablen müssen an den Client angepasst werden, der Client wird zum Einrichten aufgefordert
- Zeit für die Schule
- Zeit, die das Kind braucht, um zu reisen
- Zeit, zu der die Schule endet
- Debugging?
- Geolokalisierung von Schulen (LAT, LNG);
- Heimat-Geolokalisierung (LAT, LNG);
Die folgende Anleitung führt Sie durch die Einrichtung der Variablen.
Bibliotheken
SigFox - Copyright (c) 2016 Arduino LLC GNU Lesser General Public License Diese Bibliothek ist gemeinfrei
ctype - Copyright (c) 2006 Free Software Foundation unter der GNU General Public License, diese Bibliothek ist gemeinfrei
RTCZero - Copyright (c) 2015 Arduino LLC unter der GNU Lesser General Public License, diese Bibliothek ist gemeinfrei
String - Copyright (c) 2009-10 Hernando Barragan, Copyright (c) 2011 Paul Stoffrengen unter der GNU Lesser General Public License, diese Bibliothek ist gemeinfrei
TinyGPS++ - Copyright (c) 2008-13 Mikal Hart unter der GNU Lesser General Public License, diese Bibliothek ist gemeinfrei
Einrichtung
Stellen Sie sicher, dass der Stromkreis richtig verdrahtet ist. Für Details zum Einrichten Ihres MKR-Foxs klicken Sie hier für das Arduino-Tutorial. Wenn Sie mehr über die Arduino SigFox-Bibliothek erfahren möchten, klicken Sie hier.
Back-End-Programm
Sie müssen einen registrierten Arduino MKR1200-Fuchs haben, um das Backend zu programmieren.
- Schritt 1
Öffnen Sie das SigFox-Backend und melden Sie sich bei Ihrem SigFox-Konto an.
- Schritt 2
Klicken Sie im Dropdown-Menü oben auf der Seite auf "Gerätetyp"
- Schritt 3:
Wählen Sie Ihren Arduino MKRfox aus und klicken Sie auf Bearbeiten
- Schritt 4:
Wählen Sie im Menü auf der linken Seite Rückrufe aus und navigieren Sie zur Schaltfläche "Neu" in der oberen rechten Ecke.
- Schritt 5:
Nachdem Sie auf Neu geklickt haben, werden Ihnen eine Reihe von Rückrufkonfigurationsoptionen angezeigt. Klicken Sie auf Benutzerdefinierte Rückrufe
Als nächstes öffnet sich ein Fenster, Sie müssen das angegebene Formular ausfüllen, um Ihren Rückruf zu erstellen
Am Ende sollte Ihre Nachricht so aussehen:
Klicken Sie nun auf OK und Sie sind fertig.
Finale
Als letztes müssen Sie den unten stehenden Code hochladen. Stellen Sie sicher, dass Sie die mit "TODO" gekennzeichnete Variable nach Ihren Wünschen angepasst haben, warten Sie, bis das blaue Licht am GOS-Modul blinkt und trennen Sie dann den Mikrocontroller von Ihrem Computer und Legen Sie die Batterien in das Batteriefach. Sie sind fertig.
Ich habe ein Gehäuse entworfen, um das Gerät sicher zu halten und es attraktiv aussehen zu lassen, ich habe zwei Acrylteile verwendet und die Kanten geschmolzen, die sie um 90 Grad geschwungen haben. Ich habe den gesamten Stromkreis darin platziert und den Batteriekasten darunter und dann die Plastikteile mit zwei Kabelbindern zusammengebunden.
Am Ende bedeckte ich ein Stück der Oberseite (transparente Abdeckung), um alle Drähte vor dem Blick zu verbergen und nur das Gehirn des Projekts sichtbar zu machen.
Hintergrund
Ich persönlich weiß, wie stressig die einfache Aufgabe sein kann, Ihr Kind zur Schule zu schicken, jeder macht sich Sorgen, was seinem Kind auf dem Weg zur Schule passieren kann.
Dieses Projekt richtet sich an alle Menschen, die sich gestresst fühlen, wenn sie ihr Kind zur Schule schicken. Mit SWay können Sie sich entspannen und wissen, dass Ihr Kind sicher in der Schule ankommt.
Code
SmartWay
Der vollständige CodeKundenspezifische Teile und Gehäuse
Standardmäßig nicht in Fritzing enthalten arduino_mkr_fox_1200_fixed_gwlzp1tuih_uh8ucYEGxI.fzpzSchaltpläne
Overall_WZeRYkIUCF.fzzHerstellungsprozess
- AC-Kommutatormotoren
- Raspoulette-Prototyp
- Einfacher Pi-Roboter
- Überprüfen eines Gleichstrommotors
- Was ist ein Linearmotor?
- Eine Einführung in den BLDC-Motor
- Was ist ein Getriebemotor-Untersetzungsgetriebe?
- Was ist ein Servomotor?
- Was ist ein Servomotor-Reduzierer?
- Grundlegendes zum Startermotor des Motors