Inhaltsverzeichnis:

Einfache WLAN-zu-BLE-Brücke (Bluetooth Low Energy) - Gunook
Einfache WLAN-zu-BLE-Brücke (Bluetooth Low Energy) - Gunook

Video: Einfache WLAN-zu-BLE-Brücke (Bluetooth Low Energy) - Gunook

Video: Einfache WLAN-zu-BLE-Brücke (Bluetooth Low Energy) - Gunook
Video: Универсальный шлюз Tuya Smart - Ethernet, Zigbee, Bluetooth mesh 2024, Juli
Anonim
Einfache WLAN-zu-BLE-Brücke (Bluetooth Low Energy)
Einfache WLAN-zu-BLE-Brücke (Bluetooth Low Energy)
Einfache WLAN-zu-BLE-Brücke (Bluetooth Low Energy)
Einfache WLAN-zu-BLE-Brücke (Bluetooth Low Energy)
Einfache WLAN-zu-BLE-Brücke (Bluetooth Low Energy)
Einfache WLAN-zu-BLE-Brücke (Bluetooth Low Energy)

Update 4. Dezember 2017 – Überarbeitete Feather nRF52-Skizzen und Debugging-Tipps. Bilder der im Karton montierten Brücke hinzugefügt

Dieses einfache Projekt bietet WLAN-Zugang zu jedem Bluetooth Low Energy (BLE)-Modul, das Nordics UART mit TX Notify implementiert. Die Wifi2BLE-Bridge ist vollständig transparent. Es leitet einfach die WiFi-Daten an das BLE-Gerät weiter und leitet die Daten des BLE-Geräts zurück an die WiFi-Verbindung.

Der kostenlose pfodDesignerV3 generiert Code, um einen Nordic UART Service auf vielen BLE-Modulen zu implementieren, darunter Adafruit Bluefruit Feather nRF52, Arduino/Genuino 101, RedBearLab BLE Nano V2 und V1-V1.5, RedBearLab BLE Shield, Adafruit Bluefruit LE UART Friend und Flora Boards, Adafruit Bluefruit LE SPI (zB Bluefruit LE Shield, Bluefruit LE Micro, Feather 32u4 Bluefruit LE, Feather M0 Bluefruit LE oder Bluefruit LE SPI Friend) und alle anderen Boards, mit denen Sie Ihren eigenen Service programmieren können.

Diese Wifi2BLE-Brücke ist für unerfahrene Konstrukteure geeignet, die löten können. Es verwendet nur zwei Platinen, ein Flachbandkabel und zwei Widerstände

Neben detaillierten Tests für jede Platine enthält diese Anleitung eine Hilfe - Es funktioniert nicht mit weiteren Tipps zur Fehlersuche.

Diese Anleitung gibt es auch online

Warum dieses Projekt?

Dieses Projekt löst eine Reihe von Problemen, die BLE (Bluetooth Low Energy) hat.

  • Nur neuere Mobiltelefone und Computer unterstützen BLE. Die Wifi2BLE-Bridge ermöglicht es jedem Mobiltelefon oder Computer mit einer WiFi-Verbindung, sich mit dem BLE-Gerät zu verbinden und es zu steuern.
  • BLE hat eine begrenzte Reichweite. Mit der Wifi2BLE-Bridge können Sie von überall im Haus (wo eine WLAN-Verbindung besteht) und von außen über das Internet auf das BLE-Gerät zugreifen.
  • Um BLE-Apps zu erstellen, müssen Sie Android oder iOS lernen. Die Wifi2BLE-Bridge bietet eine universelle Telnet-Verbindung über jedes beliebige Terminalprogramm. Darüber hinaus können Sie dem WiFi-Modul problemlos eine Webseite hinzufügen, um Ihre eigene benutzerdefinierte Schnittstelle zu erstellen.
  • BLE V5 verspricht Mesh-Networking, um alle Ihre BLE-Heimgeräte zu verbinden, sobald die Software die neueste Bluetooth-Spezifikation einholt. Die Wifi2BLE-Bridge verwendet ein BLE V5-Gerät und bietet so bei ihrer Ankunft Internetzugriff auf dieses Heimnetzwerk.

Meine unmittelbare Verwendung für dieses Projekt besteht darin, die BLE-Lichtsteuerung des Wohnzimmers zum WiFi-Netzwerk hinzuzufügen, damit sie von überall im Haus gesteuert werden kann. Obwohl in diesem Tutorial pfodApp als Beispiel für die Steuerung der BLE-Boards über WLAN verwendet wird, müssen Sie pfodApp nicht kaufen, um dieses Projekt abzuschließen.

Schritt 1: Teileliste

Kosten ca. 60 US-Dollar am 30. November 2017, ohne Versand + ein kleines Plastikgehäuse

Adafruit Feather nRF52 Bluefruit LE – nRF52832 – ~US$25

Adafruit HUZZAH ESP8266 Breakout - ~ 10 US-Dollar

Flachbandkabel mit separaten weiblichen Enden – Bus Pirate Cable ~ 5 US$ https://www.sparkfun.com/products/9556 ODER 10-Pin IDC-Buchse Rainbow Breakout Cable ~ US$4 https://www.sparkfun.com/products/ 9556 ODER ähnlich

Abtrennbare Stiftleisten – rechtwinklig – ~ 2 US-Dollar

Serielles USB-zu-TTL-3V3-Kabel – ~ 10 US-Dollar https://www.sparkfun.com/products/12977 (Bevorzugt, da die Pins beschriftet sind) ODER https://www.sparkfun.com/products/12977 (Pins sind NICHT.) beschriftet)

USB-A-zu-Micro-B-Kabel – ca. 4 US-Dollar https://www.sparkfun.com/products/12977 (3 Fuß lang) ODER ca. 3 US-Dollar https://www.sparkfun.com/products/12977 (6 Zoll lang) ODER ~ 2 USD https://www.sparkfun.com/products/12977 (6 Zoll lang) ODER ~ 5 USD https://www.sparkfun.com/products/12977 (6 Fuß lang) ODER ähnlich

2 x 100 Ohm Widerstände – ~ 1 US$

USB-Netzteil (500mA oder mehr) – ~6 US$ https://www.sparkfun.com/products/12890 ODER ~7 US$ https://www.adafruit.com/product/1994 ODER ähnlich

Arduino IDE V1.8.5 und ein Computer zum Ausführen.

Für eine Plastikbox habe ich eine von Jaycar UB5 (blau) 83 mm x 54 mm x 31 mm verwendet

Schritt 2: Wifi2BLE-Schaltung

Wifi2BLE-Schaltung
Wifi2BLE-Schaltung

Die Wifi2BLE-Schaltung ist oben gezeigt. Eine pdf-Version ist hier. Wie Sie sehen, ist die Schaltung sehr einfach. Nur 4 Drähte und zwei 100 Ohm Schutzwiderstände. Die Schutzwiderstände sind für den Fall, dass Sie die TX / RX-Leitungen nach der Programmierung des HUZZAH ESP8266 oder des Feather nRF52 falsch anschließen.

HINWEIS: Die Markierung der Feather nRF52-Platine für die TX- und RX-Pins ist falsch. Der TX-Pin ist tatsächlich der neben dem DFU-Pin und der RX-Pin ist der neben dem MISO-Pin

Stellen Sie sicher, dass Sie die TX/RX-Leitungen wie oben gezeigt anschließen. Glücklicherweise haben die Schutzwiderstände ihren Job gemacht und die Platinen wurden nicht beschädigt, während ich aussortierte, warum die Platinen nicht zueinander passten.

Schritt 3: Wifi2BLE-Aufbau

Wifi2BLE-Aufbau
Wifi2BLE-Aufbau
Wifi2BLE-Aufbau
Wifi2BLE-Aufbau
Wifi2BLE-Aufbau
Wifi2BLE-Aufbau

Rechtwinklige Stiftleisten wurden auf den HUZZAH ESP8266 gelötet, damit er für die Programmierung abgezogen werden kann. Vier Drähte des Flachbandkabels werden verwendet, um die beiden Platinen zu verbinden. Bewahren Sie die Buchsenstecker auf und schneiden Sie das andere Ende des Flachbandkabels ab. Mein Flachbandkabel hatte die gleichen Farben wie das Sparkfun USB-zu-TTL-Programmierkabel, also wählte ich den Draht passend dazu. Schwarz für GND, Rot für 5V+, Orange für TX (Verbindung zu ESP8266 RX) und Braun für RX (Verbindung zu ESP8266 TX)

Ich habe die Schutzwiderstände auf der Rückseite der Feather nRF52-Platine verdrahtet. (Aufmerksame Konstrukteure, die ihre Widerstandscodes kennen, werden sehen, dass ich zwei 68-Ohm-Widerstände anstelle von 100-Ohm-Widerständen verwendet habe) und sie dann mit etwas Schrumpffolie isoliert.

Das rote Kabel wird an den Feather nRF52 USB-Pin gelötet, um den USB 5V aufzunehmen, um das HUZZAH ESP8266-Modul mit Strom zu versorgen, und das schwarze Kabel wird an den Feather nRF52 GND-Pin gelötet.

Das ist alles, außer die Module wie unten beschrieben zu programmieren, in eine Plastikbox zu legen und ein USB-Netzteil in den Feather nRF52 zu stecken.

Schritt 4: Wifi2BLE-Programmierung

Wifi2BLE-Programmierung
Wifi2BLE-Programmierung
Wifi2BLE-Programmierung
Wifi2BLE-Programmierung
Wifi2BLE-Programmierung
Wifi2BLE-Programmierung

Programmierung des HUZZAH ESP8266

Um das Shield zu programmieren, folgen Sie den Anweisungen auf https://github.com/esp8266/Arduino unter Installation mit Boards Manager. Wenn Sie den Boards Manager aus dem Menü Tools → Board öffnen, wählen Sie Type Contributed und installieren Sie die Plattform esp8266. Dieses Projekt wurde mit der ESP8266 Version 2.3.0 kompiliert. Andere Versionen haben ihre eigenen Fehler und funktionieren möglicherweise nicht mit diesem Code.

HINWEIS: Verwenden Sie NICHT die Installation von Adafruit Board, da die hier verwendete Skizze nicht unter diesem Code kompiliert wird.

Schließen und öffnen Sie die Arduino IDE erneut und Sie können nun „Adafruit HUZZAH ESP8266“aus dem Menü Tools → Board auswählen.

Sie müssen auch die neueste Version der pfodESP8266WiFiBufferedClient-Bibliothek installieren. Diese Bibliothek funktioniert mit dem ESP8266.com IDE-Plug-In V2.3. (Wenn Sie zuvor die pfodESP2866WiFi-Bibliothek installiert haben, löschen Sie dieses Bibliotheksverzeichnis vollständig.)

  • a) Laden Sie diese pfodESP8266WiFiBufferedClient.zip-Datei auf Ihren Computer herunter, verschieben Sie sie auf Ihren Desktop oder einen anderen Ordner, den Sie leicht finden können
  • b) Verwenden Sie dann die Arduino 1.8.5 IDE-Menüoption Sketch → Import Library → Add Library, um es zu installieren. (Wenn Arduino die Installation nicht zulässt, da die Bibliothek bereits vorhanden ist, suchen und löschen Sie den älteren Ordner pfodESP8266BufferedClient und importieren Sie diesen dann)
  • c) Stoppen und starten Sie die Arduino IDE neu und unter File->Examples sollten Sie nun pfodESP8266BufferedClient sehen.

Festlegen der Netzwerk-SSID und des Passworts sowie der IP und des Ports

Nachdem Sie die Bibliothek pfodESP8266BufferedClient installiert haben, öffnen Sie die Arduino IDE und kopieren Sie diese Skizze, Wifi_Bridge.ino, in die IDE. Bevor Sie das Modul programmieren, müssen Sie die ssid und das Passwort Ihres Netzwerks einstellen und eine nicht verwendete IP wählen.

Bearbeiten Sie diese drei Zeilen oben auf Wifi_Bridge.ino

char ssid = "*******"; char-Passwort = "**** *****"; char staticIP = "10.1.1.180";

Ich verwende die Fing-App (Android oder iOS), um mein lokales Netzwerk zu scannen und die bereits verwendeten IP-Adressen zu identifizieren. Es ist normalerweise sicher, eine unbenutzte IP im Bereich von 0,180 bis 0,254. zu wählen

Zu Beginn können Sie die PortNr auf 23 belassen, dem Standardport für eine Telnet-Verbindung.

Sobald Sie diese Änderungen vorgenommen haben, können Sie den ESP8266 programmieren.

Programmierung des HUZZAH ESP8266

Um den HUZZAH ESP8266 zu programmieren, schließen Sie das USB-zu-Seriell-Kabel wie auf dem Foto gezeigt an. Überprüfen Sie das Foto und Ihre Verkabelung. Siehe auch ESP8266 Programmiertipps (espcomm fehlgeschlagen)

Ich verwende das Sparkfun USB-auf-TTL-3V3-Seriellkabel, da die TX- und RX-Kabel markiert sind. Stellen Sie sicher, dass das TX-Kabel in den RX-Pin und das RX-Kabel in den TX-Pin eingesteckt ist, wie oben gezeigt. Wenn Sie das Adafruit-Kabel verwenden, sind die Anschlüsse nicht markiert, sondern farbcodiert, rot ist Strom, schwarz ist Masse, grün ist TX und weiß ist RX.

Stecken Sie das USB-zu-Seriell-Kabel in Ihren Computer und wählen Sie den COM-Port im Menü Extras → Port aus. Belassen Sie die Standardeinstellungen für CPU-Frequenz, Flash-Größe und Upload-Geschwindigkeit.

Versetzen Sie dann das Adafruit HUZZAH ESP2866-Modul in den Programmiermodus, indem Sie die GPIO0-Taste gedrückt halten und die Reset-Taste drücken und dann die GPIO0-Taste loslassen. Die GPIO0-LED sollte schwach leuchten. Wählen Sie dann Datei → Hochladen oder verwenden Sie den Rechtspfeil, um das Programm zu kompilieren und hochzuladen. Wenn Sie beim Hochladen eine Fehlermeldung erhalten, überprüfen Sie, ob Ihre Kabelverbindungen mit den richtigen Pins verbunden sind, und versuchen Sie es erneut.

Sobald die Programmierung abgeschlossen ist, sollte die rote LED am Modul aufleuchten. Das zeigt an, dass es sich erfolgreich mit Ihrem lokalen Netzwerk verbunden und den Server gestartet hat, um eine Verbindung zu akzeptieren.

Testen des HUZZAH ESP2866

Um den HUZZAH ESP2866 zu testen, lassen Sie das Programmierkabel angeschlossen und öffnen Sie die Arduino IDE Tools → Serial Monitor und stellen Sie 9600 Baud ein (unten rechts). Öffnen Sie dann ein Terminalprogramm auf Ihrem Computer, ich verwende TeraTerm für Windows und CoolTerm für Mac und verbinde mich mit der IP und PortNr, die Sie in der Wifi_Bridge.ino-Skizze festgelegt haben.

Beim Anschließen sollte die rote LED am Modul zu blinken beginnen, um anzuzeigen, dass eine Verbindung besteht. Sie sollten nun in der Lage sein, in das Terminalfenster Ihres Computers einzugeben und die Zeichen sollten im Monitorfenster der Arduino IDE und umgekehrt erscheinen.

Zeitüberschreitung der WLAN-Verbindung

Der Wifi_Bridge.ino-Code hat eine Verbindungszeit.

uint32_t connectionTimeout = 60000; // 60sek Verbindungszeitüberschreitung

Wenn 60 Sekunden lang keine WLAN-Daten vom HUZZAH ESP8266-Modul empfangen werden, schließt das Modul die Verbindung und wartet auf eine neue. Dies stellt sicher, dass sich das Modul von "halbgeschlossenen" Verbindungen erholt, die auftreten, wenn der Client aufgrund einer schlechten WLAN-Verbindung, eines Stromausfalls am Router oder eines erzwungenen Herunterfahrens des Clients einfach verschwindet. Weitere Informationen finden Sie unter Erkennung halboffener (verworfener) TCP/IP-Socket-Verbindungen.

Dieses Verbindungs-Timeout ist auf 60 Sek. eingestellt. kann aber nach Bedarf verringert oder erhöht werden. Auf 0 zu setzen bedeutet, dass keine Zeitüberschreitung erfolgt, was nicht empfohlen wird.

Programmierung des Feather nRF52

Um den Feather nRF52 zu programmieren, befolgen Sie die Anweisungen zum Herunterladen und Installieren der Arduino Board-Unterstützung für den Feather nRF52. Überprüfen Sie, ob Sie die Platine über das USB-Kabel anschließen und programmieren können.

HINWEIS: Trennen Sie das HUZZAH ESP8266-Modul vom Feather nRF52, bevor Sie versuchen, den Feather zu programmieren

Das Anschließen des Feather nRF52 an ein BLE-Gerät umfasst zwei Schritte. Zuerst die MAC-Adresse (und den Typ) auf dem Gerät identifizieren und überprüfen, ob der Nordic UART-Dienst mit TX Notify unterstützt wird, und dann diese Adresse und diesen Typ in die Brückenskizze übertragen.

Schritt 5: Verbindung zu einem BLE-Gerät

Verbindung mit einem BLE-Gerät
Verbindung mit einem BLE-Gerät
Verbindung mit einem BLE-Gerät
Verbindung mit einem BLE-Gerät
Verbindung mit einem BLE-Gerät
Verbindung mit einem BLE-Gerät

Sobald der HUZZAH ESP8266 programmiert ist, müssen Sie die BLE-Adresse und den Typ des Geräts, mit dem Sie eine Verbindung herstellen möchten, in die Feather nRF52-Skizze codieren. Dies ist ein zweistufiger Prozess. I) Führen Sie das Scanprogramm aus, um BLE-Geräte in der Nähe zu finden, die den Nordic UART Service (TX Notify) implementieren, und kopieren Sie dann die Ausgabe dieses Scanners in die Feather Bridge-Skizze, um eine Verbindung zu diesem Gerät herzustellen.

