Bluetooth-Fernrelais

Dieses Projekt nutzt eine mit MIT App Inventor erstellte Android-App, um ein Relaismodul über das JDY-31 Bluetooth-Modul, welches an einen Arduino Uno angeschlossen ist, fernzusteuern. Wenn in der App ein Button gedrückt wird, sendet sie einen einfachen Befehl (‚1‘ oder ‚0‘) an den Arduino. Erhält der Arduino den Befehl ‚1‘ via Bluetooth, wird das Relais aktiviert; bei Erhalt des Befehls ‚0‘ wird es deaktiviert. Dies bietet eine benutzerfreundliche Schnittstelle auf dem Smartphone zur Steuerung von an das Relais angeschlossenen Geräten.

Die Android-Anwendung wird auf einer kostenlosen webbasierten Plattform namens MIT App Inventor erstellt. Das Projekt bietet eine hervorragende Gelegenheit, sich mit der Schnittstelle zwischen einem Arduino und einem Smartphone vertraut zu machen.

1. Schaltung aufbauen

Warnung

Das folgende Beispiel zeigt, wie ein Relais zur Steuerung eines LED-Moduls verwendet wird. Obwohl es möglich ist, das Relais in realen Anwendungen mit anderen Geräten zu verbinden, ist bei der Arbeit mit HOHER Wechselspannung äußerste Vorsicht geboten. Unachgemäße oder fehlerhafte Verwendung kann zu schweren Verletzungen oder gar zum Tod führen. Dieses Projekt richtet sich daher an Personen, die sich mit HOHER Wechselspannung auskennen und diese sicher handhaben können. Sicherheit hat immer Vorrang.

../_images/13-Wiring_Bluetooth_remote_relay.png

2. Android-App erstellen

Die Android-Anwendung wird mit einer kostenlosen Webanwendung namens MIT App Inventor entwickelt. MIT App Inventor eignet sich hervorragend als Einstieg in die Android-Entwicklung, dank seiner intuitiven Drag-and-Drop-Funktionen zur Erstellung einfacher Applikationen.

Nun legen wir los.

  1. Gehen Sie zu Get Started with MIT App Inventor und klicken Sie auf „Online-Tool“ zum Einloggen. Ein Google-Konto ist zur Registrierung bei MIT App Inventor erforderlich.

    ../_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 RemoteRelay.aia hoch, die im Pfad ultimate-sensor-kit\iot_project\bluetooth\08-Bluetooth_remote_relay zu finden ist.

    Direkter Download hier: RemoteRelay.aia

    ../_images/09-ai_import_shadow.png
  3. Nach dem Hochladen der .aia-Datei sehen Sie die Anwendung in der MIT App Inventor-Software. Dies ist eine vorkonfigurierte Vorlage. Nachdem Sie sich mit MIT App Inventor vertraut gemacht haben, können Sie diese Vorlage entsprechend modifizieren.

  4. In MIT App Inventor gibt es zwei Hauptbereiche: den Designer und die Blocks. Zwischen diesen beiden Bereichen können Sie oben rechts auf der Seite umschalten.

    ../_images/09-ai_intro_1_shadow.png
  5. Der Designer ermöglicht das Hinzufügen von Buttons, Texten, Bildschirmen und die allgemeine ästhetische Gestaltung Ihrer Anwendung.

    ../_images/13-ai_intro_2_shadow.png
  6. Als Nächstes gibt es den Bereich Blocks. Hier können Sie spezielle Funktionalitäten für Ihre App programmieren und jedes Element in der Benutzeroberfläche der App entsprechend konfigurieren.

    ../_images/13-ai_intro_3_shadow.png
  7. Um die Anwendung auf einem Smartphone zu installieren, navigieren Sie zur Registerkarte Build.

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

      Die vorab kompilierte APK können Sie hier herunterladen: RemoteRelay.apk

    • Wenn Sie diese App im Google Play Store oder einem anderen App-Marktplatz hochladen möchten, können Sie eine .aab-Datei generieren.

3. Den Code hochladen

  1. Öffnen Sie die Datei 08-Bluetooth_remote_relay.ino im Pfad ultimate-sensor-kit\iot_project\bluetooth\08-Bluetooth_remote_relay oder kopieren Sie den Code in die Arduino IDE.

  2. Nach der Auswahl des richtigen Boards und Ports klicken Sie auf die Schaltfläche Hochladen.

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

4. Verbindung zwischen App und Bluetooth-Modul herstellen

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

  1. Aktivieren Sie zunächst Bluetooth auf Ihrem Smartphone.

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

    ../_images/09-app_2_shadow.png
  3. Klicken Sie darauf und stimmen Sie der Kopplungsanfrage im Popup-Fenster zu. Falls ein Kopplungscode erforderlich ist, geben Sie „1234“ ein.

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

    ../_images/13-app_4_shadow.png
  5. In der App klicken Sie auf die Schaltfläche Connect, um eine Verbindung zwischen der App und dem Bluetooth-Modul herzustellen.

    ../_images/13-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 aus. Der Name jedes Geräts wird neben seiner MAC-Adresse aufgelistet.

    ../_images/13-app_6_shadow.png
  7. Falls Sie auf der oben angezeigten Seite keine Geräte sehen, könnte dies daran liegen, dass der App die Berechtigung zum Scannen von Geräten in der Nähe fehlt. In diesem Fall müssen Sie die Einstellungen manuell anpassen.

    • Um zur Seite App-Informationen zu gelangen, halten Sie das App-Symbol lange gedrückt und wählen Sie es aus. Alternativ können Sie jede andere Methode verwenden, um diese Seite zu erreichen.

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

    ../_images/08-app_9_shadow.png
    • Um der App das Scannen von Geräten in der Nähe zu ermöglichen, gehen Sie zu Geräte in der Nähe 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 erfolgreich eine Bluetooth-Verbindung herzustellen.

  8. Nach erfolgreicher Verbindung werden Sie zur Hauptseite weitergeleitet. Klicken Sie auf „ON“ oder „OFF“, um das Relais ein- oder auszuschalten.

    Bemerkung

    Wenn die MAC-Adresse des Bluetooth „1“ enthält, wird das Relais bei der ersten erfolgreichen Bluetooth-Verbindung eingeschaltet und dann schnell wieder ausgeschaltet. Denn beim Herstellen der Bluetooth-Verbindung wird die MAC-Adresse an den Arduino gesendet. Der Arduino erkennt „1“ und schaltet das Relais ein. Nach der Bluetooth-Initialisierung sendet die App eine 0 an den Arduino über Bluetooth, um sicherzustellen, dass der Anfangszustand des Relais nach der Verbindung geschlossen ist.

    ../_images/13-app_7_shadow.png

5. Code-Erläuterung

  1. Bibliothek und globale Variableninitialisierung

    #include <SoftwareSerial.h>
    
    const int bluetoothTx = 3;
    const int bluetoothRx = 4;
    SoftwareSerial bleSerial(bluetoothTx, bluetoothRx);
    
    const int relayPin = 8;
    

    Dieses Segment bindet die SoftwareSerial-Bibliothek ein und initialisiert die globalen Variablen. Die Pins 3 und 4 sind für die Datenübertragung und den Datenempfang mit dem Bluetooth-Modul definiert. Zudem ist das Relaismodul an Pin 8 angeschlossen.

  2. Funktion setup()

    void setup() {
      Serial.begin(9600);
      bleSerial.begin(9600);
      pinMode(relayPin, OUTPUT);
    }
    

    Die Funktion startet den seriellen Monitor und die Kommunikation mit dem Bluetooth-Modul mit einer Baudrate von 9600. Sie legt außerdem den relayPin als Ausgangspin fest.

  3. Funktion loop()

    void loop() {
      if (bleSerial.available() > 0) {
        char message = bleSerial.read();
        // Serial.println(message);  //for debug
    
        if (message == '1') {
          digitalWrite(relayPin, HIGH);
          Serial.println("On");
        } else if (message == '0') {
          digitalWrite(relayPin, LOW);
          Serial.println("Off");
        }
      }
    }
    

    Die loop()-Funktion wird fortlaufend ausgeführt. Sie prüft, ob eine Nachricht vom Bluetooth-Modul empfangen wurde. Falls ja, liest sie das Zeichen aus. Abhängig vom empfangenen Zeichen (‚1‘ oder ‚0‘) wird das Relais aktiviert oder deaktiviert und eine Bestätigungsnachricht („Eingeschaltet“ oder „Ausgeschaltet“) an den seriellen Monitor gesendet.