Le nRF52832, la puce Bluetooth par excellence pour vos objets connectés

Par Cédric Bérenger | 26 novembre 2020

NRF52 sous toutes ses formes: balises industrielles, modules, bracelet connecté, dongles USB, puces.

Le nRF52 sous toutes ses formes.

Simplicité, bien documentée, polyvalence, évolutivité, disponibilité, flexibilité, facteurs de formes, les avantages de la gamme nRF52 de Nordic et tout spécialement ceux du nRF52832 sont nombreux. Ayant une grande expérience de cette puce, expérience acquise tout au long de ma thèse en réseaux de micro-contrôleurs, j'ai pu mesurer toute l'étendue de ses possibilités. Dans cet article, je vais partager avec vous mon expérience. Nous allons voir en détail les 10 avantages qui font du nRF52832 une solution incontournable, avec un rapport qualité/prix imbattable.

Nous verrons d'abord que le nRF52832 est utilisé dans un grand nombre de produits connectés, de la montre intelligente grand public aux réseaux de capteurs industriels. Nous verrons ensuite que la variété des outils proposés, ainsi que la clarté de la documentation et la simplicité de programmation font du nRF52832 une solution évidente.

Produits utilisant le nRF52832

Avant d'aborder ses avantages, passons en revue une liste de quelques exemples de produits célèbres utilisant le nRF52832 pour mieux le cerner et avoir un aperçu de ses possibilités.

  • Le matelas connecté Bultex: si comme moi vous travaillez sur des systèmes embarqués autour de la puce nordic RF52832, vous aurez certainement tilté en écoutant la dernière publicité pour les matelas Bultex: https://www.youtube.com/watch?v=qtbt6NGkwFk

  • Le BBC Micro Bit: appareil éducatif, sorte de Arduino destiné à populariser la programmation au près des collégiens en leur fournissant un support physique concret. https://microbit.org/fr/

  • La serrure connectée Xiaomi Mijia: https://www.nordicsemi.com/News/2019/06/Xiaomi-Mijia-smart-door-lock-from-Lumi-employs-nRF52840

  • De par ses nombreuses possibilités réseaux, notamment bluetooth mesh et Thread, les microcontrôleurs de la famille nRF52 se retrouvent dans grand nombre de réseaux industriels.

  • Enfin, le nRF52 anime toutes sortes d'objets et de bracelets connectés grand public: tapez simplement "smartwatch NRF52" dans google pour constater l'omniprésence de cette puce.

1) Famille nRF52 et facteurs de forme

La puce nRF52832 est l'une des solutions de la famille de microcontrôleurs du constructeur Nordic. Cette famille dispose de modèles compatibles différents, vous permettant de choisir celui le mieux taillé à vos besoins, en termes de facteur de forme, prix unitaire, mémoire, et fonctionnalités réseaux.

  • La version la plus intégrée du nRF52832 est minuscule, et fait à peine 3.23 par 2.96mm.

  • La version la plus complète, le nRF52840, dispose de Bluetooth BLE avec une puissance d'émission boostée, +8dBm, avec un mode bas débit long range, d'une unité de calcul flottant, d'une mémoire ROM étendue de 1024Ko et de 256Ko de RAM, de fonctionnalités de sécurité étendues, de connectivité USB 2.0, de périphériques SPI et UART en plus grand nombre et plus rapides, ainsi que du sans-contact NFC.

  • Enfin, le modèle le moins cher, le nRF52810, se retrouve facilement chez les grands distributeurs comme Farnell ou Digikey à moins de 1.50€ pièce.

2) Programmation bare metal agréable

Lorsque l'on commence le développement sur NRF52832, il est possible de programmer C ou en C++, sans aucunes dépendances ni librairie externe, hormis les headers de développement. La documentation est bien structurée et synthétique, avec un nommage des périphériques simple et cohérent. Ce seul datasheet, pdf unique de 553 pages suffit pour utiliser 90% des fonctionnalités de la puce: https://infocenter.nordicsemi.com/pdf/nRF52832_PS_v1.4.pdf

Voici un exemple pour illustrer mes propos en activant la fonctionnalité la plus évidente, les communications Radio 2.4GHz. Le code suivant est le strict nécessaire pour émettre un "Hello World" avec les paramètres par défaut via les ondes sur le NRF52832, moins de 10 lignes de code !

volatile static char buffer = "Hello World!";

int main() {

NRF_RADIO->PACKETPTR = buffer; //Adresse du tampon à envoyer

NRF_RADIO->PCNF1 = sizeof(buffer); //Taille du tampon

NRF_RADIO->EVENTS_READY = 0; //Drapeaux d'évènements radios

NRF_RADIO->EVENTS_END = 0;

NRF_RADIO->TASKS_TXEN = 1; //Activation de la radio en mode transmission

while(!NRF_RADIO->EVENTS_READY); //Vérifie si la radio est prête à émettre

NRF_RADIO->TASKS_START = 1; //Démarre l'envoi

while(!NRF_RADIO->EVENTS_END); //Attends la fin de l'émission

NRF_RADIO->TASKS_STOP = 1; //Éteint la radio

while(1);

}

