76 lines
1.7 KiB
C++
76 lines
1.7 KiB
C++
#include <Arduino.h>
|
|
#include <RFM69.h>
|
|
#include <RFM69_ATC.h>
|
|
#include <SPIFlash.h>
|
|
|
|
#define NODEID 122
|
|
#define FREQUENCY RF69_915MHZ
|
|
#define SERIAL_BAUD 115200
|
|
//#define IS_RFM69HW_HCW
|
|
|
|
RFM69 radio;
|
|
|
|
int networkID = 1;
|
|
long tryCount = 0;
|
|
int packetCount = 0;
|
|
bool found = false;
|
|
|
|
//SPIFlash flash(SS_FLASHMEM, 0xEF30);
|
|
|
|
void initRadio() {
|
|
radio.initialize(FREQUENCY,NODEID,networkID);
|
|
radio.spyMode(true);
|
|
radio.setFrequency(915230000);
|
|
}
|
|
|
|
void setup() {
|
|
Serial.begin(SERIAL_BAUD);
|
|
delay(10);
|
|
Serial.println("Init started");
|
|
|
|
initRadio();
|
|
char buff[50];
|
|
sprintf(buff, "\nListening at %d Mhz...", FREQUENCY==RF69_433MHZ ? 433 : FREQUENCY==RF69_868MHZ ? 868 : 915);
|
|
Serial.println(buff);
|
|
|
|
byte temperature = radio.readTemperature(-1); // -1 = user cal factor, adjust for correct ambient
|
|
Serial.print( "Radio Temp is ");
|
|
Serial.print(temperature);
|
|
Serial.println("C");
|
|
|
|
|
|
// Turn off LED
|
|
pinMode(LED_BUILTIN, OUTPUT);
|
|
digitalWrite(LED_BUILTIN, LOW);
|
|
|
|
Serial.println("Starting loop()");
|
|
}
|
|
|
|
void loop() {
|
|
|
|
if (radio.receiveDone())
|
|
{
|
|
Serial.print("#[");
|
|
Serial.print(++packetCount);
|
|
Serial.print(']');
|
|
Serial.print('[');Serial.print(radio.SENDERID, DEC);Serial.print("] ");
|
|
Serial.print("to [");Serial.print(radio.TARGETID, DEC);Serial.print("] ");
|
|
for (byte i = 0; i < radio.DATALEN; i++)
|
|
Serial.print((char)radio.DATA[i]);
|
|
Serial.print(" [RX_RSSI:");Serial.print(radio.RSSI);Serial.print("]");
|
|
}
|
|
tryCount++;
|
|
|
|
if (tryCount > 180000) {
|
|
Serial.print("Network: ");
|
|
Serial.print(networkID);
|
|
Serial.println(" No packets heard, incrementing");
|
|
tryCount = 0;
|
|
networkID++;
|
|
if (networkID == 256)
|
|
networkID=1;
|
|
initRadio();
|
|
}
|
|
|
|
}
|