Mostrando las entradas con la etiqueta nrf2401. Mostrar todas las entradas
Mostrando las entradas con la etiqueta nrf2401. Mostrar todas las entradas

martes, 25 de agosto de 2015

Placa de desarrollo

Hoy les traigo una pequeña placa de desarrollo que realicé para un arduino nano, cuenta con borneras macho para conectar servos, una configuración para conectar un nrf24l01 y borneras hembra. Se puede acceder a cualquier pin de la placa nano (sea o no un pin programable ya sea tanto de entrada como de salida). En principio tiene un puerto USB tipo A, pero por problemas de espacio no pude conectarlo a la placa y quedó soldado para un "futuro" mejoramiento.


Así es la "etapa" final, como se puede ver el USB tipo A está bien ubicado, pero si quiero poner un cable para sacar los datos del mini (para no soldar en la plaqueta de la nano) no me dejaría espacio para conectarlo a la pc.

En la siguiente foto se puede apreciar como es la placa, en este caso puse un diodo con una resistencia para obtener los 3,3v necesarios por la placa del nrf24l01 (me había olvidado que el arduino nano entrega esa tensión, pero decidí dejárselo para no saturar el pin de los 3,3v)


En la siguiente foto (se puede agrandar si hacen click en la foto) se puede apreciar el conexionado entre la bornera del nrf24l01 y las borneras donde va el arduino nano, el dibujo lo puse para no tener que aplicar el circuito del diodo con la resistencia, por lo que se obtienen los 3,3v del arduino.


Y por último para que se pueda apreciar bien, la tira de pines que está más a la derecha es el GND, la que le sigue a la izquierda es el positivo y la tercera línea de pines es el "espejo" de los pines del arduino, así como las borneras hembra que están en la 4º línea, todo esto se repite al otro lado del arduino, siendo la 1º línea la tierra, la 2º línea el postivo y la 3º y 4º líneas son los espejos del arduino.


Como último comentario, si se usa el nrf24l01 no se pueden usar los pines encargados del spi como entradas o salidas normales, esto es porque justamente las está usando el transceptor. Los pines que no se pueden usar son: D13, D12, D11, D10 y D9.



domingo, 26 de julio de 2015

módulo NRF24L01

En esta ocación voy a demostrar como se usan los módulos NRF24L01.




Se alimenta con 3,3V (es algo a destacar) pero tolera los 5V de un arduino como señal. Utiliza la interfaz "SPI" para comunicarse y tienen un bajo consumo (se consiguen los NRF24L01+ que tienen significativamente más potencia) que para trabajos de domótica son ideales, además de las librerías (que vienen con algunos ejemplos) les voy a dejar un programa mio que sirva para "chatear" entre 2 computadoras inalámbricamente a través del puerto serie que ofrece el ide de arduino. 

La librería que uso es la MIRF.

El chat es un programa simple, está pensado para comunicar un arduino nano y un mega

También les dejo unos programas para mandar y recibir datos fijos, además del chat en un archivo comprimido.

La idea es que descomenten las partes del código necesarios para el arduino mega o el nano

/*
  Este programa sirve para transmitir y recibir mensajes entre
  2 arduinos, el ejemplo este sirve para un arduino mega a un
  arduino nano. Descomentar según sea el caso.
  V2.5
*/

#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>

int incomingByte;
byte mensaje[33];

void setup(){
  Serial.begin(9600);

/*
  Mirf.cePin = 48;                          //para arduino mega
  Mirf.csnPin = 49;
*/

/*
  Mirf.cePin = 10;                          //para arduino nano
  Mirf.csnPin = 9;
*/

  Mirf.spi = &MirfHardwareSpi;
  Mirf.init();
  
/*
  Mirf.setRADDR((byte *)"mega");            //para arduino mega
  Mirf.setTADDR((byte *)"nano");
*/

/*
  Mirf.setRADDR((byte *)"nano");            //para arduino nano
  Mirf.setTADDR((byte *)"mega");
*/

  Mirf.payload = 1;
  Mirf.config();
}

void loop(){
  
  if (Serial.available() > 0)               //emisor 
  {
    Serial.print("yo -> ");
    char mensaje_letra;
    while (Serial.available())
    {
      incomingByte = Serial.read();
      mensaje_letra = incomingByte;
      Serial.print(mensaje_letra);
      Mirf.send((byte *)&incomingByte);
      while(Mirf.isSending());
      delay(3);
    }
    Serial.println(" ");
  }
  
  if(Mirf.dataReady())                      //receptor
  {
    Serial.print("el -> ");
    char mensaje_letra;
    int i = 0;
    byte c;
    while (Mirf.dataReady())
    {
      Mirf.getData(&c);
      mensaje[i] = c;
      mensaje_letra = mensaje[i];
      Serial.print(mensaje_letra);
      i++;
      delay(4);
    }
    i = 0;
    Serial.println(" ");
  }
}





Descargas:


Mirf:




Ejemplos: