Arduino - Bluetooth

In diesem Tutorial lernen wir:

Arduino Bluetooth

Der Umfang dieses Tutorials:

In diesem Tutorial geht es um die Verwendung von Classic Bluetooth (Bluetooth 2.0). Falls Sie nach Bluetooth Low Energy – BLE (Bluetooth 4.0) suchen, sehen Sie sich dieses ähnliche Tutorial an: Arduino - Bluetooth Low Energy

Erforderliche Hardware

1×Arduino Uno R3
1×USB 2.0 Kabel Typ A/B (für USB-A PC)
1×USB 2.0 Kabel Typ C/B (für USB-C PC)
1×HC-05 Bluetooth-Modul
1×Verbindungskabel
1×(Empfohlen) Schraubklemmenblock-Shield für Arduino Uno
1×(Empfohlen) Breadboard-Shield für Arduino Uno
1×(Empfohlen) Gehäuse für Arduino Uno
1×(Empfohlen) Prototyping-Grundplatte & Breadboard-Kit für Arduino Uno

Oder Sie können die folgenden Kits kaufen:

1×DIYables STEM V3 Starter-Kit (Arduino enthalten)
1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Über das HC-05 Bluetooth-Modul

HC-05 ist ein serielles Bluetooth-Modul. Es funktioniert als Seriell-zu-Bluetooth-Konverter. Es führt Folgendes aus:

  • Daten vom Serial RX-Pin empfangen und die Daten über Bluetooth an das gekoppelte Gerät (z. B. ein Smartphone) senden
  • Daten über Bluetooth (vom gekoppelten Gerät) empfangen und die Daten an den Serial TX-Pin senden

Genauer gesagt, im Kontext der Kommunikation von Arduino mit einer Smartphone-App (Android/iOS):

  • Arduino verbindet sich über Serial- und SoftwareSerial-Pins mit dem HC-05 Bluetooth-Modul
  • Das HC-05 Bluetooth-Modul ist mit einer Smartphone-App gekoppelt
  • Der Arduino sendet die Daten einfach an die Smartphone-App, indem er Daten über Serial- und SoftwareSerial-Pins sendet
  • Der Arduino empfängt die Daten von der Smartphone-App einfach, indem er Daten über Serial- und SoftwareSerial-Pins liest
  • Es ist kein spezieller Bluetooth-Code auf dem Arduino erforderlich

Pinbelegung

Bluetooth-Pinbelegung

Das HC-05 Bluetooth-Modul hat 6 Pins:

  • Enable/Key-Pin: Dieser Pin wird verwendet, um zwischen dem Datenmodus (LOW) und dem Befehlsmodus (HIGH) umzuschalten. Falls er nicht verbunden ist, befindet er sich standardmäßig im Datenmodus.
  • VCC-Pin: Versorgungs-Pin, verbinden Sie diesen Pin mit +5 V der Versorgungsspannung.
  • GND-Pin: Masse-Pin, verbinden Sie diesen Pin mit der Masse der Stromquelle.
  • TX-Pin: Serieller Datenpin, verbinden Sie diesen Pin mit dem RX-Pin des Arduino. Die über Bluetooth empfangenen Daten werden an diesen Pin als serielle Daten gesendet.
  • RX-Pin: Serieller Datenpin, verbinden Sie diesen Pin mit dem TX-Pin des Arduino. Die von diesem Pin empfangenen Daten werden an Bluetooth gesendet.
  • Status-Pin: Der Statuspin ist mit der integrierten LED verbunden, er kann als Feedback verwendet werden, um zu prüfen, ob Bluetooth ordnungsgemäß funktioniert.

Für grundlegende Funktionen müssen wir jedoch nur vier Pins des HC-05 Bluetooth-Moduls verwenden, um eine Verbindung zum Arduino herzustellen.

Das HC-05 Bluetooth-Modul hat ebenfalls zwei integrierte Komponenten:

  • Eine LED: zeigt den Status des Moduls an
    • Blinkt einmal alle 2 Sekunden: Das Modul hat den Befehlsmodus betreten
    • Blinkt wiederholt: Wartet auf Verbindung im Datenmodus
    • Blinkt zweimal innerhalb von 1 Sekunde: Verbindung im Datenmodus erfolgreich hergestellt
  • Taste: Kann verwendet werden, um den Key-/Enable-Pin zu steuern, um den Betriebsmodus (Datenmodus oder Befehlsmodus) auszuwählen

Wie es funktioniert

Das HC-05 Bluetooth-Modul hat zwei Betriebsmodi:

  • Datenmodus: wird verwendet, um Daten mit dem gekoppelten Gerät auszutauschen
  • Befehlsmodus: wird verwendet, um Parameter zu konfigurieren

