Go Down

Topic: Guía NRF24L01+ (Librería) (Read 23657 times) previous topic - next topic

mvaghini

Muchas gracias por responder niko. Respecto a los mensajes no hay problema en dividirlos y luego volver a unirlos. Respecto a la distribucion de los 10 arduinos es un galpon de 100 o 150mts. de largo por 40 de ancho y estarian ubicados 5 de un lado y cinco del otro ( o 6 y 6 si es necesario para el alcance) de manera fija sin moverse. Tambien ver la posibilidad que pueda agregarse uno y automaticamente se lo otorgue una dirección y pase a ser parte de la red como funcionan los zigbee. Y desde ya tu consejo es totalmente valido: mucha prueba y paciencia. Gracias por las funciones que me pasaste.

gepd

Incluso teniendo un Arduino como maestro te sirve, la librería del tutorial utiliza ID's con los cuales puedes enviar información a cualquier arduino en la red, desde cualquier nodo.
Fíjate en este esquema https://tmrh20.github.io/RF24Network/Tuning.html a pesar de estar  en una distribución diferente, no veo el problema en el caso de al menos un nodo vea al otro.
Deviot el plugin IoT para Sublime Text. Si quieres probarlo y ayudarme con tu feedback, visita: https://github.com/gepd/Deviot

mvaghini

Muchas gracias gepd. A probar y jugar un rato. Por lo que estuve leyendo con estos modulos no podes hacer una red mesh real. Es decir necesitas siempre un coordinador que seria el 00. En cambio en zigbee si podes armar una red mesh real. Vamos a probar. Te agradezco.

gepd

Si, sería ideal una librería que elimine el master/server, le preguntaré al autor de la librería que tan difícil sería implementar algo así.
Deviot el plugin IoT para Sublime Text. Si quieres probarlo y ayudarme con tu feedback, visita: https://github.com/gepd/Deviot

mvaghini

La verdad que si. Seria ideal poder hacerlo. Si le preguntas despues pasa el dato de lo que opina. Mechas gracias gepd.

geniuselectron

Hola estoy siguiendo el tema y tengo unas dudas agradecesria si alguien me orienta
para empezar estoy intentando con el ejemplo RF24Mesh_Example_Master_No_Nodes  pero no logro compilar el ejemplo debido a este error
WString.h:38:74: error: initializer fails to determine size of '__c'
A alguien le ha pasado?' como creen que lo pueda solucionar?

en segundo lugar estoy usando 5 arduino nano para crear mi red, alguien sabe si se puede realizar la modificación como esta en la imagen

y por ultimo podria yo utilizar 2 maestros dando las siguientes direcciones a cada maestro
MAESTRO A= 0
MAESTRO B =05555

Seria como tener a cada uno en cada extremo y direccionando a cada nodo asi
desde MAESTRO A  <===>  01234
desde MAESTRO B  <===>  54

visto desde el maestro a  direccionamos al nodo 1234
PERO desde el maestro b direccionamos al nodo  4
en ambos casos es el MISMO NODO pero accesamos a el desde otro lado



robertiko07

alguien que sepa como actualizar constantemente el array   " mesh.addrListTop"

pues me pasa esto con el ejemplo de  tmrh20 el RF24Mesh_Example_Master_To_Nodes


yo solamente le agrege
    Serial.print("TOTAL DE NODOS: ");
    Serial.println(mesh.addrListTop);

********direcciones asignadas********
NodoID: 251 en la red su direccion es: 04
NodoID: 55 en la red su direccion es: 03
NodoID: 21 en la red su direccion es: 02
**********************************
TOTAL DE NODOS: 3

el error es que cuando apago algun nodo me sige desplegando como si aun existiera.
incluso si apago todos aun me sale todo igual



stazlad

Ey gepd tengo un problema ahora, estoy usando un arduino yun, pero no me.envía los datos, leí q el yun no trae la librería spi, pero no estoy seguro, podrías ayudarme a verbq problemita podría ser

robertiko07

#38
Mar 12, 2016, 05:02 am Last Edit: Mar 12, 2016, 05:09 am by robertiko07
alguien sabe donde se aloja esta pequeña definicion

uint8_t RF24Mesh::_nodeID

mi intencion es aumentar el numero maximo de nodos pues asi el sistema esta limitado a 254 nodos yo quiero comenzar a adaptar las librerias a mi aplicacion y quiero subir los nodos a 1000 para esto tengo que usar un INT16  en lugar del que esta configurado por defecto que es INT8.