Scannen nach BLE-Peripheriegeräten

Um kompatible BLE-Peripheriegeräte zu identifizieren, laden Sie das Programm central_bleuart_scanner.ino in Ihren Feather nRF52. Dieses Programm sucht ständig nach neuen Geräten und prüft dann, ob sie den Nordic UART-Dienst mit TX Notify unterstützen.

Nordischer UART-Dienst

Der Nordic UART Service besteht aus drei Teilen, der Service UUID und den RX- und TX-Eigenschaften. Hier ist ein Beispielcode, der von pfodDesignerV3 für den RedBear NanoV2 generiert wurde

BLEService uartService = BLEService("6E400001B5A3F393E0A9E50E24DCCA9E");

BLECharacteristic rxCharacteristic = BLECharacteristic("6E400002B5A3F393E0A9E50E24DCCA9E", BLEWrite, BLE_MAX_LENGTH); BLECharacteristic txCharacteristic = BLECharacteristic("6E400003B5A3F393E0A9E50E24DCCA9E", BLENotify, BLE_MAX_LENGTH);

pfodDesignerV3 kann Beispielcode für eine Reihe von BLE-Modulen generieren. Da es jedoch keine BLE-Spezifikation für eine „Standard“-UART-Verbindung gibt, verwenden nicht alle Module den Nordic UART-Dienst. Beispielsweise verwenden HM-10-Module (Itead BLE-Shield), RFduno und Romeo BLE ihre eigenen einzigartigen uart-Dienste und werden daher nicht mit dem Feather nRF52 verbunden.

Die folgenden Boards werden verbunden:- Adafruit Bluefruit Feather nRF52, Arduino/Genuino 101, RedBearLab BLE Nano V2 und V1-V1.5, RedBearLab BLE Shield, Adafruit Bluefruit LE UART Friend und Flora Boards, Adafruit Bluefruit LE SPI (dh Bluefruit LE Shield, Bluefruit LE Micro, Feather 32u4 Bluefruit LE, Feather M0 Bluefruit LE oder Bluefruit LE SPI Friend) sowie Boards, die mit benutzerdefinierten Services codiert werden können oder Boards, die die BLEPeripheral-Bibliothek verwenden können.

Das hier verwendete Beispielboard ist das Arduino/Genuino 101 mit von pfodDesignerV3 generiertem Code. Mit dem kostenlosen pfodDesignerV3 können Sie pfodApp-Menüs erstellen und dann den Arduino-Code generieren, der erforderlich ist, um genau dieses Menü auf Ihrem Android-Handy mit (kostenpflichtiger) pfodApp anzuzeigen. pfodApp verbindet sich auch über Wifi sowie Bluetooth Classic, BLE und SMS und kann sich so über diese Wifi2BLE-Bridge verbinden. Aber auch wenn Sie pfodApp nicht als Ihre Steuerungs-App verwenden möchten, können Sie den pfodDesignerV3 verwenden, um einen nordischen UART-Dienstcode für Ihr BLE-Board zu generieren.

Dieser Tutorial-Link beschreibt die Einrichtung des Arduino/Genuino 101 BLE und das Erstellen einer einfachen LED-Ein/Aus-Steuerung mit pfodDesignerV3. Die vom pfodDesignerV3 erstellte Skizze ist Arduino101_led_control.ino

Wenn Sie Arduino/Genuino 101 mit Arduino101_led_control.ino programmieren, können Sie sich mit pfodApp verbinden und den folgenden Bildschirm auf Ihrem Android-Handy anzeigen.

Dies ist jedoch nur ein Beispiel und Sie müssen pfodApp nicht kaufen, um dieses Projekt abzuschließen. Der wichtige Teil ist, dass die kostenlose pfodDesignerV3-App Code für das Arduino/Genuino 101 generiert, das einen Nordic UART Service implementiert. Also scannen wir danach.

Dies ist jedoch nur ein Beispiel und Sie müssen pfodApp nicht kaufen, um dieses Projekt abzuschließen. Der wichtige Teil ist, dass die kostenlose pfodDesignerV3-App Code für das Arduino/Genuino 101 generiert, das einen Nordic UART Service implementiert. Also scannen wir danach.

Scannen nach einem nordischen UART-Dienst

Wenn das HUZZAH ESP8266-Modul vom Feather nRF52 getrennt ist, programmieren Sie den Feather nRF52 mit der central_bleuart_scanner.ino und öffnen Sie dann die Arduino IDE Tools → Serial Monitor und stellen Sie die Baudrate auf 9600 ein der erste Screenshot oben.

Wie Sie sehen, hat der Scanner zwei BLE-Geräte gefunden, ein Arduino/Genuino 101 mit einem Nordic UART-Dienst darauf, ABER die TX-Eigenschaft unterstützte Notify nicht. Der Scanner hat auch ein RFduino BLE-Modul gefunden, aber RFduino verwendet nicht den Nordic UART Service, sondern verwendet stattdessen seinen eigenen. Das Bluetooth-Komitee trägt die Schuld dafür, dass es keinen „Standard“-UART-Dienst spezifiziert hat, sondern es jedem Hersteller überlässt, seinen eigenen zu erstellen.

Wie oben beschrieben, wurde der 101-Code von pfodDesignerV3 hauptsächlich für die Verwendung mit pfodApp generiert. pfodApp ist nicht so wählerisch bei TX Notify wie der Feather nRF52 Uart-Code. pfodApp funktioniert mit dem 101 wie programmiert, aber der Feather nRF52 besteht auf TX Notify, sodass eine kleine Änderung am Code erforderlich ist, um den Feather zu erfüllen.

Öffnen Sie die Arduino101_led_control.ino in der Arduino IDE und oben finden Sie diese beiden Zeilen. Die zweite Zeile ist nur eine Beschreibung des Merkmals und hat keinen Einfluss auf die Operation.

BLECharacteristic txCharacteristic = BLECharacteristic("6E400003-B5A3-F393-E0A9-E50E24DCCA9E", BLEIndicate, BLE_MAX_LENGTH);BLEDescriptor txNameDescriptor = BLEDescriptor("2901", "TX – (Indicate)");

Ändere sie in

BLECharacteristic txCharacteristic = BLECharacteristic("6E400003-B5A3-F393-E0A9-E50E24DCCA9E", BLENotify, BLE_MAX_LENGTH); BLEDescriptor txNameDescriptor = BLEDescriptor("2901", "TX - (Benachrichtigen)");

Dann programmieren Sie den 101 mit dieser bearbeiteten Version Arduino101_Notify_led_control.ino neu. Wenn Sie dann den Feather nRF52-Scanner (central_bleuart_scanner.ino) erneut ausführen, zeigt der Serial Monitor den zweiten Screenshot oben an.

Jetzt gibt es keine Fehler für den Genuino 101 und der Scanner druckt den Code aus, der für die Feather nRF52-Brückenskizze benötigt wird, damit er sich mit dem 101 verbindet. Der Scanner überprüft jedes Gerät, das er in Reichweite findet. Die rote LED blinkt einmal für jedes Gerät, das mit Nordic UART Service (TX Notify) gefunden wurde.

Schritt 6: Anschließen an ein BLE-Peripheriegerät

LED-Anzeigen

Der Feather nRF52 hat zwei LEDs, Blau und Rot. Wenn das Board an ein BLE-Gerät angeschlossen ist, leuchtet die blaue LED konstant, ansonsten blinkt sie. Der Scanner bleibt nicht mit dem Gerät verbunden, daher blinkt seine blaue LED normalerweise. Die rote LED blinkt einmal für jedes Nordic UART Service (TX Notify) Gerät. Beim Betrieb als Scanner zählt die rote LED die Anzahl der gefundenen Nordic UART Service (TX Notify)-Geräte. Beim Betrieb als Bridge blinkt die rote LED einmal, wenn sie mit der Code-BLE-Adresse verbunden ist.

Anschließen an ein BLE-Peripheriegerät

Nachdem die Scannerskizze nun die Details für das BLE-Gerät bereitgestellt hat, mit dem Sie eine Verbindung herstellen möchten, können Sie die Ausgabe in die central_bleuart_bridge.ino-Skizze kopieren. Oben in dieser Skizze finden Sie den folgenden Code.

// Diese nächsten drei Codezeilen stammen aus der Ausgabe von central_bleuart_scanner.ino

const char *BLE_NAME = "GENUINO 101-FC8F"; const char *BLE_ADDRESS = "98:4F:EE:0C:FC:8F"; const uint8_t BLE_ADDRESS_TYPE = 0;

Ersetzen Sie die drei Codezeilen durch die Ausgabe des Scanners für das BLE-Gerät, zu dem Sie überbrücken möchten. Programmieren Sie dann den Feather nRF52 mit der bearbeiteten central_bleuart_bridge.ino-Skizze.

