Étape 3: SPI, REQ, RDY et RST de Pins (facultatif)
Si vous n’avez pas l’Arduino UNO comme sur le schéma, une attention particulière au nombre de goupille de Arduino auquel vous vous connectez les fils de. Les 3 premières éruptions, étiquetées SCK, MISO et MOSI, doivent aller aux broches, 11, 12 et 13, respectivement. Cela devrait être la même pour tous les ATMega328P basé Arduinos (Uno/Duemilanove). Si vous avez un autre Arduino, vous devez savoir Quelles broches sont SPI et connecter à celles à la place.
---------SPI-----------
Ces trois broches sont importants car ils constituent une unité matérielle particulière sur l’Arduino appelé Serial Peripheral Interface ou SPI. Goupille de Arduino 13 est SCK (Serial Clock), MISO 12 (Master In Slave Out) et 11 MOSI (maître des esclaves en). Le SPI Arduino est connecté à un équivalent 3Pin unité SPI sur le nRF8001. L’Arduino se comporte comme le maître et la nRF comme l’esclave, bien que les rôles peuvent être inversés en théorie. Le concept de SPI est assez simple. Les clics de broche SCK de haut en bas dans un carré régulièrement espacé d’onde (onde carrée qui signifie il a deux valeurs, hautes ou basses). Pour chaque clic de l’axe de la SCK, l’esclave observe MOSI et chiffres si la tension est haute ou basse. Le maître fait la même chose sur le MISO. Si une tension élevée est lue, c’est un « 1 ». Si une tension est lue, c’est un « 0 ». De cette façon, une séquence de 1 s et 0 s est transmise et traduite en lettres, nombres et les commandes, dont le logiciel peut alors agir sur. Dans le cas de la nRF8001, il traduit les lettres et numéros sont transmis via la connexion Bluetooth à votre téléphone. Les lettres et les chiffres que le nRF8001 envoie à votre Arduino sont ce qu’il a reçu depuis le téléphone via Bluetooth.
SPI est un standard de communication utile car elle nécessite seulement 3 points. Techniquement le SPI est seulement un protocole et n’a rien à voir avec le matériel. Vous pouvez implémenter une interface SPI n’importe où tant que vous avez 3 bornes libres et pouvez les activer et désactiver. De nombreux microcontrôleurs ont aujourd'hui modules SPI de matériels où la mise en œuvre se fait dans le circuit lui-même plutôt qu’en logiciel. Cela permet de communiquer plus de SPI à faire beaucoup plus vite et avec plus de précision que possible, si fait dans le code. Le seul inconvénient est que vous devez utiliser les broches SPI de matériel dédié, par opposition à des broches générales but IO.
-----------REQ--------------
À proprement parler, seulement 3 broches sont tenus de transmettre les données sur une interface SPI. Cependant, les broches supplémentaires peuvent être utilisés pour contrôler le flux d’informations. Ces pions n’ont pas besoin de faire partie de la circuiterie de matériel d’un module SPI et peut être implémenté dans le logiciel, car ils ne sont pas impliqués dans des données haute vitesse de transfert elles-mêmes. Une broche 4 est standard, appelé la broche esclave sélectionnez ou puce. Sur la nRF8001, la broche REQ prend le rôle de l’axe de l’esclave sélectionner (SS). La broche SS permet à plusieurs périphériques esclaves SPI être connecté aux même 3 bornes de matériel sur le maître (SCK, MOSI, MISO). C’est à dire, vous pourriez brancher 1 appareil maître de SPI de 2, 3 ou plus d’esclaves et transmettre des données à l’un d'entre eux. Évidemment, il est peu probable que tous les esclaves ont besoin des informations mêmes envoyées à eux sur MOSI en même temps. C’est là qu’intervient la broche SS. Un esclave lit seulement les instructions venant sur sa ligne MOSI si elle a été choisie comme l’esclave « active » en ayant son esclave sélectionner ligne maintenue basse. Le maître doit donc une épingle SS dédié à chaque esclave relié aux lignes SPI. Quand il veut parler à un esclave en particulier, elle détient la broche SS correspondant à cet esclave faible, tout en conservant toutes les autres broches SS élevés. Seulement l’esclave choisi communiquera jusqu'à sa SS NIP est placé haut. La nRF8001 utilise la ligne REQ de savoir quand elle est autorisée à communiquer avec le capitaine Arduino. Si vous avez besoin de communiquer avec d’autres dispositifs SPI (par exemple, un capteur ou affichage à cristaux liquides), il suffit d’accrocher un autre déverrouillées IO sur broche de SS de l’appareil, et vous pouvez vous connecter épinglettes SPI de l’appareil aux mêmes 3 broches Arduino SPI.
La broche REQ n’a pas à être broche 10 sur l’Arduino. Toutefois, si vous la changez, vous devrez changer la ligne dans le code qui dit "#define ADAFRUITBLE_REQ 10", où le numéro 10 devrait être remplacé avec la broche vous connecté REQ à.
RST---et---RDY
La broche REQ indique à la nRF que l’Arduino veut communiquer sur SPI. Lorsque l’Arduino demande à commencer à communiquer en activant/désactivant le code pin REQ, il attend que RDY passe avant d’envoyer réellement des données, ce qui indique que la nRF est prête à recevoir. De la même façon, la broche RDY indique à l’Arduino que la nRF veut communiquer. Et même, après le basculement de l’axe de la RDY, la nRF attend jusqu'à ce que l’Arduino active/désactive la broche REQ avant de réellement commencer à envoyer des données.
La broche RDY est spéciale. Comme les broches SPI, il ne peut pas être simplement re-mappée à une goupille de Arduino. Il doit être re-mappée à une autre broche capable de l’interruption. Une tige d’interruption est celui qui est surveillé par l’Arduino sur un niveau de matériel. Si un signal arrive sur l’axe de l’interruption, l’Arduino arrête tout ce qu’il fait et pénètre dans une section spéciale du code pour traiter la goupille d’interruption. C’est super parce que l’Arduino n’a pas à s’asseoir autour de vérifier si la nRF veut parler à elle toutes les quelques millisecondes. L’Arduino peut faire sa propre chose, et si les données arrive, il sera averti immédiatement. Cela économise l’énergie de la batterie, permet la Arduino de se concentrer sur d’autres tâches (y compris le sommeil!) les 99,9 % du temps qu’aucune donnée n’est à venir via Bluetooth et fait bien sûr l’Arduino est très sensible quand données arrive enfin. Du point de vue du code utilisateur, nous n’avez pas besoin de traiter tous les détails de communiquer avec le périphérique Bluetooth à tous. Lorsque l’information est disponible, il obtient « magique » mis dans un endroit particulier en mémoire (par le code d’interruption dans les coulisses) et nous avons juste besoin de le lire.
La goupille de la TVD est simple. Il fondamentalement « redémarre » le nRF8001 lorsqu’il est activé. Cela s’effectue par le code automatiquement chaque fois que l’Arduino elle-même est réinitialisé. Comme la broche REQ, la broche de la TVD peut être mappée à aucune broche Arduino inutilisé, aussi longtemps que "#define ADAFRUITBLE_RST 9" au début du code est modifiée de façon appropriée.