L'ensemble des fonctionnalités de la radio est décrit dans le datasheet. La section consacrée à la radio est très détaillée et fait moins d'une vingtaine de pages, en comptant les tableaux contenant des spécifications électriques (consommation, timings).

Comme on peut le voir, le nommage des différentes fonctionnalités est intuitif, pour démarrer la radio, on écrit dans le registre radio nommé TASKS_START, pour savoir si la radio est prête, on lit son état dans le registre radio EVENTS_READY. Ce nommage est beaucoup moins cryptique que sur d'autres familles de microcontrôleurs où les registres ont systématiquement des nom plus austères comme PA_CR1 (Port A, Control Register 1) ou encore DMA1_C1M0ARH (Contrôleur DMA 1, Channel 1, mémoire 0, Address High Register), dénominations extraites de la documentation du STM8L51.

3) Une flexibilité à toute épreuve: Périphériques Mappables sur tous les GPIO

La majorité des fonctionnalités périphériques, communications séries UART RX/TX, SPI, I2C, etc. peut être reliée à n'importe quelle patte de la puce. Cela simplifie considérablement le travail de routage du circuit électronique et limite les erreurs. En effet, qui n'a jamais inversé émission et réception sur une connexion série ? Ici, c'est impossible, puisque qu'une patte particulière n'est pas associée à une fonctionnalité unique, contrairement à de nombreux modèles de microcontrôleurs concurrents (le STM32F103, par exemple).

Une fois la puce intégrée sur un circuit électronique, la fonctionnalité d'une broche peut être changée à la volée, il est ainsi possible de passer une patte du mode émission au mode réception, ou alors changer le protocole de communication utilisé. Même les entrées analogiques bénéficient de cette flexibilité, avec quelques limitations tout de même. Il est ainsi possible de transformer des broches de communication en broches d'entrée analogique pour surveiller un capteur, un thermocouple par exemple.

4) EasyDMA: le DMA simplifié à l'extrême

Le DMA, pour Direct Memory Access, est une technologie qui permet aux périphériques d'accéder et d'écrire / lire dans la mémoire de manière autonome, sans intervention du CPU. Les microcontrôleurs étant aujourd'hui encore principalement mono-coeur, le DMA est essentiel pour effectuer plusieurs tâches en même temps: par exemple, traiter le signal provenant d'un capteur analogique tout en continuant de recevoir les paquets radios entrant, écrit automatiquement dans la mémoire grâce au contrôleur DMA.

Sur une grande partie des puces du marché, notamment les modèles mainstream STM32 (STM32F103), le contrôleur DMA requiert un gros effort de configuration: il faut spécifier un canal DMA, et donner les bonnes adresses pour connecter un périphérique à une zone de la mémoire vive.

Sur les microcontrôleurs de la famille nRF52, utiliser le DMA est d'une facilité déconcertante. Chaque périphérique (Communications UART, RADIO, SPI, I2C, PWM etc.) dispose de son propre canal dédié. La configuration est ainsi réduite au strict nécessaire: il suffit de donner le pointeur vers le buffer en mémoire et de démarrer le périphérique. Cela facilite à la fois le développement ainsi que le débogage, puisqu'il est impossible de se mélanger les pinceaux entre les différents canaux DMA.

5) PPI interconnect: système d'évènement et de tâches automatisés

Le PPI, pour Programmable Peripheral Interconnect, permet d'automatiser le lancement d'une tâche sur réception d'un événement périphérique, sans l'intervention du CPU. Le CPU peut alors traiter d'autres tâches ou rester en veille pour économiser l'énergie. Cela permet d'avoir des timings extrêmement précis, au cycle près, et simplifie considérablement la programmation.

Concrètement, les périphériques disposent de registres de drapeaux associés à des événements, et de registres permettant de démarrer des tâches. Le système d'interconnection PPI lie un registre d'évènement à un registre de tâche. Par exemple, lier le registre timer EVENTS_COMPARE, qui signale le débordement du timer, au registre radio TASKS_START permet de lancer une émission radio périodiquement.

6) Périphérique radio entièrement configurable, accessible en bare métal

Le nRF52832 est l'un des seuls microcontrôleurs sur le marché permettant un accès bas niveau bien documenté à la radio, sans devoir passer par un cœur auxiliaire ou une API propriétaire.

Il est ainsi possible de maîtriser entièrement le protocole radio, la consommation énergétique ainsi que les timings. Cela permet de proposer une solution sur mesure pour répondre à des contraintes très fortes. Par exemple, lors de mes travaux de recherche sur les réseaux de nRF52832, nous avons pu atteindre une synchronisation entre deux modules à quelques microsecondes près grâce à cet accès bas niveau. Cette flexibilité nous a offert de nombreuses autres possibilités, notamment la géolocalisation en mesurant précisément les délais aller-retour des ondes, ainsi qu'une détection de mouvements, en analysant les informations brutes provenant de l'indicateur de puissance de signal.

7) DFU: Mise à jour OTA via application smartphone

DFU, pour Device Firmware Update, est une fonctionnalité mise à disposition par Nordic qui, lorsque intégrée au code embarqué, permet de mettre à jour le firmware de votre produit facilement et de manière sécurisée, via Bluetooth, depuis l'application smartphone Nordic NRF Connect.

8) Bluetooth Low Energy

Le constructeur fournit les bibliothèques nécessaires pour démarrer rapidement le développement d'objets connectés via Bluetooth LE. L'utilisation des fonctionnalités Bluetooth passe par un binaire propriétaire appelé Soft Device qu'il est nécessaire de charger au préalable sur la puce. Une fois démarré, ce soft device gère seul en arrière-plan toute la complexité du protocole Bluetooth. Votre application se contente alors d'appeler le soft device pour spécifier les données que vous voulez mettre à disposition au smartphone de l'utilisateur.

9) Protocoles réseaux : Bluetooth Mesh, ZigBee, Thread, ANT, ...

Le Bluetooth Low Energy permet de transmettre simplement de l'information entre deux appareil, entre un maître et un esclave. Lorsque votre application nécessite une architecture réseau plus avancée, avec plus de deux appareils interconnectés suivant une topologie étoile ou maillée, des protocoles plus complexes sont disponibles.

La gamme NRF52 est compatible avec de nombreux protocoles parmi ceux les plus utilisés dans l'industrie comme Bluetooth Mesh, ZigBee, Thread et ANT. De plus, la fonctionnalité multi protocoles du kit de développement permet d'utiliser plusieurs de ces protocoles en même temps. Par exemple, il est possible de permettre une connectivité smartphone via Bluetooth, tout en permettant au système de communiquer sans-fil avec d'autres capteurs utilisant un protocole propriétaire spécifique.

10) Basse énergie

Pour finir, quelques chiffres sur l'un des gros avantages du nRF52832: la basse énergie. En effet, le nRF52832 consomme très peu et dispose de modes basse consommation, sortes de semi-hibernations, permettant d'assurer un service en continu pendant des années.

Lors de mes recherches en laboratoire, j'ai pu longuement étudier la documentation du nRF52832 et vérifier ses caractéristiques électriques en pratique. Il est tout à fait possible de minimiser la consommation électrique et de l'abaisser en dessous des 10µA, tout en permettant au système de transmettre des paquets d'informations et de monitorer des capteurs toutes les secondes. Une telle consommation permet au système de rester actif près de 3 ans sur une pile bouton CR2032.

La consommation électrique est directement liée au débit moyen de l'information. En effet, la partie radio du NRF52 consomme plusieurs mA en fonction de la puissance d'émission choisie. Pour des utilisations en extérieur, une simple cellule solaire de quelques cm carrés suffit à maintenir le système actif, tant qu'il y a de la lumière, et ce, même en temps nuageux. Des solutions complémentaires à base de supercondensateurs permettent de stocker une partie de l'énergie récoltée le jour pour maintenir le système actif la nuit. Le système est alors totalement autonome en énergie.

Conclusion

Au cours de cet article, nous avons passé en revu 10 avantages qui font du nRF52 une solution évidente, adaptée à la grande majorité des projets de capteurs et d'objets connectés. La gamme dispose de différents modèles et de solutions logicielles capables de répondre à une variété de problématiques telles que la miniaturisation des capteurs, les applications distribuées, les réseaux maillées et la sécurité.

Cette versatilité ne se fait pas au détriment de la simplicité: la puce dispose d'une documentation claire, synthétique, complète et en même temps très courte au regard du nombre de fonctionnalités proposées. Les mécanismes permettant de gérer les périphériques sont intuitifs, bien nommés et permettent de travailler aisément en bas niveau, au plus près du matériel. De plus, les librairies proposées pour supporter la pile Bluetooth offrent un mode multi protocole permettant de garder un contrôle complet de la radio lorsque cela est nécessaire.

Enfin, le nRF52832, désigné avec le Bluetooth Low Energy en tête, est parfaitement adapté aux utilisations basses énergies, à la fois sur piles boutons et batteries, mais aussi solutions de récolte d'énergie (cellules photovoltaïques ou piezo par exemple).