BLE sous le microscope (lien 24-52)

image


BLE sous le microscope (lien 24-52)



NORDIC produit de nouveaux cristaux de la série nRF52 depuis plusieurs années. Cependant, beaucoup utilisent encore l'ancienne famille nRF24. Aujourd'hui je vais vous montrer comment organiser une communication bidirectionnelle entre eux sur les canaux publicitaires. De plus, en utilisant la capacité du cristal nRF52 à mesurer le niveau RSSI, nous allons le tracer sur un graphique.



Options de connexion



En lisant le forum nordique sur les capacités sans fil entre les anciennes et les nouvelles familles, j'ai vu qu'il y avait deux possibilités. Il s'agit du protocole ESB (Enhanced Shock Burst) et d'un add-on - le protocole Gazell. C'est certainement une bonne chose, mais il y a un certain nombre de difficultés. Côté nRF24, c'est ce que sont les sources dans nRFgo_SDK_2.3.0 uniquement pour les modules nrf24le1 et nrf24lu1 (bundle nRF24L01 + microcontrôleur). Cependant, chez les radioamateurs, un tel module sans contrôleur est plus répandu.



Fig.1

imageDu côté de nRF52, tout n'est pas non plus fluide. Dans le SDK, les protocoles ESB et Gazell sont donnés sous la forme de modules compilés prêts à l'emploi, ce qui n'est pas de la glace. Nous les lierons au niveau le plus bas, en travaillant directement avec les registres. Dans son troisième articleJ'ai déjà décrit comment créer une balise en utilisant nRF51822. Il sera également intéressant de lire cette publication .



Tout d'abord, quelques mots sur le système que nous allons construire. Nous recevrons et transmettrons sur les canaux publicitaires au format de paquets BLE. Cela permettra d'utiliser un téléphone portable et le programme NRF Connect ( Android et iOS) voir nos forfaits à l'antenne. Cela nous aidera grandement et nous permettra de diviser la tâche initiale en étapes. Nous aurons un hôte avec un canal radio sur nRF24L01 et un appareil sur m / c nRF52832. De plus, depuis nRF24L01 est juste un canal radio, il aura besoin d'un contrôleur. Nous créerons deux projets à la fois sur des m / c différents de la société ST. L'hôte diffusera un paquet radio plusieurs fois par seconde. L'appareil le recevra, mesurera le niveau RSSI et renverra un paquet de réponse, qui contiendra sa valeur. Après avoir reçu un message de réponse, l'hôte affichera un octet avec le niveau RSSI vers le port COM. Afin de suivre visuellement le changement du niveau de réception, j'ai écrit un petit programme graphique .



Hôte Nrf24L01 + Stm8L152



Commençons donc par l'hôte sur le lien Nrf24L01 + Stm8L152. Pour cette tâche, j'ai pris le module Nrf24L01, dont la photo a été donnée ci-dessus, et STM8L-DISCOVERY, une carte de débogage basée sur STM8L152C6T6. Voici le brochage du module nRF24L01.



Fig. 2

image



Brochage de 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



Fig. 3

image

Pour envoyer des données sur le port COM, un adaptateur USB vers m / s cp2102 a été utilisé connecté aux jambes PC2 et PC3. Vous pouvez obtenir son pilote ici. En fin de compte, c'est ce qui s'est passé.



Fig.4

image



Sur le module nRF24L01, vous pouvez voir un condensateur électrolytique soudé entre les broches d'alimentation. Il est recommandé de le régler pour un fonctionnement stable du module. Le projet complet et le firmware peuvent être trouvés ici et ici... Vous pouvez l'ouvrir à l'aide de l'environnement de développement IAR for Stm8. Nous flasquons le m / c et le lançons. La LED bleue sur la carte STM8L-DISCOVERY clignotera 2 fois par seconde, indiquant l'envoi des colis. Il est maintenant temps de démarrer le programme NRF Connect et de voir quelque chose comme l'image illustrée à la figure 5a. Si vous réussissez, félicitations, la première moitié des tâches est terminée.



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

image



Hôte Nrf24L01 + stm32F103



Afin de ne pas aller loin du travail de l'hôte, nous allons répéter la même chose pour le stm32F103 m / c. Pour ce faire, j'ai pris une "pilule bleue" avec un connecteur USB installé dessus. Cela a permis de ne pas utiliser d'adaptateur, mais de sortir des données directement sur le port USB à l'aide de ces pilotes . J'ai mis en place un projet pour stm32F103 dans STM32CubeMx.



Brochage du côté bleu de la pilule
#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



Fig.6

image



Le projet lui-même et le firmware peuvent être pris ici et ici . Vous pouvez l'ouvrir à l'aide de l'environnement de développement IAR pour Stm32. N'importe quel programmeur peut être utilisé pour programmer le STM32F103. J'ai utilisé celui-ci.



Fig. 7 Nous

image



connectons l'alimentation électrique et essayons de voir les paquets sur les canaux publicitaires. L'image sera la même que sur la Fig5a. Rien ne clignote sur cette carte, les deux voyants sont allumés en continu. Je n'ai pas pu réactiver la LED verte sur la jambe PC13. La fréquence d'envoi est plus élevée que sur la carte avec stm8L152 et est de 10 Hz. Tous ces paramètres peuvent être facilement modifiés dans les projets.



Appareil Nrf52832



Donc, nous supposerons que la première partie du système avec l'hôte fonctionne pour nous. Nous allons maintenant lancer Device. Cela peut être fait sur un KIT approprié de NORDIC PCA10040



Fig.8

image



Vous pouvez également utiliser n'importe quelle carte avec m / k nRF52832. J'utiliserai une planche d'un ancien design. Mais sur le kit PCA10040, j'ai vérifié, ça démarre aussi. Le projet et le firmware sont ici et ici . Il est construit dans l'environnement Keil uVision4 en utilisant l'ancien SDK12.3.0, qui peut être pris ici... Pour que le projet soit généré sans problème, son dossier doit être placé dans le répertoire nrf52832_workspace_SDK12 \ examples \ périphérique \. Le fait est que tout projet de NORDIC contient un grand nombre de liens connexes, il ne sera donc pas collecté dans un endroit arbitraire. Pour flasher le nRF52832, vous pouvez utiliser le programme nRFgoStudio ou nRF Connect for Desktop .



Lors du lancement d'un projet Device, je recommanderais de le faire en premier. Parce que L'appareil fonctionne en mode d'écoute de diffusion, il n'envoie pas de paquets radio à l'antenne. Cela ne se produira qu'en réponse, après avoir reçu un paquet de l'hôte. Par conséquent, vous devez d'abord vérifier que le périphérique est actif. Pour ce faire, vous devez commenter la fonction BleListen () dans le projet et, au contraire, décommenter BleRadioTransaction (). Comme indiqué ci-dessous.



image



Dans ce cas, l'appareil lui-même commencera à diffuser des paquets radio. Ils peuvent être vus au téléphone. Un exemple d'image est montré sur la figure 5b. Si tout va bien, nous remettons tout en marche et allumons les périphériques hôte et périphérique. Au téléphone, nous devrions voir les deux, comme sur la figure 5c. Cela signifie que l'appareil a vu le message de l'hôte et a envoyé le sien en réponse. Si l'hôte, à son tour, a reçu un message de réponse avec le niveau RSSI, il définit cette valeur sur le port COM. Maintenant, si nous exécutons le programme LevelRssi sur Windows et sélectionnons le bon port, nous verrons comment le niveau RSSI change avec une position relative différente des périphériques.



Conclusion



J'avais presque fini de préparer l'article quand j'ai eu une autre pensée. J'ai décidé d'utiliser un appareil plus courant comme appareil, à savoir le dongle pca10059 , basé sur le nRF52840 m / c. Voici sa photo.



Fig. 9

image

Heureusement, j'avais deux de ces planches. Après avoir reconstruit le projet, j'ai rencontré le problème de télécharger le firmware. Je savais que je devais le faire en utilisant nRF Connect for Desktop, mais n'a pas immédiatement compris comment entrer le dongle en mode DFU (mise à jour du micrologiciel). Voici comment procéder. Nous entrons en mode DFU immédiatement après la réinitialisation. Vous devez d'abord brancher le dongle sur le connecteur USB, puis appuyer sur le bouton de réinitialisation (le plus éloigné du processeur), avec un poussoir horizontal. Le voyant rouge du dongle commence à clignoter. Ouvrez le programme nRF Connect et appuyez sur le bouton "Installer" dans la section Programmeur. Lorsque le logiciel requis est téléchargé, cliquez sur le bouton «Ouvrir».



Fig. 10 La

image



fenêtre du programmateur s'ouvrira devant vous.



Fig. 11

image



En haut à gauche, sélectionnez le port COM souhaité. Vous verrez quelque chose comme l'image suivante.



Fig. 12

image



Sur le côté gauche, nous verrons ce qu'il y a dans la mémoire du contrôleur. En cliquant sur le bouton "Ajouter un fichier HEX", vous pouvez ajouter un fichier à remplir sur le côté droit. Il y avait aussi des problèmes ici. Les boutons "Effacer tout" et "Effacer et écrire" ne nous sont pas disponibles. Le fait est que le dongle n'a pas de programmeur, donc le programme est chargé à l'aide du chargeur de démarrage. Et nous y arrivons via la section MBR. Si nous effaçons ces sections, alors le firmware via le mode DFU sera impossible. En théorie, il vous suffit d'ajouter un firmware à la moitié droite de l'écran et d'appuyer sur le bouton "Ecrire". Tout semble être correct, mais ne fonctionnera pas. Notre programme démarre à l'adresse zéro en mémoire FLASH, et cette adresse est déjà occupée par la partition MBR. Comment gérer cela peut être lu dans ce tutoriel.... Si vous lisez depuis longtemps ou pas, je vous expliquerai en images en utilisant l'exemple de Keil-a. Voici une image d'un projet avec allocation de mémoire de microcontrôleur pour les projets non-stack.



Fig. 13

image



Il est nécessaire de déplacer le pointeur FLASH-a sur 0x1000 et la RAM sur 0x20000008 et de recompiler le projet.



Fig.14

image



Après cela, vous pouvez déjà utiliser le programme nRF Connect for Desktop. C'est probablement tout. Vous pouvez voir ce que j'ai fait dans la vidéo ci-dessous.



yadi.sk/i/BGQQnga1HeN50A

yadi.sk/i/d8A9pU82kBcTMw

yadi.sk/i/XGac8xwpksVX7g



Employé du groupe d'entreprises Caesar Satellite

Vladimir Pecherskikh



All Articles