Pages: [1]   Go Down
Author Topic: Red Nrf24l01  (Read 1634 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola a todos,

Estoy intentando hacer una red inalámbrica con varios arduinos. La distancia que pueden alcanzar estos chips no es alta (unos 10 metros) por lo que se me ha ocurrido y ya que va a haber unos cuantos se envíen entre ellos la señal, si es para ellos que se la queden y ejecuten lo que tenga que ejecutar, y si no es suya, la reboten. Para ellos se me ha ocurrido (con algo de ayuda de unas cuantas web todo) enviar 3 paquetes o como se le diga. En el primero ira el numero de nodo para el que es la señal, en el segundo el numero de orden, y el tercero si esta ejecutada o no, ya que si esta ejecutada no tendrán que rebotarla. Me he puesto a escribir un código con copia pega de varios códigos mas algo propio... compilar compila otra cosa es que funcione. Os lo pego para que si alguno sabe algo del tema o se le puede ocurrir algo postee. He buscado un montón de información sobre este chip y ponerlo en modo red mallada pero no hay mucho.

Un saludo a todos

Code:
#include "Nrf2401.h"

byte numnodolocal; //declaro variables
byte ordenodo;
byte numnodo;
byte realizado; //realizado=01 Si    realizado=00 No

Nrf2401 Radio;
 
void setup(void)
{
  Radio.localAddress = 1;
  Radio.remoteAddress = 1;
  Radio.txMode(3);
  Radio.rxMode(3);
  
  byte numnodolocal = 01; //Numero de nodo
  
  Radio.data[0]=numnodo;
  Radio.data[1]=ordenodo;
  Radio.data[2]=realizado;
    
}
 
void loop(void)
{
  
  while(!Radio.available());
  Radio.read();
  if(Radio.data[0] == numnodolocal && Radio.data[2] == 00)
  {
  if (Radio.data[1] == 01){
  // Orden 1 y pones a 01 el Radio.data[02]
  }  
  else if (Radio.data[1] == 02){  
  // Orden 2 y pones a 01 el Radio.data[02]
  }
   else if (Radio.data[1] == 03){  
  // Orden 3 y pones a 01 el Radio.data[02]
  }
 else if (Radio.data[1] == 04){  
  // Orden 4 y pones a 01 el Radio.data[02]
  }
  
  }
else if (Radio.data[1] != numnodolocal && Radio.data[02] == 00){
  Radio.write ();
  delay (1000);
  
}

}

Actualizo:
Creo que la ultima parte la de cambiar el tercer bloque a "tarea recibida y ejecutada" no vale para nada, ya que quien lo cambia es el nodo que tiene que ejecutarla, asi que si por lo que sea le viene de otro nodo, le vendria como "no ejecutada" y por tanto se volveria a ejecutar.

Ayuda! smiley
« Last Edit: June 26, 2012, 09:22:56 am by cacharreante » Logged

Euskadi
Offline Offline
God Member
*****
Karma: 16
Posts: 721
Arduinotarrak
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola,
No conozco esa librería. Yo estoy usando la librería RF24Network de James Coliz, con la que se puede crear una red tipo mesh, que posibilita enviar mensajes desde cualquier nodo (sensor) a la base siguiendo las ramificaciones de la red. Y se pueden enviar mensajes desde la base a los nodos (actuadores).




Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Eskerrik asko!!!

Cuando termine examenes investigare en esa direccion. smiley-wink

Edito: Aun así lo que estoy buscando es justo lo contrario... Desde el nodo 00 enviar comandos a los nodos 01,02 etc...
Alguna idea?
« Last Edit: June 26, 2012, 03:43:26 pm by cacharreante » Logged

0
Offline Offline
Full Member
***
Karma: 2
Posts: 107
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

No es una MESH real. Solo una emite y los otros escuchan (limitado a 6).
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

En realidad lo que busco es algo asi:

Nodo 0 ---> Envia ordenes...
Nodos 1,2,3.. las reciben...

Si no hubiese el problema de la distancia pondria al 0 como emisor y a los demas de oyentes. Pero la distancia al ultimo punto es mas grande. De ahi que lo interesante seria que ya que el 1 recibe bien la transmita al 2 y el 2 al 3... asi sucesivamente.

Un saludo y gracias a todos.
Logged

Euskadi
Offline Offline
God Member
*****
Karma: 16
Posts: 721
Arduinotarrak
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola,
La librería que mencioné se explica aquí
http://maniacbug.github.com/RF24Network/index.html

En los ejemplos de la librería hay uno sobre una red mesh construída con estos módulos, y que puede contener cientos de nodos
http://maniacbug.github.com/RF24Network/meshping_8pde-example.html
Periódicamente cada nodo envía mensajes a la base, y la base envía a cada nodo la lista de nodos activos. No hay problema para que la base envíe mensajes a nodos actuadores.

Hay casos prácticos en el foro
http://arduino.cc/forum/index.php/topic,84135.msg630230.html#msg630230




« Last Edit: June 27, 2012, 08:32:37 am by curro92 » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Vaya currada tio. Eskerrik!! La libreria esa ya he empezado a leerla pero hasta dentro de un par de semanas no me metere a tope, que demasiado estoy mirando ya, tendria que estar a otras cosas.
Logged

Pages: [1]   Go Up
Jump to: