Code Monkey home page Code Monkey logo

rf24mesh's People

Contributors

2bndy5 avatar avamander avatar bcsabaengine avatar filipek92 avatar igormp avatar ivankravets avatar joernesdohr avatar julianpas avatar kripton avatar l3v5y avatar makomo avatar positron96 avatar rasmushraau avatar spaniakos avatar tmrh20 avatar yozik04 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rf24mesh's Issues

Data from far-away nodes are not routed to the master node

Hi!

Example: Let's say I have three nodes, namely Master, A and B.

  • B is furthest from Master, where data cannot be sent directly to the Master.
  • B is located close to A.
  • A is closer to the Master, where the Master can still receive data from A.

W.r.t. http://tmrh20.github.io/RF24Mesh/index.html
"In the 'mesh' configuration sensors/nodes can move around physically, far from the 'master node' using other nodes to route traffic over extended distances."

I realised that the Master can only receive data from A, and not B. I tried to look at the classes for a method to use for this multi-hop function but I am unable to find it.

May I know how should I go about doing the multi-hop?

Thanks!

Dual Headed Operation

Hello, is there a way to use the "Dual Headed Operation" that is available with the RF24Network library?
Thanks, Regards

checks duplicates IDs

There is a way to check if the ID assigned to a node is already in the network?

I was thinking would be a good idea to implement something like this in the begin function, it could return 2 when the ID is duplicated. I'm usign something like dinamics IDs with my nodes, so will be really usefull to have this function.

I'm starting with this library so I should read a lot of code to know it, as I undertand the mesh library works with NRF24, RF24Network and RF24Gateway.

Can someone guide me a little bit how could be possible to implement something like this?

Thanks!

NOT AN ISSUE: dynamically NodeID

hello TMRh20

i just made a script for dynamic allocation of NodeID using RPi as a master and the galileo as a client.
the basic consept is that i use NodeID = 255 as a master NodeID and i have 2 functions , one server and one client that handles a header message and allocated a Never Used so far Node.
The sketch requires reboot of the client, but as fas as i know it works. I dont have the chance to try it using multiple nodes, but if you are interested i can share my code for u to see (thow it is a basic consept), but can help as an example for other to use (yet is not a material for the library i assume, but with some more testing it can be).

cheers
Spaniakos

RF24Mesh operates slowly

Hello ,

I setup sensor network with one RPi (master node) and six arduino pro mini (sensor node , slave) . when I run all devicess I am waiting about 10 minutes after that I can see all nodes on Rpi . in addition I connect relay to one arduino pro mini when I send command to arduino I receive some time error and rarely I receive ok. Network works very slow. When I list node on Rpi some devices change mesh addresses. Pls help me ! What can I do ?

Thanks,
Best Regards,

Sleeping Nodes with RF24Mesh

I am building a sensor network for my home using nRF24L01 Radios. So far it consists of a master node that has my sheild that connect to my SmartThings Hub for my Z-wave network. This basically relays the messages it receives from the nodes to the SmartThings Hub and it processes them the way I need to.

The nodes consist so far of contact sensors and PIR Motion sensors. They run a sketch that sleeps in powerdown mode, and powers down the radio, and uses interrupts to wake up when the state of the sensor changes. That all works great, with only 4 node (all children of the master). Once I try to add 5th, it can't doesn't work because it's parent is sleeping.

Is this a limitation of the library, or is there a way to wake the node using the radio interrupt when it needs to route a message to the master? I have done a little testing, but haven't gotten far....figure I would ask before digging too deep.

I am playing with the sleepNode() function from the RF24Network Library but I can't get it to wake up to relay a message. Most my nodes aren't going to be moving around physically, so I could use just RF24Network if sleepNode() works with that, but I really like the dynamic part of Mesh, so I would like to stick with it if possible.

I can upload the sketches that I'm using, but I'm mostly just wondering if its even possible.

Thanks,
Tom