Testen der central_bleuart_bridge-Skizze

Bevor Sie den HUZZAH ESP8266 wieder an den Feather nRF52 anschließen, testen Sie die Verbindung zu Ihrem BLE-Gerät. Lassen Sie den Feather nRF52 mit Ihrer Arduino IDE verbunden, öffnen Sie Tools → Serial Monitor bei 9600 Baud und überprüfen Sie dann, ob Ihr Ziel-BLE-Gerät eingeschaltet ist.

Wenn die Verbindung zu Ihrem BLE-Gerät wie oben beschrieben hergestellt wird, leuchtet die blaue LED konstant und die rote LED blinkt etwa alle 10 Sekunden. Dadurch kann die Verbindung nicht hergestellt und aufrechterhalten werden.

Dann können Sie im Serial Monitor die Befehle eingeben, die Sie voraussichtlich an Ihr BLE-Gerät senden, und beobachten, wie es funktioniert und alle Antworten überwachen, die es zurücksendet. Wenn alles in Ordnung ist, können Sie das HUZZAH ESP8266-Modul ausschalten und einstecken.

Schritt 7: Verbinden mit dem BLE-Gerät über WLAN – alles zusammenfügen

Sobald Sie das HUZZAH ESP8266-Modul mit seinem Bridge-Code (Wifi_Bridge.ino) für Ihre Netzwerk-SSID und Ihr Passwort und Ihre IP konfiguriert und getestet haben UND den Feather nRF52 mit seinem Bridge-Code (central_bleuart_bridge.ino) programmiert und getestet haben, der mit der Adresse des BLE-Geräts konfiguriert ist und tippen, dann können Sie sie zusammenstecken und eine USB-Versorgung an das Federmodul anschließen, um sie beide mit Strom zu versorgen.

Die rote LED des HUZZAH-Moduls sollte dauerhaft leuchten, wenn sie mit Ihrem lokalen Netzwerkrouter verbunden wird, und die blaue LED sollte dauerhaft leuchten, wenn sie mit Ihrem BLE-Gerät verbunden wird, und die rote LED sollte einmal alle 10 Sekunden blinken, um anzuzeigen, dass sie eingeschaltet ist BLE-Gerät ist angeschlossen.

Öffnen Sie Ihr Telnet-Programm und verbinden Sie sich mit der IP und dem Port des HUZZAH. Die rote HUZZAH-LED sollte langsam blinken, um anzuzeigen, dass Ihr Programm verbunden ist, und Sie sollten über WLAN Befehle an Ihr BLE-Gerät senden und den Betrieb des BLE-Geräts beobachten und jede Antwort in Ihrem Telnet-Fenster sehen. Denken Sie daran, dass, wenn Ihr BLE-Gerät 60 Sekunden lang keine Daten zurücksendet, der HUZZAH-Code die Verbindung abbricht und die Verbindung trennt und die rote HUZZAH-LED wieder leuchtet.

Schritt 8: Hilfe – es funktioniert nicht

Führen Sie zuerst die oben beschriebenen Testschritte durch, Testen des HUZZAH ESP2866 und Testen der central_bleuart_bridge-Skizze.

Probleme beim Scannen

Wenn der Scanner Ihr BLE-Gerät nicht finden kann, ist es entweder zu weit entfernt oder zeigt keine Werbung an oder ist bereits mit etwas verbunden. Versuchen Sie, den Scanner näher zu bewegen und das Gerät aus- und wieder einzuschalten und alle anderen in der Nähe befindlichen Mobilgeräte auszuschalten, die möglicherweise eine Verbindung zum BLE-Gerät haben.

Wenn Sie eine solche Scannerausgabe erhalten.

Verbunden mit 98:4F:EE:0C:FC:8F Suche nach Nordic UART-Dienst … Keine gefunden ODER Nicht auffindbar!!!!! Es konnte kein nordischer UART-Dienst identifiziert werden !!!!!!!! Wenn Sie einen Nordic UART Service erwartet haben, bewegen Sie den Scanner näher an das BLE-Gerät !!!!

Es kann sein, dass Sie sich nahe genug am BLE-Gerät befinden, um es zu erkennen, aber nicht nah genug, um eine Diensterkennung erfolgreich durchzuführen, um den Nordic UART-Dienst zu finden. Versuchen Sie, näher an das BLE-Gerät heranzukommen.

