VISIÓN DE CONJUNTO
Si miraste nuestro último tutorial, viste que estábamos usando dos códigos / bocetos diferentes …
Uno para el transmisor y otro diferente para el receptor.
Aunque no hay problema para hacerlo de esa manera, en algún momento podría mezclarse y cargar el incorrecto en el tablero equivocado.
En este tutorial veremos una manera fácil de usar un boceto que combine ambos y lo cargue en ambos tableros, y deje que el código detecte en qué placa se está ejecutando y realice diferentes acciones basadas en esa detección.
CONEXIONES DEL TRANSMISOR
El transmisor que utiliza un NANO está utilizando las mismas conexiones utilizadas en el tutorial anterior:
Aquí están las conexiones:
El interruptor está conectado a GND y el pin 8 en el NANO
Los pines NRF24L01:
MISO se conecta al pin 12 del NANO
MOSI se conecta al pin 11 del NANO
SCK se conecta al pin 13 del NANO
CE se conecta al pin 9 del NANO
CSN se conecta al pin 10 del NANO
GND y VCC del NRF24L01 están conectados a GND y 3.3V del NANO
El NRF24L01 utiliza el protocolo de comunicación SPI, por lo que debe asegurarse de estar utilizando los pines SPI de la versión de la placa Arduino que desee utilizar.
Los tableros NANO y UNO tienen los mismos:
- Pin 11 = MOSI (Master Out Slave In)
- Pin 12 = MISO ( Master In Slave Out )
- Pin 13 = SCK ( Reloj serial )
Pero si planea usar, digamos un MEGA 2560, esos pines serán diferentes.
- Pin 51 = MOSI (Master Out Slave In)
- Pin 50 = MISO ( Master In Slave Out )
- Pin 52 = SCK ( Reloj serial )
CONEXIONES DEL RECEPTOR
El esquema del receptor es el mismo excepto que añadimos un puente del pin A0 a GND.
El boceto lo usará para detectar si se está ejecutando en el Receptor o el Transmisor.
Aquí están las conexiones:
El pin WS2812 RGB Stick DI (entrada digital) está conectado al pin 8 en el UNO
GND y VCC están conectados a GND y 5V de UNO
El pin A0 de UNO está conectado a GND
Los pines NRF24L01:
MISO se conecta al pin 12 de la UNO
MOSI se conecta al pin 11 de la UNO
SCK se conecta al pin 13 de UNO
CE se conecta al pin 9 de la UNO
CSN se conecta al pin 10 de la UNO
GND y VCC del NRF24L01 están conectados a GND y 3.3V de UNO
EL CÓDIGO “UNO”
En este tutorial utilizaremos solo una pieza de código (boceto) que se cargará tanto en el transmisor (NANO) como en el receptor (UNO).
El código leerá el estado del pin A0 y detectará si es ALTO o BAJO.
Establecemos el pin A0 en ALTO al inicio, ya que no hay nada conectado al pin A0 del NANO, se mantendrá ALTO.
Pero como hemos conectado el pin A0 de UNO a GND, entonces será BAJO incluso si lo configuramos en ALTO al inicio.
Si es ALTO, entonces significa que se está ejecutando en el NANO (Transmisor) y si está BAJO, entonces es el UNO (Receptor).
Después de eso, solo se trata de hacer acciones en el código basado en el estado A0 pin.
Como siempre, no olvides mirar nuestro video Tutorial para más información.
/ * Inicio del código * / / * Código Arduino One / Bosquejo para Dos funciones Creado por Yvan / https: // Inteligente - Bits . com Este código es en el dominio público ... Puede: copiarlo, usarlo, modificarlo, compartirlo o simplemente ignóralo ! Gracias ! * / // Incluir bibliotecas necesarias al principio #include "nRF24L01.h" // Biblioteca NRF24L01 creada por TMRh20 https://github.com/TMRh20/RF24 #include "RF24.h" #include "SPI.h" #include "FastLED.h" // Biblioteca FastLED para WS2812 RGB Stick http://fastled.io/ // Definir los pines utilizados #define NUM_LEDS 8 // Número de leds en stick para Receptor #define LED_PIN 8 // Entrada digital (DI) del RGB Stick conectado al pin 8 del UNO (Receptor) #define SwitchPin 8 // El conmutador Arcade está conectado al Pin 8 en NANO (Transmisor) #define board_select A0 // Pin utilizado para detectar el estribo // Variables utilizadas En t Mensaje enviado[ 1 ] = { 000 }; // Se usa para almacenar el valor antes de ser enviado a través del NRF24L01 (Transmisor) En t ReceivedMessage [ 1 ] = { 000 }; // Se usa para almacenar el valor recibido por el NRF24L01 (Receptor) En t Tabla de correr; // Se usa para almacenar la identidad del estribo const uint64_t pipe = 0xE6E6E6E6E6E6 ; // Necesita ser el mismo para comunicando entre 2 NRF24L01 // Componentes Init Radio RF24 ( 9 , 10 ); // NRF24L01 usa pines SPI + Alfiler 9 y 10 en UNO y NANO LED CRGB [NUM_LEDS]; // FastLED Library Init (Receptor) Configuración de vacío () { // Make board_select Pin HIGH al inicio pinMode (board_select, INPUT); digitalWrite (board_select, HIGH); retrasar( 100 ); // Poco retraso para asegurarse de que es estable a ALTO // Compruebe para ver qué tabla es corriendo Si (digitalRead (board_select)) { // Si es ALTO entonces es el NANO (transmisor) Tabla de correr = 0 ; pinMode (SwitchPin, INPUT_PULLUP); // Haz el pin del interruptor entrada con resistor pullup digitalWrite (SwitchPin, ALTO); // Hacer el pin de interruptor ALTO al inicio } más { // Luego, el pin se detectó BAJO, lo que significa es el UNO (Receptor) Tabla de correr = 1 ; pinMode (LED_PIN, SALIDA); // Coloque el pin RGB Stick UNO (receptor) en una SALIDA FastLED . addLeds NEOPIXEL, LED_PIN > (leds, NUM_LEDS); // Configurar la biblioteca FastLED FastLED . claro(); // Borrar los LED RGB Stick para ( En t X = 0 ; X ! = NUM_LEDS; X ++ ) { // Ilumina LED Stick todas Rojo al inicio leds [x] = CRGB :: Rojo; } FastLED . setBrightness ( 50 ); FastLED . espectáculo(); } radio . empezar(); // Comience RF24L01 en ambos tableros Si ( Tabla de correr == 0 ) // 0 = Nano (transmisor) { radio . openWritingPipe (pipe); // Tubería de escritura abierta para transmitir } más // Si no = 0 Entonces eso es el UNO (Receptor) { radio . openReadingPipe ( 1 ,tubo); // Abra la pipa de lectura para recibir radio . empieza a escuchar(); } } void loop () { Si ( Tabla de correr == 0 ) { // Entonces eso es el transmisor Si (digitalRead (SwitchPin) == BAJO){ // Si el interruptor es Activado Mensaje enviado[ 0 ] = 111 ; radio . escribir (SentMessage, 1 ); // Enviar valor a través de NRF24L01 } más { Mensaje enviado[ 0 ] = 000 ; radio . escribir (SentMessage, 1 ); } } Si ( Tabla de correr == 1 ) // Entonces eso es el Receptor { mientras (radio . disponible()) { radio . leer (ReceivedMessage, 1 ); // Leer información de el NRF24L01 Si (ReceivedMessage [ 0 ] == 111 ) // Indica cambio es presionado { para ( En t X = 0 ; X ! = NUM_LEDS; X ++ ) { leds [x] = CRGB :: Verde; FastLED . espectáculo(); } } más { para ( En t X = 0 ; X ! = NUM_LEDS; X ++ ) { leds [x] = CRGB :: Rojo; FastLED . espectáculo(); } } retrasar( 10 ); } } } / * Fin del código * /
VIDEO TUTORIAL
DESCARGAR
Copie el código de Sketch anterior en su software Arduino IDE para programar su Arduino.
Bibliotecas usadas:
Descargue la biblioteca NRF24L01 creada por TMRh20 aquí: https://github.com/TMRh20/RF24
Descargue la biblioteca FastLED creada por focalintent aquí: https://github.com/FastLED/FastLED/releases
Una vez descargado, simplemente extrae el contenido de los archivos zip dentro de tu ” arduino / carpeta “libraries”.