Salve, ho acquistato due rfm69hw a 868mhz
e due breakout board semplici sulle quali ho saldato i due pcb;
ho fatto i tipici collegamenti
arduino uno rfm69hw
3,3 V 3,3v
GND GND
D2 DIO0
SCK D13
MISO D12
MOSI D11
NSS D10
I due sketch utilizzati sono (sono entrambi trasmettiori e ricevitori)
#include <RFM69.h>
#include <SPI.h>
#define NETWORKID 0
#define MYNODEID 1
#define TONODEID 2
#define FREQUENCY RF69_868MHZ
#define ENCRYPT true
#define ENCRYPTKEY "TOPSECRETPASSWRD"
#define USEACK true
#define LED 8
#define GND 9
RFM69 radio;
void setup()
{
Serial.begin(9600);
Serial.print("Node ");
Serial.print(MYNODEID,DEC);
Serial.println(" ready");
pinMode(LED,OUTPUT);
digitalWrite(LED,LOW);
pinMode(GND,OUTPUT);
digitalWrite(GND,LOW);
radio.initialize(FREQUENCY, MYNODEID, NETWORKID);
radio.setHighPower();
if (ENCRYPT)
radio.encrypt(ENCRYPTKEY);
}
void loop()
{
static char sendbuffer[62];
static int sendlength = 0;
if (Serial.available() > 0)
{
char input = Serial.read();
if (input != '\r')
{
sendbuffer[sendlength] = input;
sendlength++;
}
if ((input == '\r') || (sendlength == 61))
{
Serial.print("sending to node ");
Serial.print(TONODEID, DEC);
Serial.print(", message [");
for (byte i = 0; i < sendlength; i++)
Serial.print(sendbuffer[i]);
Serial.println("]");
if (USEACK)
{
if (radio.sendWithRetry(TONODEID, sendbuffer, sendlength))
Serial.println("ACK received!");
else
Serial.println("no ACK received");
}
else
{
radio.send(TONODEID, sendbuffer, sendlength);
}
sendlength = 0;
Blink(LED,10);
}
}
if (radio.receiveDone())
{
Serial.print("received from node ");
Serial.print(radio.SENDERID, DEC);
Serial.print(", message [");
for (byte i = 0; i < radio.DATALEN; i++)
Serial.print((char)radio.DATA[i]);
Serial.print("], RSSI ");
Serial.println(radio.RSSI);
if (radio.ACKRequested())
{
radio.sendACK();
Serial.println("ACK sent");
}
Blink(LED,10);
}
}
void Blink(byte PIN, int DELAY_MS)
{
digitalWrite(PIN,HIGH);
delay(DELAY_MS);
digitalWrite(PIN,LOW);
}
#include <RFM69.h>
#include <SPI.h>
#define NETWORKID 0
#define MYNODEID 2
#define TONODEID 1
#define FREQUENCY RF69_868MHZ
#define ENCRYPT true
#define ENCRYPTKEY "TOPSECRETPASSWRD"
#define USEACK true
#define LED 8
#define GND 9
RFM69 radio;
void setup()
{
Serial.begin(9600);
Serial.print("Node ");
Serial.print(MYNODEID,DEC);
Serial.println(" ready");
pinMode(LED,OUTPUT);
digitalWrite(LED,LOW);
pinMode(GND,OUTPUT);
digitalWrite(GND,LOW);
radio.initialize(FREQUENCY, MYNODEID, NETWORKID);
radio.setHighPower();
if (ENCRYPT)
radio.encrypt(ENCRYPTKEY);
}
void loop()
{
static char sendbuffer[62];
static int sendlength = 0;
if (Serial.available() > 0)
{
char input = Serial.read();
if (input != '\r')
{
sendbuffer[sendlength] = input;
sendlength++;
}
if ((input == '\r') || (sendlength == 61))
{
Serial.print("sending to node ");
Serial.print(TONODEID, DEC);
Serial.print(", message [");
for (byte i = 0; i < sendlength; i++)
Serial.print(sendbuffer[i]);
Serial.println("]");
if (USEACK)
{
if (radio.sendWithRetry(TONODEID, sendbuffer, sendlength))
Serial.println("ACK received!");
else
Serial.println("no ACK received");
}
else
{
radio.send(TONODEID, sendbuffer, sendlength);
}
sendlength = 0;
Blink(LED,10);
}
}
if (radio.receiveDone())
{
Serial.print("received from node ");
Serial.print(radio.SENDERID, DEC);
Serial.print(", message [");
for (byte i = 0; i < radio.DATALEN; i++)
Serial.print((char)radio.DATA[i]);
Serial.print("], RSSI ");
Serial.println(radio.RSSI);
if (radio.ACKRequested())
{
radio.sendACK();
Serial.println("ACK sent");
}
Blink(LED,10);
}
}
void Blink(byte PIN, int DELAY_MS)
{
digitalWrite(PIN,HIGH);
delay(DELAY_MS);
digitalWrite(PIN,LOW);
}
Il problema è che non comunicano!