Table des matières:

BLE facile à très faible consommation dans Arduino Partie 3 - Remplacement du Nano V2 - Rév 3: 7 étapes (avec photos)
BLE facile à très faible consommation dans Arduino Partie 3 - Remplacement du Nano V2 - Rév 3: 7 étapes (avec photos)

Vidéo: BLE facile à très faible consommation dans Arduino Partie 3 - Remplacement du Nano V2 - Rév 3: 7 étapes (avec photos)

Vidéo: BLE facile à très faible consommation dans Arduino Partie 3 - Remplacement du Nano V2 - Rév 3: 7 étapes (avec photos)
Vidéo: LUCIEN PARLE DE L'ARRÊT DE VILEBREQUIN ❌ #boiserie #vilebrequin #shorts#laboiserie #short #youtuber 2024, Novembre
Anonim
BLE facile à très faible consommation dans Arduino Partie 3 - Remplacement du Nano V2 - Rév 3
BLE facile à très faible consommation dans Arduino Partie 3 - Remplacement du Nano V2 - Rév 3
BLE facile à très faible consommation dans Arduino Partie 3 - Remplacement du Nano V2 - Rév 3
BLE facile à très faible consommation dans Arduino Partie 3 - Remplacement du Nano V2 - Rév 3
BLE facile à très faible consommation dans Arduino Partie 3 - Remplacement du Nano V2 - Rév 3
BLE facile à très faible consommation dans Arduino Partie 3 - Remplacement du Nano V2 - Rév 3

Mise à jour: 7 avril 2019 – Rév 3 de lp_BLE_TempHumidity, ajoute des tracés Date/Heure, en utilisant pfodApp V3.0.362+, et la limitation automatique lors de l'envoi de données

Mise à jour: 24 mars 2019 – Rév 2 de lp_BLE_TempHumidity, ajoute plus d'options de tracé et i2c_ClearBus, ajoute le support GT832E_01

introduction

Ce tutoriel, A Redbear Nano V2 Replacement, est la partie 3 sur 3. Il s'agit de la révision 2 de ce projet. Le PCB de la révision 2 comprend le montage de la pile bouton et du capteur, simplifie la construction et améliore le flux d'air autour du capteur tout en le protégeant des rayons directs du soleil. La révision 1 est ici.

Partie 1 - Construire des appareils BLE à très faible consommation en toute simplicité avec Arduino couvre la configuration d'Arduino pour coder les appareils à faible consommation nRF52, le module de programmation et la mesure du courant d'alimentation. Il couvre également les minuteries et les comparateurs spécialisés à faible consommation, les entrées anti-rebond et l'utilisation de pfodApp pour se connecter et contrôler le périphérique nRF52.

Partie 2 - Un moniteur d'humidité et de température à très faible consommation utilise un module Redbear Nano V2 et un capteur de température/humidité Si7021 pour construire une batterie / moniteur solaire à faible consommation. Il couvre également la modification de la bibliothèque Si7021 pour qu'elle soit à faible consommation d'énergie, le réglage du périphérique BLE pour réduire sa consommation de courant à <29uA et la conception d'un affichage de température/humidité personnalisé pour votre mobile.

Partie 3 - Un remplacement Redbear Nano V2, celui-ci, couvre l'utilisation d'autres modules basés sur nRF52 au lieu du Nano V2. Il couvre la sélection des composants d'alimentation, la construction, la suppression de la protection de programmation de la puce nRF52, l'utilisation de broches NFC comme GPIO normales et la définition d'une nouvelle carte nRF52 dans Arduino.

Cette instructable est une application pratique de la partie 1 Construire des appareils BLE à très faible consommation en toute simplicité avec Arduino en construisant un moniteur de température et d'humidité BLE à très faible consommation à l'aide d'une carte SKYLAB SBK369 en remplacement de Nano V2. Ce didacticiel explique comment créer une nouvelle définition de carte et comment supprimer la protection de programmation nRF52 pour permettre sa reprogrammation. Ce didacticiel utilise le même croquis que la partie 2 avec les mêmes paramètres BLE réglés pour une faible consommation d'énergie et peut être alimenté par batterie OU batterie + solaire OU solaire uniquement. Le réglage des paramètres BLE pour une faible puissance a été couvert dans la partie 2

La révision 3 de lp_BLE_TempHumidity trace les données par rapport à la date et à l'heure en utilisant uniquement l'Arduino millis(). Voir Date et heure Arduino en utilisant millis() et pfodApp en utilisant la dernière version de pfodApp (V3.0.362+).

La version 4 de pfod_lp_nrf52.zip prend également en charge le module GT832E_01 et ce didacticiel couvre l'utilisation des broches NFC nRF52 en tant que GPIO standard.

Le moniteur construit ici fonctionnera pendant des années avec des piles bouton ou 2 piles AAA, encore plus longtemps avec l'assistance solaire. En plus d'afficher la température et l'humidité actuelles, le moniteur stocke les 36 dernières heures de lectures de 10 minutes et les 10 derniers jours de lectures horaires. Ceux-ci peuvent être tracés sur votre mobile Android et les valeurs enregistrées dans un fichier journal. Aucune programmation Android n'est requise, pfodApp gère tout cela. L'affichage et la cartographie Android sont entièrement contrôlés par votre croquis Arduino afin que vous puissiez le personnaliser selon vos besoins.

La partie 2 a utilisé une carte Redbear Nano V2 pour le composant BLE nRF52832. Ce projet remplace cela par une carte SKYLAB SKB369 moins chère. Comme dans la partie 2, une carte de dérivation Sparkfun Si7021 est utilisée pour le capteur de température / humidité. Une bibliothèque basse consommation modifiée est utilisée avec le Si7021.

Étape 1: Pourquoi un remplacement Nano V2 ?

i) Le Nano V2 n'était plus en production depuis plusieurs mois et ne semble pas correspondre à la gamme Particle.io, il n'est donc pas clair pour combien de temps il sera disponible.

ii) Le Nano V2 est plus cher. Cependant, il a également des fonctionnalités supplémentaires. Voir ci-dessous.

iii) Le Nano V2 a des composants des deux côtés, ce qui lui donne un profil plus élevé et le rend plus difficile à monter.

iv) Le Nano V2 a un nombre limité de broches d'E/S disponibles et l'utilisation de D6 à D10 nécessite des câbles volants.

Bien que la carte Nano V2 soit plus chère que la carte SKYLAB SKB369, ~US17 contre ~US5, la Nano V2 a plus de fonctionnalités. Le Nano V2 comprend un régulateur de 3,3 V et des condensateurs d'alimentation, des composants supplémentaires pour l'utilisation de l'option de convertisseur CC/CC nRF52, une antenne à puce et un connecteur d'antenne uFL SMT.

Une autre alternative est le module GT832E_01 utilisé par www.homesmartmesh.com. La Rev 4 de pfod_lp_nrf52.zip prend également en charge la programmation du module GT832E_01. Le SKYLAB SKB369 et le GT832E_01 sont disponibles sur

Redbear (Particle.io) dispose également d'un module nu sans régulateur 3V3, composants DC/DC ou composants crystal 32Khz.

Contour

Ce projet comporte 4 parties indépendantes relatives:-

Sélection et construction des composants Suppression de l'indicateur de protection du codage nRF52 et programmation de l'esquisse Création d'une nouvelle définition de carte Arduino nRF52Reconfiguration des broches NFC nRF52 en tant que GPIO

Étape 2: Sélection et construction des composants

Sélection des composants

En plus des composants nRF52832 et Si7021 sélectionnés dans la partie 2, ce projet ajoute un régulateur 3,3V et des condensateurs d'alimentation.

Le composant régulateur de tension

Le régulateur utilisé ici est le MC87LC33-NRT. Il peut gérer des entrées jusqu'à 12 V et a un courant de repos < 3,6 uA, généralement 1,1 uA. Le Nano V2 utilisé un régulateur TLV704 a un courant de repos légèrement plus élevé, généralement 3,4 uA et peut gérer des tensions d'entrée plus élevées, jusqu'à 24 V. Le MC87LC33-NRT a été choisi à la place car sa fiche technique spécifie comment il réagit lorsque la tension d'entrée tombe en dessous de 3,3 V, contrairement à la fiche technique TLV704.

Le TLV704 spécifie une tension d'entrée de 2,5 V minimum et la fiche technique ne précise pas ce qui se passera en dessous. Le nRF52832 fonctionnera jusqu'à 1,7 V et le Si7023 jusqu'à 1,9 V. Le MC87LC33-NRT, quant à lui, spécifie des différences de tension d'entrée/sortie jusqu'à 0 V pour les courants faibles (Fig 18 de la fiche technique). Ainsi, étant donné le choix des composants, le MC87LC33-NRT a été choisi car il a les performances spécifiées.

Condensateurs d'alimentation

