Paso 3: SPI, REQ, RDY y pasadores de primera (opcional)
Si no tienes el Arduino UNO como en el esquema, preste especial atención al número de pin del Arduino que conecte los cables. Los 3 primeros brotes, etiquetados SCK MISO y MOSI, deben ir a los pines 13, 12 y 11 respectivamente. Esto debe ser el mismo para todos ATMega328P Arduinos (Uno/Duemilanove). Si tienes otro Arduino, debe saber que pines son SPI y conectar a quienes en su lugar.
---------SPI-----------
Estos tres pines son importantes porque constituyen una unidad de hardware especial en el Arduino denominado la interfaz periférica Serial SPI. Pin 13 de Arduino es SCK (reloj Serial), MISO 12 (maestro de esclavos hacia fuera) y 11 MOSI (Master a Slave en). El SPI Arduino está conectado a un pin 3 equivalente unidad SPI en el nRF8001. El Arduino se comporta como el maestro y la nRF como el esclavo, aunque los roles pueden invertirse en teoría. El concepto de SPI es muy sencillo. Los clicks de pin SCK hacia arriba y hacia abajo en una plaza regularmente espaciado de la onda (onda cuadrada lo que significa tiene dos valores, altos o bajos). Por cada clic del pin SCK, el esclavo mira en MOSI y figuras hacia fuera si la tensión es alta o baja. El maestro hace lo mismo en el MISO. Si se lee un alto voltaje, es un '1'. Si se lee un bajo voltaje, es un '0'. De esta manera, una secuencia de 1s y 0s es transmitida y traducida a letras, números y comandos, que el software puede entonces actuar sobre. En el caso de los nRF8001, estos traducción Letras y números son transmitidos a través de la conexión Bluetooth con su teléfono. Las letras y números que el nRF8001 envía a tu Arduino son lo recibió desde el teléfono por Bluetooth.
SPI es un estándar de comunicación útil ya que sólo requiere 3 pines. Técnicamente SPI es sólo un protocolo y no tiene nada que ver con el hardware. Puede implementar una interfaz SPI en cualquier lugar siempre y cuando tienen 3 pines gratis y les puede encender y apagar. Muchos microcontroladores tienen hoy módulos SPI de hardware donde la aplicación se realiza en el circuito en vez de en el software. Esto permite la comunicación sobre SPI para hacerse mucho más rápido y con mayor precisión que sea posible si se hace en el código. El único inconveniente es que debe usar los pines SPI hardware dedicado, en contraposición a las patas de IO de propósito General.
-----------REQ--------------
Estrictamente hablando, sólo 3 pines están obligados a transmitir datos sobre una interfaz SPI. Sin embargo, pueden utilizarse clavijas adicionales para controlar el flujo de información. Estos pernos no necesitan ser parte de los circuitos del hardware de un SPI module y puede ser implementado en software, ya que no están implicados en los datos de alta velocidad de transferencia se. Un pin 4 es estándar, llamado el pin esclavo seleccione o Chip. En el nRF8001, el pin REQ toma el papel del perno seleccionar esclavo (SS). El pin SS permite múltiples dispositivos de esclavo SPI para conectarse a los mismos 3 pernos de hardware en el maestro (SCK, MOSI, MISO). Es decir, puede conectar 1 dispositivo SPI master 2, 3 o más esclavos y transmitir datos a cualquiera de ellos. Obviamente no es probable que todos los esclavos necesitan la misma información enviada a ellos por MOSI al mismo tiempo. Es donde entra el pin SS. Un esclavo sólo Lea las instrucciones que viene sobre su línea MOSI si ha sido seleccionado como el esclavo activo por tener su línea esclavo seleccione celebrada bajo. El maestro por lo tanto necesita un pin SS dedicado a cada esclavo conectado a las líneas SPI. Cuando quiere hablar con un esclavo particular, tiene el pin SS correspondiente a ese esclavo bajo, manteniendo todos los otros pines de SS alto. Sólo el esclavo elegido se comunicará hasta su SS pin se encuentra alta. El nRF8001 utiliza la línea REQ para saber cuándo se está permitiendo comunicar con el maestro Arduino. Si usted necesita comunicarse con otros dispositivos SPI (por ejemplo, un sensor o pantalla LCD), simplemente es necesario conectar otro gratis IO a pin SS pin del dispositivo y puede conectar clavijas SPI del dispositivo a los pines de Arduino SPI 3 mismo.
El pin REQ no tiene que ser pin 10 en el Arduino. Sin embargo, si se cambia se necesita cambiar la línea en el código que dice "#define ADAFRUITBLE_REQ 10" donde debe reemplazarse el número 10 con el pasador de conexión REQ a.
---RDY y RST---
Indica que el pin REQ para la nRF que Arduino quiere comunicarse a través de SPI. Cuando Arduino le pregunta comenzar a comunicarse activando el pin REQ, espera hasta que RDY cambia antes de realmente enviar datos, lo que indican que la nRF está lista para recibir. Asimismo, indica que el pin RDY a Arduino que la nRF quiere comunicar. Y además, después de cambiar el pin de la RDY, la nRF espera hasta que el Arduino cambia el pin REQ antes de realmente empezar a enviar datos.
El pin RDY es especial. Como los pines SPI, simplemente puede volver a asignar cualquier pin del Arduino. Se debe volver a asignar el otro perno capacidad de interrupción. Un pin de interrupción es uno que es monitoreada por el Arduino a nivel de hardware. Si una señal entra en el pin de interrupción, el Arduino detiene todo lo está haciendo y entra en una sección especial del código sobre el pin de interrupción. Esto es grande porque el Arduino no tiene que sentarse alrededor de comprobar si la nRF quiere hablar con él cada pocos milisegundos. Arduino puede hacer lo suyo y si entra los datos, se notificará inmediatamente. Esto ahorra energía de la batería, permite el enfoque de Arduino en otras tareas (incluido dormir) el 99.9% del tiempo que no hay datos está llegando por Bluetooth y hace que el Arduino es muy sensible cuando los datos llegan finalmente. Desde la perspectiva del código de usuario, no necesita lidiar con cualquier información comunicarse con el dispositivo Bluetooth en todo. Cuando se dispone de información "mágicamente" consigue poner en un lugar particular en la memoria (por el código de la interrupción detrás de las escenas) y sólo tenemos que leerlo.
El pin RST es sencillo. Básicamente "vuelve" el nRF8001 cuando se enciende. Esto se realiza por el código automáticamente cuando se restablece el Arduino sí mismo. Como el pin REQ, puede asignarse a cualquier pin de Arduino no utilizado, mientras el pin RST "#define ADAFRUITBLE_RST 9" en el inicio del código se modifica adecuadamente.