Glücklicherweise kann das HC-05 Bluetooth-Modul mit Arduino arbeiten, indem es die Standardeinstellung verwendet, ohne weitere Konfiguration.

HC-05 Standardeinstellungen

Default Bluetooth Name “HC-05”
Default Password 1234 or 0000
Default Communication Slave
Default Mode Data Mode
Default Data Mode Baud Rate 9600, 8, N, 1
Default Command Mode Baud Rate 38400, 8, N, 1

Über Bluetooth-Seriemonitor-App

Die Bluetooth Serial Monitor App ist eine Mobil-App, die eine Benutzeroberfläche besitzt, die wie der Serial Monitor der Arduino IDE aussieht. Sie kommuniziert über Bluetooth mit dem Arduino. Sie können über diese App mit dem Arduino interagieren, als wäre der Serial Monitor auf Ihrem PC, ohne einen speziellen Code für das Bluetooth-Modul in Ihrem Arduino-Code hinzuzufügen, indem Sie den folgenden Schritt ausführen:

  • Verbinde Arduino mit dem HC-05 Bluetooth-Modul
  • Installiere Bluetooth Serial Monitor App auf deinem Smartphone
  • Öffne die App und koppel sie mit dem HC-05 Bluetooth-Modul

Und jetzt können Sie Daten vom Arduino senden/empfangen, genau wie der Serial Monitor der Arduino IDE. Sie müssen den bestehenden Arduino-Code nicht ändern und auch keinen Bluetooth-Code zum neuen Arduino-Code hinzufügen.

Verdrahtungsdiagramm

Arduino Bluetooth Verdrahtungsdiagramm

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Verdrahtungstabelle

Arduino Pins HC-05 Bluetooth Pins
RX (Pin 0) TX
TX (Pin 1) RX
5V VCC
GND GND
Enable/Key (NOT connected)
State (NOT connected)

※ Notiz:

Sie können andere Arduino-Pins verwenden, indem Sie das Serial-Objekt im Arduino-Code auf ein anderes Serial1, Serial2, ... oder SoftwareSerial ändern, falls verfügbar.

Wie man Bluetooth programmiert

Es ist kein Bluetooth-spezifischer Code erforderlich. Wir müssen lediglich den Serial-Code verwenden.

Arduino sendet Daten an die Bluetooth-App auf dem Smartphone

Um Daten vom Arduino an die Bluetooth-App auf dem Smartphone zu senden, müssen wir den folgenden Arduino-Code verwenden:

In diesem Beispiel senden wir das „Arduino hier, gib mir Befehle!“ vom Arduino an die Bluetooth-App auf dem Smartphone jede Sekunde

/* * Dieser Arduino Code wurde von newbiely.de entwickelt * Dieser Arduino Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino/arduino-bluetooth */ void setup() { Serial.begin(9600); } void loop() { Serial.println("Arduino here, command me!"); delay(1000); }

Schnelle Schritte

  • Installieren Sie die Bluetooth Serial Monitor App auf Ihrem Smartphone.
  • Verbinden Sie das HC-05 Bluetooth-Modul gemäß dem obigen Verdrahtungsdiagramm mit dem Arduino.
  • Kopieren Sie den obigen Code und öffnen Sie ihn in der Arduino IDE.
  • Klicken Sie in der Arduino IDE auf die Upload-Schaltfläche, um den Code auf den Arduino hochzuladen. Möglicherweise gelingt es Ihnen nicht, den Code auf den Arduino hochzuladen. Falls ja, trennen Sie die TX- und RX-Pins vom Bluetooth-Modul, laden Sie den Code erneut hoch und verbinden Sie dann RX- und TX-Pins erneut.
  • Öffnen Sie den Serial Monitor in der Arduino IDE.
  • Öffnen Sie die Bluetooth Serial Monitor App auf Ihrem Smartphone.
  • Wählen Sie den Classic-Bluetooth-Modus.
Bluetooth-Seriemonitor-App
  • Koppeln Sie es mit dem HC-05 Bluetooth-Modul.
Bluetooth-Serieller Monitor-Paarung
  • Siehe das Ergebnis in der Android-App.
Bluetooth-Seriemonitor-App
  • Sieh dir das Ergebnis im seriellen Monitor der Arduino-IDE an.
COM6
Send
Arduino here, command me! Arduino here, command me! Arduino here, command me! Arduino here, command me! Arduino here, command me!
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Sie werden sehen, dass die Daten im Serial Monitor der Arduino IDE und in der Android-App identisch sind.

Bluetooth-App sendet Daten an Arduino

Der untenstehende Code führt Folgendes aus:

  • Bluetooth-App sendet Daten an Arduino
  • Arduino liest Daten und sendet die Antwort zurück an Bluetooth:
