Bluetooth-Schlosssteuerung

Dieses Projekt nutzt eine mit dem MIT App Inventor erstellte Android-App, um über Bluetooth einen Servomotor aus der Ferne zu steuern und so einen Verriegelungsmechanismus zu simulieren. Benutzer können über die App spezifische Nachrichten senden, um den Servo entweder in die „verriegelte“ oder „entriegelte“ Position zu bewegen.

Das System verwendet ein JDY-31 Bluetooth-Modul, um diese Nachrichten zu empfangen und gibt entsprechende Anweisungen an ein Arduino Uno Board, um den Winkel des Servomotors anzupassen. Bei Empfang der Nachricht ‚1‘ bewegt sich der Servo in die „verriegelte“ Position und bei Empfang der Nachricht ‚0‘ in die „entriegelte“ Position.

Diese Android-Anwendung wird mithilfe einer ergänzenden webbasierten Plattform namens MIT App Inventor erstellt. Das Projekt bietet eine hervorragende Gelegenheit, die Schnittstelle zwischen einem Arduino und einem Smartphone kennen zu lernen.

1. Schaltungsaufbau

../_images/08-Wiring_Bluetooth_lock_controller.png

2. Erstellung der Android-App

Die Android-Anwendung wird mit einer kostenlosen Webanwendung namens MIT App Inventor entwickelt. Der MIT App Inventor eignet sich hervorragend als Einstiegspunkt für die Android-Entwicklung dank seiner intuitiven Drag-and-Drop-Funktionen, mit denen einfache Anwendungen erstellt werden können.

Lassen Sie uns beginnen.

  1. Besuchen Sie Get Started with MIT App Inventor und klicken Sie auf „Online-Tool“ zum Einloggen. Zum Registrieren bei MIT App Inventor benötigen Sie ein Google-Konto.

    ../_images/09-ai_signup_shadow.png
  2. Nach dem Einloggen navigieren Sie zu Projects -> Import project (.aia) from my computer. Laden Sie anschließend die Datei Bluetooth_controlled_lock.aia aus dem Pfad ultimate-sensor-kit\iot_project\bluetooth\03-Bluetooth_lock_controller hoch.

    Sie können es auch direkt hier herunterladen: Bluetooth_controlled_lock.aia

    ../_images/09-ai_import_shadow.png
  3. Nach dem Hochladen der .aia-Datei wird die Anwendung in der MIT App Inventor Software angezeigt. Dies ist eine vorkonfigurierte Vorlage. Sie können diese Vorlage nach dem Vertrautmachen mit dem MIT App Inventor über die folgenden Schritte anpassen.

  4. Im MIT App Inventor gibt es zwei Hauptbereiche: den Designer und die Blocks. Sie können in der oberen rechten Ecke der Seite zwischen diesen beiden Bereichen wechseln.

    ../_images/09-ai_intro_1_shadow.png
  5. Mit dem Designer können Sie Schaltflächen, Texte, Bildschirme hinzufügen und das gesamte Aussehen Ihrer Anwendung ändern.

    ../_images/08-ai_intro_2_shadow.png
  6. Weiter gibt es den Bereich Blocks. Dieser Bereich ermöglicht es Ihnen, benutzerdefinierte Funktionen für Ihre App zu erstellen, sodass Sie jedes Element auf der GUI der App programmieren können, um gewünschte Funktionen zu erreichen.

    ../_images/08-ai_intro_3_shadow.png
  7. Um die Anwendung auf einem Smartphone zu installieren, gehen Sie zum Tab Build.

    ../_images/08-ai_intro_4_shadow.png
    • Sie können eine .apk-Datei generieren. Nach Auswahl dieser Option erscheint eine Seite, auf der Sie zwischen dem Herunterladen einer .apk-Datei oder dem Scannen eines QR-Codes zur Installation wählen können. Befolgen Sie die Installationsanleitung, um die Anwendungsinstallation abzuschließen.

      Sie können auch unsere vorab kompilierte APK hier herunterladen: Bluetooth_controlled_lock.apk

    • Falls Sie die App im Google Play Store oder einem anderen App-Marktplatz veröffentlichen möchten, können Sie eine .aab-Datei generieren.

3. Code hochladen

  1. Öffnen Sie die Datei 03-Bluetooth_lock_controller.ino unter dem Pfad ultimate-sensor-kit\iot_project\bluetooth\03-Bluetooth_lock_controller oder kopieren Sie diesen Code in die Arduino IDE.

  2. Wählen Sie das richtige Board und den richtigen Port aus und klicken Sie auf den Hochladen-Button.

  3. Öffnen Sie den Seriellen Monitor (Baudrate auf 9600 einstellen), um Debug-Nachrichten anzuzeigen.

4. Verbindung von App und Bluetooth-Modul

