8. IoT-Auto

Für dieses Projekt haben wir die Blynk-App auf dem Smartphone genutzt, um das Auto zu steuern. Allerdings müssen Sie zuerst den Abschnitt Auto-Projekte konsultieren, um das Auto zusammenzubauen und ein grundlegendes Verständnis dafür zu bekommen. In Zeiten der 5G-Netzwerkverbreitung könnte diese Methode in vielen Industrien zu einer der Hauptproduktionsweisen werden. Daher lohnt es sich, diese Technologie vorab zu erleben.

1. Schaltkreis aufbauen

../_images/iot_car.png

2. Dashboard bearbeiten

Blynk für Mobilgeräte bietet keine Möglichkeit zur Bearbeitung von Datastreams, daher müssen diese Schritte weiterhin über die Web-Oberfläche erledigt werden.

  1. Erstellen Sie einen Datastream vom Typ Virtual Pin auf der Datastream-Seite, um den X-Achsenwert des Joysticks zu speichern. Legen Sie den NAMEN auf Xvalue, den DATENTYP auf Integer und MIN sowie MAX auf -10 und 10 fest.

    ../_images/sp220613_164507.png
  2. Erstellen Sie einen weiteren Datastream vom Typ Virtual Pin, um den Y-Achsenwert des Joysticks zu erfassen. Setzen Sie den NAMEN auf Yvalue, den DATENTYP auf Integer, sowie MIN und MAX auf -10 und 10.

    ../_images/sp220613_164717.png

Führen Sie anschließend die folgenden Schritte auf Ihrem Smartphone durch:

  1. Suchen Sie im GOOGLE Play oder im APP Store nach „Blynk IoT“ (nicht Blynk(legacy)) und laden Sie die App herunter.

  2. Nach dem Öffnen der App melden Sie sich an. Dieses Konto sollte mit dem Konto übereinstimmen, das Sie auf der Web-Oberfläche verwenden.

  3. Navigieren Sie dann zum Dashboard (falls noch keines vorhanden ist, erstellen Sie eines). Sie werden feststellen, dass die Dashboards für Mobilgeräte und Web unabhängig voneinander sind.

../_images/APP_11.jpg
  1. Klicken Sie auf das Bearbeitungssymbol.

  2. Tippen Sie auf einen freien Bereich.

  3. Wählen Sie ein Joystick-Widget aus.

../_images/APP_21.jpg
  1. Nun sollten Sie ein Joystick-Widget im freien Bereich sehen, tippen Sie darauf.

  2. Die Joystick-Einstellungen werden angezeigt. Wählen Sie die zuvor in den Datastreams festgelegten Xvalue und Yvalue aus.

  3. Kehren Sie zur Dashboard-Seite zurück. Nun können Sie den Joystick nach Belieben bedienen.

../_images/APP_31.jpg

3. Code ausführen

  1. Öffnen Sie die Datei 8.iot_car.ino unter dem Pfad 3in1-kit\iot_project\8.iot_car oder kopieren Sie diesen Code in die Arduino IDE.

  2. Ersetzen Sie die Template ID, den Device Name und den Auth Token durch Ihre eigenen Angaben. Geben Sie zudem die ssid und das password des von Ihnen genutzten WLANs ein. Für detaillierte Anleitungen siehe 1.4 Verbindung des R4-Boards mit Blynk herstellen.

  3. Wählen Sie das richtige Board und den passenden Port aus und klicken Sie dann auf den Upoad-Button.

  4. Öffnen Sie den Seriellen Monitor (Baudrate auf 115200 einstellen) und warten Sie, bis eine Meldung über eine erfolgreiche Verbindung erscheint.

    ../_images/2_ready.png

    Bemerkung

    Wenn die Meldung ESP is not responding beim Verbinden erscheint, folgen Sie bitte diesen Schritten.

    • Stellen Sie sicher, dass die 9V-Batterie angeschlossen ist.

    • Setzen Sie das ESP8266-Modul zurück, indem Sie den Pin RST für 1 Sekunde mit GND verbinden, danach trennen.

    • Drücken Sie die Reset-Taste auf dem R4-Board.

    Manchmal müssen Sie die obigen Schritte 3-5 Mal wiederholen, bitte haben Sie Geduld.

  5. Trennen Sie jetzt das USB-Kabel und versorgen Sie den Wagen nur mit einer 9V-Batterie. Warten Sie, bis die LED leuchtet, was darauf hinweist, dass das Auto mit Blynk verbunden ist.

  6. Öffnen Sie Blynk auf Ihrem Handy und steuern Sie das Auto mithilfe des Joystick-Widgets.

    ../_images/iot_car.jpg

Wie funktioniert das?

Diese Funktionen werden zur Steuerung der Bewegungen des Autos verwendet.

void moveForward(int speed) {...}
void moveBackward(int speed) {...}
void turnRight(int speed) {...}
void turnLeft(int speed) {...}
void stopMove() {...}

Der IoT-Bereich liest die Werte des Joystick-Widgets aus und weist sie den Variablen Xvalue und Yvalue zu.

int Xvalue = 0;
int Yvalue = 0;

BLYNK_WRITE(V9)
{
    Xvalue = param.asInt();
}

BLYNK_WRITE(V10)
{
    Yvalue = param.asInt();
}

Im loop() führt das Auto unterschiedliche Aktionen basierend auf Xvalue und Yvalue durch.

if (Yvalue >= 5) {
    moveForward(255);
} else if (Yvalue <= -5) {
    moveBackward(255);
} else if (Xvalue >= 5) {
    turnRight(150);
} else if (Xvalue <= -5) {
    turnLeft(150);
} else {
    stopMove();
}

Fügen Sie außerdem eine Netzwerkstatusbestimmung zum loop() hinzu, die eine LED aufleuchten lässt, wenn eine Verbindung zur Blynk Cloud besteht.

if (!Blynk.connected()) {
    digitalWrite(ledPin, LOW);
    Serial.print("offline!");
    bool result = Blynk.connect();
    Serial.println(result);
} else {
    digitalWrite(ledPin, HIGH);
}