Le régulateur MC87LC33-NRT a besoin de condensateurs d'alimentation pour la stabilité et la réponse. Un condensateur de sortie > 0,1 uF est recommandé sur la fiche technique. Le SKYLAB SBK369 spécifie également des condensateurs 10uF/0,1uF sur l'alimentation à proximité de la carte. Des condensateurs plus gros aident à fournir les pointes de courant nRF52 TX. Ici, 4 condensateurs céramiques 22uF 25V et 3 x 0,1uF 50V ont été utilisés. Un condensateur de 22 uF et un de 0,1 uF ont été placés près du SKYLAB SBK369, un 0,1 uF a été placé près de la sortie du MC87LC33-NRT pour assurer la stabilité et un 22 uF et 0,1 uF ont été placés sur l'entrée du MC87LC33-NRT et un 2 autres condensateurs de 22 uF ont été soudés sur les broches Vin/GND en tant que réservoir de courant supplémentaire. A titre de comparaison, la carte NanoV2 a un 22uF/0,1uF sur l'entrée du régulateur TLV704 et un 0,1uF sur sa sortie.

Les condensateurs réservoir de courant supplémentaire ont été installés à l'entrée du régulateur 3,3 V afin qu'ils se chargent à une tension plus élevée lorsqu'ils fonctionnent avec des cellules solaires. Charger à une tension plus élevée équivaut à stocker plus de courant pour alimenter les pointes de Tx.

Les condensateurs en céramique X5R sont utilisés car ils ont une faible résistance série et un faible courant de fuite. La résistance est généralement de 100 000 MΩ ou 1000 MΩ – µF, selon la valeur la plus faible. Donc pour 22uF on a 22000MΩ, soit 0,15nA de fuite à 3,3V ou 0,6nA pour les quatre condensateurs 22uF. C'est négligeable. À titre de comparaison, les condensateurs électrolytiques Panasonic à faible ESR et à faible fuite ont des courants de fuite < 0,01 CV. Donc pour un condensateur 22uF 16V la fuite est <10uA. Remarque: Il s'agit de la fuite à la tension nominale, 16 V dans ce cas. La fuite est plus faible à des tensions plus basses, c'est-à-dire <2,2uA à 3,3V.

Liste des pièces

Coût approximatif par unité en décembre 2018, ~ 61 $ US, hors frais d'expédition et du programmeur de la partie 1

  • SKYLAB SKB369 ~ 5 $ US par exemple Aliexpress
  • Carte de dérivation Sparkfun Si7021 ~ 8 $ US
  • 2 cellules solaires 53 mm x 30 mm 0,15 W 5 V, par ex. Survol ~ 1,10 $ US
  • 1 x PCB SKYLAB_TempHumiditySensor_R2.zip ~ 25 $ US pour 5 de réduction www.pcbcart.com
  • 1 x régulateur MC78LC33 3.3V, par ex. Digikey MC78LC33NTRGOSCT-ND ~1 $ US
  • 2 x 0.1uF 50V céramique C1608X5R1H104K080A par ex. Digikey 445-7456-1-ND ~0,3 $ US
  • 4 x 22uF 16V céramique GRM21BR61C226ME44L par ex. Clé numérique 490-10747-1-ND ~ 2 $ US
  • 1 x BAT54CW, par ex. Clé numérique 497-12749-1-ND ~0,5 $ US
  • 1 x 470R 0.5W 1% résistance par ex. Digikey 541-470TCT-ND ~0,25 $ US
  • 1 x 10V 1W zener SMAZ10-13-F par ex. Digikey SMAZ10-FDICT-ND ~0,5 $ US
  • Vis en nylon de 3 mm x 12 mm, par ex. Jaycar HP0140 ~ 3 AUD$
  • Écrous en nylon de 3 mm x 12 mm, par ex. Jaycar HP0146 ~ 3 AUD$
  • Ruban de montage permanent Scotch Cat 4010, par ex. d'Amazon ~6,6 $ US
  • Support de pile CR2032, par ex. HU2032-LF ~1,5 USD
  • Pile CR2032 ~ 1 $ US
  • Feuille de plexiglas, 3,5 mm et 8 mm
  • pfodApp ~10 $ US
  • Pâte à souder par ex. Jaycar NS-3046 ~ AUD$13

Étape 3: Construction

Construction
Construction
Construction
Construction
Construction
Construction

Le projet est construit sur un petit PCB. Le PCB a été fabriqué par pcbcart.com à partir de ces fichiers Gerber, SKYLAB_TempHumiditySensor_R2.zip Le PCB imite la broche Nano V2 et est suffisamment polyvalent pour être utilisé pour d'autres projets BLE.