Afterthought EDIT: If a node can be awoken by sending directly to it. I would be open to implementing code that just sends to it's parent, or even sends a message to its parent that causes it to stay awake long enough to route the message. The problem I see with that is I can't even get the 5th node to connect to the Mesh because it doesn't see any nodes to connect through.

I'm trying to run battery powered nodes, so I want them to sleep as much as possible. I could have them wake every so often (even if its a minute) to allow a child to register.

write error

I created a master (0) and one child node (1). The child node gets an address, and sends a payload (millis) to master. Master receives it, but on the childe the write returns false. Then the checkConnectivity returns false also. So it renews the address which is successful.

There must be some problem with the master ACK-ing the payload. But communication seems to work both ways, because child gets the address OK. What should I do the debug this problem?

Edit: I used RF24 library before, but as long as I remember my previous project didn't use auto ACK.

Edit2: May be I have an incompatible chip and should disable dynamic payload?

Edit3: commented out #define ENABLE_DYNAMIC_PAYLOADS in network config header, but this is even worse, no address is given, and of course no payload is on master

Cannot compile / upload

Hi,
i cannot seem to compile any sketch that uses RF24Mesh.h , it just hangs on "Compiling sketch".
Any clue on why this is happening ?

RF24Mesh only compatible with Development branch of RF24Network

Hi,

Just to let you know that the current master branch of RF24Mesh only work with the Development branch of RF24Network (with is not the default one when we clone a repository).

This is due to the missing channel argument on begin() (and maybe other problems).

Anyway, thanks you very much for your work ! Mesh networking is what RF24 module missed !

Extending the 4 node limit per circle

Hello,

As I understanded, where are limited to 4 Node per "circle" (or, in other terms, a node, including the master, cannot have more than 4 children).

I think that maybe there is a way to extand this limit. Can you explain us why this limit exist (I think that it come from somewhere...). Maybe this thread will gather people (including me) to work on a solution to expand it.

It's, for me, the main restriction of this incredible library.

Examples get stuck with certain kind of modules

Hi

My problem is that some of my RF24 modules work in the mesh, some don't.
I have tested them with simple send/receive examples and those work, but in mesh they just get stuck at "Connecting to the mesh.." . But another set of RF24 modules I have work without any problems. Any ideas how to resolve?

Problem on Arduino Mega

Dear TMRh20,

I'm trying to setup a mesh network with 2 arduinos, one nano and one mega. By loading the examples on the nano I don't have problems. On the mega, after loading, the program hold on the mesh.update line... The mesh.begin is ok, but it does not goes beyond mesh.update...

Do you know why? I tried changing the radios but it is the same... It seems related to the arduino MEGA board... But I'm sure it works because I used a lot.

bye!

Continuous send to test antenna

Hi!

I was wondering what would be the easiest way to put radio in continious transmitt mode, so I can test my antenna on different channels.

I tried just looping mesh.begin and mesh.update but it is not true continious transmit and it takes time for analyzer to show result.

I know that nordic datasheet gives example of this, but it is bare C and assembler code.

I believe this is very easy.
Thanks in advance!

Ghost nodes

Sometimes the master detects other nodes connected to the network. There aren't any connected besides the master, I'm sure.

What could them be?

Nodes not reconnecting

Hi,

I was very happy when I found this library, as it offers exactly what I need for my sensor network!
I still have one problem that I haven't been able to figure out.

When connecting my first arduino to my Raspberry Pi, it is assignmed address 04. When connecting a second node, it gets 044. If I remove the first node, the second is not able to reconnect.
Clearing dhcplist.txt doesn't help.

Has onyone an idea about what might be going on?

I haven't tested it with a third node yet, but I will do this and post the results here if I haven't found the answer.

I'm happy to answer any questions!

RPi 2 Mesh Master No Debug Msg

Hi. I have a Raspberry Pi 2 as master and an Arduino as my node. I have tried examples from RF24 library (gettingstarted_call_response) and RF24Network library (helloworld_tx/rx) and they work fine.

I enabled the MESH_DEBUG in mesh config and SERIAL_DEBUG and SERIAL_DEBUG_ROUTING in network config but nothing is output in the RPi when I run the RF24Mesh_Example_Master except the start up details

sudo ./RF24Mesh_Example_Master
start
setup_address node=00 mask=00 parent=00 pipe=00
2080213: NET Pipe 5 on node 00 has address cccccccce3
2080213: NET Pipe 4 on node 00 has address cccccccc3e
2080213: NET Pipe 3 on node 00 has address ccccccccce
2080213: NET Pipe 2 on node 00 has address cccccccc33
2080213: NET Pipe 1 on node 00 has address cccccccc3c
2080214: NET Pipe 0 on node 00 has address ccccccccc3
================ SPI Configuration ================
CSN Pin = CE0 (PI Hardware Driven)
CE Pin = Custom GPIO22
Clock Speed = 8 Mhz
================ NRF Configuration ================
STATUS = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
RX_ADDR_P0-1 = 0xccccccccc3 0xcccccccc3c
RX_ADDR_P2-5 = 0x33 0xce 0x3e 0xe3
TX_ADDR = 0xe7e7e7e7e7
RX_PW_P0-6 = 0x20 0x20 0x20 0x20 0x20 0x20
EN_AA = 0x3e
EN_RXADDR = 0x3f
RF_CH = 0x61
RF_SETUP = 0x07
CONFIG = 0x0f
DYNPD/FEATURE = 0x3f 0x04
Data Rate = 1MBPS
Model = nRF24L01+
CRC Length = 16 bits
PA Power = PA_MAX

In the Arduino side it outputs a sort of network poll but it just do it over and over again.

What does that mean? or what could I be doing wrong?
Thanks in advance.

Adding this and other NRF24L01+ libraries to Arduino IDE's library manager.

It would be really nice if all NRF23L01(+) libraries would be available for download and update from the Arduino IDE's library manager.

https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5:-Library-specification

https://github.com/arduino/Arduino/wiki/Library-Manager-FAQ#how-can-i-add-my-library-to-library-manager

I and I guess other people would also really like to get the latest available versions of these libraries quickly from the IDE. At the moment updating these libraries is a bit confusing because if one download the libraries (RF24, RF24Mesh and network) directly from github (Download as an .zip) they do not work together, but using the .io webpage download links did not result in the latest version (if I remember correctly).

Code freezes on mesh.update()

Hello, first things first- I have been using this library recently and while I'm new to the nRF24's themselves, it's been pretty great with the nRF systems I've been building, so thank you!

Now for the cruz of the matter- I have discovered quite a weird problem by accident. I'm using the RF24 Mesh library with a master to switch outputs which receive inputs from sensors attached to 2 remote arduinos, each connected to an nRF24L01+.

The issue is while testing out my setup, I accidentally touched the nRF pin header connected to one of the sensor nodes and this caused my master device to freeze. After a tormenting time trying to find the cause, I realised the network.update() function, found inside the "mesh.update()" function caused an error.

