Arduino - BLE

In diesem Tutorial werden wir lernen:

Arduino BLE

Der Umfang dieses Tutorials:

Es ist zu beachten, dass dieses Tutorial speziell Bluetooth Low Energy (BLE, Bluetooth 4.0) abdeckt. Wenn Sie Informationen zu Classic Bluetooth (Bluetooth 2.0) suchen, schauen Sie sich bitte ein ähnliches Tutorial Arduino - Bluetooth an.

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×HM-10 BLE 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 HM-10 Bluetooth-Modul

Der HM-10 ist ein serielles BLE-Modul, das als Seriell-zu-Bluetooth Low Energy-Konverter fungiert. Es führt die folgenden Aktionen aus:

  • Empfängt Daten vom Serial RX-Pin und überträgt sie an ein gekoppeltes Gerät wie ein Smartphone über BLE
  • Empfängt Daten über BLE (vom gekoppelten Gerät) und sendet sie an den Serial TX-Pin

Genauer gesagt, wenn man einen Arduino verwendet, um mit einer Smartphone-App (Android/iOS) zu kommunizieren, tritt Folgendes auf:

  • Der Arduino verbindet sich mit dem HM-10 Bluetooth-Modul über die Serial/SoftwareSerial-Pins.
  • Das HM-10 Bluetooth-Modul ist mit einer Smartphone-App gepaart.
  • Der Arduino sendet Daten an die Smartphone-App, indem er sie an den Serial/SoftwareSerial sendet.
  • Der Arduino empfängt Daten von der Smartphone-App, indem er sie vom Serial/SoftwareSerial liest.
  • Es ist kein zusätzlicher BLE-Code auf dem Arduino erforderlich.

Pinbelegung

BLE-Pinbelegung

Das HM-10 BLE-Modul hat 6 Pins:

  • BKR-Pin: Zur Steuerung des Verhaltens des Moduls. Ignorieren Sie diesen Pin, wenn Sie Anfänger sind.
  • RX-Pin: Serieller Datenpin, verbinden Sie diesen Pin mit dem TX-Pin des Arduino. Die von diesem Pin empfangenen Daten werden über Bluetooth gesendet.
  • TX-Pin: Serieller Datenpin, verbinden Sie diesen Pin mit dem RX-Pin des Arduino. Die über BLE empfangenen Daten werden über diesen Pin als serielle Daten gesendet.
  • GND-Pin: Massepin, verbinden Sie diesen Pin mit dem Masseanschluss der Stromquelle.
  • VCC-Pin: Versorgungspin, verbinden Sie diesen Pin mit 3,3 V Versorgungsspannung.
  • STATE-Pin: Zeigt die Arbeitszustände an:
    • Im Standby-Modus blinkt – 500 ms Impuls wiederholt;
    • Im Verbindungszustand – hoher Pegel.

    ※ Notiz:

    • Wir benötigen nur 4 Pins: VCC, GND, RX, TX
    • Einige Hersteller produzieren den HM-10 nur mit vier Pins.

Über Bluetooth-Seriemonitor-App

Die Bluetooth Serial Monitor App ist eine mobile Anwendung, die das Aussehen des Serial Monitors in der Arduino IDE nachbildet. Sie ermöglicht die Kommunikation mit einem Arduino-Board über Bluetooth, ohne dass zusätzlicher Code im Arduino-Sketch erforderlich ist. Um sie zu verwenden, befolgen Sie diese Schritte:

  • Verbinde das Arduino-Board mit einem HM-10 Bluetooth-Modul
  • Lade die Bluetooth Serial Monitor App auf dein Smartphone herunter und installiere sie
  • Öffne die App und verbinde sie mit dem HM-10 Bluetooth-Modul

Nachdem Sie diese Schritte abgeschlossen haben, können Sie nun Daten vom Arduino senden und empfangen, als würden Sie den Serial Monitor in der Arduino-IDE verwenden, ohne Ihren bestehenden Arduino-Code ändern zu müssen oder irgendeinen Bluetooth-spezifischen Code hinzufügen zu müssen.

Verdrahtungsdiagramm

Arduino BLE Verdrahtungsdiagramm

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

Die Verdrahtungstabelle

Arduino Pins HM-10 Bluetooth Pins
RX (Pin 0) TX
TX (Pin 1) RX
5V VCC
GND GND
BKR (NOT connected)
STATE (NOT connected)

※ Notiz:

Der Arduino-Code kann andere Pins verwenden, indem das Serial-Objekt durch eine Alternative wie Serial1, Serial2 oder SoftwareSerial (falls verfügbar) ersetzt wird.

Wie man für Bluetooth programmiert

