Bluetooth-Nachrichtenbox¶
Dieses Projekt empfängt Nachrichten und zeigt sie auf einem LCD-Bildschirm an.
Sie können es als Familien-Nachrichtentafel nutzen, um Familienmitglieder, die noch nicht gegangen sind, daran zu erinnern, ihre Schlüssel mitzunehmen.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Kit zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
Elite Explorer Kit |
300+ |
Sie können sie auch separat über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
- |
|
Verdrahtung
Schaltplan
UUID generieren
UUIDs spielen eine entscheidende Rolle bei der BLE-Kommunikation und gewährleisten die Einzigartigkeit von Geräten sowie die Genauigkeit des Datenaustauschs zwischen ihnen. Sie müssen UUIDs anpassen, um Ihre eigenen BLE-Dienste und -Merkmale für spezifische Anforderungen zu erstellen. (Hier müssen wir ein Merkmal erstellen, das Texteingaben unterstützt.)
Verwenden Sie das Online UUID Generator Tool, um UUIDs zu erstellen, die einzigartig für Sie sind, um UUID-Konflikte zu vermeiden.
Erzeugen Sie zwei UUIDs der Version 4.
Kopieren Sie sie und ersetzen Sie die beiden UUIDs in Ihrem Code.
#define SERVICE_UUID "uuid1" #define CHARACTERISTIC_UUID "uuid2"
Bibliothek installieren
ArduinoBLE.h
: Wird für die Verwaltung von Bluetooth Low Energy (BLE) Kommunikation verwendet.
LiquidCrystal_I2C.h
: Wird verwendet, um einen 16x2-Zeichen-LCD-Bildschirm mit einer I2C-Schnittstelle zu steuern.
Code ausführen
Bemerkung
Sie können die Datei
07_lightblue_lcd.ino
direkt unter dem Pfadelite-explorer-kit-main\iot_project\07_lightblue_lcd
öffnen.Oder kopieren Sie diesen Code in die Arduino IDE.
Bemerkung
Um die Bibliothek zu installieren, verwenden Sie den Arduino-Bibliotheksmanager, um nach „ArduinoBLE“ und „LiquidCrystal I2C“ zu suchen und diese zu installieren.
Wie funktioniert des?
Um mit den in diesem Sketch erstellten Diensten und Merkmalen zu interagieren, sollten Sie eine generische Bluetooth® Low Energy-Zentral-App wie LightBlue (verfügbar für iOS und Android) oder nRF Connect (für Android) verwenden.
Wir verwenden LightBlue als Beispiel, um zu demonstrieren, wie man Arduino’s LED über Bluetooth steuert.
Laden Sie die LightBlue-App aus dem App Store (für iOS) oder Google Play (für Android) herunter.
Verbinden des Arduino mit Ihrem Smartphone über Bluetooth
Gehen Sie zu Ihren Bluetooth-Einstellungen und suchen Sie das Gerät namens „UNO R4 BLE.“ Stellen Sie eine Verbindung dazu her.
Interaktion mit Arduino über Bluetooth mit LightBlue
Starten Sie LightBlue und tippen Sie auf den Reiter Bonded unten in der Schnittstelle. Hier sehen Sie eine Liste der BLE-Geräte, mit denen Ihr Smartphone zuvor gekoppelt wurde. Finden Sie UNO R4 BLE und tippen Sie auf CONNECT.
Nachdem Sie verbunden sind, erhalten Sie Zugang zu detaillierten Informationen über das Bluetooth-Gerät. Scrollen Sie nach unten, um Ihre Dienst-UUID und Ihre Charakteristik-UUID zu finden.
Tippen Sie auf die Charakteristik. Sie werden feststellen, dass diese Charakteristik sowohl lesbar als auch beschreibbar ist, was Ihnen erlaubt, sowohl davon zu lesen als auch darauf zu schreiben.
Scrollen Sie weiter zum Abschnitt „Datenformat“ und ändern Sie ihn auf UTF-8-String. Geben Sie Text in das Textfeld ein und klicken Sie auf schreiben. Die von Ihnen eingegebene Nachricht erscheint auf dem LCD.
Wie funktioniert des?
Hier sind die Hauptteile des Codes und Erklärungen ihrer Funktionen:
Einbinden der erforderlichen Bibliotheken:
ArduinoBLE.h
: Wird für die Handhabung von BLE-Kommunikation verwendet.Wire.h
: Wird für I2C-Kommunikation verwendet.LiquidCrystal_I2C.h
: Wird verwendet, um einen 16x2-Zeichen-LCD-Bildschirm mit einer I2C-Schnittstelle zu steuern.
Definieren eines BLE-Dienstes und einer BLE-Charakteristik:
Verwenden Sie die Klasse
BLEService
, um einen BLE-Dienst zu definieren und ihm eine einzigartige UUID zuzuweisen.Verwenden Sie die Klasse
BLECharacteristic
, um eine BLE-Charakteristik zu definieren, ihr eine einzigartige UUID zuzuweisen und ihr Lese- (BLERead
) und Schreibrechte (BLEWrite
) zu geben.Erstellen Sie ein Zeichen-Array
stringValue
als Anfangswert der Charakteristik.
Initialisieren eines 16x2-Zeichen-LCD-Bildschirms (LCD):
Verwenden Sie die Klasse
LiquidCrystal_I2C
, um ein LCD zu initialisieren, indem Sie die I2C-Adresse (0x27) und die Anzahl der Zeilen und Spalten (16x2) angeben.Schalten Sie die Hintergrundbeleuchtung des LCD ein, löschen Sie den Bildschirm, bewegen Sie den Cursor zum Anfang der ersten Zeile und zeigen Sie „Bluetooth LCD“ an.
Durchführung der Initialisierung in der Funktion
setup()
:Initialisieren der seriellen Kommunikation.
Initialisieren des BLE-Moduls und, falls die Initialisierung fehlschlägt, in eine unendliche Schleife eintreten.
Setzen des lokalen Namens und der Service-UUID für das BLE-Peripheriegerät.
Hinzufügen der BLE-Charakteristik zum BLE-Dienst.
Starten der Werbung für den BLE-Dienst, damit zentrale Geräte ihn entdecken und sich damit verbinden können.
Initialisieren des LCD.
Die Funktion
loop()
:Überprüfen, ob ein zentrales Gerät mit dem BLE-Peripheriegerät verbunden ist, indem
BLE.central()
aufgerufen wird. Wenn ein zentrales Gerät verbunden ist, in die Logik der Verbindungsbearbeitung eintreten.Im verbundenen Zustand überprüfen, ob Daten in die BLE-Charakteristik geschrieben wurden, indem
boxCharacteristic.written()
überprüft wird.Wenn Daten geschrieben wurden, die Länge der geschriebenen Daten mit
boxCharacteristic.valueLength()
ermitteln und ein Byte-Arraybuffer
erstellen, um die geschriebenen Daten zu speichern.Verwenden Sie
boxCharacteristic.readValue()
, um Daten aus der BLE-Charakteristik in denbuffer
zu lesen.Ein Nullzeichen
'\0'
an das Ende desbuffer
hinzufügen, um es in einen String zu konvertieren.Die empfangene Nachricht auf dem seriellen Monitor ausgeben und auf dem LCD anzeigen.
Weiterhin auf das nächste zentrale Gerät warten, das sich verbindet, nachdem das zentrale Gerät getrennt wurde.