/* * Dieser Arduino Code wurde von newbiely.de entwickelt * Dieser Arduino Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino/arduino-bluetooth */ // NOTE: change the Serial to other Serial/Software Serial if you connects Bluetooth module to other pins void setup() { Serial.begin(9600); } void loop() { Serial.println(F("Arduino here, command me!")); if (Serial.available()) { // if there is data comming String command = Serial.readStringUntil('\n'); // read string until meet newline character if (command == "LED OFF") { Serial.println("LED is turned OFF"); // reports action to smartphone app // TODO: control your LED here } else if (command == "LED ON") { Serial.println("LED is turned ON"); // reports action to smartphone app // TODO: control your LED here } } delay(500); }

Schnelle Schritte

  • Kopieren Sie den obigen Code und öffnen Sie ihn mit der Arduino IDE
  • Klicken Sie auf die Upload-Schaltfläche in der Arduino IDE, um den Code auf den Arduino hochzuladen
  • Öffnen Sie den seriellen Monitor in der Arduino IDE
  • Öffnen Sie die Android-App und koppeln Sie sie mit dem HC-05 Bluetooth-Modul (ähnlich dem vorherigen Beispiel)
  • Nach dem Verbinden geben Sie in der Android-App 'LED EIN' oder 'LED AUS' ein und klicken Sie auf die 'Senden'-Schaltfläche
Bluetooth-Seriemonitor-App
  • Arduino empfängt die Daten und gibt die Antwort über den seriellen Port aus. Diese Daten werden an die Bluetooth-App gesendet
  • Siehe das Ergebnis in der Android-App
Bluetooth-Seriemonitor-App
  • Sehen Sie das Ergebnis im Serial Monitor der Arduino IDE
COM6
Send
Arduino here, command me! Arduino here, command me! Arduino here, command me! Arduino here, command me! Arduino here, command me! Arduino here, command me! LED ON LED is turned ON Arduino here, command me! Arduino here, command me! Arduino here, command me! LED OFF LED is turned OFF Arduino here, command me! Arduino here, command me!
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Sie werden sehen, dass die Daten im Serial Monitor der Arduino IDE und in der Android-App identisch sind.

Arduino-Code - LED mit Smartphone-App über Bluetooth steuern

Der untenstehende Arduino-Beispielcode akzeptiert zwei Befehle („AN“ und „AUS“) von der Bluetooth Serial Monitor App, um eine eingebaute LED ein- oder auszuschalten.

/* * Dieser Arduino Code wurde von newbiely.de entwickelt * Dieser Arduino Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino/arduino-bluetooth */ // NOTE: change the Serial to other Serial/Software Serial if you connects Bluetooth module to other pins #define LED_PIN 8 void setup() { Serial.begin(9600); pinMode(LED_PIN, OUTPUT); // set the digital pin as output: } void loop() { if (Serial.available()) { // if there is data comming String command = Serial.readStringUntil('\n'); // read string until meet newline character if (command == "OFF") { digitalWrite(LED_PIN, LOW); // turn off LED Serial.println("LED is turned OFF"); // reports action to smartphone app } else if (command == "ON") { digitalWrite(LED_PIN, HIGH); // turn on LED Serial.println("LED is turned ON"); // reports action to smartphone app } } }

Sie können die Anweisungen im Detail im Arduino steuert LED über Bluetooth/BLE Tutorial nachlesen.

Arduino-Code - Servomotor mit Smartphone-App über Bluetooth steuern

Der untenstehende Arduino-Code empfängt den Winkelwert von der Bluetooth-Serial-Monitor-App, um den Winkel des Servomotors zu steuern.

/* * Dieser Arduino Code wurde von newbiely.de entwickelt * Dieser Arduino Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino/arduino-bluetooth */ // NOTE: change the Serial to other Serial/Software Serial if you connects Bluetooth module to other pins #include <Servo.h> Servo servo; // create servo object to control a servo int pos = 0; // variable to store the servo position void setup() { Serial.begin(9600); servo.attach(11); // attaches the servo on pin 11 to the servo object } void loop() { if (Serial.available()) { // if there is data comming int angle = Serial.parseInt(); if (angle >= 0 && angle <= 180) { servo.write(angle); // rotate servo Serial.print("Rotated servo to angle: ");// reports action to smartphone app Serial.println(angle); } else { Serial.print("Invalid angle: ");// reports invalid value to smartphone app Serial.println(angle); } } }

Sie können die Anweisungen im Tutorial Arduino steuert Servomotor über Bluetooth/BLE genauer ansehen.

Wenn die Bluetooth-Serial-Monitor-App für Sie nützlich ist, geben Sie ihr bitte eine 5-Sterne-Bewertung im Play Store. Vielen Dank!

Video Tutorial

Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.

Funktionsreferenzen

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!