Es ist kein spezieller Bluetooth-Code erforderlich; nur serieller Code wird benötigt.

Arduino sendet Daten an die Bluetooth-App auf dem Smartphone

Um Daten von einem Arduino-Board an eine Bluetooth-App auf einem Smartphone zu übertragen, kann der folgende Arduino-Code verwendet werden. Dieses Beispiel demonstriert das Senden der Nachricht “Arduino hier, gib mir Befehle!” vom Arduino an die Smartphone-App 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-ble */ void setup() { Serial.begin(9600); } void loop() { Serial.println("Arduino here, command me!"); delay(1000); }

Schnelle Schritte

Um den Code zu verwenden und ein Arduino-Board über BLE mit einem Smartphone zu verbinden, befolgen Sie diese Schritte:

  • Installieren Sie die Bluetooth Serial Monitor App auf Ihrem Smartphone.
  • Verbinden Sie das HM-10 Bluetooth-Modul gemäß dem bereitgestellten Verdrahtungsdiagramm mit dem Arduino-Board.
  • Öffnen Sie die Arduino-IDE, kopieren Sie den oben bereitgestellten Code und laden Sie ihn auf das Arduino-Board hoch. Wenn Sie den Code nicht hochladen können, trennen Sie die TX- und RX-Pins vom Bluetooth-Modul, laden Sie den Code hoch und verbinden Sie anschließend die RX-/TX-Pins.
  • Öffnen Sie den Serial Monitor in der Arduino-IDE.
  • Öffnen Sie auf Ihrem Smartphone die Bluetooth Serial Monitor App und wählen Sie den BLE-Modus aus.
Bluetooth-Seriemonitor-App
  • Koppeln Sie das Smartphone mit dem HM-10 Bluetooth-Modul.
Bluetooth-Seriemonitor-Paarung
  • Beobachten Sie das Ergebnis in der Android-App.
Bluetooth-Seriemonitor-App
  • Beobachten Sie das Ergebnis im seriellen 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!
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Wenn Sie die Schritte befolgen und den Code ausführen, werden Sie feststellen, dass die im Serial Monitor der Arduino-IDE und in der Android-App angezeigten Daten übereinstimmen.

Bluetooth-App Daten an Arduino senden

Der untenstehende Code führt die folgenden Aktionen aus:

  • Sende Daten von der Bluetooth-App an das Arduino-Board
  • Das Arduino-Board wird die eingehenden Daten lesen und dann eine Antwort an das Bluetooth-Gerät zurücksenden.
/* * 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-ble */ // 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

Hier sind die Schritte, um den Code mit Arduino und einer Android-App zu verwenden:

  • Öffnen Sie die Arduino-IDE und fügen Sie den oben bereitgestellten Code ein.
  • Klicken Sie auf die Schaltfläche Hochladen, um den Code auf das Arduino-Board hochzuladen.
  • Öffnen Sie den seriellen Monitor in der Arduino-IDE.
  • Öffnen Sie die Android-App und koppeln Sie sie mit dem HM-10-Bluetooth-Modul gemäß den Anweisungen aus einem früheren Beispiel.
  • Sobald die Verbindung hergestellt ist, geben Sie in der Android-App "LED AN" oder "LED AUS" ein und drücken Sie die Schaltfläche "Senden".
Bluetooth-Seriemonitor-App
  • Das Arduino-Board empfängt die Daten, gibt eine Antwort über den seriellen Port aus. Diese Daten werden an die Bluetooth-App gesendet.
  • Überprüfen Sie das Ergebnis in der Android-App.
Bluetooth-Seriemonitor-App
  • Überprüfen Sie das Ergebnis im seriellen 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  

Nachdem Sie die oben genannten Schritte abgeschlossen haben, werden Sie feststellen, dass die auf dem Serial Monitor der Arduino-IDE und der Android-App angezeigten Informationen dieselben sind.

Arduino-Code – LED mit der Smartphone-App über BLE steuern

Der folgende Arduino-Beispielcode verwendet Befehle “AN” und “AUS”, die über die Bluetooth Serial Monitor App empfangen werden, um eine eingebaute LED ein- bzw. 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-ble */ // 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 controls LED via Bluetooth/BLE Tutorial sehen.

Arduino-Code - Servo-Motor mit Smartphone-App über BLE steuern

Der folgende Arduino-Code empfängt einen Winkelwert von der Bluetooth Serial Monitor-App, um den Winkel eines 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-ble */ // 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 Detail im Arduino controls Servo Motor via Bluetooth/BLE Tutorial ansehen.

Wenn die Bluetooth Serial Monitor-App nützlich für Sie 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!