Voici le schéma (version pdf)

Soudez d'abord les composants SMD, puis montez la carte SKYLAB SKB369

Presque tous les composants sont des dispositifs de montage en surface (SMD). Les condensateurs et les circuits intégrés peuvent être difficiles à souder à la main. La méthode suggérée est de tenir le PCB dans un étau et d'appliquer une petite quantité de pâte à souder sur les pastilles et de placer les composants CMS, à l'exception de la carte SKB369 sur le PCB. Ensuite, à l'aide d'un pistolet thermique, appliquez de la chaleur sur le dessous du PCB jusqu'à ce que la pâte à souder fonde, puis faites un passage rapide sur le dessus de la carte en faisant attention de ne pas faire sauter les composants. Enfin, retouchez les composants avec un petit fer à souder. Soyez prudent avec les condensateurs et la résistance car il est facile de faire fondre les deux extrémités et de laisser le composant se détacher lors de la soudure d'une extrémité.

Cette révision ajoute des condensateurs céramiques 22uF 16V supplémentaires. Ces condensateurs supplémentaires réduisent les pointes de courant tirées de la batterie et réduisent également les chutes de tension lorsqu'elles sont alimentées par les cellules solaires. Tant que la tension des cellules solaires reste supérieure à la tension de la batterie, aucun courant n'est tiré de la batterie.

Une fois les composants SMD montés, vous pouvez souder la carte SKYLAB SKB369. Il y a deux trous de point de test sur un côté des languettes SKB369. Utilisez deux broches dans une base en carton pour positionner la carte SKB369 et alignez soigneusement les broches. (Voir l'exemple de photo ci-dessus utilisant le PCB de révision 1) Puis soudez une broche du côté opposé pour maintenir la carte en place avant de souder les autres broches.

Notez le fil de liaison Gnd du CLK à GND dans la pièce finie. Ceci est installé APRÈS la programmation pour empêcher le bruit sur l'entrée CLK de déclencher la puce nRF52 dans un mode de débogage à courant élevé

Boîtier de montage

Le boîtier de montage était composé de deux morceaux de plexiglas, 110 mm x 35 mm, 3 mm d'épaisseur. La pièce de 3,5 mm sous les cellules solaires a été taraudée pour recevoir les vis en nylon de 3 mm. Cette construction révisée est simplificatrice alors Rev 1 et améliore le flux d'air autour du capteur. Les trous supplémentaires à chaque extrémité sont destinés au montage, à l'aide de serre-câbles par exemple.

Étape 4: suppression de l'indicateur de protection du codage NRF52

Suppression de l'indicateur de protection de codage NRF52
Suppression de l'indicateur de protection de codage NRF52
Suppression de l'indicateur de protection de codage NRF52
Suppression de l'indicateur de protection de codage NRF52
Suppression de l'indicateur de protection de codage NRF52
Suppression de l'indicateur de protection de codage NRF52

Connectez la carte de température/humidité au programmateur décrit dans la partie 1 comme indiqué ci-dessus.

Avec les cellules solaires et les batteries débranchées, Vin et Gnd sont connectés aux Vdd et Gnd du programmeur (les fils jaune et vert) et les SWCLK et SWDIO sont connectés aux Clk et SIO de la carte d'en-tête du programmeur (les fils blancs et gris)

Suppression de la protection du programme nRF52

À partir de la page Nordic Semi - Debug and Trace DAP - Debug Access Port. Un débogueur externe peut accéder à l'appareil via le DAP. Le DAP implémente un port de débogage de fil série ARM® CoreSight™ (SW-DP) standard. Le SW-DP implémente le protocole Serial Wire Debug (SWD) qui est une interface série à deux broches, SWDCLK et SWDIO

Important: la ligne SWDIO possède une résistance de rappel interne. La ligne SWDCLK a une résistance pull-down interne.

CTRL-AP - Contrôler le port d'accès. Le port de contrôle d'accès (CTRL-AP) est un port d'accès personnalisé qui permet le contrôle de l'appareil même si les autres ports d'accès du DAP sont désactivés par la protection du port d'accès. La protection du port d'accès empêche le débogueur d'accéder en lecture et en écriture à tous les registres CPU et adresses mappées en mémoire. Désactivez la protection du port d'accès. La protection du port d'accès ne peut être désactivée qu'en émettant une commande ERASEALL via CTRL-AP. Cette commande effacera le Flash, l'UICR et la RAM.

Sélectionnez CMSIS-DAP comme programmeur pour le débogueur de particules et sélectionnez nRF5 Flash SoftDevice

Si le flash fonctionne, alors c'est OK, mais souvent les modules auront été protégés contre la reprogrammation et vous obtiendrez cette sortie d'erreur dans la fenêtre Arduino

Open On-Chip Debugger 0.10.0-dev-00254-g696fc0a (2016-04-10-10:13) Sous licence GNU GPL v2 Pour les rapports de bogues, lisez https://openocd.org/doc/doxygen/bugs.html debug_level: 2 Info: une seule option de transport; autoselect 'swd' vitesse de l'adaptateur: 10000 kHz cortex_m reset_config sysresetreq Info: CMSIS-DAP: SWD Info prise en charge: CMSIS-DAP: Interface initialisée (SWD) Info: CMSIS-DAP: Version FW = 1.10 Info: SWCLK/TCK = 1 SWDIO/ TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1 Info: CMSIS-DAP: Interface prête Info: demande de réduction de vitesse: 10000kHz à 5000kHz maximum Info: vitesse d'horloge 10000 kHz Info: SWD IDCODE 0x2ba01477 Erreur: Impossible de trouver MEM -AP pour contrôler le cœur Erreur: Cible non encore examinée Erreur lors du flashage de SoftDevice.

Dans ce cas, vous devez définir le registre de commande ERASEALL dans le nRF52 pour effacer la mémoire et rendre l'appareil à nouveau programmable. La version d'openOCD fournie avec sandeepmistry nRF52 n'inclut pas la commande apreg nécessaire pour écrire dans le registre de commandes ERASEALL, vous devez donc installer une version ultérieure.

Installez la version OpenOCD OpenOCD-2011130 ou supérieure. La version précompilée de Windows est disponible sur https://gnutoolchains.com/arm-eabi/openocd/ Le dernier code est disponible sur

Ouvrez une invite de commande et changez dir pour le répertoire d'installation d'OpenOCD et entrez la commande

bin\openocd.exe -d2 -f interface/cmsis-dap.cfg -f cible/nrf52.cfg

La réponse est

Open On-Chip Debugger 0.10.0 (2018-11-30) [https://github.com/sysprogs/openocd] Sous licence GNU GPL v2 Pour les rapports de bogues, lisez https://openocd.org/doc/doxygen/ bugs.html debug_level: 2 Info: sélection automatique du premier transport de session disponible "swd". Pour outrepasser, utilisez 'transport select'. vitesse de l'adaptateur: 1000 kHz cortex_m reset_config sysresetreq Info: Ecoute sur le port 6666 pour les connexions tcl Info: Ecoute sur le port 4444 pour les connexions telnet Info: CMSIS-DAP: SWD Supported Info: CMSIS-DAP: Version FW = 1.10 Info: CMSIS-DAP: Interface Initialisée (SWD) Info: SWCLK/TCK = 1 SWDIO/TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1 Info: CMSIS-DAP: Interface prête Info: vitesse d'horloge 1000 kHz Info: SWD DPIDR 0x2ba01477 Erreur: Impossible de trouver MEM-AP pour contrôler le core Info: Ecoute sur le port 3333 pour les connexions gdb

Ouvrez ensuite une fenêtre de terminal, par ex. TeraTerm (Windows) ou CoolTerm (Mac) et connectez-vous au port 127.0.0.1 4444

La fenêtre telnet affichera un > et l'invite de commande affichera Info: accepter la connexion 'telnet' sur tcp/4444

Dans la fenêtre telnet (c'est-à-dire TeraTerm), typenrf52.dap apreg 1 0x04, cela renvoie 0x00000000 indiquant que la puce est protégée. Tapez ensuite nrf52.dap apreg 1 0x04 0x01, puis nnrf52.dap apreg 1 0x04, cela renvoie 0x0000001 indiquant que la puce est désormais définie sur ERASEALL au prochain redémarrage.

Fermez la connexion telnet et utilisez également Ctrl-C pour quitter le programme openOCD dans l'invite de commande, puis redémarrez le module nRF52 et il sera maintenant prêt à programmer.

Réessayez maintenant de flasher le softdevice.

Vous pouvez maintenant programmer le module nRF52 depuis Arduino.

Étape 5: Programmation du SKYLAB SKB369

Programmation du SKYLAB SKB369
Programmation du SKYLAB SKB369
Programmation du SKYLAB SKB369
Programmation du SKYLAB SKB369
Programmation du SKYLAB SKB369
Programmation du SKYLAB SKB369

Fermez Arduino et réinstallez la dernière version du support pfod_lp_nrf52 en suivant les instructions d'installation du support matériel pfod_lp_nrf52. Le dernier pfod_lp_nrf52 comprend la carte de remplacement SKYLAB SKB369 Nano2. Sélectionnez-le comme carte et vous pouvez ensuite le programmer avec la révision 3 de lp_BLE_TempHumidity, lp_BLE_TempHumidity_R3.zip, comme décrit dans la partie 2.

Si la programmation échoue. Fermez toutes les fenêtres Arduino, retirez les câbles USB, redémarrez Arduino et rebranchez le câble USB du programmeur, rebranchez l'alimentation USB du module nRF52 et réessayez.

Connectez-vous ensuite via pfodApp pour afficher la température et l'humidité actuelles et historiques. Une fois que vous avez affiché le tracé historique, les lectures, avec des horodatages en millisecondes, sont enregistrées dans le fichier journal de votre mobile et également disponibles dans l'écran des données brutes.

Le fichier journal contient également les données supplémentaires nécessaires pour recréer les tracés de date et d'heure dans une feuille de calcul. Voir Arduino Date et heure en utilisant millis () et pfodApp pour les détails

Étape 6: Création d'une nouvelle définition de carte Arduino NRF52

Création d'une nouvelle définition de carte Arduino NRF52
Création d'une nouvelle définition de carte Arduino NRF52
Création d'une nouvelle définition de carte Arduino NRF52
Création d'une nouvelle définition de carte Arduino NRF52
Création d'une nouvelle définition de carte Arduino NRF52
Création d'une nouvelle définition de carte Arduino NRF52
Création d'une nouvelle définition de carte Arduino NRF52
Création d'une nouvelle définition de carte Arduino NRF52

Pour prendre en charge une nouvelle carte nRF52, vous devez a) ajouter un nouveau répertoire sous le répertoire des variantes avec les fichiers de la carte et b) éditer le fichier boards.txt pour ajouter la nouvelle carte à Arduino.

Ajout d'une nouvelle variante de carte nRF52

Comme décrit dans la partie 1, Installation du support matériel pfod_lp_nrf52, recherchez le sous-répertoire matériel du package sandeepmistry que vous avez mis à jour avec le support pfod_lp_nrf52. Ouvrez le sous-répertoire \hardware\nRF5\0.6.0\variants et créez un nouveau répertoire pour votre nouvelle carte, par exemple SKYLAB_SKB369_Nano2replacement Dans le nouveau répertoire \hardware\nRF5\0.6.0\variants\SKYLAB_SKB369_Nano2replacement créez trois fichiers variant.h, variant.cpp et pins_arduino.h Vous pouvez les copier à partir de l'un des autres répertoires de variantes de carte. Pour le SKYLAB_SKB369_Nano2replacement, j'ai d'abord copié les fichiers de la variante RedBear_BLENano2.

fichier pins_arduino.h

Le fichier pins_arduino.h n'a pas besoin d'être modifié. Il inclut juste le fichier variant.h

fichier variant.h

Modifiez le fichier variant.h pour définir le nombre total de broches que votre carte aura, PINS_COUNT

REMARQUE: Dans le package sandeepmistry, les paramètres NUM_DIGITAL_PINS, NUM_ANALOG_INPUTS et NUM_ANALOG_OUTPUTS sont ignorés

Si votre carte propose plus ou moins de broches analogiques, mettez à jour la section /* Analog Pins */ du fichier variants.h.

REMARQUE: pour les cartes NanoV2 et SKYLAB, les broches analogiques sont mappées sur les broches numériques A0 == D0, etc

Ce n'est pas indispensable. Vous pouvez affecter les entrées analogiques à n'importe quelle broche Arduino pratique. Voir ensuite les fichiers blue/variant.h et blue/variant.cpp pour un exemple.

La puce nRF52832 dispose de 8 broches d'entrée analogiques, mais la carte de remplacement SKYLAB_SKB369_Nano2 n'en propose que 6 pour correspondre au Nano2.

Tous les numéros de broche, à l'exception de RESET_PIN, dans le fichier variant.h sont des numéros de broche Arduino. C'est-à-dire que #define PIN_A0 (0) implique que D0 dans l'esquisse arduino est la même broche que A0. Le RESET_PIN est l'exception. Ce numéro est le numéro de broche de la puce nRF52823 et 21 est le seul choix valide. Cependant, le support pfod_lp_nrf52 n'active pas la broche de réinitialisation sur le nRF52832

fichier variant.cpp

Il n'y a qu'une seule entrée dans le fichier variant.cpp, le tableau g_ADigitalPinMap qui mappe les numéros de broche Arduino aux broches de la puce nRF52832 P0..

REMARQUE: dans les cartes NanoV2 et SKYLAB, les broches analogiques Arduino A0, A1… sont les mêmes que les broches numériques Arduino D0, D1… donc les premières entrées dans g_ADigitalPinMap DOIVENT correspondre aux numéros de broche AINx sur la puce nRF52832

Pour les entrées analogiques que votre carte met à disposition, ces entrées dans g_ADigitalPinMap doivent mapper les numéros de broche nRF52832 AIN0, AIN1, AIN2, etc. c'est-à-dire que AIN0 est la broche de puce P0.02, AIN1 est la broche de puce P0.03, etc. voir la disposition des broches nRF52832 ci-dessus.

Utilisez (uint32_t)-1 pour les mappages non valides. Par exemple, la carte de remplacement SKYLAB_SKB369_Nano2 n'a pas de LED intégrée, D13, donc sa position est mappée sur (uint32_t)-1

Dans pfod_lp_nrf52.zip, les sous-répertoires des variantes Redbear NanoV2, SKYLAB SKB369 et GT832E_01 contiennent des images montrant les mappages configurés par variant.cpp. (Voir les images ci-dessus)

Dans le cas du SKYLAB SKB369, vous avez le choix entre de nombreuses broches. Seulement assez sont mappés pour correspondre au NanoV2. Dans le cas du GT832E_01, toutes les broches disponibles doivent être mappées. Même alors, il n'y a que trois (3) entrées analogiques disponibles au lieu des six (6) sur le NanoV2. De plus, les deux broches NFC, P0.09 et P0.10, doivent être reconfigurées en tant que GPIO. Voir Reconfiguration des broches NFC nRF52 en tant que GPIO ci-dessous.

Mise à jour du fichier boards.txt

Voici l'entrée SKYLAB_SKB369_Nano2replacement dans le fichier boards.txt.

## Remplacement SKYLAB_SKB369 Nano2SKYLAB_SKB369_NANO2_REPLACEMENT.name=*Remplacement SKYLAB SKB369 Nano2

SKYLAB_SKB369_NANO2_REPLACEMENT.upload.tool=sandeepmistry:openocd

SKYLAB_SKB369_NANO2_REPLACEMENT.upload.protocol=cmsis-dap SKYLAB_SKB369_NANO2_REPLACEMENT.upload.target=nrf52 SKYLAB_SKB369_NANO2_REPLACEMENT.upload.maximum_size=524288 SKYLAB_SKB369_NANO2_REPLACEMENT; SKYLAB_SKB369_NANO2_REPLACEMENT.upload.use_1200bps_touch=false SKYLAB_SKB369_NANO2_REPLACEMENT.upload.wait_for_upload_port=false SKYLAB_SKB369_NANO2_REPLACEMENT.upload.native_usb=false

SKYLAB_SKB369_NANO2_REPLACEMENT.bootloader.tool=sandeepmistry:openocd

SKYLAB_SKB369_NANO2_REPLACEMENT.build.mcu=cortex-m4

SKYLAB_SKB369_NANO2_REPLACEMENT.build.f_cpu = 16000000 SKYLAB_SKB369_NANO2_REPLACEMENT.build.board = SKYLAB_SKB369_Nano2replacement SKYLAB_SKB369_NANO2_REPLACEMENT.build.core = nRF5 SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant = SKYLAB_SKB369_Nano2replacement SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant_system_lib = SKYLAB_SKB369_NANO2_REPLACEMENT.build.extra_flags = -DNRF52 SKYLAB_SKB369_NANO2_REPLACEMENT.build.float_flags = -mfloat -abi=hard -mfpu=fpv4-sp-d16 SKYLAB_SKB369_NANO2_REPLACEMENT.build.ldscript=nrf52_xxaa.ld

SKYLAB_SKB369_NANO2_REPLACEMENT.menu.lfclk.lfrc.build.lfclk_flags=-DUSE_LFXO

SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132=S132

SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.softdevice = s132 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.softdeviceversion=2.0.1 DNRF52 -DS132 -DNRF51_S132 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.build.ldscript=armgcc_s132_nrf52832_xxaa.ld

Paramètres board.txt

Commentaires – les lignes commençant par # sont des commentaires.

Préfixe - chaque carte a besoin d'un préfixe unique pour identifier ses valeurs. Ici, le préfixe est SKYLAB_SKB369_NANO2_REPLACEMENT.

Nom - La ligne SKYLAB_SKB369_NANO2_REPLACEMENT.name spécifie le nom de cette carte à afficher dans le menu de la carte Arduino.

Outil de téléchargement – Le bloc SKYLAB_SKB369_NANO2_REPLACEMENT.upload spécifie l'outil à utiliser pour le téléchargement. Si vous utilisez le débogueur de particules, utilisez protocol=cmsis-dap comme indiqué ci-dessus.

Bootloader – Cette ligne est la même pour toutes les cartes de ce boards.txt

Build – Seules deux lignes doivent être mises à jour dans ce bloc. La ligne SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant spécifie le nom du répertoire de cette carte dans le sous-répertoire variant. Le SKYLAB_SKB369_NANO2_REPLACEMENT.build.board est la valeur ajoutée à ARDUINO_ puis définie lors de la compilation du code. par exemple. -DARDUINO_SKYLAB_SKB369_Nano2replacement Cela vous permet d'activer/désactiver des parties du code pour des cartes spécifiques.

Low Freq Clock – Cette ligne, SKYLAB_SKB369_NANO2_REPLACEMENT.menu.lfclk.lfrc.build.lfclk_flags, spécifie la source de l'horloge basse fréquence, utilisée pour le lp_timer. Il existe trois options, -DUSE_LFXO, -DUSE_LFRC et -DUSE_LFSYNT. Le meilleur choix est -DUSE_LFXO, si la carte a un cristal externe 32Khz. Sinon, utilisez -DUSE_LFRC, qui utilise un oscillateur RC interne et consomme un peu plus de courant, ~ 10uA de plus, et est beaucoup moins fois moins précis. N'utilisez pas le -DUSE_LFSYNT car cela permet à la puce de fonctionner tout le temps, ce qui entraîne une consommation de courant en mAs.

Softdevice - pfod_lp_nrf52 ne prend en charge que les puces nRF52 et le softdevice s132 donc aucun changement n'est nécessaire pour ce bloc, autre que le préfixe.

Reconfiguration des broches NFC nRF52 en tant que GPIO

Par défaut sur les broches nRF52, P0.09 et P0.10 sont configurés pour être utilisés comme NFC et s'attendent à être connectés à une antenne NFC. Si vous devez les utiliser comme broches d'E/S à usage général (GPIO), vous devez ajouter une définition, -DCONFIG_NFCT_PINS_AS_GPIOS, aux paramètres de compilation de cette carte …menu.softdevice.s132.build.extra_flags dans le fichier boards.txt.

Par exemple, pfod_lp_nrf52.zip, reconfigure les broches du GT832E_01 pour les utiliser comme E/S. La section GT832E_01 pour cette carte, dans le fichier boards.txt, a la définition suivante ajoutée

GT832E_01.menu.softdevice.s132.build.extra_flags=-DNRF52 -DS132 -DNRF51_S132 -DCONFIG_NFCT_PINS_AS_GPIOS

Le script de l'éditeur de liens dans pfod_lp_nrf52.zip a également été modifié pour conserver ce paramètre et n'a pas besoin d'être modifié.

Étape 7: Conclusion

Ce tutoriel a présenté un remplacement pour le Redbear NanoV2 utilisant un module SKYLAB SKB369. Un moniteur d'humidité et de température alimenté par batterie/solaire a été utilisé comme exemple de projet BLE à très faible consommation dans Arduino pour le module SKYLAB. Des courants d'alimentation d'environ 29 uA sont obtenus en réglant les paramètres de connexion. Il en a résulté une durée de vie de la pile bouton CR2032 d'environ 10 mois. Plus long pour les piles boutons et les batteries de plus grande capacité. L'ajout de deux cellules solaires bon marché a facilement prolongé la durée de vie de la batterie de 50 % ou plus. Une lumière vive de la pièce ou une lampe de bureau suffit pour alimenter le moniteur à partir des cellules solaires.

Ce tutoriel a également couvert la suppression de la protection des puces d'un nRF52 préprogrammé et comment configurer une nouvelle définition de carte pour correspondre à votre propre PCB/circuit

Aucune programmation Android n'est requise. pfodApp gère tout cela.

Conseillé: