Maîtriser les modules Bluetooth Microchip RN487x pour périphériques basse consommation
Apprenez à configurer la famille de modules Bluetooth RN487x de Microchip pour vos projets périphériques basse consommation.
Si vous construisez un dispositif compact, écoénergétique, Bluetooth est presque toujours le choix de communication de référence. Au fil des ans le standard a mûri, et aujourd'hui une large gamme de modules prêts-à-l'emploi fournissent un system-on-chip (SoC) complet qui rencontre les besoins de nombreux périphériques. Un exemple populaire est le nrf52840 de Nordic, qui combine processeur 32-bit, radio Bluetooth multi-protocole, et suite complète interfaces I/O comme GPIO, PWM, USB, SPI, et I²S.
Bien que puissants, ces SoCs peuvent être intimidants : la courbe d'apprentissage et le temps développement requis pour intégrer le firmware embarqué sont significatifs. Pour beaucoup cas d'usage courants — détection ou contrôle à distance avec seulement une poignée de canaux analogiques ou numériques — une solution plus simple, plus focalisée est souvent préférable.
Entrez la famille RN487x de Microchip. Les deux modules dans cette famille — RN4870 et RN4871 — offrent canaux bi-directionnels numériques et analogiques multiples concurrents tout en gardant l'empreinte design et l'effort firmware minimaux. Chaque module stocke une configuration compacte dans sa RAM non-volatile, vous permettant d'adapter la fonctionnalité du périphérique à vos exigences exactes. Important, les modules restent pleinement conformes au standard Bluetooth Low Energy (BLE), assurant pairage seamless avec smartphones modernes et autres clients BLE.
Dans cette série en trois parties, nous marcherons à travers la création d'un périphérique Bluetooth-activé pleinement fonctionnel pour quatre tâches typiques : capteur numérique, contrôle numérique, capteur analogique, et contrôle analogique. Chaque exemple inclut circuit de référence, étapes précises configuration RN487x, et script Python simple démontrant comment interagir avec le périphérique depuis hôte Linux. Les scripts sont thoroughly documentés pour que vous puissiez facilement embarquer les périphériques comme sous-systèmes dans designs plus larges.
Vue d'ensemble design
Ci-dessous illustration graphique de l'exemple « capteur analogique », mettant en évidence interfaces clés en rouge.

Représentation d'un système Linux communiquant avec un périphérique
Nous construirons trois composants cœur pour cet exemple :
- Le hardware périphérique qui fournit le signal capteur — un transducteur analogique dans ce cas, générant tension variable.
- L'application hôte qui présente données à l'utilisateur — notre script Python.
- Configuration RN487x qui mappe le signal physique à la base de données GATT utilisée par l'hôte.
Sélection composant
La famille RN487x offre deux variantes : RN4870 et RN4871. Elles diffèrent principalement en nombre de pins et types I/O disponibles. Ci-dessous tableau budget pins réorganisé pour vous aider décider quelle puce convient le mieux à votre projet.
Il y a trois catégories de pins I/O sur les modules :
| Type | Description |
| ADC | Entrée analogique : convertit tension en valeur numérique. |
| PWM | Sortie analogique : génère onde carrée dont fréquence et duty cycle sont définis par deux nombres. |
| DIO | Entrée ou sortie numérique : niveau haut ou bas représente logique 1 ou 0. |
RN4870

Image depuis datasheet RN487x
| Pin Name/Capability | P1_0 | P1_1 | P1_2 | P1_3 | P2_2 | P2_3 | P2_4 | P2_5 |
| ADC | x | x | x | x | ||||
| PWM | x | x | ||||||
| DIO | x | x | x | x | x |
RN4871

Image depuis datasheet RN487x
| Pin Name/Capability | P1_2 | P1_3 |
| ADC | x | |
| PWM | ||
| DIO | x | x |
Ces tables clarifient que si votre design n'a besoin que d'une seule entrée analogique et pas de sorties PWM, le RN4871 est le choix le plus léger. Pour projets requérant signaux multiples ou PWM, le RN4870 est la sélection appropriée. Dans l'exemple capteur analogique, nous utilisons le RN4871 et connectons le capteur à la pin P1_2.
Couche profil GATT (Generic Attribute) de la pile protocole BLE
Avant d'écrire l'application hôte, il est essentiel de comprendre l'API GATT qui médiera communication entre hôte et périphérique.
Tous dispositifs BLE exposent une base de données GATT que le périphérique (server) peuple. L'hôte (client) utilise appels GATT pour lire ou écrire valeurs identifiées par handles ou noms. Opérations GATT Python typiques ressemblent à ceci :
gatt_rq.connect() # Écrire valeur à handle caractéristique gatt_rq.write_by_handle(vh_light, str(bytearray([8])))
Le premier appel établit connexion ; le second écrit données immédiatement reflétées sur sorties du périphérique. L'API GATT est supportée par iOS, Android, Windows, et Linux. Nos exemples utilisent Python sur Linux pour large compatibilité.
Configuration module
Pour pontifier le signal physique à la base de données GATT, vous devez programmer la NVRAM du RN487x avec deux blocs configuration clés :
- Définition caractéristique : Alloue espace base de données et assigne identifiants uniques pour chaque valeur.
- Liaison broche (Pin Binding) : Mappe broches I/O physiques à caractéristiques base de données, activant conversion données automatique.
Le RN487x utilise un langage commande léger pour configuration. Référez-vous à l'appendix pour détails sur établissement connexion console et émission commandes configuration. Après programmation, la NVRAM du module pourrait ressembler à ceci :