I got this by printing messages on Serial in the following while loop:-
while ( radio.isValid() && radio.available(&pipe_num)
The result- the serial output kept on being printed non-stop. I might add, I printed the outputs of radio.isValid() and radio.available(&pipe_num) and got the following results continuously:-

"radio.isValid() = 1"
"radio.available(&pipe_num) = 1"
"pipe_num = 4"

I believe I can deduce this problem is caused by a corrupt incoming packet (I'm open to correction), but what I fail to understand is why it causes the master device to freeze. It seems to me, there is always something being written on pipe no. 4 (I hope I got the nRF24 basics right) and the code gets stuck in an infinite loop.

Now I'm sure this problem can be eliminated by being careful and keeping my hands off what they shouldn't be on (the nRF pins, in this case) but I'm concerned this issue might pop-up and freeze the automation system that I'm building for my room.

I'm attaching my .ino file so you can see the code is quite simple.

Hope you can help me out with this.
Thank you!

Mesh_Master.txt

Unlisted nodes

When I reset my master node, some nodes do not reappear the the connected node list, but do send packets to the master. This causes multiple issues. Could you please add a safeguard to block all nodes that are not registered to the mesh? Also, what would happen if two mesh networks get in range of each other?

Rf24audio through RF24mesh

Dear TMRh20,
first of all thank you for your well done job, I really like your project!

I'm learning howto use these nrf24L01+ modules with my arduino. I'm mainly interested in the RF24mesh, because I'd like to do a sensor network comunicating with the master node.
I'd like to know if it is possible to use the RF24audio feature through such a mesh. I have a microphone mounted on a node and I want to listen on the master node. The point is that I want to use the mesh because the microphone node can be far away from the master, so I'd like that another node in the middle could route the audio traffic.

is it possible?
Thanks!

The command network.write does not work properly in mesh network

Hi

I have a mesh network with 5 devices: 1 master (raspberry Pi) and 4 sensors (Arduino UNO R3). The master sends a hello packet every 10 seconds to all sensors in order to monitor whether all are responding properly.
But when a sensor gets a "child" mesh address like "044", apparently the sensor with Mesh address "04" is answering the hello packet directly.
To clarify, follows the configuration of the network:
NodeID: 11 - MeshID: 044
NodeID: 22 - MeshID: 03
NodeID: 33 - MeshID: 04
NodeID: 44 - MeshID: 02

When the master sends out a hello packet for the sensor with MeshID: "044", the packet is sent successfully even if this sensor is off! The sensor with MeshID "04" is responding directly without consulting the sensor with MeshID "044".

I believe that the network should not work on this way, correct? Is there any way to fix this issue?

I am using "network.write" to send the hello packet from master to sensors.

Can't get nodes to communicate

I have been using the RF24Network library recently for developing a sensor network in my home, and I came across your Mesh Library. It fits my needs quite well, as want to be able to move sensors around, without having to change parent/child relationships.

However, when RF24Mesh_Example to a node, and the RF24Mesh_Example_Master, I can't seem to get them to hear each other. The master node prints the address list every 5 seconds, but it is always empty.

The Node says "connecting to mesh..." for about 30-40 seconds, then goes to "Renewing Address" every 30-40 seconds.

If I put a timeout in the mesh.renewAddress as shown below, then it writes "Renewing Address" once at 30-40 seconds, and then keeps doing it every 5 seconds (with a 5 second timeout), so it seems that it isn't getting assigned an address from the master.

      if ( ! mesh.checkConnection() ) {
        //refresh the network address
        Serial.println("Renewing Address");
        mesh.renewAddress(5000);
      } else {
        Serial.println("Send fail, Test OK");
      }

I had been using pins 9 and 10 for the radio, so I changed that in the example, but I also tried moving the pins to 7 and 8 with no luck.

I went back to the sketches i was running using the RF24Network Library without changing any hardware, and they work great.

I downloaded your mesh library yesterday.

Any ideas? Am I missing something simple?

Question about meshing and payload type

Hi,
working with mesh library i have some issue with payload data.

For example with a payload of this type:

struct payload_st {
float temperature;
float humidity;
float internal_temperature;
float internal_humidity;
int ivcref;

} data_to_send;

sometimes not received.

While no issue with this payload type:

struct payload_st {
int temperature;
int humidity;

} data_to_send;

I have read that can be a problem due to the lack of a capacitor on the hardware module. is a possible case?

Thanks

Multiple nodes (with same ID) in mesh address list

Hi,

I'm finding several issues in the last release.
In my project, each time I boot a node, it starts with the temporary 255 nodeID and then the master reassign a unique nodeID in the range 1-254.
Now it happens that if I boot (not at the same time) several nodes, the master results a mesh address list in which the 255 nodeid is listed several times...
Is it due to the fact that now (in several functions, e.g. setAddress()) the nodeID is declared as a char?

Thanks in advance!

Maximum number of nodes on network

One can only assign nodeIDs from 0 to 255.

Does this mean that the network can only have 256 nodes? How can I have more nodes and still uniquely identify them?

Mesh with Static routing nodes and sleeping slave nodes. Issues

Dear, TMRh20

So I was building a project, where I needed Mesh network.(The dynamical properties). My nodes are running on batteries. I managed to build system so, that nodes wake up few times per hour(for testing every other 8 seconds) and send data. I have two static nodes(routing), which are plugged in wall. Everything seemed to work correctly once the addresses are assigned, but at one point it started to look so, that assigning static address doesn't work.
So I have few possible issues in mind for those problems:

  1. I changed CPU clock to 1MHz(Changed the bootloader and fuse settings).It seems to work.
  2. I understand that addresses are saved to EEPROM, tried different things erasing EEPROM but no results.
  3. I set static addresses as shown in example(Master-static). For some time it seemed to work, but I am not sure. Now it behaves like I never set them. For me, this seems to be the real problem. Because when nodes wake up, they can only connect to static nodes and master, but if one static node is connected to other static, then all nodes can not connect. Some times they just don't connect even if it seems that they could(free addresses).
  4. May be the sleeping is also the problem. When they wake up, they do the mesh.update and then sends the data. Then go to sleep. As I mentioned in some cases all works fine, but then at one point part of network fails or doesn't configure.

When the network is set, it seems to work(in some cases), but when its new or changing and trying to assign all the addresses it does not work fully or at all.

P.S. If I disable sleeping, the system doesn't work also.

I would appreciate any help.

Sleep doubt

Hi:

I make a red with RPI how master and Arduinos how childrens in a Mesh topology. The arduino nodes works with batery. I need sleep the nodes and send the data Each a Minute for power saving. My cuestion is:

if all nodes are asleep and wake up at different times, the mesh network is working?
As I can coordinate the time they wake up the mesh network to keep it running ?

thanks

Mesh node list not available on nodes other than master

Hi,

I'm building a mesh with a master and two nodes. If I check the node's list on the master it correctly displays the two node IDs and addresses.
If I try to see the mesh nodelist on the node side (using mesh.addrList[k].nodeID) I have these problems:

  1. mesh.addrListTop is 0, while if I do sizeof(mesh.addrList) the result is 2 (as it should be).
  2. If I check the nodeIDs on the node, it displays 0 (the master) and 80, while the other node has a node id 1...

why?
thanks.

bye!

Node to Node receive

I loaded one node with the Mesh_Example sketch
And another with the Mesh_Example_Master

|Node| >>>>>>> |Master|

There is not problem with the communication between them.
I'm trying to expand the transmission range adding a new node in between.

 ID 1           ID 101           ID 0
|Node| >>>>>> |Expander| >>>>> |Master|

I don't know if it's possible but until now I failed getting the message from the first node (ID 1) in the expander node (ID 101)

The master recognise the node 101 in the network but when I check if there is any data available to read, I don't see anything.

Is that possible to do?
What I'm doing wrong?

Arduino nano mesh fails if serial monitor is open (fixed)

Great work you have done here :) Just about one of the all time easiest to use NRF libs I have come across despite its underlying complexity.
This is no longer an issue .. more an informational post for any others that come across the same problem and are scratching their heads.
I started debugging it myself then realised that it was due to me being lazy and using the 3.3v from the arduino nano FTDI chip as the NRF Vcc.
This seems to work fine if you do not want to use the serial, but as soon as you open the serial monitor
comms will fail and the device will sit scanning and failing to find nodes.
So .. just a heads up.

Adding timeouts to all functions.

RF24Mesh should have timeout for every function that might just hang or fail. I really dislike the idea of a node just freezing silently so that there is nothing I could do via software to alert myself of it.

Automatic address release on master

Whenever I have two connected nodes on the mesh network and I turn the non-master off, the master still displays it in the monitor.

I know that every node should release its address before shutting down, but what if something unexpected happens like dead battery or damaged node? The node wouldn't release its address in these cases. So the master could check if the nodes are alive and manage the list automatically.

Is it possible to have the master do this automatically or I'll have to do it myself?

Unable to upload RF24Mesh_Example.ino to ATTiny85

Will RF24Mesh work in ATTiny85 ? I tried uploading the sketch but I am unable to do it. I removed all the Serial write. When I start building it just gets stuck at some point. Are any more steps needed for this ?

Questions about rf24/rf24network functions via rf24mesh

I'm about to move some sensors to using the RF24Mesh setup from RF24Network and was wondering how to access some of the old functions I use:

network.begin(90, 2);
radio.setRetries(15,15);
radio.setDataRate(RF24_250KBPS);
radio.setPALevel(RF24_PA_MAX);
radio.powerDown();
radio.powerUp();

can I just call them directly (not via the mesh instance) or are they not required anymore due to the self-healing nature of a mesh?

the powerUp/powerDown functions are very useful for battery setups, can they still be used, will there be side effects of cutting power to the radio e.g. will they have to rejoin the mesh every time or get a new DHCP address etc?

Examples how to send data from master to other nodes

Is there a way you could create a simple example how to send data from master to other nodes or from node to node? It took me quite a while to figure this out as a newbie (but I still don't know how to use RF24Mesh node ID's as destination instead of assigned RF24Network addresses)

"Dead nodes" linger on in RF24Mesh DHCP table

When I have nodes that leave the network (actively powered off), they still seem to linger on in the network, and no matter how long I wait, the mesh doesn't seem to look for stale entries. Is there a way to enforce this?

Thanks,
Anders

can't compile mesh master example or other mesh examples

I updated all RF24 , RF24Network and RF24Mesh libraries but getting these errors:

RF24Mesh.cpp:In member function 'bool RF24Mesh::begin(uint8_t, rf24_datarate_e)'
RF24Mesh.cpp:30:11: error: 'class RF24Network' has no member named 'returnSysMsgs'
RF24Mesh.cpp:36:31: error: no matching function for call to 'RF24Network::begin(uint16_t&)'
RF24Mesh.cpp:candidate is
RF24Network.h:begin(uint8_t, uint16_t)
RF24Network.h:candidate expects 2 arguments, 1 provided
RF24Mesh.cpp:In member function 'uint8_t RF24Mesh::update()'
RF24Mesh.cpp:47:32: error: void value not ignored as it ought to be
RF24Mesh.cpp:51:13: error: 'NETWORK_REQ_ADDRESS' was not declared in this scope
RF24Network.h:251:34: error: 'uint8_t RF24Network::frame_buffer [32]' is private
RF24Mesh.cpp:56:61: error: within this context
RF24Network.h:251:34: error: 'uint8_t RF24Network::frame_buffer [32]' is private
RF24Mesh.cpp:60:47: error: within this context
RF24Network.h:251:34: error: 'uint8_t RF24Network::frame_buffer [32]' is private
RF24Mesh.cpp:63:48: error: within this context
RF24Network.h:251:34: error: 'uint8_t RF24Network::frame_buffer [32]' is private
RF24Mesh.cpp:70:43: error: within this context
RF24Mesh.cpp:In member function 'bool RF24Mesh::checkConnection()'
RF24Mesh.cpp:112:30: error: 'NETWORK_PING' was not declared in this scope
RF24Mesh.cpp:117:43: error: 'class RF24Network' has no member named 'networkFlags'
RF24Mesh.cpp:In member function 'uint16_t RF24Mesh::getAddress(uint8_t)'
RF24Mesh.h:23:26: error: invalid operands of types 'void' and 'int' to binary 'operator!='
RF24Mesh.cpp:in expansion of macro 'MESH_ADDR_LOOKUP'
RF24Network.h:251:34: error: 'uint8_t RF24Network::frame_buffer [32]' is private
RF24Mesh.cpp:155:26: error: within this context
RF24Mesh.cpp:In member function 'int RF24Mesh::getNodeID(uint16_t)'
RF24Mesh.h:25:24: error: invalid operands of types 'void' and 'int' to binary 'operator!='
RF24Mesh.cpp:in expansion of macro 'MESH_ID_LOOKUP'
RF24Network.h:251:34: error: 'uint8_t RF24Network::frame_buffer [32]' is private
RF24Mesh.cpp:179:24: error: within this context
RF24Mesh.cpp:In member function 'bool RF24Mesh::releaseAddress()'
RF24Mesh.cpp:189:39: error: no matching function for call to 'RF24Network::begin(int)'
RF24Mesh.cpp:candidate is
RF24Network.h:begin(uint8_t, uint16_t)
RF24Network.h:candidate expects 2 arguments, 1 provided
RF24Mesh.cpp:In member function 'uint16_t RF24Mesh::renewAddress(uint32_t)'
RF24Mesh.cpp:204:11: error: 'class RF24Network' has no member named 'networkFlags'
RF24Mesh.cpp:207:37: error: no matching function for call to 'RF24Network::begin(int)'
RF24Mesh.cpp:candidate is
RF24Network.h:begin(uint8_t, uint16_t)
RF24Network.h:candidate expects 2 arguments, 1 provided
RF24Mesh.cpp:218:11: error: 'class RF24Network' has no member named 'networkFlags'
RF24Mesh.cpp:In member function 'bool RF24Mesh::requestAddress(uint8_t)'
RF24Mesh.cpp:226:34: error: 'NETWORK_POLL' was not declared in this scope
RF24Mesh.cpp:228:10: error: 'class RF24Network' has no member named 'multicast'
RF24Network.h:251:34: error: 'uint8_t RF24Network::frame_buffer [32]' is private
RF24Mesh.cpp:241:39: error: within this context
RF24Mesh.cpp:280:19: error: 'NETWORK_REQ_ADDRESS' was not declared in this scope
RF24Mesh.cpp:286:65: error: no matching function for call to 'RF24Network::write(RF24NetworkHeader&, uint16_t_, unsigned int, uint16_t&)'
RF24Mesh.cpp:candidates are
RF24Network.h:write(RF24NetworkHeader&, const void_, size_t)
RF24Network.h:candidate expects 3 arguments, 4 provided
RF24Network.h:write(uint16_t)
RF24Network.h:candidate expects 1 argument, 4 provided
RF24Mesh.cpp:294:28: error: 'NETWORK_ADDR_RESPONSE' was not declared in this scope
RF24Network.h:251:34: error: 'uint8_t RF24Network::frame_buffer [32]' is private
RF24Mesh.cpp:311:31: error: within this context
RF24Network.h:251:34: error: 'uint8_t RF24Network::frame_buffer [32]' is private
RF24Mesh.cpp:313:42: error: within this context
RF24Mesh.cpp:337:28: error: no matching function for call to 'RF24Network::begin(uint16_t&)'
RF24Mesh.cpp:candidate is
RF24Network.h:begin(uint8_t, uint16_t)
RF24Network.h:candidate expects 2 arguments, 1 provided
RF24Network.h:In member function 'void RF24Mesh::DHCP()'
RF24Network.h:251:34: error: 'uint8_t RF24Network::frame_buffer [32]' is private
RF24Mesh.cpp:446:25: error: within this context
RF24Network.h:251:34: error: 'uint8_t RF24Network::frame_buffer [32]' is private
RF24Mesh.cpp:464:33: error: within this context
RF24Mesh.cpp:517:25: error: 'NETWORK_ADDR_RESPONSE' was not declared in this scope
RF24Mesh.cpp:530:77: error: no matching function for call to 'RF24Network::write(RF24NetworkHeader&, RF24Mesh::DHCP()::addrResponseStruct_, unsigned int, uint16_t&)'
RF24Mesh.cpp:candidates are
RF24Network.h:write(RF24NetworkHeader&, const void_, size_t)
RF24Network.h:candidate expects 3 arguments, 4 provided
RF24Network.h:write(uint16_t)
RF24Network.h:candidate expects 1 argument, 4 provided
RF24Mesh.h:21:27: error: invalid operands of types 'void' and 'int' to binary 'operator!='
RF24Mesh.cpp:in expansion of macro 'MESH_ADDR_CONFIRM'
Error compiling

Sending long string over mesh

Dear TMRh20,

I'm trying to send quite long strings (500-1000 characters or more) over a mesh network.
First question is: can I send all the characters in one big payload? Which is maximum size supported by the mesh.write/read function?

Otherwise, is it better to send character by character? In this case, I have to avoid ACK (for faster communications) or I can let them enabled? When declaring the msg_type, which is the character to set in order to avoid ACK payload?

thanks.
Bye

Master node stops working after 12 receives

Hi

I've deployed the RF24_MeshExample and RF24_MeshExample_Master on two Arduino Uno's. It works for exactly 12 messages from node 1 to the master node 0. After 12 sends master node 0 stops receiving messages. Only after a power off / on of the master node, messages are sent again.

image

Mesh on RPi not working

I'm developing an application with a Raspberry Pi 2 as a master, and several Arduino Nano as nodes.

If I try using the basic mesh examples with an Arduino as the master, it works fine. If I use the RPi as a master, the nodes keep trying to renew their addresses, but nothing happens.

If I then start the Arduino master alongside my RPi (yes, I know there should only be one master), I start getting the messages to the RPi too.

Working with the RF24Network examples work like a breeze, so I assume it's not a hardware problem.

Regards,
Anders

Basic functionality of RF24 communication in the mesh

With the current RF24Network functionality, nodes are generally limited to direct communication with their parent or direct child nodes, although they can route traffic to any node. This allows the radios to use the in-chip functions of auto-acknowledgement and auto-retry, increasing reliability and removing the need for associated devices to perform these functions. This limits the general structure to an underlying tree topology, with a maximum of 5 'child nodes' per parent, but it can be dynamically reconfigured.

Nodes have the capability to work around these limitations, but small integrated devices generally do not have the memory and program space required to make more advanced routing or addressing decisions.

  1. In creating a mesh, we can utilize this existing functionality as a default, with additional dynamic addressing and routing features being handled at a higher level. This would allow continued integration with small devices like ATmega 328 or ATTiny.
  2. If deciding to go with a full mesh, the auto-ack and auto-retry functionalities cannot be utilized to their full degree, as one node has only 6 available reading addresses/pipes. This would possibly result in higher overhead and code size. This may also result in a more complex routing scenarios as well, again potentially limiting its use on smaller devices.

The datashee at https://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01P diagrams this 'multiceiver' connection.

Questions:

  1. Do we use the initial tree structure provided by RF24Network, and use the dynamic features to adjust, reconfigure and re-route traffic and topology accordingly?
  2. Do we attempt to use an alternative system that requires all nodes to perform some form of advanced routing and dynamic addressing?

Two networks nearby

Hello!

I was wondering if two meshes can work nearby, for example have two masters and several nodes that can all see each other. Is there a way to set a unique address or ID to each network and make each node only "see" the nodes of same network and prevent one network from seeing the other?

Thanks!

setChild() function

Dear TMRh20,

I was looking at your new setChild function. Is it correct? Because in RF24Mesh.cpp, I don't see any difference if the "allow" parameter is true or false... I.e. it seems that the FLAG_NO_POLL is not triggered by the "allow" parameter...

I'm doing it wrong?

Node on second level always connection fail

On zero level, modules can connected to node 01, 02, 03 or 04 perfectly.
When adding the fifth module, it randomly connect to one of zero level node.
Even it successfully connect to zero level node, sometimes the connection lost with the result -1, -2 when do mesh.write.

Anyone face this the same problem an what can I do ?

Radio power level

during the mesh search I think power should start out low, and increase the level as needed upon fail.

Not master node

Today someone told me about the feature in zigbee, to do a mesh without need of a master node. Would be that possible with the nrf24 and your library/ies?

Seems easily to know the advantages, but what could be the disadvantages to a mesh with this characteristics with this modules?

Create a new release

Could you please tag the library and push the tag so that it can be submitted to the library manager repo?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.