From my research it seems as though i can transmit data from an NRF24L01 to an RFM73.
But so far i've been unsuccessful and am hoping for some help...
I have a custom android tablet and the tablet hardware includes an RFM73.
I want to transmit data to this data's RFM73 from an arduino.
With an RFM73 attached to the arduino i can send data to the tablet.
This works very reliably using the RFM73 library from RFM73.
I've also tried using the version of RadioHead available from GitHub - Yveaux/RadioHead: Git repository for RadioHead wireless networking library. as well as the version of Radioduino available from GitHub - HackerspaceKRK/rfm73: This is a library for the Arduino. Designed originaly to work with the Radioduino..
Neither of these 2 libraries have been successful, i think in the past month of experimenting they have worked once or twice then mysteriously stopped.
The few times they did work was when i reverted to an old version of the arduino IDE.
A sketch might work or might not, if it worked and i reset the arduino it might or might not work again.
I haven't had time to debug this - but have mentioned these 2 other libraries anyway.
Now the arduino must also have an ethernet shield connected.
Most Wiznet based shields have a hardware SPI bug preventing them from shring the SPI bus with other devices.
So i'm hoping to use an ENC28J60 based ethernet module instead of a Wiznet shield and use the Ethercard library from http://jeelabs.org/pub/docs/ethercard/
- The RFM73 library from voti.nl is not working with the Ethercard library and does not support use of the RFM73 interupt pin.
My client wants the RFM73's interupt pin to be used. - There's loads of articles and blogs detailing how to get an NRF24L01 to work with an ENC28J60.
Some of the available NRF24L01 libraries support the NRF24L01's interupt pin.
It looks logical to me to use an NRF24L01 on the arduino instead of an RFM73.
But am i correct in thinking that an NRF24L01 can transmit to an RFM73 or not?
I'm using this RadioHead nrf24_client example sketch:
#include <SPI.h>
#include <RH_NRF24.h>
// Singleton instance of the radio driver
RH_NRF24 nrf24(8, 9); // i'm using pins 8 and 9 as CS and CE
// RH_NRF24 nrf24(8, 7); // use this to be electrically compatible with Mirf
// RH_NRF24 nrf24(8, 10);// For Leonardo, need explicit SS pin
// RH_NRF24 nrf24(8, 7); // For RFM73 on Anarduino Mini
void setup()
{
Serial.begin(9600);
while (!Serial)
; // wait for serial port to connect. Needed for Leonardo only
if (!nrf24.init())
Serial.println("init failed");
// Defaults after init are 2.402 GHz (channel 2), 1Mbps, 0dBm
if (!nrf24.setChannel(2))
Serial.println("setChannel failed");
if (!nrf24.setRF(RH_NRF24::DataRate1Mbps, RH_NRF24::TransmitPower0dBm))
Serial.println("setRF failed");
}
void loop()
{
Serial.println("Sending to nrf24_server");
// Send a message to nrf24_server
uint8_t data[] = "Hello World!";
nrf24.send(data, sizeof(data));
nrf24.waitPacketSent();
// Now wait for a reply
uint8_t buf[RH_NRF24_MAX_MESSAGE_LEN];
uint8_t len = sizeof(buf);
if (nrf24.waitAvailableTimeout(500))
{
// Should be a reply message for us now
if (nrf24.recv(buf, &len))
{
Serial.print("got reply: ");
Serial.println((char*)buf);
}
else
{
Serial.println("recv failed");
}
}
else
{
Serial.println("No reply, is nrf24_server running?");
}
delay(400);
}
The sketch works when i run it on 2 arduinos - each arduino has an NRF24L01 attached.
But with my android device's RFM73 listening on channel 2 it fails to detect transmissions from either arduino.
I'm wondering whether the android's RFM73 pipe addresses are not set to whatever pipe addresses the RadioHead library is using.
But i have no way to get or set the android's RFM73 pipe addresses - no way to know what it's pipe addresses are set to.
Could this be my problem - my NRF24L01s are transmitting to a pipe address that the android RFM73 is not listening to?
Thanks for any help or info.
Martin.