3

You can use the RF24 library that you can install right away from the Arduino IDE. It provides you all you need. Just use two instances of RF24 with different CSN and CE pins assigned to get started. RF24 radioA(7, 8); // CE, CSN RF24 radioB(5, 6); // CE, CSN Use the simple ping sketch as a starting point and add a second radio to it.


3

I have not used the RF24 libary, but below are the register settings that should be written during void setup() to use the ACK_PAYLOAD functionality (N.B. nRF24L01+ only, does not exist on nRF24L01. Check you are using the right version of the radio!) TX: 0x00 CONFIG = PTX mode 0x0B RX_PW_P0 = Number of data bytes in pipe 0 0x1C DYNPD = 0x01. Enable ...


2

Check the reading and writing pipe addresses. First, the default is 0xE7E7E7E7E7 for pipe 0 (RX_ADDR_P0) and 0xC2C2C2C2C2 for pipe 1 (RX_ADDR_P1), see the data sheet. Check that the transmitter (TX) address is the same as the receiver (RX) pipe address. Secondly, you should not set the pipe address to 0x0 even if that's common between the TX and RX. ...


2

1) May messages get corrupt or latency ? For uni-directional Master to One Slave, no, there should be no corruption (at least not caused by there being lots of slaves present). For bi-directional Master to Multiple Slaves at the same time, yes, you're going to run into problems when the slaves try and reply. Keeping your protocol really simple will be ...


2

As Mikael Patel mentions in the comments: your structures do not match between the transmitter and receiver. Transmitter Receiver ===================== ===================== struct Data_Package { struct Data_Package { byte j1PotX; -> byte j1PotX; byte j1PotY; -> byte j1PotY; byte j2PotX; -> ...


2

This is a known problem with those chips (especially Chinese clones). It is caused when a chip gets stuck in TX mode waiting for an ACK that never arrives back. The chips don't have a "reset", but switching them into low power mode and then back on again, which doesn't affect any register settings, aborts the current TX operation. RF24Network is merely a ...


2

The first thing that comes to my mind is that you are powering the nrf24L01 directly from the 3V3 pin of your Arduino Uno. DO NOT do this. The 3V3 pin does not provide enough current for the nrf24L01. This renders the module completely unstable. You can: Use a decent capacitor across the VCC and GND on the module. (But I do not recommend going for that ...


2

can I feed NRF24 directly from Vcc pin? NO: the pro mini is either 5V or not strong enough to power the RF24. EDIT: the 3V3 pro mini "could" power the RF24 via VCC, if you use the cap and if it's not the PA&LNA model (or in full power mode). Best practise is to use an external regulator. if I fed NRF24 directly from battery and reduce 3.7V to 3.3V ...


1

5 bytes = more than 1 million million unique addresses, although not all addresses (as the nRF24L01 datasheet points out) are advised, for instance because they mimic the nRF's preamble packet. So what is the purpose of addresses? The purpose is to ensure that radio transmissions are received at the intended radio module. Consider a radio network where you ...


1

Remove the & in the master code line, change radio.read(message, sizeof(message)); to radio.read(message, sizeof(message)); message is an array, so either you should pass the address of the first character (&message[0]), or simply pass message. Another problem is sending a String in the slave code (using type String). It's better not to use ...


1

radio.read() does not return a value. You can't assign "no value" to a boolean. If radio.available() is true then radio.read() will succeed. There is no need to test if it worked or not.


1

I see (at least one ) problem. First remove the * from: int* Msg, mSg, msG; Because it should store integers (numbers), not pointers to numbers. Also, make the variables better. These almost identical names are quite confusing (name them x, y or z or a better name). What you are doing is sending the 3 integers as integers (meaning that each integer is 2 ...


1

You have two problems: sketch_aug20b_rc_rc_rc_22:33:13: error: expected initializer before 'RF24' void setup()RF24 ^ It's basically saying "I don't understand what you mean by RF24 here". That RF24 in that line should not exist. I assume you made some kind of typo or copy-pasta error. Second: C:\Users\ASUS\Documents\Arduino\...


1

Working with serial in C on Linux is not as simple as opening a file and reading from it (though in some circumstances that can work). You should open the file using open() not fopen(), then use tcgetattr() and tcsetattr() etc to configure the port. For example: #include <stdio.h> #include <fcntl.h> #include <termios.h> #include <...


1

You ask a yes/no question, to which the answer is yes, nRF24L01 as a serial peripheral device will work as well as if you had used an Arduino UNO or any other microcontroller, provided the SPI bus is correctly initialized. Generally you want the following in the setup() part of your sketch/program: pinMode(CE_pin, OUTPUT);//chip enable set as output ...


1

No, you really do need the CE pin for both TX and RX modes. See the following excerpts from the nRF24L01 datasheet. They work practically the same for nRF24L01+:


1

It seems the CE pin is only used for TX, or to put it into standby. I think you can just connect it to VCC. The CSN is required for SPI. PS this RF24 library supports using the same pin for both CE and CSN. You'd have to define RF24_TINY for this to work.


1

The Arduinos 3V3 does not privide enough current. To eliminate this as a source of your problem you can use a ceramic capacitor of 100µF across VCC and GND pins of the nRF24L01+ module or buy a 5V to 3V3 step down converter specially made for nRF24L01.


1

I see multiple flaws in your code: radio.write(&s, sizeof(s)); does not what you think it would. The correct statement would be radio.write(s, sizeof(s)); without the ampersand. You are using double. Not using floating point numbers at all would be preferable. Your s is of type byte. Thus it only holds 8 bytes. So your floating point calculations are ...


1

raspberry pi can power ur mega board normally,but the 3v3 in the mega board is not stable and has noise,so it is better to use 3v3 supply source for ur NRF the simplest to use is just hooking a piece of 1117 to 5v of ur mega board


1

I looked into the source code of the MD_MAX72XX library. The constructor with SPI pins starts software SPI. Use the MD_MAX72XX::MD_MAX72XX(moduleType_t mod, uint8_t csPin, uint8_t numDevices): constructor to work with SPI hardware/library with all devices. struct LineDefinition Line[] = { { MD_MAX72XX(HARDWARE_TYPE, 53, MAX_DEVICES), "MAX", true }, { ...


1

You can set addresses using SPI commands. For example a 5-byte transmitter address could be written as (MSB first): digitalWrite(CSN_pin, LOW); SPI.transfer(0x30); // write TX_ADDR register SPI.transfer(tx_addr[0]); SPI.transfer(tx_addr[1]); SPI.transfer(tx_addr[2]); SPI.transfer(tx_addr[3]); SPI.transfer(tx_addr[4]); digitalWrite(CSN_pin, ...


1

Yes, that should work, however also think about the following issues: What if one (or more) camera does not receive the signal? You might need to add an ACK signal, but of course this will reduce the latency (a lot). If you don't want an ACK signal To prevent an ACK, you can send the signal many times (and cameras who already processed the signal not react ...


Only top voted, non community-wiki answers of a minimum length are eligible