segun mi poco estudio SI es posible hacer esto pues en cada mensaje enviado dentro de MESH la estructura del HEADER es asi...


 *  LA ESTRUCTURA DE EL HEADER ES  ASI 
*        .from_node       .to_node       .ID         .type        .reserved
*       ___________ ____________ ________ __________ _
*      |DESDE NODO | PARA NODO |  IDmsg  |   TIPO      | RESERVADO |
*      |__________|__________|______|______|__________|
*           16BIT                     16BIT             16 BIT    CARACTER   CARACTER       = 64 BIT EN EL HEADER


a esto le seguiria el mensaje pero eso ya es otro asunto....

en la libreria RF24Mesh.cpp
encontre esta funcion

Code: [Select]
void RF24Mesh::setNodeID(uint8_t nodeID){
     _nodeID = nodeID;
}


mientras que los señores MANIACBUG y TMRH20 definen el tamaño del nodo asi

_nodeID   <--- es esta la que tengo que modificar a UINT16

pero es aqui donde no consigo localizar el documento que contiene esta definicion. ya me he pasado por  RF24Mesh.h,  RF24Mesh.cpp y RF24MESH_CONFIG.H


que me pueden opinar... si es posible esto???

robertiko07

:( por que nadie contesta? es muy complicado lo que pido? muy fácil que ni siquiera vale la pena responder?
si alguien me dice ES TU PROBLEMA SOLUCIONALO TU!  por lo menos me daría mas alegría escuchar eso

noter

#40
Mar 23, 2016, 07:50 am Last Edit: Mar 23, 2016, 07:51 am by noter
Hola. Si no estás familiarizado con las clases, librerías y POO, te va a costar bastante la modificación. ¿La definición a la que te refieres es esta ? No estaba tan escondida, ¿no?

robertiko07

valla algo de luz mira mis modificaciones

Code: [Select]
rf24mesh.h

  uint16_t addrListTop;       /**< The number of entries in the assigned address list */
      ^
   modifico la cantidad maxima de nodos de 255 a mas de  6mil




rf24mesh.cpp
bool RF24Mesh::write(const void* data, uint8_t msg_type, size_t size, uint16_t nodeID){

   ^
int16_t RF24Mesh::getAddress(uint16_t nodeID){
                         ^

int16_t RF24Mesh::getNodeID(uint16_t address){
^

void RF24Mesh::setNodeID(uint16_t nodeID){
      ^

void RF24Mesh::setStaticAddress(uint16_t nodeID, uint16_t address){
    ^

void RF24Mesh::setAddress(uint16_t nodeID, uint16_t address){
      ^
 
  uint16_t position = addrListTop;
      ^

addrList[addrListTop].nodeID = 65535
       ^^^^^

addrList[addrListTop].address = 05555; 
^^^^^

rf24mesh.h



  bool write(const void* data, uint8_t msg_type, size_t size, uint16_t nodeID=0);
          ^

  void setNodeID(uint16_t nodeID);

      ^
  int16_t getAddress(uint16_t nodeID);
^

  void setAddress(uint16_t nodeID, uint16_t address);
      ^

  uint16_t _nodeID;
      ^

   uint16_t nodeID;       /**< NodeIDs and addresses are stored in the addrList array using this structure */
^

  void setStaticAddress(uint16_t nodeID, uint16_t address);
     ^




NETWORK.CCP

   uint16_t digit = node & 0B111;




mi ultima edicion cambiar a
UNSIGNED CHAR RESERVED;
por
uint16_t  reserved


robertiko07

a es verdad no estaba tan escondida
 y me baso en esta
https://maniacbug.github.io/RF24Network/structRF24NetworkHeader.html

saludos gracis por responder espero respondas nuevamente MI RAYITO DE LUZ  :)  JAJAJAJA...

noter

Ya irás comentando si te da errores la librería para tratar de localizarlos.

Pd. No está mal cuando uno ha pedido ayuda "agitar los brazos" de vez en cuando, pues a veces algún post puede pasar de largo, como ha sido el caso. No obstante, creo que también lo lógico por tu parte hubiera sido abrir un hilo nuevo con tu duda, en lugar de "camuflarlo" entre las respuestas de este ;).

Saludos.

robertiko07

cuando vi que no tuve resultados abrí este tema

http://forum.arduino.cc/index.php?topic=387977.0

Go Up