Toutes valeurs configuration résident dans hiérarchie deux niveaux de services et caractéristiques — utile quand scaling vers designs multi-capteur ou multi-contrôle.
Ceci conclut la partie un de notre série tutoriel RN487x en trois parties. Parties 2 et 3 couvriront entrée numérique, contrôle numérique, capteur analogique, et implémentations contrôle analogique. Partie 4 discutera sujets avancés applicables à tous exemples.
Ci-dessous un appendix décrivant comment configurer les modules avant de plonger dans les projets détaillés.
Utiliser connexion console pour configurer RN487x
Alimentez le module et établissez lien série vers votre workstation. Chaque circuit démo inclut un jumper « prog » 3-pins exposant RX, TX, et GND. Si vous avez besoin guidance, un excellent guide est disponible ici.
Lancez un émulateur terminal. L'utilitaire miniterm (bundlé avec beaucoup distributions Python) est un bon choix. Dans un shell, démarrez-le ainsi :
python -m serial.tools.miniterm --eol LF /dev/ttyUSB0 115200
Le baud rate par défaut 115200 convient au RN487x.
Basculez de mode DATA à COMMAND en tapant trois signes dollar ("$$$") — vous ne verrez pas les caractères, mais le prompt change à :
CMD>
Essayez d'appuyer d suivi de Enter ; le module écho son statut :
CMD> BTA=D88039F80080 Name=RN_BLE Connected=no Authen=2 Features=0000 Services=00 CMD>
Activez echo si vous voulez voir la touche tapée : appuyez + et Enter :
CMD> ECHO ON CMD>
Créer un nouveau service GATT est aussi simple qu'émettre une seule commande PS, par exemple :
CMD> PS,59c88760536411e7b114b2f933d5fe66 AOK
Configurations projets requièrent aussi scripts multi-lignes. Commencez un script avec WW, entrez chaque ligne, et finissez avec Esc pour commiter :
CMD> ww @CONN |O,08,72 AOK CMD>
Initialisation commune du module
Quand réutilisant un module RN487x across projets, configuration précédente peut interférer avec nouvelles utilisations. Effectuez les étapes nettoyage suivantes avant chaque exemple :
- Effacer tout script existant.
- Activer traitement script.
- Effacer définitions service/caractéristique existantes.
- Retirer fonctions spéciales de la pin vous utiliserez (ex: P1_2).
- Reboot le module.
Exécutez la séquence commande ci-dessous :
CMD> WC AOK CMD> SR,0040 AOK CMD> PZ AOK CMD> SW,0A,00 AOK CMD> R,1 Rebooting
Setup Linux requis pour exécuter scripts Python exemples
Hardware
Assurez que votre système hôte a hardware BLE (Bluetooth 4.0 ou plus récent). Si vous avez besoin adaptateur USB, nous recommandons un basé sur Qualcomm CSR8510, disponible ici.
Software
Les scripts exemples ont été testés sur Debian 10 et devraient marcher sur autres distributions basées Debian comme Ubuntu. Deux packages Python sont requis qui ne sont pas installés par défaut :
python-bluez– fournit accès à la pile Bluetooth.gattlib– offre liaisons Python pour opérations GATT (install viapip).
Installer gattlib construit une librairie ELF, donc vous aurez besoin outils build et librairies. Un script helper qui installe toutes dépendances est disponible ici. Après téléchargement, rendez le script exécutable et lancez-le.
Références
- RN487x Datasheet
- RN487x User Guide
- GATT API in Windows
- GATT API in iOS
- GATT API in Python
Restez branchés pour les prochaines parties de cette série, où nous construirons les exemples complets entrée numérique et contrôle numérique.
Aller aux projets 1 et 2 : construction entrée numérique et contrôle numérique.
Technologie de l'Internet des objets
- IoT cellulaire et Bluetooth LE : une approche synergique pour la connectivité de nouvelle génération
- Choix de conception Bluetooth Mesh : Module vs dispositif discret
- Contrinex 2020 : capteurs cloud-ready et rideaux lumineux Bluetooth pour la sécurité
- ADLINK déploie l'IA de l'edge au cloud avec plateforme NVIDIA EGX : solutions edge computing accélérées
- Mesurer des capteurs analogiques sur Raspberry Pi sans ADC natif
- Lecture de capteurs analogiques avec Raspberry Pi et Zabbix : Guide étape par étape
- Exploiter les données dans l'Internet de la fiabilité : stratégies pour une gestion efficace
- De l'Edge au Cloud : maîtriser les pipelines de données IoT
- Digitalisation dans l'agroalimentaire : améliorer la sécurité, la traçabilité et l'efficacité