Vergewissern Sie sich, dass die zuvor erstellte Anwendung auf Ihrem Smartphone installiert ist.

  1. Aktivieren Sie zuerst Bluetooth auf Ihrem Smartphone.

    ../_images/09-app_1_shadow.png
  2. Navigieren Sie zu den Bluetooth-Einstellungen auf Ihrem Smartphone und suchen Sie nach Bezeichnungen wie JDY-31-SPP.

    ../_images/09-app_2_shadow.png
  3. Nach dem Anklicken stimmen Sie der Kopplungsanfrage im Popup-Fenster zu. Falls ein Kopplungscode erforderlich ist, geben Sie bitte „1234“ ein.

    ../_images/09-app_3_shadow.png
  4. Öffnen Sie nun die neu installierte Control_RGB_LED-App.

    ../_images/08-app_4_shadow.png
  5. In der App klicken Sie auf das Schloss-Symbol, um eine Verbindung zwischen der App und dem Bluetooth-Modul herzustellen.

    ../_images/08-app_5_shadow.png
  6. Diese Seite zeigt eine Liste aller gekoppelten Bluetooth-Geräte an. Wählen Sie die Option xx.xx.xx.xx.xx.xx JDY-31-SPP aus der Liste. Der Name jedes Geräts wird neben seiner MAC-Adresse aufgeführt.

    ../_images/08-app_6_shadow.png
  7. Falls Sie auf der oben dargestellten Seite keine Geräte sehen, könnte dies daran liegen, dass dieser App die Berechtigung zur Suche nach nahegelegenen Geräten fehlt. In einem solchen Fall müssen Sie die Einstellungen manuell anpassen.

    • Um zur App-Infoseite zu gelangen, halten Sie das App-Symbol gedrückt und wählen es aus. Oder nutzen Sie eine andere Methode, um auf diese Seite zu gelangen, falls Ihnen eine bekannt ist.

    ../_images/08-app_8_shadow.png
    • Navigieren Sie zur Seite Berechtigungen.

    ../_images/08-app_9_shadow.png
    • Um der App das Scannen von nahegelegenen Geräten zu ermöglichen, gehen Sie zu Nahegelegene Geräte und wählen Immer.

    ../_images/08-app_10_shadow.png
    • Starten Sie nun die App neu und wiederholen Sie die Schritte 5 und 6, um eine erfolgreiche Verbindung zu Bluetooth herzustellen.

  8. Nach einer erfolgreichen Verbindung werden Sie zur Hauptseite weitergeleitet, auf der „connected“ angezeigt wird. Nun können Sie entweder auf „Unlock“ oder „Lock“ klicken, um den Verriegelungsmechanismus zu steuern.

    ../_images/08-app_7_shadow.png

5. Code-Erklärung

  1. Kommunikationspins definieren und SoftwareSerial-Bibliothek initialisieren

    const int bluetoothTx = 3;
    const int bluetoothRx = 4;
    SoftwareSerial bleSerial(bluetoothTx, bluetoothRx);
    

    Im obigen Code werden die Sendepins (Tx) und Empfangspins (Rx), die vom JDY-31 Bluetooth-Modul zur Kommunikation genutzt werden, definiert. Anschließend wird die SoftwareSerial-Bibliothek initialisiert, die es dem Bluetooth-Modul ermöglicht, mit dem Arduino-Board zu kommunizieren.

  2. Servo-relevante Konstanten definieren und Servo-Objekt erstellen

    const int servoPin = 9;
    const int lockAngle = 180;
    const int unlockAngle = 90;
    Servo myservo;
    

    Hier werden der dem Servo zugeordnete Pin sowie die Winkel für die „verriegelte“ und „entriegelte“ Position definiert. Ein Servo-Objekt myservo wird ebenfalls für die Steuerung des Servomotors erstellt.

  3. Servo und serielle Kommunikation initialisieren

    void setup() {
      myservo.attach(servoPin);
      Serial.begin(9600);
      bleSerial.begin(9600);
    }
    
  4. Servo-Steuerung basierend auf Eingaben des Bluetooth-Moduls

    void loop() {
      if (bleSerial.available() > 0) {
        char message = bleSerial.read();
        if (message == '1') {
          myservo.write(lockAngle);
          Serial.println("Locked");
        }
        else if (message == '0') {
          myservo.write(unlockAngle);
          Serial.println("Unlocked");
        }
      }
    }
    

    Die loop()-Funktion wird fortlaufend ausgeführt. Sie liest eingehende Nachrichten vom Bluetooth-Modul. Wenn die Nachricht ‚1‘ lautet, wird der Servo in die „verriegelte“ Position bewegt. Bei der Nachricht ‚0‘ wird der Servo in die „entriegelte“ Position bewegt. Der aktuelle Status („Verriegelt“ oder „Entriegelt“) wird im seriellen Monitor ausgegeben.