Als letzten Ausweg können Sie die kostenlose Nordic nRF Connect App für Android oder iOS verwenden. Diese App hat eine bessere Reichweite und Empfindlichkeit. Es zeigt Ihnen an, ob das BLE-Gerät über einen Nordic UART-Dienst verfügt. Sie müssen den Scanner jedoch immer noch zum Laufen bringen, eine Verbindung herstellen und den Nordic UART-Dienst identifizieren, bevor Sie versuchen, die Wifi2BLE-Bridge zu verwenden, da sie einen ähnlichen Code wie der Scanner verwendet.

Wenn Sie tiefer graben möchten, können Sie das Adafruit Bluefruit LE Sniffer-Modul verwenden, um zu sehen, was in der Luft liegt.

BLE-Verbindungsprobleme

Wenn Sie es geschafft haben, das BLE-Gerät zu scannen, sind die wahrscheinlichsten Ursachen für Verbindungsprobleme I) das BLE-Gerät ist zu weit entfernt, II) etwas anderes hat sich bereits mit dem BLE-Gerät verbunden

Probleme mit der WLAN-Verbindung

Wenn die rote LED des HUZZAH ESP8266 nicht durchgehend leuchtet, hat sie keine Verbindung zu Ihrem Netzwerk über Ihren Router. Überprüfen Sie die ssid und das Passwort, das Sie in Wifi_Bridge.ino haben, und verwenden Sie die Fing-App für Android oder iOS, um zu überprüfen, ob die von Ihnen zugewiesene IP nicht bereits verwendet wird. Versuchen Sie, alle Ihre Computer und Geräte auszuschalten und den Router aus- und wieder einzuschalten (lassen Sie ihn 20 Sekunden lang ausgeschaltet) und scannen Sie dann erneut mit Fing. Wenn die Verbindung schließlich abbricht, erinnern Sie sich an die Einstellung für die Verbindungszeitüberschreitung im Wifi_Bridge.ino-Code.

Schritt 9: Erweiterungen und Fazit

Das hier vorgestellte Projekt ist die einfachste Version. Es gibt eine Reihe von möglichen Erweiterungen wie:

  • Der Feather nRF52 kann sich mit bis zu 4 BLE-Geräten gleichzeitig verbinden, sodass Sie den Code ändern können, um mehr gültige Adressen hinzuzufügen und bis zu 4 Geräte über eine WLAN-Verbindung zu steuern. Sehen Sie sich den Beispielcode an, der mit der Installation des Feather nRF52-Boards geliefert wird.
  • Sie könnten ein Loch in Ihren Router stanzen, um von überall im Internet auf das BLE-Gerät zugreifen zu können. Siehe Verbinden von DIY-IoT-Geräten mit dem Internet mit pfodApp.
  • Sie können den Code von Cheap/Simple Wifi Shield verwenden, um die WLAN-Netzwerkparameter für den HUZZAH über eine Webseite ohne Neuprogrammierung zu konfigurieren. Sie müssten dem Stromkreis einen Konfigurationstaster hinzufügen.
  • Sie können eine Konfigurationstaste hinzufügen (mit derselben Taste wie oben), die den Feather nRF52 veranlasst, mit einem Nordic UART (TX Notify) nach BLE-Geräten zu suchen und dann die Verbindungsdetails für das Gerät mit dem stärksten Signal zu speichern. Um das Ergebnis zu speichern, müssen Sie die nffs-Bibliothek verwenden, die mit der Installation des Adafruit nRF52-Boards geliefert wird.
  • Sie können dem HUZZAH ESP8266-Code eine Webseite hinzufügen, um eine benutzerdefinierte Schnittstelle für Ihr BLE-Gerät bereitzustellen. Sie können auch pfodDesignerV3 verwenden und pfodApp eine benutzerdefinierte Schnittstelle hinzufügen, ohne dass dieses Projekt geändert wird.

Abschluss

Dieses einfache Projekt bietet WLAN-Zugang zu jedem Bluetooth Low Energy (BLE)-Modul, das Nordics UART mit TX Notify implementiert. Die Wifi2BLE-Bridge ist vollständig transparent. Es leitet einfach die WiFi-Daten an das BLE-Gerät weiter und leitet die Daten des BLE-Geräts zurück an die WiFi-Verbindung.

Der einfache Aufbau und die ausführliche Testanleitung machen dieses Projekt zu einem geeigneten Projekt für Einsteiger, die von ihrem Computer oder von außerhalb des normalen Bereichs der BLE auf ihr BLE-Gerät zugreifen möchten.

Dieses Projekt wird an Bedeutung gewinnen, sobald die BLE-Gerätesoftware die neue Bluetooth V5 Mesh-Spezifikation einholt. Dann bietet Wifi2BLE den Internetzugang für Ihre gesamte Hausautomation.

Empfohlen: