BLE unter dem Mikroskop (24-52 Link)

Bild


BLE unter dem Mikroskop (24-52 Link)



NORDIC stellt seit mehreren Jahren neue Kristalle der nRF52-Serie her. Viele verwenden jedoch immer noch die ältere nRF24-Familie. Heute werde ich Ihnen zeigen, wie Sie die wechselseitige Kommunikation zwischen ihnen auf Werbekanälen organisieren können. Mithilfe der Fähigkeit des nRF52-Kristalls, den RSSI-Pegel zu messen, werden wir ihn in einem Diagramm darstellen.



Verbindungsoptionen



Als ich das nordische Forum über die drahtlosen Funktionen zwischen der alten und der neuen Familie las, sah ich, dass es zwei Möglichkeiten gibt. Dies ist das ESB-Protokoll (Enhanced Shock Burst) und ein Add-On darüber - das Gazell-Protokoll. Das ist sicherlich gut, aber es gibt eine Reihe von Schwierigkeiten. Auf der nRF24-Seite sind dies die Quellen in nRFgo_SDK_2.3.0 nur für die Module nrf24le1 und nrf24lu1 (nRF24L01-Bundle + Mikrocontroller). Unter Funkamateuren ist ein solches Modul ohne Controller jedoch weiter verbreitet.



Abb.1

BildVon der Seite von nRF52 ist auch nicht alles glatt. Im SDK werden die Protokolle ESB und Gazell in Form von vorgefertigten, kompilierten Modulen angegeben, die kein Eis sind. Wir werden sie auf der untersten Ebene verknüpfen und direkt mit Registern arbeiten. In seinem dritten ArtikelIch habe bereits beschrieben, wie man mit nRF51822 ein Beacon erstellt. Es wird auch interessant sein, diese Veröffentlichung zu lesen .



Zunächst ein paar Worte zu dem System, das wir bauen werden. Wir empfangen und senden auf Werbekanälen im BLE-Paketformat. Dies ermöglicht die Verwendung eines Mobiltelefons und des NRF Connect-Programms ( Android und iOS)) Sehen Sie unsere Pakete in der Luft. Dies wird uns sehr helfen und es uns ermöglichen, die ursprüngliche Aufgabe in Stufen zu unterteilen. Wir werden einen Host mit einem Funkkanal auf nRF24L01 und ein Gerät auf m / c nRF52832 haben. Darüber hinaus seit nRF24L01 ist nur ein Funkkanal, es wird eine Steuerung benötigt. Wir werden zwei Projekte gleichzeitig auf verschiedenen m / c von der ST-Firma erstellen. Der Host sendet mehrmals pro Sekunde ein Funkpaket. Das Gerät empfängt es, misst den RSSI-Pegel und sendet ein Antwortpaket zurück, das seinen Wert enthält. Nach dem Empfang einer Antwortnachricht gibt der Host ein Byte mit der RSSI-Ebene an den COM-Port aus. Um die Änderung des Empfangspegels visuell zu verfolgen, habe ich ein kleines grafisches Programm geschrieben .



Host Nrf24L01 + Stm8L152



Beginnen wir also mit dem Host auf dem Link Nrf24L01 + Stm8L152. Für diese Aufgabe habe ich das Modul Nrf24L01, dessen Foto oben angegeben ist, und STM8L-DISCOVERY, ein auf STM8L152C6T6 basierendes Debugboard, verwendet. Unten finden Sie die Pinbelegung des Moduls nRF24L01.



Abb. 2

Bild



Pinbelegung von STM8L-DISCOVERY
#define LED_PORT GPIOC

#define LED_PIN GPIO_Pin_7

#define IRQ_PORT GPIOE

#define IRQ_PIN GPIO_Pin_0

#define CE_PORT GPIOD

#define CE_PIN GPIO_Pin_1

#define SPI_CLK_PORT GPIOE

#define SPI_CLK_PIN GPIO_Pin_4

#define SPI_MISO_PORT GPIOE

#define SPI_MISO_PIN GPIO_Pin_2

#define SPI_MOSI_PORT GPIOE

#define SPI_MOSI_PIN GPIO_Pin_5

#define SPI_CSN_PORT GPIOD

#define SPI_CSN_PIN GPIO_Pin_0



Abb. 3

Bild

Zur Ausgabe von Daten an den COM-Anschluss wurde ein USB-Adapter für m / s cp2102 verwendet, der an die PC2- und PC3-Beine angeschlossen war. Den Treiber erhalten Sie hier. Am Ende ist das passiert.



Abb.4

Bild



Auf dem Modul nRF24L01 sehen Sie einen gelöteten Elektrolytkondensator zwischen den Stromanschlüssen. Es wird empfohlen, es für einen stabilen Betrieb des Moduls einzustellen. Das komplette Projekt und die Firmware finden Sie hier und hier... Sie können es mit der IAR for Stm8-Entwicklungsumgebung öffnen. Wir flashen das m / c und starten es. Die blaue LED auf der STM8L-DISCOVERY-Karte blinkt zweimal pro Sekunde und zeigt das Senden von Paketen an. Jetzt ist es an der Zeit, das NRF Connect-Programm zu starten und so etwas wie das in Abb. 5a gezeigte Bild zu sehen. Wenn Sie erfolgreich sind, herzlichen Glückwunsch, ist die erste Hälfte der Aufgaben abgeschlossen.



Fig. 5a ________________________________ Fig. 5b _______________________________ Fig. 5c ______________________________

Bild



Host Nrf24L01 + stm32F103



Um nicht weit von der Arbeit des Hosts entfernt zu sein, wiederholen wir dies trotzdem für den stm32F103 m / c. Dazu habe ich eine "blaue Pille" mit einem darauf installierten USB-Anschluss genommen. Dies ermöglichte es, keinen Adapter zu verwenden, sondern mit diesen Treibern Daten direkt an den USB-Anschluss auszugeben . Ich habe ein Projekt für stm32F103 in STM32CubeMx zusammengestellt.



Pinbelegung von der blauen Pillenseite
#define SPI_CE_PORT GPIOB

#define SPI_CE_PIN GPIO_PIN_4

#define SPI_IRQ_PORT GPIOB

#define SPI_IRQ_PIN GPIO_PIN_5

#define SPI_MISO_PORT GPIOB

#define SPI_MISO_PIN GPIO_PIN_6

#define SPI_CLK_PORT GPIOB

#define SPI_CLK_PIN GPIO_PIN_7

#define SPI_MOSI_PORT GPIOB

#define SPI_MOSI_PIN GPIO_PIN_8

#define SPI_CSN_PORT GPIOB

#define SPI_CSN_PIN GPIO_PIN_9



Abb.6

Bild



Das Projekt selbst und die Firmware können hier und hier übernommen werden . Sie können es mithilfe der IAR for Stm32-Entwicklungsumgebung öffnen. Mit jedem Programmierer kann der STM32F103 programmiert werden. Ich habe diesen benutzt.



Abb. 7 Wir

Bild



schließen das Netzteil an und versuchen, die Pakete auf Werbekanälen zu sehen. Das Bild ist das gleiche wie in Abb. 5a. Auf dieser Platine blinkt nichts, beide LEDs leuchten kontinuierlich. Ich konnte die grüne LED am PC13-Bein nicht wiederbeleben. Die Sendefrequenz ist höher als auf der Karte mit stm8L152 und beträgt 10 Hz. Alle diese Parameter können innerhalb von Projekten leicht geändert werden.



Gerät Nrf52832



Wir gehen also davon aus, dass der erste Teil des Systems mit dem Host für uns funktioniert. Jetzt starten wir Device. Dies kann mit einem geeigneten KIT von NORDIC PCA10040 erfolgen.



Abb.8

Bild



Sie können auch jede Karte mit m / k nRF52832 verwenden. Ich werde ein Brett aus einem alten Design verwenden. Aber beim PCA10040-Kit, das ich überprüft habe, startet es auch. Das Projekt und die Firmware sind hier und hier . Es ist in der Keil uVision4 Umgebung mit dem alten SDK12.3.0 gebaut, die ergriffen werden können , hier... Damit das Projekt problemlos erstellt werden kann, muss sich sein Ordner im Verzeichnis nrf52832_workspace_SDK12 \ examples \ peripher \ befinden. Tatsache ist, dass jedes Projekt von NORDIC eine große Anzahl verwandter Links enthält, sodass es nicht an einem beliebigen Ort gesammelt wird. Zum Flashen von nRF52832 können Sie das Programm nRFgoStudio oder nRF Connect for Desktop verwenden .



Wenn Sie ein Geräteprojekt starten, würde ich empfehlen, dies zuerst zu tun. weil Das Gerät arbeitet im Broadcast-Listening-Modus und sendet keine Funkpakete in der Luft. Dies geschieht nur als Antwort, nachdem ein Paket vom Host empfangen wurde. Daher müssen Sie zuerst überprüfen, ob das Gerät aktiv ist. Dazu müssen Sie die Funktion BleListen () im Projekt auskommentieren und im Gegenteil die Funktion BleRadioTransaction () auskommentieren. Wie nachfolgend dargestellt.



Bild



In diesem Fall beginnt das Gerät selbst mit der Übertragung von Funkpaketen. Sie können am Telefon gesehen werden. Ein Beispielbild ist in Fig. 5b gezeigt. Wenn alles in Ordnung ist, schalten wir alles zurück und schalten sowohl den Host als auch das Gerät ein. Am Telefon sollten wir beide sehen, wie in Abb. 5c. Dies bedeutet, dass das Gerät die Nachricht des Hosts gesehen und als Antwort eine eigene gesendet hat. Wenn der Host wiederum eine Antwortnachricht mit der RSSI-Ebene erhalten hat, setzt er diesen Wert auf den COM-Port. Wenn wir nun das LevelRssi- Programm unter Windows ausführen und den richtigen Port auswählen, werden wir sehen, wie sich der RSSI-Level mit einer anderen relativen Position der Geräte ändert.



Fazit



Ich hatte den Artikel fast fertig vorbereitet, als ich einen anderen Gedanken bekam. Ich entschied mich für ein gängigeres Gerät als Gerät, nämlich den pca10059- Dongle , der auf dem nRF52840 m / c basiert. Hier ist sein Foto.



Abb. 9

Bild

Zum Glück hatte ich zwei solche Boards. Nachdem ich das Projekt neu erstellt hatte, stieß ich auf das Problem, die Firmware darin hochzuladen. Ich wusste, dass ich dies mit nRF Connect for Desktop tun musste, aber nicht sofort herausgefunden, wie man den Dongle in den DFU-Modus (Firmware Update) versetzt. Hier erfahren Sie, wie es geht. Wir gelangen sofort nach dem Zurücksetzen in den DFU-Modus. Sie müssen zuerst den Dongle an den USB-Anschluss anschließen und dann die Reset-Taste (am weitesten vom Prozessor entfernt) mit einem horizontalen Drücker drücken. Die rote LED am Dongle beginnt zu blinken. Öffnen Sie das Programm nRF Connect und klicken Sie im Bereich Programmer auf die Schaltfläche "Installieren". Wenn die erforderliche Software heruntergeladen wurde, klicken Sie auf die Schaltfläche "Öffnen".



Abb. 10 Das

Bild



Programmierfenster wird vor Ihnen geöffnet.



Abb. 11

Bild



Wählen Sie oben links den gewünschten COM-Anschluss aus. Sie sehen so etwas wie das folgende Bild.



Abb. 12

Bild



Auf der linken Seite sehen wir, was sich im Speicher des Controllers befindet. Durch Klicken auf die Schaltfläche "HEX-Datei hinzufügen" können Sie rechts eine Datei zum Füllen hinzufügen. Hier gab es auch einige Probleme. Die Schaltflächen "Alle löschen" und "Löschen & Schreiben" stehen uns nicht zur Verfügung. Tatsache ist, dass der Dongle keinen Programmierer hat, so dass das Programm mit dem Bootloader geladen wird. Und wir kommen durch die MBR-Sektion hinein. Wenn wir diese Abschnitte löschen, ist die Firmware über den DFU-Modus nicht möglich. Theoretisch müssen Sie nur der rechten Bildschirmhälfte Firmware hinzufügen und auf die Schaltfläche "Schreiben" klicken. Alles scheint korrekt zu sein, wird aber nicht funktionieren. Unser Programm startet bei Adresse Null im FLASH-Speicher, und diese Adresse ist bereits von der MBR-Partition belegt. Wie Sie damit umgehen, lesen Sie in diesem Tutorial.... Wenn Sie lange lesen oder nicht, werde ich dies anhand von Keils Beispiel in Bildern erklären. Hier ist ein Bild eines Projekts mit Mikrocontroller-Speicherzuordnung für Nicht-Stack-Projekte.



Abb. 13

Bild



Der FLASH-a-Zeiger muss auf 0x1000 und der RAM auf 0x20000008 verschoben und das Projekt neu kompiliert werden.



Abb.14

Bild



Danach können Sie das Programm nRF Connect for Desktop bereits verwenden. Das ist wahrscheinlich alles. Sie können sehen, was ich im Video unten getan habe.



yadi.sk/i/BGQQnga1HeN50A

yadi.sk/i/d8A9pU82kBcTMw

yadi.sk/i/XGac8xwpksVX7g



Mitarbeiter der Caesar Satellite Unternehmensgruppe

Vladimir Pecherskikh



All Articles